後で復元するために画面の領域 (テキストおよび属性) を保存します。
top-line と bottom-line の間の領域 (top-line および bottom-line の各行を含む) が保存されます。したがって、top-line と bottom-line が同じである場合は、その 1 行だけが保存されます。
top-line または bottom-line にゼロを指定すると、画面上の最後の行と見なされます。これにより、画面全体を保存する場合などに、画面のサイズを確認する必要がなくなります。
top-line の論理値は、bottom-line の論理値以下である必要があります。
サイズを問わず、画面全体を保存する場合は、次のようになります。
call "CBL_SCR_SAVE" using by value 0 size 4 1 size 4 0 size 4 returning handle.
画面の最後の行だけを保存する場合は、次のようになります。
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.
説明:
3 つのパラメーターは、BY VALUE、つまり値で渡されるため、数値リテラルとして指定することもできます(「BY VALUE 12 SIZE 4」など)。
CBL_SCR_SAVE は、画面の領域を直接読み取るよりも次の点で優れています。
後で handle を CBL_SCR_RESTORE ルーチンに渡さなかった場合、画面情報を保存するために割り当てられたコア メモリが失われます。そのため、返されたハンドルを使用した CBL_SCR_RESTORE の呼び出しに繰り返し失敗すると、メモリ リークが発生します。
CBL_SCR_RESTORE 以外のルーチンに handle を渡すことはできません。