%W - ウィンドウ処理

%W

注意:
%W コマンドの代わりに DEFINE WINDOW ステートメントを使用することを強くお勧めします。

Natural ウィンドウとは、端末画面上に表示される、Natural プログラムによって構築された論理ページのセグメントのことです。

%W コマンドは、このウィンドウの処理を制御します。

このコマンドは常に、後述する各機能のパラメータとともに指定する必要があります。1つの %W コマンドで複数のパラメータを指定することができます。パラメータはデリミタ文字を入れずに連続して指定する必要があります。

その存在を意識していなくてもウィンドウは常に存在しています。%W コマンドまたは DEFINE WINDOW ステートメントで異なる値を指定していない限り、ウィンドウのサイズはユーザーの端末画面の物理サイズと同じです。

ウィンドウ処理の詳細については、『ステートメント』ドキュメントの DEFINE WINDOW ステートメントも参照してください。

ウィンドウコマンドには次の 2 つのタイプがあります。

  • 物理画面上でのウィンドウのサイズおよび位置を制御するコマンド

  • プログラムで作成した論理ページ上でのウィンドウの位置を制御するコマンド

このドキュメントでは、次のトピックについて説明します。


物理画面上のウィンドウのサイズおよび位置

次に示すウィンドウコマンドは、物理画面上のウィンドウのサイズと位置を制御します。

物理画面上でウィンドウの位置を変更しても、論理ページ上のウィンドウの位置は変わりません。

Physical screen

有効なウィンドウサイズの詳細については、DEFINE WINDOW ステートメントを参照してください。

Command 関数
%WB フレームを除いたウィンドウのサイズが、物理画面のサイズに設定されます。フレームは定義されていても表示されません。
%WBlll/ccc ウィンドウの上左隅を行番号 lll、桁番号 ccc に位置付けます。行数と桁数は物理画面上でカウントされます。ウィンドウサイズは変更されないまま維持されます。ウィンドウが大きすぎて指定した位置に配置できない場合は、その位置にできる限り近い位置に配置されます。
%WB0 ウィンドウを画面の左上隅に位置付けます。ウィンドウサイズは変更されないまま維持されます。
%W# ウィンドウの左上隅をカーソルの位置に位置付けます。ウィンドウサイズは変更されないまま維持されます。ウィンドウが大きすぎて指定した位置に配置できない場合は、その位置にできる限り近い位置に配置されます。
%W? ウィンドウの右下隅をカーソルの位置に設定します。ウィンドウの左上隅は変わらず、ウィンドウのサイズが設定に応じて調節されます。
%WLnn フレームが指定されている場合は、フレームを含むウィンドウの行サイズ(横の長さ)が nn に設定されます。

nn を省略するか、または画面より大きな値を指定すると、行サイズは最大値、つまり画面の右端までに設定されます。

%WCnn フレームが指定されている場合は、フレームを含むウィンドウの桁サイズ(縦の長さ)が nn に設定されます。

nn を省略するか、または画面より大きな値を指定すると、桁サイズは最大値、つまり画面の下端までに設定されます。

桁サイズおよび行サイズの指定は、フレームが指定されている場合はフレームを含むウィンドウの全体的な物理サイズを示します。ウィンドウ内に論理的に表示可能な内容のサイズではありません。

不正または不可能なサイズや位置付けのコマンドは、無視されるか、または物理的に有効な位置に調整されます。

Command 関数
%WF フレームを有効にします。ウィンドウの境界がフレームで示されます。

ウィンドウサイズが 4 行 × 12 桁より小さい場合、フレームは表示されません。

%WM フレームを無効にします。ウィンドウの境界はフレームで示されません。

フレームを無効にしても、ウィンドウのサイズ(ウィンドウ内に表示可能なページセグメントのサイズのみ)は変わりません。

%WO PF キー行、メッセージ行、および統計行の表示を抑制します。このコマンドは画面が "実" ウィンドウの場合、つまり、物理画面より小さい場合にのみ適用されます。

%WO の設定を解除するには、%WO を再発行するか、または %WD を発行します。

%WP デフォルトでは、PF キー行、メッセージ行、および統計行がウィンドウ内に表示されます。ウィンドウ外の画面に表示するには、%WP を使用します。

%WP の設定を解除するには、%WD を使用します。

%WD %WF%WO%WP、および DEFINE WINDOW ステートメントの TITLE オプションの設定を解除します。
%WX ウィンドウの外に *COM フィールドが存在する場合、このフィールドは通常、書き込み保護に設定されていません。%WX を使用して、書き込み保護に設定します。
%WY %WX の設定を解除します。

論理ページ上のウィンドウの位置

次に示すウィンドウコマンドは、現在の論理ページ、つまり Natural プログラムが表示のために生成した現在のレポートおよびマップ上のウィンドウの位置を制御します。この論理ページは、物理画面よりも大きい場合があります。

論理ページでウィンドウの位置を変更しても、物理画面上のウィンドウのサイズおよび位置は変更されません。つまり、ウィンドウがページの上を移動するのではなく、ページがウィンドウの "下" を移動します。

Logical page

次に示すコマンドで定義を変更しない限り、ウィンドウは論理ページの左上隅に配置されます。

Command 関数
%W* カーソルで示されているページ上の位置をウィンドウの左上隅に移動します。
%Wlll,ccc 行番号 lll、桁番号 ccc で指定した論理ページの位置をウィンドウの左上隅に移動します。行数と桁数は論理ページ上でカウントされます。
%W< ウィンドウを左に移動します。位置の移動数は、ウィンドウの行サイズ(横方向に拡張)と同じです。
%W<< ウィンドウをページの一番左端に移動します。
%W<n ウィンドウを n 桁分左に移動します(0 ≦ n ≦ 論理行サイズ)。
%W> ウィンドウを右に移動します。位置の移動数は、ウィンドウの行サイズ(横方向に拡張)と同じです。
%W>> ウィンドウをページの一番右端に移動します。
%W>n ウィンドウを n 桁分右に移動します(0 ≦ n ≦ 論理行サイズ)。
%W+ ウィンドウを下に移動します。行の移動数は、ウィンドウの行数と同じです。(*)
%W++ ウィンドウをページの一番下に移動します。(*)
%W+n ウィンドウを n 行分下に移動します(0 ≦ n ≦ 論理ページサイズ)。(*)
%W- ウィンドウを上に移動します。行の移動数は、ウィンドウの行数と同じです。
%W-- ウィンドウをページの一番上に移動します。
%W-n ウィンドウを n 行分上に移動します(0 ≦ n ≦ 論理ページサイズ)。
%WH デフォルトでは、画面 I/O の後、論理ページ上のウィンドウの位置は左上隅にリセットされます。%WH を使用すると、ウィンドウの位置は次の I/O でリセットされなくなります。つまり、設定したウィンドウの位置が保持されます。%WH は次の I/O にのみ適用されます。
%WS STAY オプションを有効にします。つまり、現在のページが終わるまでそのページに制御が "留まります"。

1 つのページでまだ縦方向に表示されていない部分がある場合、文字列 VVVV がメッセージ行に表示されます。ENTER キーを押すたびに、論理ページが終わるまでウィンドウが下方向にスクロールされます。その次の ENTER キーで制御はプログラムに戻ります。ただし、入力フィールド(セッションパラメータ AD=A または AD=M)を伴う INPUT ステートメントで作成したページには適用されません。

%WN STAY オプションを無効にします。ENTER キーを押すと、制御はプログラムに戻ります。

* ウィンドウは最大で、ページの最後の非空白行にまで移動できます。

注意:

  1. プログラム内で上記のコマンドを使用してウィンドウを移動する場合は、SET KEY ステートメントを使用してコマンドをファンクションキーに割り当てます。
  2. このコマンドを SET CONTROL ステートメントで指定する場合、このステートメントのすぐ後に REINPUT ステートメントを指定する必要があります。つまり、REINPUT ステートメントおよび対応する INPUT ステートメント間に配置します。このようにしなかった場合、コマンドを適用するウィンドウを Natural で一意に識別できず、そのコマンドは無視されます。
  3. ただし、原則として、SET CONTROL 'W' ステートメントは、WINDOW='window-name' オプションを伴う INPUT ステートメントおよび対応する REINPUT ステートメント間には指定しないようにします。

コマンドの組み合わせ例

%W コマンドで指定するさまざまなパラメータを下記のように組み合わせて使用することもできます。

%W<<-- ウィンドウをページの左上隅に位置付けます。
%W>>++ ウィンドウをページの右下隅に位置付けます。
%W++- ページの最後より 1 つ前のウィンドウを表示します。
%W+3>6 ウィンドウをページ上の 3 行下、6 桁右に位置付けます。
%W10+> ウィンドウをページの 10 行目に位置付けてから、1 ウィンドウ下および 1 ウィンドウ右に位置付けます。
%WL40C10++-3 行サイズ 40 桁、ページサイズ 10 行のウィンドウを定義し、そのウィンドウをページの一番下に位置付け、さらにページの 3 行上に移動します。
%WL30C10B3/15--<< 行サイズ 30 桁、ページサイズ 10 行のウィンドウを定義し、そのウィンドウを物理画面上の 3 行 15 桁目に位置付け、さらにページの左上隅に移動します。
%WFS ウィンドウの周囲にフレームを生成し、STAY オプションを有効にします。

パラメータは、指定した順に評価されるため、同じパラメータでも異なる順序で指定すると異なる結果になることがあります。

%WA および %WZ - ウィンドウの表示前の画面イメージの保存

Command 関数
%WA %WA で、"ウィンドウの表示前の画面イメージの保存" 機能を有効にします。この機能が有効な状態でウィンドウが開かれると、そのウィンドウが重なる部分にあるすべてのアクティブな画面データが保存されます。このウィンドウを移動すると、保存された画面イメージが再構築された後、画面上の新しい位置にウィンドウが構築されます。また、呼び出し側のウィンドウが再びアクティブになるときには常に、複数の従属ウィンドウの保存イメージを再構築することができます。

現在の INPUT ステートメントでウィンドウを使用している場合、ウィンドウが出力される前に、画面イメージが保存されます。同じ INPUT ステートメントが繰り返されるたびに、現在または後続するすべての保存された画面イメージが回復され、画面に表示されます。

この機能を使用すると、例えば PC に似た方法でウィンドウを使用することができます。指定のウィンドウに対して、任意の数の従属ウィンドウを画面に表示することができます。これらのウィンドウはすべて、メインの入力ウィンドウが再実行されたときに画面から消去されます。

バッファの内容(画面イメージ)の削除は、Natural でフルスクリーン I/O が実行されるたびに、または Natural がコマンドモード(NEXT)に戻るときに、あるいは LOGON コマンドの発行後や CLEAR キーが押された後に行われます。

%WZ %WZ を使用して、以前に入力した %WA コマンドを無効にします。