メモリ割り当てを検証し、解放メモリを監視して、オペレーティング システムでサポートされている場合にはメモリ ヒープを圧縮します。
制約事項: このルーチンはネイティブ COBOL でのみサポートされます。
構文:
call "CBL_MEM_VALIDATE" using by value flags
by reference param
returning status-code
パラメーター:
- flags
- 呼び出しプロトタイプ使用時 (「説明の読み方」を参照):cblt-x4-comp-5
- PIC:pic x(4) comp-5
- param
- 次のように定義されている集団:
01 cblt-mem-validate-param
03 cblte-mv-version cblt-x4-comp-5 *> pic x(4) comp-5.
03 cblte-mv-flags cblt-x4-comp-5 *> pic x(4) comp-5.
03 cblte-mv-type cblt-x4-comp-5 *> pic x(4) comp-5.
03 cblte-mv-size cblt-os-size *>32-bit: pic x(4) comp-5.
*>64-bit: pic x(8) comp-5.
03 cblte-mv-address cblt-pointer *> pointer
入力パラメーター:
- flags
- 検証の制御フラグ:
- ビット 0
-
0 |
何も実行しません。 |
1 |
すべてのメモリ割り当てを検証します。 |
- ビット 1
-
0 |
何も実行しません。 |
1 |
すべての解放メモリを検証します。 |
2 から 30 |
将来使用するために予約されています。ゼロに設定する必要があります。 |
- ビット 31
-
- cblte-mv-version
- パラメーター ブロックのバージョン。ゼロにする必要があります。
出力パラメーター:
- param
- ルーチンが 1000 を返した場合にのみフィールドが設定されます。
- cblte-mv-flags
- 情報フラグ:
- ビット 0
-
0 |
cblte-mv-address が設定されていません。
|
1 |
cblte-mv-address に、破損したメモリ ブロックのアドレスが含まれています。
|
- ビット 1
-
0 |
cblte-mv-address はユーザー データのアドレスです。
|
1 |
cblte-mv-address はメモリ ヘッダーのアドレスです。
|
- ビット 2
-
0 |
cblte-mv-size が設定されていません。
|
1 |
cblte-mv-size に、破損したメモリ ブロックのサイズが含まれています。
|
- ビット 3
-
0 |
cblte-mv-type が設定されていません。
|
1 |
cblte-mv-type に、破損したメモリ ブロックのタイプが含まれています。
|
- ビット 4
-
0 |
割り当てメモリに破損があります。 |
1 |
解放メモリに破損があります。 |
- ビット 5
-
0 |
ランタイム システムによって破損が検出されました。 |
1 |
オペレーティング システムによって破損が検出されました。 |
- ビット 6 から 31
- 将来使用するために予約されています。
- status-code
- 処理状態を示すコード。
0 |
すべてのメモリ割り当てが正常です。 |
1000 |
メモリの破損が検出されました。 |
1009 |
指定されたパラメーターが無効です。 |
例:
program-id. CblMemValidateExample as "CblMemValidateExample".
environment division.
configuration section.
data division.
working-storage section.
01 cbl-mem-flags pic x(4) comp-5 value zero.
01 cbl-mem-params.
05 cbl-mem-version pic x(4) comp-5 value zero.
05 cbl-mem-mv-flags pic x(4) comp-5 value zero.
05 cbl-mem-mv-type pic x(4) comp-5 value zero.
05 cbl-mem-mv-size pic x(4) comp-5 value zero.
05 cbl-mem-mv-addr usage pointer value null.
01 cbl-mem-return-code pic x(2) comp-5 value zero.
01 any-key pic x.
procedure division.
*Call directly setting the bits
call 'CBL_MEM_VALIDATE' using by value H'00000001'
by reference cbl-mem-params
returning cbl-mem-return-code.
display 'CBL_MEM_VALIDATE setting bits returned: '
cbl-mem-return-code.
*Same call using variable to set flags
move 1 to cbl-mem-flags
call 'CBL_MEM_VALIDATE' using by value cbl-mem-flags
by reference cbl-mem-params
returning cbl-mem-return-code.
display 'CBL_MEM_VALIDATE using variable returned: '
cbl-mem-return-code.
accept any-key.
goback.
end program CblMemValidateExample.
説明:
このルーチンを使用すると、メモリ割り当てを検証し、解放メモリを監視して、オペレーティング システムでサポートされている場合にはメモリ ヒープを圧縮できます。メモリの検証ストラテジについては、このルーチンを優先して、memory_strategy ランタイム チューナーの使用を設定してください。
メモリを圧縮するようにフラグを設定した場合は、オペレーティング システムで許容される範囲でメモリが圧縮されます。この結果を示す情報フラグの設定はありません。