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(比較値 : 配列名) で見つかれば見つかった配列指標の正の値が戻る。