ACUCOBOL ウィンドウ構文

ウィンドウ構文は、下位互換性のためのみに提供されています。 新しいアプリケーションを作成するときには、この機能を使用しないことをお奨めします。

COBOL システムは、ACUCOBOL ウィンドウ構文を部分的にサポートし、端末の画面に線やボックスを描画したり、物理的な端末で仮想端末ウィンドウを作成できます。 すべての ACCEPT/DISPLAY 文は、現在のウィンドウ (ACCEPT 書き方 1、2 や 3、DISPLAY 書き方 1、DISPLAY WINDOW/LINE/BOX 文を除く) 内で動作します。 この構文では、基礎となる表示を保持したり、回復したりできます。

ウィンドウ構文の概要

この COBOL システムには、次のウィンドウサポート構文を含んでいます。

ウィンドウサポートの有効化

ウィンドウ構文を利用するためには、PREPROCESS"WINDOW1" コンパイラ指令を使用する必要があります。

この指令は、次の 2 つのどちらかの方法で指定します。

PREPROCESS"WINDOW1" 指令は、NOERRQ、AUTOCLOSE や COLOR とは異なる最新のコンパイラ指令です。 エラーが発生すると、コンパイラは処理を続けるかを尋ね、応答を待ちます。 この機能を無効にするには、PREPROCESS"WINDOW1" の後に NOERRQ を指定します。

ウィンドウサポート構文

次に、PREPROCESS"WINDOW1" 指令で使用可能なウィンドウ構文の詳細を説明します。

ACCEPT 文

ACCEPT 文の書き方 5 は、『言語リファレンス』で説明されていますが、次の指定があります。

BEFORE TIME time-out

一般規則

  1. BEFORE TIME 指定は、一定時間経過後に ACCEPT 文を自動的に終了させます。 タイムアウト値は、100 分の 1 秒単位で指定します。 たとえば、「BEFORE TIME 500」は、タイマ値を 5 秒と指定します。

  2. ユーザは、タイマが切れるまでに ACCEPT 文にデータを入力する必要があります。 ユーザがデータ入力を始めるとすぐに、タイマが解除され、ユーザはエントリを完了するのに十分な時間をとれます。 ユーザがタイマが切れるまでにデータを入力しない場合には、ACCEPT 文は終了します。

CLOSE WINDOW 文

CLOSE WINDOW 文は、現在の端末ウィンドウを閉じます。

形式

CLOSE WINDOW window-save-area

構文規則

  1. window-save-area は、PIC X(10) 句で記述される基本データ項目です。 DISPLAY WINDOW 文の POP-UP AREA 指定のオブジェクトである必要があります。

一般規則

  1. CLOSE WINDOW 文は、DISPLAY WINDOW 文の POP-UP AREA オプションで作成されるポップアップウィンドウを削除するために使用されます。

  2. window-save-area は、この実行単位で実行される DISPLAY WINDOW 文の POP-UP 指定のオブジェクトである必要があります。 さらに、その実行以降は CLOSE WINDOW 文のオブジェクトではなくなり、他の文でも変更することはできません。 この規則に違反すると、未定義の結果になります。

  3. CLOSE WINDOW 文は、対応する DISPLAY WINDOW 文が実行されたときに、アクティブなウィンドウにある端末の画面内容を復元します。 言い換えれば、DISPLAY WINDOW 文で作成されたウィンドウが画面から削除され、ポップアップウィンドウの下にあった画面内容で置き換えられるということです。

  4. 対応する DISPLAY WINDOW 文の実行でアクティブになったウィンドウが、アクティブウィンドウになります。その結果、最前面のウィンドウとなります。また、他のウィンドウに重なる場合もあります。

現在のウィンドウは、それぞれの window-save-area データ項目で識別されるウィンドウを閉じることによって選択されます。次に例を示します。

5 つのポップアップウィンドウを、abcde の順で、作成したと仮定します。

DISPLAY 文

ここでは、ウィンドウの作成や線とボックス描画用の 3 つの追加の書き方の DISPLAY 文を提供する COBOL ウィンドウ構文を説明します。 その他の書き方については、『言語リファレンス』を参照してください。

書き方 1

書き方 1

DISPLAY WINDOW 構文ダイアグラム

書き方 2

DISPLAY LINE 構文ダイアグラム

書き方 3

DISPLAY BOX 構文ダイアグラム

構文規則
  1. line-num は、端末画面上の行位置を指定する、数字定数またはデータ項目です。 負以外の整数を指定する必要があります。

  2. col-num は、端末画面上のカラム位置を指定する、数字定数またはデータ項目です。 負以外の整数を指定する必要があります。

  3. length は、ウィンドウ幅、行幅、または文字位置のボックス幅を指定する、数字定数またはデータ項目です。 負以外の整数を指定する必要があります。

  4. 高さ は、ウィンドウ内の行数を指定する、数字定数またはデータ項目です。 負以外の整数を指定する必要があります。

  5. title は、非数字定数または英数字データ項目です。

  6. save-area は、PIC X(10) 句で記述される基本データ項目です。

  7. COLUMN と COL は等価です。

  8. REVERSE、REVERSED、および REVERSE-VIDEO は等価です。

  9. COLOR は、プリプロセッサ指令 COLOR を使用するときのみ サポートされます。 これは、既存の Micro Focus 仕様でない構文を追加します。

  10. SIZE または LINES 句の 1 つは、DISPLAY 文の書き方 2 に指定する必要があります。

  11. identifier-1identifier-2integer-1 、および integer-2 は、次のような範囲 0 ~ 7 の値です。

    0
    1
    2
    3 シアン
    4
    5 マゼンタ
    6 茶または黄色
    7

  12. identifier-3integer-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

  13. COLOR が FOREGROUND-COLOR や BACKGROUND-COLOR と同時に使用される場合には、COLOR 句で定義されたカラーは無視されますが、非カラー属性は適切に動作します。

一般規則

すべての書き方
  1. LINE と COLUMN 句は、物理画面上の行、カラムを指定する必要があります。

  2. カラーシステムの場合は、COLOR や FOREGROUND-COLOR、BACKGROUND-COLOR での指定、他の属性設定 (たとえば、点滅) の両方が使用されます。 モノクロシステムでは、すべてのカラー情報が無視され、他の設定のみが使用されます。

  3. すべての属性の組み合わせが、すべてのシステムで使用できるわけではありません。 たとえば、標準 DOS PC では、モノクロモードの設定、REVERSE と UNDERLINE は相互排他的で、これらの属性の 1 つのみ動作します。

書き方 1 (DISPLAY WINDOW)
  1. 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 文を除く) の行やカラム数は、現在のウィンドウの左上隅から計算されます。 つまり、現在のウィンドウは仮想端末の画面を定義し、物理画面のある領域を占有します。

  2. 初期のウィンドウは、全画面に設定されます。

  3. 現在のウィンドウを変更する唯一の方法は、他の DISPLAY WINDOW 文や CLOSE WINDOW 文による変更です。

  4. LINE NUMBER 句は、ウィンドウの先頭行を設定します。 行番号 1 は画面の先頭行を指します。 行番号は、画面に対する相対位置で、現在のウィンドウに対するものではありません。

  5. LINE NUMBER 句が指定されていない場合、0 が指定された場合、または、物理画面外の場合は、画面の先頭行が使用されます。

  6. COLUMN NUMBER 句は、ウィンドウの最左のカラムを設定します。 カラム番号 1 は画面の左側を指します。 カラム番号は、画面に対する相対位置で、現在のウィンドウに対するものではありません。

  7. COLUMN NUMBER 句が指定されていない場合、0 が指定された場合、または、物理画面外の場合は、カラム番号 1 が使用されます。

  8. SIZE 句は、ウィンドウのカラム数を指定します。 このカラム数が画面の右端を越えると、画面の幅は画面外に拡張されます。

  9. SIZE 句が指定されていない場合、または、0 が指定された場合には、ウィンドウは画面の右端に拡張されます。

  10. LINES 句は、ウィンドウの行数を指定します。 この行数が画面の下部を越えると、画面は画面外に拡張されます。

  11. LINES 句が指定されていない場合、または、0 が指定された場合には、ウィンドウは画面の下端に拡張されます。

  12. ERASE 句が指定されると、ウィンドウの作成時に直ちにクリアされます。 それ以外は、ウィンドウの内容は変更されません。 ウィンドウをクリアすると、空白文字で埋めます。

  13. BOXED 句は、新しいウィンドウの周りにボックスを描画します。 ボックスは、ウィンドウの外側に描画されます。 画面外のボックスの部分は描画されません。

  14. 端末の線描画セットは、ボックスを描くために使用されます。 端末に線描画セットがない場合は、同等の ASCII 文字が使用されます。 POP-UP 句が指定されると、そのボックスは画面上の他のボックスに重なります。 この句が指定されない場合には、ボックス描画は他のボックスに張り付き、交差します。 ボックス化された非ポップアップウィンドウがボックス化されたポップアップウィンドウと交差する場合に、そのボックス化されたポップアップウィンドウが最初に作成され、それが閉じられると、2 つのボックスが交差していた部分は再描画されません。 つまり、交差している部分の文字は、交差部分がなくなっても、そこに表示されたままです。

  15. ERASE 句は、BOXED 句によって暗黙的に含まれます。

  16. REVERSED 句は、ウィンドウの前景色と背景色を反転表示します。 これは、新しいウィンドウの ACCEPT や DISPLAY 文ごとに影響します。

  17. REVERSED 句は ERASE 句によって暗黙的に含まれます。 通常、REVERSED 句は、最初に作成したときにウィンドウ全体を反転表示します。

  18. SHADOW 句は、ウィンドウに 3 次元的な効果を与え、画面上で浮き上がっているように見せます。

  19. 前景や背景の色の値を COLOR フィールドで 0 に設定すると、デフォルトのシステム属性に対応する色が使用されます。

  20. TITLE 句は、ウィンドウの境界にタイトルを表示します。 TITLE 句は、BOXED 句が指定されている場合のみに効果があります。

  21. タイトルは、左上端、上端の中心、右上端、左下端、下端の中心、右下端の 6 つの位置のどれかに表示できます。 TOP や BOTTOM が指定されていない場合は、TOP が使用されます。 LEFT、CENTERED、または RIGHT が指定されていない場合は、CENTERED が使用されます。

  22. NO SCROLL 句は、覚え書きとして扱われます。Windows 用のプリプロセッサは、これを確認するメッセージを表示します。

  23. NO SCROLL 句は、単に覚え書きとして扱われます。Windows 用のプリプロセッサは、これを確認するメッセージを表示します。

  24. POP-UP AREA 句は、COBOL システムに、新しいウィンドウを作成する前にシステム情報を格納します。 この情報は、新しいウィンドウを削除し、基礎となるウィンドウを復元するために CLOSE WINDOW 文で使用されます。 これで、ポップアップウィンドウが使用可能になります。

  25. save-area データ項目には、システム情報が格納されます。 このデータ項目を、格納後に変更しないでください。変更すると、結果が未定義になります。 このデータは、CLOSE WINDOW 文で以前のウィンドウを画面に復元し、そのウィンドウを現在のウィンドウに再設定します。
書き方 2 (DISPLAY LINE)
  1. DISPLAY LINE 文は、マシンや端末に依存する方法で、水平や垂直の線を描画します。 線は、ディスプレイデバイスの最適なモードを使用して描画されます。 DISPLAY BOX 文とともに使用すると、画面にフォームを描画できます。 DISPLAY LINE 文は、全画面用の ACCEPT や DISPLAY 文の位置付けには影響しません。

  2. 線は、画面上で他の線と交差するように表示され、適切な交差用の文字が使用されます。 線の末尾が他の直線と交差するように、隅や 3 方向の交差が使用されます。

  3. SIZE 句が指定されると、線は水平に描画されます。 length の値は、線の長さを画面のカラム数で示します。 かわりに、LINES 句が使用されると、線は垂直に描画され、 高さ の値は画面行数で示されます。

  4. 線はラップしたり、スクロールしたりしません。 LINES や SIZE 句で描画した線が現在のウィンドウを越えるような場合には、その線はウィンドウの端で切り捨てられます。 LINES や SIZE が 0 の場合は、線は描画されません。

  5. line-num の値は、線の開始行を指定します。 col-num は、開始カラムを指定します。 常に、線は適切に右方向、下方向に描画されます。 line-numcol-num には、現在のウィンドウ内の位置を指定する必要があります。

  6. LINE NUMBER や COLUMN NUMBER 句が物理画面の外側を指定している場合、つまり、line-num が 0 か 24 (または画面の最大値)、 col-num が 0 か 80 より大きい場合には、線は描画されません。

  7. TITLE 句は、水平線のみに効果があります。 TITLE 句が指定されると、title-string が線上に表示されます。

  8. タイトルは、RIGHT、LEFT、CENTERED 指定に応じて、右端、左端、中央に表示されます。 省略時は、CENTERED が使用されます。

  9. REVERSE 句は、線の前景と背景を反転します。
書き方 3 (DISPLAY BOX)
  1. DISPLAY BOX 文は、マシンや端末に依存する方法で、ボックスを描画します。 ボックスは、ディスプレイデバイスの最適なモードを使用して描画されます。 ボックスの描画に使用されている線が画面上の他の線と交差する場合は、適切な交差用の文字が使用されます。 DISPLAY BOX 文は、全画面用の ACCEPT や DISPLAY 文の位置付けには影響しません。

  2. ボックスの位置は、左上隅で指定されます。 ボックスのサイズは、高さと幅で指定されます。

  3. LINE NUMBER や COLUMN NUMBER 句が物理画面外を指定すると、ボックスは描画されません。

  4. SIZE 句は、ボックスの幅を指定します。 LINES 句は、その高さを指定します。 SIZE 句が指定されなかったり、0 であったり、ボックスが物理画面やウィンドウの端を越えて拡大されたりした場合には、ボックスは現在のウィンドウの右端まで拡張されます。 LINES 句が指定されなかったり、0 であったり、ボックスが物理画面を越えて拡大されたりした場合には、ボックスは現在のウィンドウの下端まで拡張されます。

  5. REVERSE 句は、DISPLAY WINDOW 文の場合と同じように動作します。

  6. TITLE 句も DISPLAY WINDOW 文の場合と同じように動作します。

ウィンドウ構文の制約

ウィンドウ構文のエラーメッセージ

次のエラーメッセージがプリプロセッサの処理中に表示されます。

想定外の数字リテラル:
想定外の数字リテラル:
サポートされないキーワードまたは 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.