DEFINE WINDOW

DEFINE WINDOW window-name

 

  AUTO

SIZE   QUARTER
    operand1 *operand2

BASE

  CURSOR  

TOP LEFT

BOTTOM RIGHT
operand3 / operand4  
  [REVERSED [(CD=background-color)]]
  [TITLE operand5]

CONTROL

WINDOW

SCREEN

FRAMED

[ON] [( CD=frame-color)] [position-clause]
OFF

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

構文図で使用されている記号については、「構文記号」を参照してください。

関連ステートメント:INPUT | REINPUT | SET WINDOW

関連機能グループ:対話型処理用の画面生成


関数

DEFINE WINDOW ステートメントは、ウィンドウのサイズ、位置、属性を指定するために使用します。

ウィンドウとは、端末画面上に表示される、プログラムによって構築された論理ページのセグメントのことです。存在を認識できなくても、常にウィンドウは存在してます。別のウィンドウが指定されない限り、ウィンドウのサイズは端末画面の物理サイズと同じです。

DEFINE WINDOW ステートメントはウィンドウをアクティブ化しません。ウィンドウをアクティブ化するには、SET WINDOW ステートメントを使用するか、INPUT ステートメントの WINDOW 節を使用します。

注意:
Natural ウィンドウ、つまり最新のウィンドウは常に 1 つです。画面に前のウィンドウが表示されていても、アクティブではないので、Natural に無視されます。現在のウィンドウにのみ入力できます。入力する十分なスペースがない場合は、まずウィンドウサイズを調整する必要があります。

構文説明

オペランド定義テーブル:

オペランド 構文要素 フォーマット オペランド参照 ダイナミック定義
operand1 C S           N P I                 ×
operand2 C S           N P I                 ×
operand3 C S           N P I                 ×
operand4 C S           N P I                 ×
operand5 C S       A U                       ×

構文要素の説明:

構文要素 説明
window-name window-name では、ウィンドウの名前を指定します。名前の最大長は 32 文字です。ウィンドウ名には、ユーザー定義変数と同じ命名規則が適用されます。『Natural の使用』ドキュメントの「ユーザー定義変数の命名規則」を参照してください。
SIZE

SIZE 節では、ウィンドウのサイズを指定します。

注意:
メインフレーム環境では、Natural でデータを画面上に表示できるようにするには属性バイトと呼ばれる追加の列が必要です(他のプラットフォームでは、そのような属性バイトは不要)。したがって、メインフレーム環境では他のプラットフォームよりもウィンドウによってオーバーレイされる画面領域が大きく、ウィンドウ内に表示できるページセグメントのサイズが小さくなります。

例:ウィンドウサイズを SIZE 5 * 15(15 桁の幅)として定義します。

  • メインフレーム環境では、ウィンドウによってオーバーレイされる画面領域は 16 桁で、ウィンドウ内に表示できるサイズはフレームなしで 14 桁、フレーム付きで 10 桁です。

  • 他のプラットフォームでは、ウィンドウによってオーバーレイされる画面領域は 15 桁で、ウィンドウ内に表示できるサイズはフレームなしで 15 桁、フレーム付きで 13 桁です。

SIZE AUTO

ウィンドウのサイズは、Natural 実行時に自動で決定されます。サイズは、ウィンドウに生成されるデータによって、次のように決定されます。

  • ウィンドウの行数は、生成される INPUT 行の数です(PF キー行、メッセージ行、および情報/統計行を加えることが可能)。

  • ウィンドウの桁数は、最も長い INPUT 行によって決まります。Natural では、行の終わりから行の有効バイトの右端までが検索されます。これにより、入力だけのフィールド(AD=A)または修正可能フィールド(AD=M)は、切り捨てられる可能性があります。これを回避するには、このようなフィールドの後に単一文字を置くか、または次の節でウィンドウサイズを明示的に設定します。

    SIZE operand1 *
                operand2

SIZE 節を省略すると、デフォルトで SIZE AUTO が適用されます。

注意:
タイトルはウィンドウデータの一部ではありません。したがって、ウィンドウサイズが上記のように指定され、さらにタイトルがウィンドウよりも長い場合、タイトルは切り捨てられます。

SIZE QUARTER ウィンドウサイズは物理画面の 1/4 になります。
SIZE operand1 * operand2

ウィンドウサイズは n 行 × n 桁になります。operand1 では行数、operand2 では桁数を指定します。2 つのオペランドのいずれにも小数桁を含めることはできません。

FRAMED を指定している場合、指定サイズにはフレームも含まれます。

有効な最小ウィンドウサイズは、次のようになります。

  • フレームなし:2 行 × 10 桁

  • フレーム付き:4 行 × 13 桁

有効な最大ウィンドウサイズは、物理画面のサイズです。

BASE BASE 節では、物理画面上でのウィンドウ位置を決定します。BASE 節を省略すると、デフォルトで BASE CURSOR が適用されます。
BASE CURSOR ウィンドウの左上隅を、現在のカーソル位置に配置します。カーソル位置とは、画面上の物理的なカーソルの位置です。ウィンドウサイズが原因でウィンドウをカーソル位置に配置できない場合、Natural では、目的の位置にできるだけ近くなるようにウィンドウが自動的に配置されます。
BASE TOP/BOTTOM LEFT/RIGHT それぞれ、物理画面上の左上隅、左下隅、右上隅、右下隅にウィンドウを配置します。
BASE operand3/operand4

物理画面の指定した行/桁に、ウィンドウの左上隅を配置します。operand3 では行数、operand4 では桁数を指定します。2 つのオペランドのいずれにも小数桁を含めることはできません。

ウィンドウサイズが原因で指定の位置にウィンドウを配置できない場合は、エラーメッセージが返されます。

REVERSED REVERSED を指定すると、ウィンドウが反転表示されます。ただし、この指定は、使用画面でこの機能がサポートされている場合にのみ有効となります。サポートされていない場合、REVERSED は無視されます。
REVERSED CD= background-color

ウィンドウを反転表示し、さらにウィンドウの背景を指定の色で表示します。ただし、この指定は、使用画面でこれらの機能がサポートされている場合にのみ有効となります。サポートされていない場合、各指定は無視されます。

有効なカラーコードについては、『パラメータリファレンス』でセッションパラメータ CD を参照してください。

TITLE operand5

TITLE 節では、ウィンドウの見出しを指定できます。指定したタイトル(operand5)は、ウィンドウの先頭フレーム行の中央に表示されます。タイトルは、テキスト文字列(アポストロフィで囲む)、またはユーザー定義変数の内容として指定できます。タイトルがウィンドウよりも長い場合、タイトルは切り捨てられます。タイトルは、FRAMED を指定した場合にのみ表示されます。FRAMED OFF を指定すると、TITLE 節は無視されます。

注意:
タイトルの末尾にある空白は削除されます。タイトルの先頭にある文字が空白の場合は、自動的に 1 桁の空白がタイトルに付加されます。

CONTROL CONTROL 節を使用して、PF キー行、メッセージ行、および統計行をウィンドウに表示するか物理画面全体に表示するかを指定します。
CONTROL WINDOW CONTROL WINDOW を指定すると、ウィンドウ内に行が表示されます。

CONTROL 節を省略すると、デフォルトで CONTROL WINDOW が適用されます。

CONTROL SCREEN CONTROL SCREEN を指定すると、ウィンドウの外側にある物理画面全体に行が表示されます。
FRAMED

デフォルトでは、つまり FRAMED 節を省略した場合は、ウィンドウにフレームが付きます。

最上部と最下部のフレーム行はカーソルに依存します。適用可能なところで、適切な記号(<-+ または >:下記の position-clause を参照)の上にカーソルを置いて ENTER キーを押すと、ウィンドウ内でページを前後左右に移動できます。記号が表示されない場合は、カーソルを枠線の最上部(前のページに戻る場合)または最下部(次のページに進む場合)に置いて ENTER キーを押すことにより、ウィンドウ内でページを前後に移動することができます。

注意:
ウィンドウサイズが 4 行 × 12(メインフレーム環境では 13)桁より小さい場合、フレームは表示されません。

FRAMED OFF FRAMED OFF を指定すると、フレーム表示および各フレーム関連の指定(ウィンドウタイトルおよび位置情報)はオフになります。
FRAMED (CD=frame-color)

この節では、ウィンドウに表示するフレームの色を指定します。ただし、使用画面がカラー端末でない場合、カラー指定は無視されます。

有効なカラーコードについては、『パラメータリファレンス』でセッションパラメータ CD を参照してください。

注意:
Natural for Windows では、この指定は無視されます。

position-clause POSITION 節は、メインフレームのコンピュータだけで評価されます。他のすべてのプラットフォームでは無視されます。詳細については、下記の「POSITION 節」を参照してください。

POSITION 節

POSITION 節は、メインフレームのコンピュータだけで評価されます。他のすべてのプラットフォームでは無視されます。

POSITION

SYMBOL

TOP

[AUTO] [SHORT]

LEFT

BOTTOM RIGHT
    TEXT   [MORE]

LEFT

     
      RIGHT      
OFF

POSITION 節を指定すると、論理ページ上でのウィンドウの位置に関する情報がウィンドウのフレーム内に表示されます。これは、論理ページがウィンドウよりも大きい場合にのみ適用されます。そうでない場合は、POSITION 節は無視されます。位置情報は、論理ページが拡張する方向(現在のウィンドウの上、下、左、右)を示します。

POSITION 節が省略されると、POSITION SYMBOL TOP RIGHT がデフォルトで適用されます。

構文要素の説明:

構文要素 説明
POSITION SYMBOL 位置情報を記号形式で表示します。More: < - + >情報は、上部か下部のいずれか、または両方のフレームラインに表示されます。
TOP/BOTTOM 位置情報を上のフレーム行または下のフレーム行のどちらに表示するかを決定します。
AUTO 論理ページの横のサイズがウィンドウ内に収まる場合、つまり、マイナス記号文字(-)またはプラス記号文字(+)が表示される場合にのみ適用されます。この場合、AUTO によって、記号はそれぞれ文字列 TopBottomMore に自動で切り替えられます。
SHORT 記号 < - + > の前にある文字列 More: を非表示にします。
LEFT/RIGHT 位置情報をフレーム行の左または右のどちらに表示するかを決定します。
POSITION TEXT 位置情報をテキスト形式で表示します。情報を上か下のフレーム行に MoreTopBottom の文字列で表示します。このテキストは、言語依存であり、言語コードによって別の言語でも表示できます。
POSITION TEXT MORE 文字列 TopBottom を非表示にして、適用される場所(上、下またはその両方のフレーム行)に文字列 More のみを表示します。
LEFT/RIGHT 位置情報をフレーム行の左または右のどちらに表示するかを決定します。
POSITION OFF 位置情報を非表示にします。位置情報は表示されません。

ウィンドウの入力フィールドの保護

全体をウィンドウ内に収容できない入力フィールド(AD=A または AD=M)には、次の規則が適用されます。

  • フィールドの始まりがウィンドウ内にない入力フィールドは常に保護されます。

  • ウィンドウ内で始まりウィンドウ外で終わる入力フィールドは、フィールドに含まれる値がウィンドウ内に完全に表示できない場合にのみ保護されます。この場合、フィールド長ではなく値の長さがウィンドウのサイズを超えているかどうかを決定します。充填文字(プロファイルパラメータ FC で指定)は、値の一部には数えられません。

保護された入力フィールドにアクセスする場合は、フィールドの先頭および値の終わりがウィンドウ内に入るようにウィンドウサイズを調整する必要があります。

他のウィンドウの呼び出し

DEFINE WINDOW ステートメントは、論理条件ステートメントブロック内では指定できません。条件によって異なるウィンドウを呼び出すには、条件内で別の SET WINDOW ステートメント(または WINDOW 節を含む INPUT ステートメント)を使用します。

** Example 'DWDEX1': DEFINE WINDOW                                      
************************************************************************
DEFINE DATA LOCAL                                                       
01 #I (P3)                                                              
END-DEFINE                                                              
*                                                                       
SET KEY PF1='%W<<' PF2='%W>>' PF4='%W--' PF5='%W++'                     
*                                                                       
DEFINE WINDOW WIND1                                                     
       SIZE QUARTER                                                     
       BASE TOP RIGHT                                                   
       FRAMED ON POSITION SYMBOL AUTO                             
*                                                                       
SET WINDOW 'WIND1'                                                      
FOR #I = 1 TO 10                                                        
  WRITE 25X #I 'THIS IS SOME LONG TEXT' #I                              
END-FOR                                                                 
*                                                                       
END

プログラム DWDEX1 の出力:

                                        +------------------------More:     + >+
> r                                     ! Page      1                         !
All    ....+....1....+....2....+....3.. !                                     !
  0010 ** Example 'DWDEX1': DEFINE WIND !                             1 THIS  !
  0020 ******************************** !                             2 THIS  !
  0030 DEFINE DATA LOCAL                !                             3 THIS  !
  0040 01 #I (P3)                       !                             4 THIS  !
  0050 END-DEFINE                       !                             5 THIS  !
  0060 *                                !                             6 THIS  !
  0070 SET KEY PF1='%W<<' PF2='%W>>' PF !                             7 THIS  !
  0080 *                                ! MORE                                !
  0090 DEFINE WINDOW WIND1              +-------------------------------------+
  0100        SIZE QUARTER                                                     
  0110        BASE TOP RIGHT                                                   
  0120        FRAMED ON POSITION SYMBOL AUTO                                   
  0130 *                                                                       
  0140 SET WINDOW 'WIND1'                                                      
  0150 FOR #I = 1 TO 10                                                        
  0160   WRITE 25X #I 'THIS IS SOME LONG TEXT' #I                              
  0170 END-FOR                                                                 
  0180 *                                                                       
  0190 END                                                                     
  0200                                                                         
       ....+....1....+....2....+....3....+....4....+....5....+... S 19   L 1