RPG

448. 標識を使わない LOOKUP命令

ILE-RPGでは標識を使わない記述をすることができる。
標識を使わないLOOKUP命令の使用方法を紹介する。

■ 標識を使う LOOKUP 命令

LOOLUP命令で58桁目に標識を定義しておくと
LOOKUP命令が成功した、すなわち同じ値が配列の中に見つかったことを意味する。

■ 標識を使わない LOOKUP 命令

%LOOPUPという組込み関数を使うとLOOKUP命令が成功したときは
配列指標の正の値が戻るようになる。
見つからなければ戻り値は 0となる。

フリー・フォーマットの場合、LOOKUPは使えないので %LOOKUPを使って記述する。

■ 標識を使わないLOOKUP TESTLOK

ソースはこちらから

0001.00 H DFTNAME(TESTLOK) DATEDIT(*YMD/) BNDDIR('QC2LE')                           
0002.00 F**********  標識を使わない LOOKUP 命令 *******************************     
0003.00 F*                                                                          
0004.00 F**********************************************************************     
0005.00                                                                             
0006.00  * CRTBNDRPG PGM(OBJLIB/TESTLOK) SRCFILE(SRCLIB/QRPGLESRC) DFTACTGRP(*NO)   
0007.00  * ACTGRP(*NEW) DBGVIEW(*SOURCE) AUT(*ALL)                                  
0008.00                                                                             
0009.00 D SHCODE          S             10A                                         
0010.00 D CDR             S             10A   DIM(256)                              
0011.00 D MKR             S              1A   DIM(256)                              
0012.00 D N               S              4S 0                                       
0013.00                                                                             
0014.00 C                   MOVEL(P)  'NV-CF1'      SHCODE                          
0015.00  *(1) 標識を使った READ 命令                                                
0016.00 C                   Z-ADD     1             N                               
0017.00 C     SHCODE        LOOKUP    CDR(N)                                 50     
0018.00 C   50              MOVE      '*'           MKR(N)                          
0019.00                                                                             
0020.00  *(2) 標識を使わない READ 命令                                              
0021.00 C                   EVAL      N = %LOOKUP(SHCODE:CDR)                       
0022.00 C                   IF        N > 0                                         
0023.00 C                   MOVE      '*'           MKR(N)                          
0024.00 C                   ENDIF                                          
0025.00  /FREE                                                             
0026.00        N = %LOOKUP(SHCODE:CDR);                                    
0027.00        IF N > 0;                                                   
0028.00          MKR(N) = '*';                                             
0029.00        ENDIF;                                                      
0030.00  /END-FREE                                                         
0031.00 C                   SETON                                        LR
0032.00 C                   RETURN                                         
0033.00   


                                                                 

[解説]

%LOOKUP(比較値 : 配列名) で見つかれば見つかった配列指標の正の値が戻る。