RPG

569. データ構造配列の%LOOKUP

データ構造を配列として保管しておいて
そのデータ構造の中の要素だけを %LOOKUPで検索することが
できる。

0178.00  *(QUAL)                                                                                   
0179.00 D QUAL            DS                  QUALIFIED                                            
0180.00 D  PARM_TYPE                    10A                                                        
0181.00 D  TYPE                         10A                                                        
0182.00 D  LEN                           7S 0                                                      
0183.00 D QUALR           DS                  LIKEDS(QUAL) DIM(300)                                
0184.00 D QU              S             10I 0                                      QUALR の指数    
0185.00                                                                                            
 :
/FREE
  M = %LOOKUP(PARM.TYPE:QUALR(*).PARM_TYPE);
/END-FREE

[解説]

配列 QULR は

0183.00 D QUALR           DS                  LIKEDS(QUAL) DIM(300) 

として定義されているデータ構造:QUAL

0179.00 D QUAL            DS                  QUALIFIED                                            
0180.00 D  PARM_TYPE                    10A                                                        
0181.00 D  TYPE                         10A                                                        
0182.00 D  LEN                           7S 0  

をひとつの要素とする配列である。
このうちの QUAL.PARM_TYPE を検索するには

  M = %LOOKUP(PARM.TYPE:QUALR(*).PARM_TYPE);

としてデータ構造に (*)を付加して

QUALR(*).PARM_TYPE

と表現すればデータ構造配列も検索することができる。
_