仮想ヒープ ルーチン

ヒープとは、利用可能なメモリ領域に記憶されるバイトストリーム ファイルのことです。

ヒープの生成時に指定された状態語は当該ヒープと関連付けられており、そのヒープに対する処理が失敗すると情報が書き込まれます。各ヒープはこの仕組みを通じて特定のプログラム (状態語を含むプログラム) に関連付けられ、該当するプログラムがキャンセルされると自動的に割り当てが解除されます (CBL_CLOSE_VFILE の呼び出しによって、すでに明示的に割り当てが解除されている場合を除く)。

各ヒープはヒープ識別語で区別されます。この識別語はプログラム間でやり取りすることが可能であり、識別語を受け取ったプログラムは対応するヒープの読み書きを実行できます。ただし、これらの処理を実行するプログラムが処理結果を確認するには、ヒープの状態語をチェックする必要があります。状態語にはポインター変数でアクセスできるほか、一般的な連絡節のマッピングを介する方法も利用できます。

また、ヒープ処理の成否は RETURN-CODE レジスタでも確認できます。その後、ヒープの状態語を確認して、具体的なエラーを特定できます。

ヒープの読み取りや書き込みが成功すると、RETURN-CODE の値はゼロになります。失敗した場合には、RETURN-CODE はゼロ以外の値に設定され、対応する状態語の 1 バイト目に「9」、2 バイト目に詳細情報が格納されます。

CBL_READ_VFILE および CBL_WRITE_VFILE で使用されるバッファーは、データ節や連絡節内の任意の位置で定義できます。CBL_ALLOC_MEM ルーチンを使用して動的に割り当てることも可能です。

各ヒープは必要に応じてページングできます。ヒープは、sourcename.Vnn という名前でディスク上の個別のファイルにページングされます。sourcename はヒープが関連付けられているプログラムのベース名で、nn は 1 から 99 までの整数です。nn が 99 に達すると、V が上書きされます。この拡張子の許容される最大数は 384 です。

ローカル ヒープ数は構成可能で、最大数は 65535 です。

バッファー呼び出しのパラメーターで部分参照を使用すれば、COBOL レコード内でヒープ バッファーを宣言することも可能です。この手法はバッファー サイズが固定であれば、コンパイル効率の面でも有効です。呼び出しインターフェイスではバッファー サイズは無視されるため、部分参照を使用してサイズを固定します。