画面処理の応用

本章では、画面の入出力機能の応用について説明します。物理画面に対応する標準的な論理画面より大きいか小さい論理画面を構成することが可能です。これにより、単純なデータの入出力だけではなく、画面の操作を行うことができます。

1. LSDA

IPFOPN/IPFOVSを処理するとき、論理画面の属性を定義するパラメータであるLSDA(Logical Screen Data Area)を利用して論理画面の属性を定義することができます。同パラメータを省略した場合には、標準的な論理画面の属性が適用されます。

LSDAの設定により、以下の機能を利用することができます。

  • 論理画面を物理画面より大きく作成することができます。

  • 画面分割を利用して、画面のレイアウトを自由に設計することができます。

  • スクロールが可能な部分に対して、画面上に固定領域を設定することができます。

  • 画面の移動幅を自由に設定することができます。

LSDAで設定した上記の機能は、IPFOPN/IPFOVSが一度呼び出されると、以降は変更することができないため、慎重に設定する必要があります。LSDAで設定する項目は、以下の12項目であり、各項目は、LSDAでそれぞれ2バイトの領域の占めます。

項目 説明

SIZE1

論理画面の行のサイズ

SIZE2

論理画面の列のサイズ

HARD1A

ハードウェアの表示領域(開始行)

HARD1B

ハードウェアの表示領域(最終行)

HARD2A

ハードウェアの表示領域(開始列)

HARD2B

ハードウェアの表示領域(最終列)

SCR1

画面の移動幅(行方向)

SCR2

画面の移動幅(列方向)

NOT1

画面の固定領域(行位置)

NOT2

画面の固定領域(列位置)

DISP1

物理画面との差(行方向)

DISP2

物理画面との差(列方向)

LSDAを省略しない場合には、論理画面のサイズ、ハードウェアの表示領域を必ず指定します。それ以外の場合、ゼロを指定すると標準画面と同じ値に設定されます。

2. 画面分割

画面分割とは、物理画面に複数の論理画面を出力することです。LSDAを利用してそれぞれの画面サイズの属性を定義することができます。

2.1. 複数の論理画面

2つ以上の論理画面を順番に開くことで、物理画面を分割して論理画面を割り当てることができます。まず、1つの画面を開いた後、その上の一部の領域に次の画面を開いて上書きする方法で、複数の論理画面を出力することができます。

画面を分割する場合には、表示するそれぞれの論理画面のサイズをLSDAのハードウェアの表示領域(HARD1A、HARD1B、HARD2A、HARD2B)に指定します。

2.2. 分割された画面の識別

分割された画面は、論理画面の識別領域(LSIA)によって識別されます。したがって、複数の論理画面を使用するときは、複数のLSIAが必要です。すなわち、論理画面とLSIAは1対1で対応する必要があります。すでに開かれた論理画面に対応するLSIAを使用して別の論理画面を開くことはできませんが、終了された論理画面に対応するLSIAを再使用することは可能です。

3. 画面移動(スクロール)

物理画面のサイズに対応する標準的な論理画面の最大サイズは、横80×縦24に制限されます。論理画面のサイズを物理画面のサイズより大きく設定した場合、表示領域を超えた部分は、画面に一度に表示することができません。IPFでは、指定されたファンクション・キーの入力により、論理画面上の出力位置を移動させることが可能です。

3.1. 画面移動機能

物理画面のサイズより論理画面のサイズが大きい場合、物理画面は論理画面のすべての内容を表示することができません。このような場合、表示されなかった部分を表示する機能が画面移動機能です。

画面移動機能は、上・下・左・右の4方向に実行することができるため、この機能を利用すると、大きな論理画面も物理画面の表示領域を利用して入出力処理を行うことができます。LSDAのSCR1とSCR2に指定された数値の分だけ、それぞれの行方向と列方向へ画面移動を実行します。

3.2. 画面移動のファンクション・キー

IPFでは、以下のファンクション・キーを画面移動キーとして指定しています。

ファンクション・キー 説明

PF7、PF19

上方向

PF8、PF20

下方向

PF10、PF22

左方向

PF11、PF23

右方向

4. 画面固定

論理画面のサイズを物理画面のサイズより大きく設定した場合、画面移動機能を使用することができます。そのとき、全画面を移動するのではなく、一部の画面を固定することが可能です。

以下は、画面固定の規則です。

  • 標準的な論理画面であるか、LSDAの画面固定領域の値がゼロの場合には、画面固定領域がありません。

  • LSDAの画面固定領域のパラメータのうち、NOT1は1行からの行の数を意味しており、NOT2は1列からの列の数を意味します。