× 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.




If you don't mind gross inefficiency, the example below emulates a 3x10
array by putting the index in a data structure and manipulating the
row(first digit) and column(second 2 digits) separately.
There's a little wasted space in the array :-), but it's easy to work with.

 D  Array          ds
 D   Elements                    20    dim(310)
 D    thing1                     10    overlay(Elements)
 D    thing2                     10    overlay(Elements:11)
 D
 D  indexds        ds
 D   index                        3s 0
 D    row                         1s 0 overlay(index)
 D    column                      2s 0 overlay(index:2)

  *   Main procedure

 C                   clear                   array
 c                   clear                   index
 c                   do        3             row
 c                   do        10            column
 C                   Eval      thing1(index) = 'stuff'
 C                   Eval      thing2(index) = 'mo stuff'
 C                   enddo
 C                   enddo
 C                   seton                                        lr
 C                   return

Tom Clements
Help/Systems Inc.
952-563-2780


                                                                                
                                        
                    Jim Langston                                                
                                        
                    <jimlangston@conexfr        To:     RPG400-L@midrange.com   
                                        
                    eight.com>                  cc:                             
                                        
                    Sent by:                    Subject:     Re: Data Arrays    
                                        
                    owner-rpg400-l@midra                                        
                                        
                    nge.com                                                     
                                        
                                                                                
                                        
                                                                                
                                        
                    10/09/00 10:18 AM                                           
                                        
                    Please respond to                                           
                                        
                    RPG400-L                                                    
                                        
                                                                                
                                        
                                                                                
                                        




A multidimensional array is not hard to use from a two dimensional array.
Looking
at the way arrays are stored you can very easily build a function to use a
2 dimensional
array as a 3 dimentional array.  (Er, maybe I mean 1 and 2 dimensional, now
I'm getting
confused).

Say, for instance, I have an array set up as

D abc    DS          100
D  abc1                   10A

if I want to look at this as a 10 x 10 array the math is easy.

to get any element, such as 2 x 3 you just multiply X-1 * 10 + Y

2 - 1 * 10 = 10 + 3 = 13.  So, element [2, 3] = [13]

I could see building a function to return this but it would require
4 parameters, size of array X, size of array Y, occurrence X and occurance
Y.
This would return a single number, the element number in the 2 dimensional
array.

D         Eval    Return = (OccurX - 1) * ArrayX + OccurY

Turn this into a % function and you could do stuff like:

D         Eval   MyArray[%ConvertArray(10, 10, 2, 3)] = someval

Admittedly, this is not as easy as calling MyArray[2, 3] directly.

Regards,

Jim Langston

Peter Dow wrote:
>
> Hi James,
>
> Let's see if I can come up with an example code.
>
>     D abc        DS        10 (occurrences that is)
>     D  abc1                    10A
>
>     D xyz        DS                based(ptrXYZ)
>     D  xyz1                    10A
>
>     c     1        occur    abc
>     c              eval     ptrXYZ = %addr(abc)
>     c     2        occur    abc
>
>     c              if        abc1 = xyz1 (this is comparing 2 different
> occurrences)
>     c                ...
>     c              endif
>
> As I said, I haven't actually tried this, but my understanding is that
after
> the 2nd OCCUR stmt, the xyz data structure is still pointing to the 1st
> occurrence. The %addr(abc) returns a pointer to whatever the current
> occurrence is.
>
> As to using pointers to do multi-dimensional arrays, I think you're right
it
> might get pretty ugly. IBM almost slipped up and gave it to us with those
> array subfields, where you can overlay an array with subfields of an
array
> element and then sort the array by those subfields. But they didn't allow
> the subfields to be arrays.
>
> I haven't had much need for multi-dimensional arrays, but the couple of
> times I have, they've been just 2-D arrays, which are fairly easily
> simulated by calculations or an array within a multi-dimensional data
> structure.
>
> HTH
> Peter Dow
> Dow Software Services, Inc.
> 909 425-0194 voice
> 909 425-0196 fax
+---
| 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
+---



+---
| 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.