VAR_TM

1. Syntax

1  VAR_TM ( name ,
1! 1
1 start
2  ,
2  mask ,
2? ! 1 type
2  )

(FASTREXX プロシージャーで使用できます。)

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

例 1

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

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

例 2

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

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

例 3

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

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