× The internal search function is temporarily non-functional. The current search engine is no longer viable and we are researching alternatives.
As a stop gap measure, we are using Google's custom search engine service.
If you know of an easy to use, open source, search engine ... please contact support@midrange.com.



James Rich wrote:

>basically I want a 2-dimensional array that I 
>can dynamically increase or decrease.

Jon Paris submitted this a while ago (see the Redbook for more fun with
pointers)  It should server as a starting point.  Any errors are due to my
changes:

PDYNARRAY         b                                                   
DDYNARRAY         pi                                                  
 * Note: the value supplied to the DIM statement is used by RPG as    
 *       the maximum size that the array can grow to - since the array
 *       is being dynamically sized this is used as a "sanity check"  
 *       only. i.e. If it ever gets this big the program is looping !!
                                                                      
D Array           S                   Dim(20000) Based(Ptr) Like(NAME)
                                                                      
D CurrElems       S              3  0 Inz(50)                         
D RecordsRead     S              5  0 Inz                             
D Memory          S              7  0 Inz                             
                                                                      
 * Allocate initial storage                                           
C                   Eval      Memory = %Size(Array) * CurrElems       
C                   Alloc     Memory        Ptr                       
                                                                      
 * Loop reading file and storing records in array                     
C                   DoU       %EOF(Master)                            
C                   Read      Master                                  
                                                                      
C                   If        Not %EOF(Master)                        
C                   Eval      RecordsRead = RecordsRead + 1           
                                                                      
 * Limit this example to 200 records                                  
C                   If        RecordsRead > 200                       
C                   Leave                                             
C                   EndIf                                             
                                                                      
 * Need more space - increase by 20 & reallocate                      
C                   If        RecordsRead > CurrElems                 
C                   Eval      CurrElems = CurrElems + 20              
C                   Eval      Memory = %Size(Array) * CurrElems       
C                   REALLOC   Memory        Ptr                    20 
C                   EndIf                                             
                                                                      
C                   Eval      Array(RecordsRead) = NAME               
                                                                      
C                   EndIf                                             
C                   EndDo                                             
                                                                      
 * Don't forget to free up array when no longer needed                
C                   DEALLOC                 Ptr
                                               
PDYNARRAY         e                            

Buck Calabro
Aptis; Albany, NY


Billing Concepts Corp., a NASDAQ Listed Company, Symbol: BILL
+---
| This is the RPG/400 Mailing List!
| To submit a new message, send your mail to RPG400-L@midrange.com.
| To subscribe to this list send email to RPG400-L-SUB@midrange.com.
| To unsubscribe from this list send email to RPG400-L-UNSUB@midrange.com.
| Questions should be directed to the list owner/operator: david@midrange.com
+---

As an Amazon Associate we earn from qualifying purchases.

This thread ...


Follow On AppleNews
Return to Archive home page | Return to MIDRANGE.COM home page

This mailing list archive is Copyright 1997-2024 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].

Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.