FLD
現行の入力レコード (INREC) からフィールドの値を、start_column から開始して、 指定された下記の type に応じて解釈される length バイト数だけ、取り出します。
- B
- フィールドが 2 進数の場合。type に B を指定すると、length は 2、4、または 8 でなければなりません。
- C
- フィールドが文字を含んでいる場合。
- P
- フィールドがパック 10 進数の場合。type に P を指定すると、length は 1 から 16 の間でなければなりません。
- Z
- フィールドがゾーン 10 進数の場合。type に Z を指定すると、length は 1 から 32 の間でなければなりません。またはフィールドに分離符号文字または先行ブランクが含まれる場合は、1 から 33 の間でなければなりません。
type のデフォルト値は C です。
length を省略して、type P (パック 10 進数) を指定すると、FLD は、レコード・データからパック 10 進数フィールドの長さを決定しようとします。そしてそのフィールドだけを戻します。他のフィールド・タイプの場合に length を省略すると、FLD はレコードの残りの部分を戻します。
FLD 関数は組み込み REXX SUBSTR 関数に似ていますが、FLD は指定されたデータ・タイプに従って サブストリング
を解釈して、それに応じて形式設定された値を戻すところが違います。(数値フィールドの場合、FLD は、符号付き、先行ゼロなしの値を戻します。)
例 1
INPOS + 8 から始まるパック 10 進数フィールドの値が 100 より大きい場合、現行レコードを処理しません。
if fld(8,P) > 100 then exit 'DROP'
例 2
42 バイト目から始まる 2 桁の年フィールドの値が 60 より大きいと、 年フィールドの前にリテラル
19を挿入します。そうでないと、
20を挿入します。
if fld(42,2,Z) > 60 then
outrec = fld(1,41)||'19'||fld(42)
else
outrec = fld(1,41)||'20'||fld(42)