トラブル後の復旧のために、スクリーン領域(テキストと属性)を別の記憶領域に保存する。
call "CBL_SCR_SAVE" using by value flags top-line bottom-line returning handle.
呼び出しプロトタイプ使用時 ( 説明の読み方) | PIC (32 ビット システム) | |
---|---|---|
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.