EXPAND
|
dynamic-clause | [GIVING operand5]
|
||
array-clause |
このドキュメントでは、次のトピックについて説明します。
構文図で使用されている記号については、「構文記号」を参照してください。
関連機能グループ:「ダイナミック変数または X-array のメモリ管理制御」
EXPAND
ステートメントは、拡張のために使用されます。
ダイナミック変数(dynamic-clause)の割り当てられた長さ、または
X-array(array-clause)のオカレンス数
詳細については、『プログラミングガイド』の次のセクションを参照してください。
オペランド定義テーブル:
オペランド | 構文要素 | フォーマット | オペランド参照 | ダイナミック定義 | |||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
operand1 | S | A | A | U | B | 不可 | 不可 | ||||||||||||||
operand2 | C | S | I | 不可 | 不可 | ||||||||||||||||
operand3 | A | G | A | U | N | P | I | F | B | D | T | L | C | G | O | 可 | 不可 | ||||
operand4 | C | S | N | P | I | 不可 | 不可 | ||||||||||||||
operand5 | S | I4 | 不可 | 可 |
構文要素の説明:
dynamic-clause | EXPAND DYNAMIC VARIABLE ステートメントは、ダイナミック変数(operand1)の割り当てられた長さを、指定した長さ(operand2)に拡張します。 詳細については、後述の「Dynamic 節」を参照してください。
|
---|---|
operand1 | operand1 は、サイズを拡張するダイナミック変数です。 |
operand2 | operand2 では、拡張するダイナミック変数の長さを指定します。 値として、負ではない整数の定数または Integer4(I4)タイプの変数を指定する必要があります。 |
array-clause | EXPAND ARRAY ステートメントでは、X-array (operand3)のオカレンス数を、(dim[,dim[,dim]]) で指定した上下限の範囲内で増加させます。 詳細については、以下の「Array 節」を参照してください。
|
operand3 | operand3 は、オカレンス数が増やされる X-array です。 配列のインデックス表記はオプションです。 各次元でインデックス表記として使用できるのは、全範囲を示す表記 * のみです。 |
dim
operand4 |
X-array 拡張の上下限表記(operand4 またはアスタリスク)は、ここで指定します。 現在の上下限の値を使用する必要がある場合は、operand4 の代わりにアスタリスク(*)を指定できます。 詳細については、後述の「次元」を参照してください。 |
GIVING operand5 | GIVING 節を指定しない場合は、エラー発生時に Natural ランタイムエラー処理がトリガされます。
|
[SIZE OF ] DYNAMIC [ VARIABLE ] operand1 TO operand2
|
EXPAND DYNAMIC VARIABLE
ステートメントでは、ダイナミック変数(operand1)の割り当てられたサイズを、指定した長さ(operand2)に拡張します。
operand2 が、現在割り当てられている operand1 の長さよりも小さい場合、このダイナミック変数に関してステートメントは無視されます。 現在割り当てられているダイナミック変数のサイズ(*LENGTH
)は修正されません。
[AND RESET [OCCURRENCES OF ] ARRAY operand3 TO (dim[,dim [,dim]])
|
EXPAND ARRAY
ステートメントは、X-array(operand3)のオカレンス数を、TO
(dim[,dim[,dim]])
で指定した上下限の範囲内で増加させます。
RESET
オプションは、サイズ変更した X-array のすべてのオカレンスをデフォルトのゼロ値にリセットします。 デフォルト(RESET
オプションなし)では、実際の値は保持され、サイズ変更した(新しい)オカレンスがリセットされます。
EXPAND
ステートメントを使用する場合は、オカレンス数の増加だけが可能です。 要求した数が現在割り当てられているオカレンス数よりも小さい場合は、無視されます。
EXPAND
ステートメントで使用される上限または下限は、配列に定義された対応する上限または下限と正確に一致している必要があります。
例:
DEFINE DATA LOCAL 1 #a(I4/1:*) 1 #g(1:*) 2 #ga(I4/1:*) 1 #i(i4) END-DEFINE ... /* allocating #a(1:10) EXPAND ARRAY #a TO (1:10) /* #a is allocated 10 EXPAND ARRAY #a TO (*:10) /* occurrences. /* allocating #ga(1:10,1:20) EXPAND ARRAY #g TO (1:10) /* 1st dimension is set to (1:10) EXPAND ARRAY #ga TO (*:*,1:20) /* 1st dimension is dependent and /* therefore kept with (*:*) /* 2nd dimension is set to (1:20) EXPAND ARRAY #a TO (5:10) /* This is rejected because the lower index /* must be 1 or * EXPAND ARRAY #a TO (#i:10) /* This is rejected because the lower index /* must be 1 or * EXPAND ARRAY #ga TO (1:10,1:20) /* (1:10) for the 1st dimension is rejected /* because the dimension is dependent and /* must be specified with (*:*).
詳細については、次を参照してください。
Array 節で指定する各次元(dim)は、次の構文を使用して定義します。
operand4 |
|
operand4 | ||||
* | * |
X-array 拡張の上下限表記(operand4 またはアスタリスク)は、ここで指定します。 現在の上下限の値を使用する必要がある場合は、operand4 の代わりにアスタリスク(*)を指定できます。 また、"*:*" の代わりに、1 つのアスタリスクを指定することもできます。
次元数(dim
)は、X-array の定義された次元数(1、2、または 3)と正確に一致している必要があります。
指定した次元のオカレンス数が、現在割り当てられているオカレンス数より小さい場合は、対応する次元のオカレンス数は変更されません。