データの初期化

EGL で生成されたプログラムがレコードを自動的に初期化する場合 (後述のような場合)、 最下位レベルの構造体の各項目は、プリミティブ型に対応する値に設定されます。 書式初期化も同様ですが、 デフォルトをオーバーライドする値を書式宣言で割り当てることができる点が異なります。

初期化は、以下の状態でも行われます。

次の表に、初期化値の詳細を示します。

プリミティブ型 初期化値
ANY 変数の型は未定義です。
BIN 型および整数型 (BIGINT、INT、および SMALLINT)HEXFLOATSMALLFLOAT 2 進ゼロ
CHARMBCHAR 単一バイトのブランク
DATETIMETIMESTAMP マシン・クロックの (TIMESTAMP の場合は、マスクが必要とするバイト数の) 現行値
DBCHAR 2 バイトのブランク
DECIMALMONEYNUMNUMCPACF 数値のゼロ
INTERVAL 前に正符号が付いた (マスクが必要とするバイト数の) 数値のゼロ
UNICODE ユニコードのブランク (16 進の 0020)

構造体では、最下位レベルの構造体の項目のみが考慮されます。例えば、HEX 型の構造体の項目が CHAR 型の構造体の項目に従属している場合、メモリー領域は 2 進ゼロで初期化されます。

プログラムまたは関数パラメーターとして受け取られるレコードまたは項目は、自動的に初期化されません。

EGL で生成された Java™ プログラムは、ローカルかグローバルかにかかわらず、レコードを初期化します。

EGL で生成された COBOL プログラムは、プログラムのプロパティーで識別される入力レコードを初期化します。 他のレコードが初期化されるかどうかは、特定の変数の initialized プロパティーを設定するかどうかによって異なります。 設定しない場合は、レコードの初期化は、生成時に設定した 2 つのビルド記述子オプションによって異なります。

COBOL プログラムの振る舞いの汎用性を保つために、EG で生成された COBOL プログラムではローカル なレコードを初期化しません

NUM 型の項目と CHAR 型の項目を比較する COBOL プログラムを生成する場合は、コードによって項目が初期化されるようにしてください。そうしないと、比較の実行時にプログラムでエラーが発生し、アベンド (異常終了) することがあります。この場合、例外処理用のコードは実行されません。これと同様の COBOL 固有の注意事項が、ローカルの構造体およびレコード内の構造体項目に適用されます。

関連する概念
関数パーツ
DataItem パーツ
プログラム・パーツ
レコード・パーツ
固定構造体

関連する参照項目
EGL 文
initNonIOData
initIORecords
set

ご利用条件 | フィードバック
(C) Copyright IBM Corporation 2000, 2005. All Rights Reserved.(C) Copyright IBM Japan 2005.