%EQUAL (完全な一致条件の戻し)
%EQUAL{(file_name)}
%EQUAL は、最後に実行された関係のある命令が正確な一致を見付けた場合には '1' を 戻します。他の場合には '0' を戻します。
%EQUAL を設定する命令を以下に示します。
任意指定のファイル名パラメーターを指定しないで %EQUAL を使用した場合、この 関数は、最後に実行された関係のある命令について設定された値を戻します。
SETLL 命令の場合、この関数は、そのキーまたは相対レコード番号が検索引数に 等しいレコードが存在する場合に '1' を戻します。
EQ 標識を指定した LOOKUP 命令の場合、この関数は、検索引数に正確に一致する 要素が見付かった場合に '1' を戻します。
ファイル名を指定した場合、この関数は、指定したファイルに対して最後に実行 された SETLL 命令に適用されます。 この関数は、SETLL 命令コードを使用できる ファイルに対してのみ使用することができます。
詳しい例については、図 1 および 図 1 を 参照してください。
詳細については、ファイル命令、結果命令、 または 組み込み関数を参照してください。
図 1. SETLL を使用した場合の %EQUAL の例
*..1....+....2....+....3....+....4....+....5....+....6....+....7...+....
F*Filename+IPEASFRlen+LKlen+AIDevice+.Keywords+++++++++++++++++++++++++
* File CUSTS has record format CUSTREC
FCUSTSIF E K DISK
/FREE
// Check if the file contains a record with a key matching Cust
setll Cust CustRec;
if %equal;
// an exact match was found in the file
endif;
/END-FREE
図 2. LOOKUP を使用した場合の %EQUAL および %FOUND の例
DName+++++++++++ETDsFrom+++To/L+++IDc.Keywords+++++++++++++++++++++++++++++
D TabNames S 10A DIM(5) CTDATA ASCEND
D SearchName S 10A
* Position the table at or near SearchName
* Here are the results of this program for different values
* of SearchName:
* SearchName | DSPLY
* -------------+-------------------------------
* 'Catherine ' | 'Next greater Martha'
* 'Andrea ' | 'Exact Andrea'
* 'Thomas ' | 'Not found Thomas'
CL0N01Factor1+++++++Opcode(E)+Factor2+++++++Result++++++++Len++D+HiLoEq....
C SearchName LOOKUP TabNames 10 10
C SELECT
C WHEN %EQUAL
* An exact match was found
C 'Exact 'DSPLY TabNames
C WHEN %FOUND
* A name was found greater than SearchName
C 'Next greater'DSPLY TabNames
C OTHER
* Not found. SearchName is greater than all the names in the table
C 'Not found 'DSPLY SearchName
C ENDSL
C RETURN
**CTDATA TabNames
Alexander
Andrea
Bohdan
Martha
Samuel