参照変更 は、 データ項目の左端の文字位置 (開始桁) とそのデータ項目の長さ (オプション) を指定することによってデータ項目を定義するものです。
データ名-1 は修飾したり添え字を付けたりすることができます。データ名-1 をウィンドウ化日付フィールドにすることはできません。
左端の文字の開始位置 の評価結果が、ウィンドウ化日付フィールドであってはなりません。
長さ の評価結果は、ゼロ以外の正の整数でなければなりません。
長さ の評価結果が、ウィンドウ化日付フィールドであってはなりません。
左端の文字の開始位置 と長さ の合計から 1 を引いた値は、データ名-1 の桁数以下でなければなりません。長さ を省略した場合、使用する長さは、データ名-1 の文字位置に 1 を足した値から左端の文字の開始位置 を引いた値に等しくなります。
使用法が DISPLAY-1 および NATIONAL の場合、それぞれの文字位置は各文字の 2 バイトを占有します。参照変更は文字位置全体に対して機能するのであり、使用法 DISPLAY-1 および NATIONAL の文字の個々のバイトに対して機能するのではありません。使用法 DISPLAY の場合、参照変更はそれぞれの文字が 1 バイト文字であるものとして機能します。
特に断りがない限り、参照変更は、参照変更データ項目と同じ使用法のデータ項目または関 数を参照する ID または関数 ID が使用できる個所であればどこでも使用できます。
データ名-1 または 関数名-1 によって参照されるそれぞれの文字位置には、 左端の位置から右端の位置にかけて 1 ずつ大きくなる序数が割り当てられます。左端の位置には序数として 1 が割り当てられます。 データ名-1 のデータ記述項目に SIGN IS SEPARATE 文節がある場合は、 符号の位置にもそのデータ項目における序数が割り当てられます。
データ名-1 が使用法 DISPLAY で記述され、数字、数字編集、英字、英数字編集、または外部浮動小数点のカテゴリーに属する場合、そのデータ名-1 は、データ名-1 で参照されるデータ項目と同じサイズの英数字カテゴリーのデータ項目として再定義されたものとして、参照変更の対象となります。
データ名-1 が使用法 NATIONAL で記述され、数字、数字編集、国別編集、または外部浮動小数点のカテゴリーに属する場合、データ名-1 は、データ名-1 で参照されるデータ項目と同じサイズの国別カテゴリーのデータ項目として再定義されたものとして、参照変更の対象となります。
データ名-1 が国別グループ項目である場合、データ名-1 は国別カテゴリーの基本データ項目として処理されます。
データ名-1 が拡張日付フィールドである場合、参照変更の結果は非日付データとなります。
参照変更は、データ名-1 のサブセットまたは関数名-1 とその引数 (引数がある場合) によって参照されるデータ項目のサブセットである固有のデータ項目を作成します。この固有のデータ項目は、JUSTIFIED 文節を伴わない基本データ項目とみなされます。
関数が参照変更の場合、この固有のデータ項目は、クラスおよびカテゴリーを持ち、関数の タイプが国別の場合は、使用法 NATIONAL を持ちます。国別の関数でない場合は、英数字 のクラスおよびカテゴリーに属し、使用法 DISPLAY を持ちます。
データ名-1 が参照変更される場合、以下の場合を除き、この固有のデータ項目は、データ名-1 で参照されるデータ項目に定義されたものと同じクラス、カテゴリー、および使用法を持ちます。
長さ の指定がない場合、得られる固有のデータ項目の位置は、左端の文字位置 によって指定される文字位置 (その文字位置を含む) から、データ名-1 によって参照されたデータ項目の右端の文字位置 (その文字位置を含む) までになります。
オペランドに対する参照変更は、次のように評価されます。
次の例では、 WHOLE-NAME によって参照されたデータ項目の最初の 10 文字を、 FIRST-NAME によって参照されたデータ項目に転送します。
77 WHOLE-NAME PIC X(25).
77 FIRST-NAME PIC X(10).
...
MOVE WHOLE-NAME(1:10) TO FIRST-NAME.
次の例では、 WHOLE-NAME によって参照されたデータ項目の最後の 15 文字を、 LAST-NAME によって参照されたデータ項目に転送します。
77 WHOLE-NAME PIC X(25).
77 LAST-NAME PIC X(15).
...
MOVE WHOLE-NAME(11:) TO LAST-NAME.
次の例では、 TAB の 3 番目のオカレンスの 4 番目と 5 番目の文字を、 SUFFIX という変数に転送します。
01 TABLE-1.
02 TAB OCCURS 10 TIMES PICTURE X(5).
77 SUFFIX PICTURE X(2).
...
MOVE TAB OF TABLE-1 (3) (4:2) TO SUFFIX.