フィールドの長さの設定方法

可変長フィールドが INZ を使用して初期化されるとき、初期長は 初期化値の長さに設定されます。 たとえば、長さ 10 の文字フィールドが値 'ABC' に初期化される と、初期長は 3 に設定されます。

EVAL 命令では、可変長ターゲットの長さが変更されます。 たとえば、長さ 10 の文字フィールドに値 'XY' が割り当てられる と、長さは 2 に設定されます。

*.. 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 ...+... 8
DName+++++++++++ETDsFrom+++To/L+++IDc.Keywords+++++++++++++++++++++++++++++
D fld                      10A        VARYING
 * It does not matter what length 'fld' has before the
 * EVAL; after the EVAL, the length will be 2.
CL0N01Factor1+++++++Opcode(E)+Factor2+++++++Result++++++++Len++D+HiLoEq...
C                   EVAL      fld = 'XY'

DSPLY 命令では、可変長結果フィールドの長さが、ユーザーによって入力された 値の長さに変更されます。 たとえば、結果フィールドが長さ 10 の文字フィールドであり、ユーザーに よって入力された値が '12345' である場合、このフィールドの長さは、DSPLY 命令 によって 5 に設定されます。

CLEAR 命令では、可変長フィールドの長さが 0 に変更されます。

PARM 命令では、結果フィールドの長さが、演算項目 2 (指定されている場合) の中の フィールドの長さに設定されます。

固定形式命令の MOVE、MOVEL、CAT、SUBST および XLATE は、可変長結果フィールド の長さを変更しません。 たとえば、値 'XYZ' が、MOVE を使用して、現在の長さが 2 である長さ 10 の 可変長文字フィールドに移動された場合、このフィールドの長さ は変更されず、データが切り捨てられます。

*.. 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 ...+... 8
DName+++++++++++ETDsFrom+++To/L+++IDc.Keywords+++++++++++++++++++++++++++++
D fld                      10A        VARYING
      * Assume fld has a length of 2 before the MOVEL.
      * After the first MOVEL, it will have a value of 'XY'
CL0N01Factor1+++++++Opcode(E)+Factor2+++++++Result++++++++Len++D+HiLoEq...
C                   MOVEL     'XYZ'      fld
      * After the second MOVEL, it will have the value '1Y'
C                   MOVEL     '1'        fld
注: MOVE と MOVEL について推奨される使用法は、EVAL とは対照的 に、一時的に長さを固定したいフィールドの値を変更する場合です。 たとえば、報告書を作成する場合に、その列のサイズが毎日異なって いて、ただし、プログラムの所定の実行時にはそれを固定する必要がある、という場合などです。

フィールドがファイル (入力仕様) から読み取られるとき、可変長フィールドの 長さは入力データの長さに設定されます。

出力仕様の「後で消去」機能は、可変長フィールドの長さを 0 に設定します。

可変長フィールドの長さは、EVAL 命令の左側の %LEN 組み込み関数を使用して、ユーザー自身で設定することができます。