FLD_TYPE

1. Syntax

1  FLD_TYPE (
1! 1
1 start
2  ,
1! length(inrec)-start+1
1 length
3  ,
3? type
3  )
注: 最後に指定された引数の後のコンマは省略可能です。

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 が出力レコードをターゲットとしていることが明白であるためです。