バージョン 4.2.5
 —  ステートメント  —

EXPAND

EXPAND

dynamic-clause

[GIVING operand5]
array-clause

このドキュメントでは、次のトピックについて説明します。

構文図で使用されている記号については、「構文記号」を参照してください。

関連ステートメント:REDUCE | RESIZE

関連機能グループ:「ダイナミック変数または X-array のメモリ管理制御


機能

EXPAND ステートメントは、拡張のために使用されます。

詳細については、『プログラミングガイド』の次のセクションを参照してください。

ダイナミック変数の使用

ダイナミック変数のメモリスペースの割り当て/解放

X-array

X-Group 配列のストレージ管理

Top of page

構文説明

オペランド定義テーブル:

オペランド 構文要素 フォーマット オペランド参照 ダイナミック定義
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-arrayoperand3)のオカレンス数を、(dim[,dim[,dim]]) で指定した上下限の範囲内で増加させます。 詳細については、以下の「Array 節」を参照してください。
operand3 operand3 は、オカレンス数が増やされる X-array です。 配列のインデックス表記はオプションです。 各次元でインデックス表記として使用できるのは、全範囲を示す表記 * のみです。
dim

operand4

X-array 拡張の上下限表記(operand4 またはアスタリスク)は、ここで指定します。 現在の上下限の値を使用する必要がある場合は、operand4 の代わりにアスタリスク(*)を指定できます。 詳細については、後述の「次元」を参照してください。
GIVING operand5 GIVING 節を指定しない場合は、エラー発生時に Natural ランタイムエラー処理がトリガされます。

GIVING 節を指定した場合は、operand5 に、エラー発生時は Natural メッセージ番号、成功時はゼロが含まれます。

Dynamic 節

[SIZE OFDYNAMIC [VARIABLE] operand1 TO operand2

EXPAND DYNAMIC VARIABLE ステートメントでは、ダイナミック変数(operand1)の割り当てられたサイズを、指定した長さ(operand2)に拡張します。

operand2 が、現在割り当てられている operand1 の長さよりも小さい場合、このダイナミック変数に関してステートメントは無視されます。 現在割り当てられているダイナミック変数のサイズ(*LENGTH)は修正されません。

Array 節

[AND RESET [OCCURRENCES OF] ARRAY operand3TO (dim[,dim [,dim]])]

EXPAND ARRAY ステートメントは、X-arrayoperand3)のオカレンス数を、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)と正確に一致している必要があります。

指定した次元のオカレンス数が、現在割り当てられているオカレンス数より小さい場合は、対応する次元のオカレンス数は変更されません。

Top of page