%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