自由形式構文 | (許可されていない - %ALLOC 組み込み関数を使用) |
コード | 演算項目 1 | 演算項目 2 | 結果フィールド | 標識 | ||
---|---|---|---|---|---|---|
ALLOC (E) | 長さ | ポインター | _ | ER | _ |
ALLOC 命令は、演算項目 2 に指定された長さのデフォルトの動的データ域内の記憶域を 割り振ります。結果のフィールド・ポインターは、新しい動的記憶域を指し示すように 設定されます。 この記憶域は初期化されません。
演算項目 2 は小数点以下の桁がない数値でなければなりません。 これは、リテラル、定数、独立フィールド、サブフィールド、 テーブル名または配列要素のいずれかにすることができます。 値は、1 から最大サポート・サイズまでの範囲でなければなりません。 実行時に この値が範囲外になると、エラーとなり、状況 425 が出されます。 その 記憶域を割り振ることができない場合、エラーとなり、状況 426 が 出されます。このようなエラーが発生した場合、結果フィールド・ポインターは 変更されません。
最大許容サイズは、制御仕様書の ALLOC キーワードによる、 メモリー管理命令に使用されるヒープ記憶域のタイプによって異なります。 モジュールがメモリー管理命令にテラスペース記憶域モデルを使用することがコンパイル時に分かっている場合、 許容最大サイズは 4294967295 バイトです。 それ以外の場合、最大許容サイズは 16776704 バイトです。
実行時に使用可能な最大サイズは、RPG の許容最大サイズより小さい場合があります。
結果フィールドは基底ポインター・スカラー変数 (独立フィールド、 データ構造サブフィールド、テーブル名、または配列要素) でなければなりません。
プログラム状況コードが 425 または 426 である 例外を処理するために、命令コード拡張 'E' またはエラー標識 ER を指定できますが、 両方を指定することはできません。 エラー処理の詳細について は、プログラム例外/エラーを参照してください。
詳細については、メモリー管理命令を参照してください。
D Ptr1 S * D Ptr2 S * C ALLOC 7 Ptr1 * Now Ptr1 points to 7 bytes of storage * C ALLOC (E) 12345678 Ptr2 * This is a large amount of storage, and sometimes it may * be unavailable. If the storage could not be allocated, * %ERROR will return '1', the status is set to 00426, and * %STATUS will return 00426.