TESTC
FASTREXX 条件式で使用できます。
注:
- 演算子 (operator) および非数値の値はすべて引用符で囲み、構文エラーにならないようにする必要があります。
- start、length、および type パラメーターはオプションで、変数の一部を検査する機能を提供します。第 2 オペランドは、演算子にできます。例を参照してください。
- レコード長を超える length の値を指定すると、「偽」の結果が返されます。
- 数値タイプ (タイプ B、P、Z) を指定した場合に、指定したフィールドに、そのタイプに無効なデータが含まれていると、関数は「偽」の結果を返します。数値データは常に整数形式で戻されます。すなわち、関数は数値データのスケールを実行しません。
- name
- 1 文字から 256 文字の変数 ID。変数名の突き合わせでは、大/小文字が区別されません。名前が検出されない場合、長さが 1 で値が X'00' の変数が作成されます。
- start
- フィールド値の読み取りを開始する変数内の位置 (バイト単位)。以下のように指定できます。
- 絶対位置
- 正の整数である必要があります。start が入力レコードの現在の長さより大きければ、この関数は無効になります。
- 相対開始位置
- IPx または INx、または Px または Nx、または OPx または ONx として指定できます。変数を検査するときは、現行変数位置が計算の基準になります。現行変数位置は、contains 型演算子を指定した TESTC 関数によって変更されます。結果の値がゼロ以下になる場合、関数は「偽」の結果を生成します。結果の値が変数の現在の長さより大きい場合、関数は「偽」の結果を生成します。
- length
- フィールドの長さ (バイト数)。
- 2 進数フィールドの場合には、長さを指定する必要があります。これは 2、4、または 8 とすることができます。
- 文字フィールドの場合には、長さを省略すると、次の長さにデフォルト設定されます。
- contains 型演算子の場合、変数の残りの長さ。
- すべての値が変数置換の場合は、変数の残りの長さ。
- その他の場合は、最大リテラル値の長さを使用。
- パック 10 進フィールドでは、長さを指定する場合には 1 から 16 の範囲内でなければなりません。長さを省略すると、関数は変数値からパック・フィールドの長さを決定して、そのフィールドだけを戻します。
- ゾーン 10 進フィールドでは、長さを指定する場合には 1 から 31 の範囲内か、またはフィールドに分離符号文字が入っている場合には 1 から 32 の範囲内でなければなりません。長さを省略すると、関数は変数の残りを戻します。32 を超えた場合、関数は「偽」の結果を返します。
- type
- フィールドのデータ・タイプ。有効な値は、以下のとおりです。
- B
- 2 進数。関数は 2 進数フィールドを符号付きと解釈します。
- C
- 文字。これは、デフォルトです。
- P
- パック 10 進数。
- U
- フィールドを文字として解釈しますが、ストリングを戻す前に、これを大文字に変換します。
- Z
- ゾーン 10 進数。すべての COBOL 外部 10 進数変形を数値データとして解釈します。
- オペレーター (operator)
- デフォルトは EQ または = です。この機能では、動的テンプレートと基準編集で示した、すべての演算子をサポートしています。サポートする演算子の詳細と説明については、以下の節を参照してください。
- 値
- 入力する値は、参照されている演算子とフィールドでのコンテキストで有効な値である必要があります。例えば、複数の値を使用できる演算子は、CO (包含) など一部の演算子のみです。また、数値を入力するのは、数値フィールドを検査する場合です。
- 16 進数ストリングの指定。16 進数ストリングは 'hhhhhh'x の形式でなければなりません。引用符で囲まれた値の文字数は偶数であり、使用される文字が有効な 16 進文字 (0–9、A–F) である必要があります。
- バイナリー・ストリングの指定。バイナリー・ストリングは 'nnnnnn'b の形式でなければなりません。引用符で囲まれた値は「0」と「1」の組み合わせである必要があります。
- 文字ストリングの指定。非数値タイプの場合は、値を引用符で囲む必要があります。
- &variable_name の指定による変数の指定。一致する文字変数、数値変数、または TALLY 変数を見つけられる場合は、変数で値が代用されます。一致する変数を検出できなければ、ストリングはリテラル値として扱われます。数値比較が実行される場合、文字変数は数値に変換されます。変換に失敗すると、関数は「偽」の結果を返します。数値または TALLY 変数が文字比較で参照された場合、値は、表示画面形式に変換され、先行ゼロが除去された数値になります。
- duplication
- 整数 n を指定することで、リテラル値を n 回複写します。注: これは、単一値をサポートする演算子 (例えば、Not contains) に、その値がリテラル定数であり、置換変数でない場合にのみ使用できます。
- VER
- フィールドが、「値」列で指定されている文字だけで構成されていることを検証します。
例 1
TESTREC という変数に現在の入力レコードを設定します。変数を検査し、レコードに「Smith」または「Jones」が含まれているレコードのみを処理します。
注: この場合は、包含処理で大/小文字の区別を行わないため演算子 CU を使用します。start、length、および type パラメーターは省略されています。
SETC('TESTREC','&ZINREC')
if TESTC(TESTREC,'CU','Smith','Jones') then
return
else
return 'DROP'
例 2
salary が 75000 より大きいすべてのレコードを処理します。ここで、salary は、開始位置 28 で検出されるパック 10 進数値です。
注: この事例では、File Manager がパック 10 進数フィールドの長さを計算します。
SETC('TESTREC','&ZINREC')
if TESTC(TESREC,28,,P,'>',75000) then
return
else
return 'DROP'