CBL_SCR_SAVE

トラブル後の復旧のために、スクリーン領域(テキストと属性)を別の記憶領域に保存する。

構文:
call "CBL_SCR_SAVE" using by value       flags
                                         top-line
                                         bottom-line
                               returning handle.
パラメタ:
呼び出しプロトタイプ使用時 ( 説明の読み方) PIC (32bitシステム)
flags cblt-x4-comp5. pic x(4) comp-5.
top-line cblt-x4-comp5. pic x(4) comp-5.
bottom-line cblt-x4-comp5. pic x(4) comp-5.
handle cblt-pointer. usage pointer.
入力パラメタ:
flags 現行では、値は常に0。
top-line 保存されるスクリーン領域のトップに最も近いライン。ライン1はトップラインになる。
bottom-line 保存されるスクリーン領域のボトムに最も近いライン。ライン1がトップラインになる。

top-lineとbottom-lineを含む範囲が保存される。top-lineとbottom-lineが同値の場合は、1本のスクリーンラインが保存されることになる。

top-lineもしくはbottom-lineの値が0の場合、パラメタはスクリーンの最後のラインであると見なされる。これにより、スクリーン全体を保存したい場合には、スクリーンのサイズを知らなくても保存することができる。

top-lineの論理値はbottom-lineの論理値と等しいか、それより小さい値である必要がある。

出力パラメタ:
handle handleには、CBL_SCR_RESTOREのcall-by-nameルーチンに次に渡される"save handle"が含まれるか、もしくは(パラメータ不良かメモリ不足によって)保存操作が完了できないことを示唆するナル値が含まれる。
説明:

3つのパラメタがBY VALUEを通過するため、すべてのパラメタ値もしくはその一部の値は、数値定数で指定されることがある。たとえば、"BY VALUE 12 SIZE 4"のような値で指定される。

CBL_SCR_SAVEはスクリーン領域を直接読み込むよりも利点がある。

結果として、処理がCBL_SCR_RESTOREルーチンへ渡されない場合、スクリーン情報を保存するために割り当てられるコアメモリはすべて失われる。返された処理でCBL_SCR_RESTOREの呼出しに何度も失敗すると、メモリ漏洩が発生する。

CBL_SCR_RESTORE以外のルーチンへのパス処理はすべて無効になる。

例:

サイズにかかわらず、スクリーン全体を保存したい場合:

call "CBL_SCR_SAVE" using by value 0 size 4
                                   1 size 4
                                   0 size 4
                         returning handle.

スクリーンの最後の1ラインのみ保存したい場合:

call "CBL_SCR_SAVE" using by value 0 size 4
                                   0 size 4
                                   0 size 4
                         returning handle.

スクリーンのトップの3ラインのみ保存したい場合:

call "CBL_SCR_SAVE" using by value 0 size 4
                                   1 size 4
                                   3 size 4
                         returning handle.
他参照:

関連項目