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



I didn't reply because I figured you knew how to write a 3-line loop and were looking for a shortcut.

for x = 1 to %elem(ACD);
   ACD(x).Codes = Codes(x);
endfor;

Or if you must code another data structure...  at least use LIKEDS instead of coding it twice.


On 6/1/22 9:22 PM, mlazarus wrote:
Hi Mark,

 Thanks for the offer, but since none of the list gurus jumped on it quick enough, I decided to take a slightly different approach.

      D ACD             ds                  Dim( 25 ) Qualified
      D  CodesSeq                           Like( SA.CODESSEQ ) Inz
      D  Codes                              Like( SA.CODES )

 I removed this code:

      D  Codes          s                   Like( SA.CODES )
      D                                     Dim( 25 )

 I added this code:

      D SAV             ds                  Dim( 25 ) Qualified
      D  CodesSeq                           Like( SA.CODESSEQ ) Inz
      D  Codes                              Like( SA.CODES )

        Eval-Corr ACD = SAV ;

 So instead of loading the initial data into Codes I loaded it into SAV.Codes.  Minor change in the program and now I am easily able to do what I want.  It seems to me like a major oversight in the implementation of qualified DS arrays.

 -mark

On 6/1/2022 6:30 PM, Barbara Morris wrote:
On 2022-05-31 4:47 p.m., mlazarus wrote:
  For some reason the syntax to assign a regular array to a qualified array is eluding me.

      D ACD             ds                  Dim( 25 ) Qualified
      D  CodesSeq Like( SA.CODESSEQ ) Inz
      D  Codes                              Like( SA.CODES )

      D  Codes          s                   Like( SA.CODES )
      D                                     Dim( 25 )

  I would like to take Codes array and assign it ACD.Codes.

  The compiler doesn't like any of these:
ACD.Codes = Codes ;
ACD(*).Codes = Codes ;
ACD(*).Codes(*) = Codes ;
ACD.Codes(*) = Codes ;

Unfortunately, RPG doesn't have any syntax for that.

RPG does support treating a DS-array-subfield as an array in a few places:
   SORTA ACD(*).codes;
   p = %lookup('x' : ACD(*).codes);

But the DS(*).SUBF syntax is not supported in general where an array is expected.


As an Amazon Associate we earn from qualifying purchases.

This thread ...

Follow-Ups:
Replies:

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.