FLD_TYPE
注: 最後に指定された引数の後のコンマは省略可能です。
FASTREXX 条件式で使用できます。
入力レコードで、フィールドのデータ・タイプをテストします。
- Returns
- テストが「真」と評価された場合には 1 を、「偽」と評価された場合には 0 を戻します。
- start
- テストを開始する入力レコード内の位置 (バイト単位)。以下のように指定できます。
- 絶対位置
- 正の整数である必要があります。デフォルト値は 1 です。start が入力レコードの現在の長さより大きければ、この関数は無効になります。
- 現行 INPOS からの相対位置
- IPx または INx、あるいは Px または Nx として指定できます。結果の値がゼロ以下になる場合、関数はエラーとなります。結果の値が入力レコードの現在の長さより大きいと、この関数は無効になります。
- 現行 OUTPOS からの相対位置
- OPx または ONx として指定する必要があります。結果の値がゼロ以下になる場合、関数はエラーとなります。結果の値が入力レコードの現在の長さより大きいと、この関数は無効になります。
- length
- 入力レコードのフィールドの長さ。
- パック 10 進フィールドでは、長さを指定する場合には 1 から 16 の範囲内にする必要があります。長さを省略すると、FLD_CO はレコード・データからパック・フィールドの長さを決定します。
- ゾーン 10 進フィールドでは、長さを指定する場合には 1 から 31 の範囲内か、またはフィールドに分離符号文字が入っている場合には 1 から 32 の範囲内にする必要があります。長さを省略すると、レコードの残り部分の長さにデフォルト設定されます。値が 0 の場合、フィールドをレコードの終了まで拡張することも示します。
- type
- テストするデータ・タイプ。
- P
- FLD_TYPE は、フィールドが有効なパック 10 進フィールドである場合に 1 を戻します。変形符号の値 (正の値の場合の 'f'x など) は有効とみなされます。無効な場合は 0 を戻します。
- Z
- FLD_TYPE は、フィールドが有効なゾーン 10 進数フィールドである場合に 1 を戻します。FLD_TYPE は、すべての COBOL 外部 10 進数変形を数値データとして認識します。無効な場合は 0 を戻します。
例 1
現在の入力レコードの先頭の 3 バイトに有効なパック 10 進数が含まれている場合、フィールドを累算します。そうでない場合、最初の 2 バイトを 2 進数として累算します。
If FLD_TYPE(1,3,P) Then
TALLY(1,3,P,'Tally packed')
Else
TALLY(1,2,B,'Tally binary')
例 2
入力レコードの現行の INPOS からの 3 バイトに、有効なパック 10 進数が含まれる場合、これらの 3 バイトを出力レコードの終わりにコピーします。それ以外の場合は、INPOS からの 2 バイトを出力レコードの終わりにコピーします。
If FLD_TYPE(P0,3,P) Then
FLD_OUT(P0,3,P0,3)
Else
FLD_OUT(P0,2,P0,2)
注: この例では、FLD_OUT 関数の両方の引数に、短縮形式の相対位置指定を使用できます。これは、i_start が入力レコードをターゲットとし、o_start が出力レコードをターゲットとしていることが明白であるためです。