EGL で生成されたプログラムがレコードを自動的に初期化する場合 (後述のような場合)、 最下位レベルの構造体の各項目は、プリミティブ型に対応する値に設定されます。 書式初期化も同様ですが、 デフォルトをオーバーライドする値を書式宣言で割り当てることができる点が異なります。
次の表に、初期化値の詳細を示します。
プリミティブ型 | 初期化値 |
---|---|
ANY | 変数の型は未定義です。 |
BIN 型および整数型 (BIGINT、INT、および SMALLINT)、HEX、FLOAT、SMALLFLOAT | 2 進ゼロ |
CHAR、MBCHAR | 単一バイトのブランク |
DATE、TIME、TIMESTAMP | マシン・クロックの (TIMESTAMP の場合は、マスクが必要とするバイト数の) 現行値 |
DBCHAR | 2 バイトのブランク |
DECIMAL、MONEY、NUM、NUMC、PACF | 数値のゼロ |
INTERVAL | 前に正符号が付いた (マスクが必要とするバイト数の) 数値のゼロ |
UNICODE | ユニコードのブランク (16 進の 0020) |
構造体では、最下位レベルの構造体の項目のみが考慮されます。例えば、HEX 型の構造体の項目が CHAR 型の構造体の項目に従属している場合、メモリー領域は 2 進ゼロで初期化されます。
プログラムまたは関数パラメーターとして受け取られるレコードまたは項目は、自動的に初期化されません。
EGL で生成された Java™ プログラムは、ローカルかグローバルかにかかわらず、レコードを初期化します。
COBOL プログラムの振る舞いの汎用性を保つために、EG で生成された COBOL プログラムではローカル なレコードを初期化しません。
NUM 型の項目と CHAR 型の項目を比較する COBOL プログラムを生成する場合は、コードによって項目が初期化されるようにしてください。そうしないと、比較の実行時にプログラムでエラーが発生し、アベンド (異常終了) することがあります。この場合、例外処理用のコードは実行されません。これと同様の COBOL 固有の注意事項が、ローカルの構造体およびレコード内の構造体項目に適用されます。
関連する概念
関数パーツ
DataItem パーツ
プログラム・パーツ
レコード・パーツ
固定構造体
関連する参照項目
EGL 文
initNonIOData
initIORecords
set