FLD_TM

1. Syntax

1  FLD_TM (
2.1! 1
2.1 start
1 ,
1 mask
1 ,
1? !1type
1 )
注: 最後に指定された引数の後のコンマは省略可能です。

FASTREXX 条件式で使用できます。

入力レコードにあるフィールドの選択されたビットをテストします。

Returns
テストが「真」と評価された場合には 1 を、「偽」と評価された場合には 0 を戻します。
start
テストを開始する入力レコード内の位置 (バイト単位)。フィールドの長さは mask により定義されます。以下のように指定できます。
絶対位置
正の整数である必要があります。デフォルト値は 1 です。start が入力レコードの現在の長さより大きければ、この関数は無効になります。
現行 INPOS からの相対位置
IPx または INx、あるいは Px または Nx として指定できます。結果の値がゼロ以下になる場合、関数はエラーとなります。結果の値が入力レコードの現在の長さより大きいと、この関数は無効になります。
現行 OUTPOS からの相対位置
OPx または ONx として指定する必要があります。結果の値がゼロ以下になる場合、関数はエラーとなります。結果の値が入力レコードの現在の長さより大きいと、この関数は無効になります。
mask
フィールドのどのビットをテストするか決定するビット・ストリング。マスクの長さが入力フィールドの長さを定義します。このフィールドは、入力レコード内の指定されたビットをテストするために使用されるビット・ストリング・マッピングを定義します。ビット・ストリング、16 進ストリング、または文字ストリング形式を使用して、このフィールドを定義することができます。したがって、'0100 0000'b、'40'x、および ' ' は、1 バイト・フィールドの 2 番目のビットをテストするためのマスクを定義する正当な方法であり、等価です。
type
テストのタイプ。
1
FLD_TM は、マスク内のオンであるすべてのビットが、入力レコード・フィールドでオンである場合に、「真」(1) を戻します。これはデフォルト値です。
0
FLD_TM は、マスク内のオンであるすべてのビットが、入力レコード・フィールドでオフである場合に、「真」(1) を戻します。
M
FLD_TM は、マスク内のオンであるビットのうち、少なくとも 1 つのビットが入力レコードでオンで、かつ、少なくとも 1 つのビットがオフである場合に、「真」(1) を戻します。
N
FLD_TM は、マスク内のオンである少なくても 1 つのビットが、入力レコード・フィールドでオフである場合に、「真」(1) を戻します。

例 1

入力レコードの 3 番目のバイトをテストし、下位ビットが設定されていれば、出力レコードの 2 番目のバイトに 16 進数の FF をオーバーレイします。

 If FLD_TM(3,'01'x) Then Do
   OVLY_OUT('ff'x,2,1)
   Return
 End
 Return 'DROP'

例 2

入力レコードの 3 番目のバイトをテストし、3 つの上位ビットのうち、一部のビットが設定され、一部のビットが設定されていない場合に、そのレコードの 2 番目のバイトの内容を 16 進の 04 でオーバーレイします。

 If FLD_TM(3,'11100000'b,M) Then Do
   OVLY_OUT('04'x,2,1)

例 3

入力レコードの現行の INPOS 位置をテストし、下位ビットが設定されていれば、出力レコードのこの位置の前のバイトに 16 進数の FF をオーバーレイします。

 If FLD_TM(P0,'01'x) Then Do
   OVLY_OUT('ff'x,IN1,1)
   Return
 End
 Return 'DROP'