POSITION 属性は、ストリング・オーバーレイ定義だけで使用でき、 定義済み変数の先頭になる基本変数内のビット、文字、グラフィック、 またはワイド文字を指定します。
POSITION 属性の式は、基本変数の先頭からの相対的な位置を指定します。 この式で指定する値は、1 から n の範囲内の値に することができます。ただし、n は次のように定義されます。
n = N(b) - N(d) + 1
ここで、N(b) は基本変数のビット、文字、グラフィック、または ワイド文字の数、N(d) は定義済み変数のビット、文字、グラフィック、 またはワイド文字の数です。
定義済み項目を参照するたびに、この式が計算され、整数値に変換されます。
POSITION 属性を省略すると、POSITION(1) と見なされます。
定義済み変数がビット・クラス集合である場合、以下の点に注意してください。
基本変数は、連結ストレージ内のデータを参照している必要があります。
例:
DCL C(10,10) BIT(1),
X BIT(40) DEF C POS(20);
X は、C の 20 番目のエレメントから 40 個の エレメントで構成されるビット・ストリングです。
DCL E PIC'99V.999',
Z1(6) CHAR(1) DEF (E),
Z2 CHAR(3) DEF (E) POS(4),
Z3(4) CHAR(1) DEF (E) POS(2);
Z1 は、10 進数字ピクチャー E のすべてのエレメントからなる文字ストリング配列です。 Z2 は、ピクチャー E のエレメント '999' からなる文字ストリングです。 Z3 は、ピクチャー E のエレメント '9.99' からなる文字ストリング配列です。
DCL A(20) CHAR(10),
B(10) CHAR(5) DEF (A) POSITION(1);
B の最初の 50 文字は、A の最初の 50 文字からなります。POSITION(1) を明示的に 指定しなければなりません。 そうしない場合は、単純定義が使用され、結果は異なったものになります。