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