これはレコード・レベル・キーワードで、定義中のレコード様式がウィンドウを使用して表示されるよう指定するために使用します。
ウィンドウは、画面の一部をオーバーレイする情報です。ウィンドウは通常、実際のワークステーション画面よりも小さく、画面上のどこにでも置くことができます。
WINDOW(start-line | &start-line-field start-position
| &start-position-field window-lines window-positions
[*MSGLIN | *NOMSGLIN])
[*RSTCSR | *NORSTCSR])
または
WINDOW(*DFT window-lines window-position
[*MSGLIN | *NOMSGLIN]
[*RSTCSR | *NORSTCSR])
ウィンドウの定義を行う場合には、この形式の WINDOW キーワードを指定してください。 定義中のレコード様式がこのウィンドウに表示されます。 画面には、一度に最大 12 個までのウィンドウを表示することができます。 DDS には 12 個を超えるウィンドウを定義することができますが、同時に表示することができるのは 12 個だけです。 しかし、USRRSTDSP が指定されている場合には、ウィンドウの数は制限されません。 このレコードで定義するすべてのフィールドが、ウィンドウに収まらなければなりません。
ウィンドウの最終ウィンドウ行はメッセージ行として使用され、フィールドを含むことはできません。 例えば、ウィンドウに 10 行のウィンドウ行を指定する WINDOW キーワードをコーディングする場合には、それらのうちの 9 行だけがフィールドを含むことができ、10 行目はメッセージ行です。
特殊値 *DFT を start-line および start-position パラメーターの代わりに指定することは、システムがウィンドウの開始行および開始桁を判別することを示します。 ウィンドウは、可変開始位置のアプリケーション・ヘルプ・ウィンドウと同様に、カーソル位置に関連して位置が決められます。システムがウィンドウを位置づけるために使用する規則の詳細については、Application Display Programming 資料を参照してください。
WINDOW キーワードの 2 番目の形式は WINDOW(record-format-name) です。
WINDOW キーワードのこの形式は、定義中のレコード様式を他のレコード様式で定義されたウィンドウに表示する場合に指定します。
パラメーターは、指定されたウィンドウ属性を持つレコード様式名を指定します。 このパラメーターを使用するレコード様式が、参照されるレコードで定義されたウィンドウに表示されます。
WINDOW キーワードで指定された、レコード様式内のフィールド位置は、ウィンドウの左上隅の初めに使用できるウィンドウ位置と相対関係にあります。 初めに使用できるウィンドウ位置は上枠のすぐ下で、左枠から 2 桁右のところです (枠のすぐ右のバイトは終了属性バイトが使用します)。
USRRSTDSP が指定されていない場合には、ウィンドウが表示されるとき、現在画面上にあるどのレコードも中断します。中断しているレコードは、ウィンドウのわきに見ることができます。入力は活動状態のウィンドウの中でだけ行えます。 画面からウィンドウを除去するには、レコードを見えないウィンドウに書き込むか、画面で非ウィンドウ・レコードをオーバーレイする必要があります。
WINDOW キーワードは、次のキーワードが指定されているレコード様式で使用することはできません。
ALWROL |
PULLDOWN |
WINDOW は PASSRCD キーワードで指定されたレコード様式に使用することはできません。
ERRSFL キーワードは、WINDOW キーワードが指定されたレコードでは無視されます。
MSGLOC キーワードは、NOMSGLIN が指定されない限り、WINDOW が指定されているレコードについては無視されます。
レコード様式に WINDOW および WDWBORDER の両方のキーワードが指定されている場合には、WINDOW キーワードで start-line、start-position、window-lines、および window-positions パラメーターを指定してください。 WINDOW キーワードで record-format-name パラメーターを指定するべきではありません。
オプション標識は、このキーワードでは無効です。しかし、画面サイズ条件名は使用することができます。
次の例は、ウィンドウを定義するための WINDOW キーワードの指定方法を示します。
|...+....1....+....2....+....3....+....4....+....5....+....6....+....7....+....8
A R WINDOW1 WINDOW(4 20 9 30 *NORSTCSR)
A FIELD1 8A B 5 10
A FIELD2 10A B 6 10
A R WINDOW2 WINDOW(*DFT 9 30 *NOMSGLIN)
A
フィールド FIELD2 は、上枠の 6 行下、左枠 (画面の 10 行目の 31 桁目) の 11 桁右から始まります。
カーソルがウィンドウの外側に移動しても、機能キーは活動状態のままです。
レコード WINDOW 2 が表示されるときには、ウィンドウの左上端は実行時のカーソル位置になります。メッセージ行はウィンドウの内側には表示されず、画面の最下部に表示されます。
カーソルがウィンドウの外側に移動すると、機能キーは非活動状態になります。ユーザーが機能キーを押すとビープ音が鳴り、カーソルはウィンドウの内側に配置されます。
次の例は、同じウィンドウ内に複数のレコードを表示するための WINDOW キーワードの使用方法を示しています。
|...+....1....+....2....+....3....+....4....+....5....+....6....+....7....+....8
A R WINDOW1 WINDOW(&LINE &POS 9 30)
A USERID 8A O 2 10
A LINE 2S 0P
A POS 3S 0P
A
A R RECORD1 WINDOW(WINDOW1)
A OVERLAY
A FIELD1 5A B 7 2
A FIELD2 20A B 8 5
A
A R RECORD2 WINDOW(WINDOW1)
A FIELD3 10A B 2 2
A FIELD4 8A B 8 5
A FIELD4 8A B 8 5
A
レコード WINDOW1 が表示されるとき、枠の左上隅は、LINE および POS フィールドで指定された行および桁番号に配置されます。枠の右下隅は、上枠より 10 行下で、左枠から 33 桁右に位置します。
フィールド USERID は、上枠の 2 行下、左枠文字の 11 桁右から始まります。
RECORD1 (前の例の) が表示される場合には、WINDOW1 内に配置されます。そのフィールドはウィンドウの左上隅と関連して位置付けされます。 RECORD1 に OVERLAY キーワードが使用され、2 つのレコードは重なり合わないので、画面上のレコード WINDOW1 のフィールドは残ります。
RECORD2 (前の例の) が表示される場合には、これも WINDOW1 内に配置されます。そのフィールドはウィンドウの左上隅と関連して位置付けされます。 OVERLAY キーワードが使用されていないので、レコード WINDOW1 および RECORD1 のフィールドはウィンドウから除去されます。
次の例は、サブファイルを指定する WINDOW キーワードの使用方法を示しています。
|...+....1....+....2....+....3....+....4....+....5....+....6....+....7....+....8
A R SFLDATA SFL
A NAME 20A B 4 5
A RANK 10A B 4 27
A SERIAL 8A B 4 38
A
A R WINDOW1 SFLCTL(SFLDATA)
A WINDOW(8 25 10 50)
A SFLPAG(4)
A SFLSIZ(17)
A SFLDSP
A SFLDSPCTL
A 2 5'Full Name'
A 2 27'Rank'
A 2 38'Serial Nbr'
A
WINDOW1 サブファイル制御レコードが表示されるとき、それとサブファイルがウィンドウに表示されます。 ウィンドウ枠の左上隅は画面の 8 行目の 25 桁目になります。枠の右下隅は、19 行目の 78 桁目に位置します。
サブファイル・レコードおよびサブファイル制御レコードの両方のフィールドは、ウィンドウの左上隅の初めの使用可能ウィンドウ桁と関連して位置付けされます。 例えば、SFLDATA レコードの NAME フィールドは、ウィンドウの 4 行目の 5 桁目から始まります。 これは、画面の 12 行目の 31 桁目と同じことです。