ウィンドウ構文は、下位互換性のためのみに提供されています。 新しいアプリケーションを作成するときには、この機能を使用しないことをお奨めします。
COBOL システムは、ACUCOBOL ウィンドウ構文を部分的にサポートし、端末の画面に線やボックスを描画したり、物理的な端末で仮想端末ウィンドウを作成できます。 すべての ACCEPT/DISPLAY 文は、現在のウィンドウ (ACCEPT 書き方 1、2 や 3、DISPLAY 書き方 1、DISPLAY WINDOW/LINE/BOX 文を除く) 内で動作します。 この構文では、基礎となる表示を保持したり、回復したりできます。
この COBOL システムには、次のウィンドウ サポート構文を含んでいます。
-
ACCEPT 文での BEFORE TIME 指定
ACCEPT 文の書き方 5 は、タイムアウト期間を指定できる BEFORE TIME 指定があります。 ユーザーがこの期間内にデータを入力しない場合には、ACCEPT 文は自動的に終了します。
- DISPLAY WINDOW
DISPLAY WINDOW は、端末ウィンドウ (画面の領域) を作成し、それを現在のウィンドウにします。 これは仮想端末のようなものであり、この後の ACCEPT/DISPLAY 文で使用される画面位置は、そのウィンドウの左上隅に対しての相対位置です。
- DISPLAY LINE
DISPLAY LINE は、端末 (実際の端末または仮想端末) 上に線を描画します。端末上の最適なモードが自動的に使用されます。 DISPLAY BOX 文とともに使用することで、DISPLAY LINE 文は端末上にフォームを描画できます。
- DISPLAY BOX
DISPLAY BOX は、端末上にボックスを描画します。端末上の最適なモードが自動的に使用されます。 DISPLAY LINE 文とともに使用することで、DISPLAY LINE 文は端末上にフォームを描画できます
- CLOSE WINDOW
CLOSE WINDOW は、ウィンドウを削除します。 ウィンドウを POP-UP ウィンドウに指定すると、基礎となる表示を復元できます。
ウィンドウ構文を利用するためには、PREPROCESS"WINDOW1" コンパイラ指令を使用する必要があります。
この指令は、次の 2 つのどちらかの方法で指定します。
- ソースファイルに、次の行を記述します。
$SET preprocess"window1"
- コマンド ラインから、PREPROCESS"WINDOW1" 指令をインクルードします。
PREPROCESS"WINDOW1" 指令は、NOERRQ、AUTOCLOSE や COLOR とは異なる最新のコンパイラ指令です。 エラーが発生すると、コンパイラは処理を続けるかを尋ね、応答を待ちます。 この機能を無効にするには、PREPROCESS"WINDOW1" の後に NOERRQ を指定します。
次に、PREPROCESS"WINDOW1" 指令で使用可能なウィンドウ構文の詳細を説明します。
ACCEPT 文の書き方 5 は、『言語リファレンス』で説明されていますが、次の指定があります。
BEFORE TIME time-out
一般規則
- BEFORE TIME 指定は、一定時間経過後に ACCEPT 文を自動的に終了させます。 タイムアウト値は、100 分の 1 秒単位で指定します。 たとえば、「BEFORE TIME 500」は、タイマ値を 5 秒と指定します。
- ユーザーは、タイマが切れるまでに ACCEPT 文にデータを入力する必要があります。 ユーザーがデータ入力を始めるとすぐに、タイマが解除され、ユーザーはエントリを完了するのに十分な時間をとれます。 ユーザーがタイマが切れるまでにデータを入力しない場合には、ACCEPT 文は終了します。
CLOSE WINDOW 文は、現在の端末ウィンドウを閉じます。
形式
CLOSE WINDOW window-save-area
構文規則
window-save-area
は、PIC X(10) 句で記述される基本データ項目です。 DISPLAY WINDOW 文の POP-UP AREA 指定のオブジェクトである必要があります。
一般規則
- CLOSE WINDOW 文は、DISPLAY WINDOW 文の POP-UP AREA オプションで作成されるポップアップウィンドウを削除するために使用されます。
window-save-area
は、この実行単位で実行される DISPLAY WINDOW 文の POP-UP 指定のオブジェクトである必要があります。 さらに、その実行以降は CLOSE WINDOW 文のオブジェクトではなくなり、他の文でも変更することはできません。 この規則に違反すると、未定義の結果になります。
- CLOSE WINDOW 文は、対応する DISPLAY WINDOW 文が実行されたときに、アクティブなウィンドウにある端末の画面内容を復元します。 言い換えれば、DISPLAY WINDOW 文で作成されたウィンドウが画面から削除され、ポップアップウィンドウの下にあった画面内容で置き換えられるということです。
- 対応する DISPLAY WINDOW 文の実行でアクティブになったウィンドウが、アクティブウィンドウになります。その結果、最前面�
ウィンドウとなります。また、他のウィンドウに重なる場合もあります。
現在のウィンドウは、それぞれの window-save-area
データ項目で識別されるウィンドウを閉じることによって選択されます。次に例を示します。
5 つのポップアップウィンドウを、a
、b
、c
、d
、e
の順で、作成したと仮定します。
d
が閉じられると、c
が現在のウィンドウになります。
b
が閉じられると、a
が現在のウィンドウになります。
e
が閉じられると、c
が再び現在のウィンドウになります。
ここでは、ウィンドウの作成や線とボックス描画用の 3 つの追加の書き方の DISPLAY 文を提供する COBOL ウィンドウ構文を説明します。 その他の書き方については、『言語リファレンス』を参照してください。
書き方 1
書き方 1
書き方 2
書き方 3
構文規則
line-num
は、端末画面上の行位置を指定する、数字定数またはデータ項目です。 負以外の整数を指定する必要があります。
col-num
は、端末画面上のカラム位置を指定する、数字定数またはデータ項目です。 負以外の整数を指定する必要があります。
length
は、ウィンドウ幅、行幅、または文字位置のボックス幅を指定する、数字定数またはデータ項目です。 負以外の整数を指定する必要があります。
高さ
は、ウィンドウ内の行数を指定する、数字定数またはデータ項目です。 負以外の整数を指定する必要があります。
title
は、非数字定数または英数字データ項目です。
save-area
は、PIC X(10) 句で記述される基本データ項目です。
-
- REVERSE、REVERSED、および REVERSE-VIDEO は等価です。
- COLOR 句は、プリプロセッサ指令 COLOR を使用するときのみ サポートされます。 これは、既存の Micro Focus 仕様でない構文を追加します。
- SIZE または LINES 句の 1 つは、DISPLAY 文の書き方 2 に指定する必要があります。
identifier-1
、identifier-2
、integer-1
、および integer-2
は、次のような範囲 0 ~ 7 の値です。
0 |
黒 |
1 |
青 |
2 |
緑 |
3 |
シアン |
4 |
赤 |
5 |
マゼンタ |
6 |
茶または黄色 |
7 |
白 |
identifier-3
と integer-3
は、次の適切な値を加えた値です。
色
|
前景
|
背景
|
黒 |
1 |
32 |
青 |
2 |
64 |
緑 |
3 |
96 |
シアン |
4 |
128 |
赤 |
5 |
160 |
マゼンタ |
6 |
192 |
茶 |
7 |
224 |
白 |
8 |
256 |
注:COLOR 句に使用される前景色の値は、標準の Micro Focus 仕様の FOREGROUND-COLOR および BACKGROUND-COLOR の標準色の値とは異なります。
また、ビデオ属性は次の値で指定できます。
反転表示 |
1024 |
低輝度 |
2048 |
高輝度 |
4096 |
下線 |
8192 |
点滅 |
16384 |
- COLOR 句が FOREGROUND-COLOR や BACKGROUND-COLOR と同時に使用される場合には、COLOR 句で定義されたカラーは無視されますが、非カラー属性は適切に動作します。
一般規則
すべての書き方
- LINE と COLUMN 句は、物理画面上の行、カラムを指定する必要があります。
- カラーシステムの場合は、COLOR や FOREGROUND-COLOR、BACKGROUND-COLOR での指定、他の属性設定 (たとえば、点滅) の両方が使用されます。 モノクロシステムでは、すべてのカラー情報が無視され、他の設定のみが使用されます。
- すべての属性の組み合わせが、すべてのシステムで使用できるわけではありません。 たとえば、標準 DOS PC では、モノクロモードの設定、REVERSE と UNDERLINE は相互排他的で、これらの属性の 1 つのみ動作します。
書き方 1 (DISPLAY WINDOW)
- DISPLAY WINDOW 文は、端末ウィンドウを作成し、現在のウィンドウにします。 端末ウィンドウは、画面上の領域です。 ACCEPT や DISPLAY 文 (『言語リファレンス』に記述されている他の ACCEPT 書き方 1、2 や 3、DISPLAY 書き方 1、DISPLAY WINDOW/LINE/BOX 文を除く) は、現在のウィンドウのみに影響します。 さらに、すべての ACCEPT や DISPLAY 文 (『言語リファレンス』に記述されている他の ACCEPT 書き方 1、2 や 3、DISPLAY 書き方 1、DISPLAY WINDOW/LINE/BOX 文を除く) の行やカラム数は、現在のウィンドウの左上隅から計算されます。 つまり、現在のウィンドウは仮想端末の画面を定義し、物理画面のある領域を占有します。
- 初期のウィンドウは、全画面に設定されます。
- 現在のウィンドウを変更する唯一の方法は、他の DISPLAY WINDOW 文や CLOSE WINDOW 文による変更です。
- LINE NUMBER 句は、ウィンドウの先頭行を設定します。 行番号 1 は画面の先頭行を指します。 行番号は、画面に対する相対位置で、現在のウィンドウに対するものではありません。
- LINE NUMBER 句が指定されていない場合、0 が指定された場合、または、物理画面外の場合は、画面の先頭行が使用されます。
- COLUMN NUMBER 句は、ウィンドウの最左のカラムを設定します。 カラム番号 1 は画面の左側を指します。 カラム番号は、画面に対する相対位置で、現在のウィンドウに対するものではありません。
- COLUMN NUMBER 句が指定されていない場合、0 が指定された場合、または、物理画面外の場合は、カラム番号 1 が使用されます。
- SIZE 句は、ウィンドウのカラム数を指定します。 このカラム数が画面の右端を越えると、画面の幅は画面外に拡張されます。
- SIZE 句が指定されていない場合、または、0 が指定された場合には、ウィンドウは画面の右端に拡張されます。
- LINES 句は、ウィンドウの行数を指定します。 この行数が画面の下部を越えると、画面は画面外に拡張されます。
- LINES 句が指定されていない場合、または、0 が指定された場合には、ウィンドウは画面の下端に拡張されます。
- ERASE 句が指定されると、ウィンドウの作成時に直ちにクリアされます。 それ以外は、ウィンドウの内容は変更されません。 ウィンドウをクリアすると、空白文字で埋めます。
- BOXED 句は、新しいウィンドウの周りにボックスを描画します。 ボックスは、ウィンドウの外側に描画されます。 画面外のボックスの部分は描画されません。
- 端末の線描画セットは、ボックスを描くために使用されます。 端末に線描画セットがない場合は、同等の ASCII 文字が使用されます。 POP-UP 句が指定されると、そのボックスは画面上の他のボックスに重なります。 この句が指定されない場合には、ボックス描画は他のボックスに張り付き、交差します。 ボックス化された非ポップアップウィンドウがボックス化されたポップアップウィンドウと交差する場合に、そのボックス化されたポップアップウィンドウが最初に作成され、それが閉じられると、2 つのボックスが交差していた部分は再描画されません。 つまり、交差している部分の文字は、交差部分がなくなっても、そこに表示されたままです。
- ERASE 句は、BOXED 句によって暗黙的に含まれます。
- REVERSED 句は、ウィンドウの前景色と背景色を反転表示します。 これは、新しいウィンドウの ACCEPT や DISPLAY 文ごとに影響します。
- REVERSED 句は ERASE 句によって暗黙的に含まれます。 通常、REVERSED 句は、最初に作成したときにウィンドウ全体を反転表示します。
-
SHADOW 句は、ウィンドウに 3 次元的な効果を与え、画面上で浮き上がっているように見せます。
-
前景や背景の色の値を COLOR フィールドで 0 に設定すると、デフォルトのシステム属性に対応する色が使用されます。
- TITLE 句は、ウィンドウの境界にタイトルを表示します。 TITLE 句は、BOXED 句が指定されている場合のみに効果があります。
- タイトルは、左上端、上端の中心、右上端、左下端、下端の中心、右下端の 6 つの位置のいずれかに表示できます。 TOP や BOTTOM が指定されていない場合は、TOP が使用されます。 LEFT、CENTERED、または RIGHT が指定されていない場合は、CENTERED が使用されます。
-
NO SCROLL 句は、覚え書きとして扱われます。Windows 用のプリプロセッサは、これを確認するメッセージを表示します。
-
NO SCROLL 句は、単に覚え書きとして扱われます�
Windows 用のプリプロセッサは、これを確認するメッセージを表示します。
- POP-UP AREA 句は、COBOL システムに、新しいウィンドウを作成する前にシステム情報を格納します。 この情報は、新しいウィンドウを削除し、基礎となるウィンドウを復元するために CLOSE WINDOW 文で使用されます。 これで、ポップアップウィンドウが使用可能になります。
save-area
データ項目には、システム情報が格納されます。 このデータ項目を、格納後に変更しないでください。変更すると、結果が未定義になります。 このデータは、CLOSE WINDOW 文で以前のウィンドウを画面に復元し、そのウィンドウを現在のウィンドウに再設定します。
書き方 2 (DISPLAY LINE)
- DISPLAY LINE 文は、マシンや端末に依存する方法で、水平や垂直の線を描画します。 線は、ディスプレイデバイスの最適なモードを使用して描画されます。 DISPLAY BOX 文とともに使用すると、画面にフォームを描画できます。 DISPLAY LINE 文は、全画面用の ACCEPT や DISPLAY 文の位置付けには影響しません。
- 線は、画面上で他の線と交差するように表示され、適切な交差用の文字が使用されます。 線の末尾が他の直線と交差するように、隅や 3 方向の交差が使用されます。
- SIZE 句が指定されると、線は水平に描画されます。
length
の値は、線の長さを画面のカラム数で示します。 かわりに、LINES 句が使用されると、線は垂直に描画され、 高さ
の値は画面行数で示されます。
- 線はラップしたり、スクロールしたりしません。 LINES や SIZE 句で描画した線が現在のウィンドウを越えるような場合には、その線はウィンドウの端で切り捨てられます。 LINES や SIZE が 0 の場合は、線は描画されません。
line-num
の値は、線の開始行を指定します。 col-num
は、開始カラムを指定します。 常に、線は適切に右方向、下方向に描画されます。 line-num
と col-num
には、現在のウィンドウ内の位置を指定する必要があります。
- LINE NUMBER や COLUMN NUMBER 句が物理画面の外側を指定している場合、つまり、
line-num
が 0 か 24 (または画面の最大値)、 col-num
が 0 か 80 より大きい場合には、線は描画されません。
- TITLE 句は、水平線のみに効果があります。 TITLE 句が指定されると、
title-string
が線上に表示されます。
- タイトルは、RIGHT、LEFT、CENTERED 指定に応じて、右端、左端、中央に表示されます。 省略時は、CENTERED が使用されます。
- REVERSE 句は、線の前景と背景を反転します。
書き方 3 (DISPLAY BOX)
- DISPLAY BOX 文は、マシンや端末に依存する方法で、ボックスを描画します。 ボックスは、ディスプレイデバイスの最適なモードを使用して描画されます。 ボックスの描画に使用されている線が画面上の他の線と交差する場合は、適切な交差用の文字が使用されます。 DISPLAY BOX 文は、全画面用の ACCEPT や DISPLAY 文の位置付けには影響しません。
- ボックスの位置は、左上隅で指定されます。 ボックスのサイズは、高さと幅で指定されます。
- LINE NUMBER や COLUMN NUMBER 句が物理画面外を指定すると、ボックスは描画されません。
- SIZE 句は、ボックスの幅を指定します。 LINES 句は、その高さを指定します。 SIZE 句が指定されなかったり、0 であったり、ボックスが物理画面やウィンドウの端を越えて拡大されたりした場合には、ボックスは現在のウィンドウの右端まで拡張されます。 LINES 句が指定されなかったり、0 であったり、ボックスが物理画面を越えて拡大されたりした場合には、ボックスは現在のウィンドウの下端まで拡張されます。
- REVERSE 句は、DISPLAY WINDOW 文の場合と同じように動作します。
- TITLE 句も DISPLAY WINDOW 文の場合と同じように動作します。
- この機能は、中間コードの互換性が保証されていませんので、製品リリース時にソースコードを再コンパイルする必要があります。
- ACCEPT や DISPLAY 文をこの ウィンドウ構文で使用する場合には、AT LINE NUMBER 構文 (『言語リファレンス』を参照) やウィンドウに出現しない項目を含める必要があります。
- COPY REPLACING や REPLACE 文は使用できません。
- ウィンドウ構文は、固定形式の COBOL 原始プログラムのみサポートされます。
- 次の予約語は、ウィンドウ構文に取り入れられるので、それらを利用者語として使用することを避けてください。
BOX
BOXED
CENTERED
COLOR (COLOR指令が使用される場合)
POP-UP
SCROLL
SHADOW
WINDOW
WRAP
- ウィンドウ構文では、『言語リファレンス』に記載されている ACCEPT と DISPLAY 文のみを使用してください。
- ウィンドウ構文を使用する場合は、ANS85 コンパイラ指令が前提になります。 この指令は、明示的にも、暗黙的にも設定解除してはいけません。 この指令には、構文や RM、MS、および DG などの他の言語の動作に影響する指令のセットが含まれています。
- 英数字定数は、ウィンドウの文を含む行の末尾を越えて続けてはなりません。
- PROCEDURE DIVISION のスペルミスなどでは、ある種の構文エラーが表示されますが、それ以降のソースの行に対する余分なエラー メッセージが表示されることがあります。
- ウィンドウ構文エラーは、重大なエラーであり、次のように表示されます。
xnnn-P*******
- カラム 73 は、このカラムが常に空白文字として扱われるので、原始プログラム中に使用できません。
- エラーが発生すると、コンパイラは処理を継続するかどうかを尋ねます。 NOERRQ 指令で、この機能を無効にできます。 UNIX オペレーティング システムでは、コンパイル時に、NOERRQ 指令を使用することはできません。
エラーがない場合や、エラーであっても「続行しますか」に「いいえ」で答えると、コンパイラは 0 のエラー戻りコードを返します。
- 次の文は、単独で 1 行で記述する必要があります。
DISPLAY WINDOW
DISPLAY BOX
DISPLAY LINE
CLOSE WINDOW
EXIT PROGRAM
- ウィンドウサブシステムは、最初のウィンドウの文が実行されるときに、自動的に初期化されます。
- アプリケーションがウィンドウ構文と他の ACCEPT/DISPLAY 構文とを切り替えて使用している場合は、ウィンドウ構文による処理を完全に終了した後に、他の ACCEPT/DISPLAY 構文の使用を開始する必要があります。それ以外の場合には、ACCEPT/DISPLAY 文は希望する効果が得られません。
次のサブプログラムをコンパイルして、ウィンドウ構文による処理を明示的に終了するサブルーチンを作成できます。
$set preprocess "window1" autoclose
procedure division.
para-1.
exit program.
他の ACCEPT/DISPLAY 構文に切り替える前に、このサブプログラムを呼び出せるようになります。 AUTOCLOSE プリプロセッサ指令は、サブプログラムを終了する前に EXIT PROGRAM 文にウィンドウ構文による処理を終了させます。 ウィンドウサブシステムは、他のウィンドウ文が見つかると、再初期化されます。 ウィンドウサブシステムの初期化のたびに、背景画面と内容が再表示されます。
- 同一の実行単位で Panelsの呼び出しとウィンドウ構文を混在することはできません。
- ウィンドウがアクティブ、またはその実行単位でアクティブであった場合には、DISPLAY SPACES UPON CRT 文はウィンドウを空白文字でクリアしますが、属性は変更しません。
- COPYEXT、COPYLBR、FOLD-COPY-NAME などのコピーファイルに影響する指令は使用できません。
- COBCPY などのコピーファイル処理に影響する環境変数は使用できません。
- 次の構文があります。
COPY filename OF library
この構文は、サポートされません。
次のエラー メッセージがプリプロセッサの処理中に表示されます。
想定外の数字リテラル:
想定外の数字リテラル:
サポートされないキーワードまたは noiseword:
DISPLAY WINDOW に対する認識されない句:
DISPLAY WINDOW に対する認識されない句:
DISPLAY WINDOW に対する認識されない句:
ACCEPT FROM SCREEN に対する認識されない句:
このキーワードは既に使用されています:
このキーワードは別のキーワードと競合します:
この予約語の使用は正しくありません:
キーワードを使用して構成または並び順が正しくない句:
プリプロセッシング中のエラー - 詳細は不明です
不明な COPY ファイルが指定されています
WINDOW1 プリプロセッサは自由形式を処理できません
SCROLL/WRAP 句がコメントとして処理されています
編集 / コンパイル / アニメートのループは、エラーが返された後に、原始プログラムの正しくない行に戻ります。
プログラム内の最初のウィンドウ文が出現すると、画面が再表示されます。 これは予期された動作で、プログラムへの影響はありません。
$set preprocess(window1)
working-storage section.
78 note-height value 16.
78 note-height value 41.
78 no-of-chars value note-height * note-width.
01 note-window pic x(10).
01 dummy pic x.
01 note-data value all "- wallpaper ".
03 note-char pic x occurs no-of-chars.
screen section.
01 input-data highlight.
03 line 4 column 6 value " Accept and Display positions ".
03 line 5 column 6 value " are relative to the top left ".
03 line 6 column 6 value " corner of the window. ".
03 pic x using dummy.
01 note-screen pic x(no-of-chars)
using note-data prompt " " reverse-video.
procedure division.
* 画面に境界とタイトルを付けて、空白のウィンドウを表示します。
display window, line 2, column 38, lines note-height,
size note-width, boxed, erase, reverse
* このウィンドウへの参照を定義し、
* 削除や以前の表示の復元を可能にします。
pop-up area is note-window
bottom right title "Press Enter to remove window"
* note-screen の内容でウィンドウを埋めます。
display note-screen
display input-data
accept input-data
close window note-window.