INPUT 構文 1 - ダイナミック画面レイアウトの指定

この形式の INPUT ステートメントは、INPUT 画面のレイアウトの作成、またはシーケンシャル入力ファイルからバッチモードで読み取る INPUT データレイアウトの作成に使用されます。

INPUT [WINDOW='window-name'] [NO ERASE]
  [(statement-parameters)]
  [WITH-TEXT-option]
  [MARK-option]
  [ALARM-option]

nX
nT
x/y
/

 

'text'
'c'(n)

[(attributes)]  

 

'-'
'='

*IN
*OUT
*OUTIN

operand1 [(parameter)]

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

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


INPUT 構文 1 - 説明

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

オペランド 構文要素 フォーマット オペランド参照 ダイナミック定義
operand1   S A G N A U N P I F B D T L   G  

構文要素の説明:

構文要素 説明
INPUT WINDOW='window-name'
INPUT WINDOW='window-name' Option:

このオプションでは、INPUT ステートメントを指定されたウィンドウに対して実行することを指定します。指定されたウィンドウは、DEFINE WINDOW ステートメントで定義する必要があります。「例 2 - DEFINE WINDOW ステートメントのある INPUT ステートメント」を参照してください。

指定されたウィンドウは、INPUT ステートメントの期間中にのみアクティブになり、INPUT ステートメントが実行されると自動的に非アクティブになります。

ステートメント DEFINE WINDOW および SET WINDOW も参照してください。

NO ERASE
NO ERASE オプション:

このオプションを指定すると、INPUT ステートメントの画面マップが既存の画面の上にオーバーレイされます。画面の内容は消去されません。

ここでの画面とは、物理画面ではなく論理画面を意味します。

画面に存在する保護されていないすべてのフィールドは、保護(表示専用)フィールドに変換されます。古いデータは、新しいレイアウトが表示されるまで画面に残ります。新しい画面の内容のフィールドが既存のフィールドを部分的にオーバーレイする場合は、新しいフィールドの前の 1 文字と、既存のフィールド内の次の文字が空白で置換されます。

statement-parameters
ステートメントのパラメータ:

1 つ以上のパラメータを、カッコで囲んで INPUT ステートメントまたは出力要素の直後に指定できます。

INPUT ステートメントで指定できるパラメータのリストについては、「ステートメントのパラメータ」を参照してください。

この方法で指定した各パラメータは、その前に指定された GLOBALS コマンド、SET GLOBALS または FORMAT ステートメントのパラメータを上書きします。複数のパラメータを指定する場合は、各エントリ間に 1 つ以上の空白を配置する必要があります。エントリを 2 行のステートメント行に分割することはできません。

ここで適用されるパラメータ設定は、変数フィールドにのみ関連し、テキスト定数には影響しません。テキスト定数にフィールド属性を設定する場合は、この要素に属性を明示的に設定する必要があります。

例:

DEFINE DATA LOCAL
1 VARI (A4)     INIT <'1234'>                  /*     Output 
END-DEFINE                                     /*    Produced
*                                              /*    ---------
INPUT           'Text'           VARI          /*    Text 1234
INPUT (AD=U)    'Text'           VARI          /*    Text 1234
INPUT           'Text' (AD=U)    VARI (AD=U)   /*    Text 1234
INPUT           'Text' (AD=U)    VARI          /*    Text 1234
END

ステートメントレベルおよび要素レベルでのパラメータの使用例を次に示します。

WITH TEXT-option
WITH TEXT オプション:
このオプションは、メッセージ行に表示されるテキストを指定するために使用します(下記の「WITH TEXT」を参照)。
MARK-option
MARK オプション:

下記の「MARK オプション」を参照してください。

ALARM-option
Alarm オプション:

下記の「Alarm オプション」を参照してください。

その他の構文要素(nXnTx/yoperand1、など)
フィールドの位置、文字列、属性の指定

下記の「フィールドの位置、文字列、属性の指定」を参照してください。

ステートメントのパラメータ

INPUT ステートメントで指定可能なパラメータ 指定(S = ステートメントレベル、E = 要素レベル)
AD 属性定義 SE
AL 出力の英数字長 SE
CD カラー定義 SE
CV 制御変数 SE
DF 日付フォーマット SE
DL 出力の表示長 SE
DY ダイナミック属性 SE
EM 編集マスク SE
EMU Unicode 編集マスク E
FL 浮動小数点仮数長 SE
HE Helproutine SE
IP 入力プロンプトのテキスト SE
LS Line Size S
MC マルチプルバリューフィールド数 S
MS Manual Skip S
NL 出力の数値長 SE
PC ピリオディックグループ数 S
PM Print Mode * SE
PS Page Size ** S
SB 選択ボックス E
SG 符号の位置 SE
ZP ゼロ出力 SE

* PM セッションパラメータは、テキスト定数には指定できません。

** PS セッションパラメータ設定は、配列のオカレンス数が PS 値を超える場合は考慮されません。

各セッションパラメータの詳細については、『パラメータリファレンス』を参照してください。

WITH TEXT オプション

[WITH] TEXT

* operand1
operand2

[(attributes)][,operand3] 7

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

オペランド 構文要素 フォーマット オペランド参照 ダイナミック定義
operand1 C S         N P I   B *            
operand2 C S       A                      
operand3 C S       A N P I F B D T L      

* operand1 のフォーマット B は、4 以下の長さでのみ使用できます。

WITH TEXT は、メッセージ行に表示されるテキストを提供するために使用します。これは通常、画面処理やエラー修正のために実行する必要がある操作を示すメッセージです。

構文要素の説明:

構文要素 説明
operand1
メッセージテキスト番号:

operand1 は、Natural メッセージファイルから取得するメッセージテキストの番号を表します。

ユーザー定義メッセージまたは Natural システムメッセージのいずれかを取得できます。

  • 最大 4 桁までの正の値を指定した場合(例:954)、ユーザー定義のメッセージを取得します。

  • 4 桁までの負の値を指定した場合(例:-954)は、Natural システムメッセージを取得します。

REINPUT ステートメントの説明にある「例 4 - WITH TEXT オプション」も参照してください。

Natural メッセージファイルは、関連ドキュメントで説明しているように、SYSERR ユーティリティで作成およびメンテナンスします。

operand2
メッセージテキスト:

operand2 は、メッセージ行に配置されるメッセージを表します。

REINPUT ステートメントの説明にある「例 4 - WITH TEXT オプション」も参照してください。

attributes
出力属性:

operand1/2 にはさまざまな出力属性を割り当てることができます。これらの属性と構文については、以下の「出力属性」で説明します。

operand3
メッセージテキストのダイナミック置換:

operand3 は、英数字、テキスト定数、または変数名を表します。

提供された値は、operand1 または operand2 のいずれかで指定されるメッセージテキストの一部を置き換えるために使用されます。

表記 :n: は、operand3 の内容を参照するためにメッセージテキスト内に指定します。n には operand3 のオカレンス(1 ~ 7)を指定します。

REINPUT ステートメントの説明にある「例 4 - WITH TEXT オプション」も参照してください。

注意:
複数の operand3 を指定する場合は、それぞれをコンマで区切る必要があります。コンマを小数点文字として(セッションパラメータ DC で定義)使用し、数値定数を operand3 として指定している場合は、コンマの前後に空白を挿入して、コンマが小数点文字と解釈されないようにします。あるいは、operand3 の複数の指定を入力デリミタ文字(セッションパラメータ ID で定義)で区切ることができます。ただし、ID=/(スラッシュ)の場合、INPUT ステートメント構文ではスラッシュが別の意味を持つため、使用できません。

先頭のゼロまたは末尾の空白は、メッセージに表示される前にフィールド値から削除されます。

出力属性

attributes は、テキスト表示に使用される出力属性を示します。属性は次のいずれかです。

AD=ad-value
CD=cd-value
PM=pm-value

ad-value
cd-value

上記の意味は次に示すとおりです。

ad-value、、cd-value および pm-value は、『パラメータリファレンス』ドキュメントの関連セクションで記載されている、対応するセッションパラメータ AD、、CD および PM の可能な値を示します。

コンパイラは、実際には 1 つの出力フィールドに複数の属性値を受け入れます。例えば、次のように指定できます。AD=BDIただし、この場合は最後の値のみが適用されます。示した例では、値 I のみが有効になり、出力フィールドは強調表示されます。

英数字/Unicode 定数(Natural データフォーマット A または U )の場合は、ad-value または cd-value あるいはその両方を、それぞれの前に先行する CD= または AD= なしで、指定することができます。入力した単一の値が、最初にすべての可能な CD 値に対してチェックされます。例えば、IRE の値は、高輝度表示/赤として解釈されますが、高輝度表示/右詰め/必須としては解釈されません。単一の cd-value またはad-value の前に CD= または AD= が付いた値を組み合わせることはできません。

MARK オプション

MARK オプションを使用すると、画面上の任意の保護されていないフィールドにカーソルを置くことができます。さらに、該当フィールド内でカーソルの位置を指定できます。つまり、デフォルトでは、MARK オプションを省略すると、最初の保護されていないフィールドの先頭にカーソルが置かれます。

MARK [POSITION operand4 [IN]] [FIELD]

operand1
*fieldname

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

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

構文要素の説明:

構文要素 説明
operand1
フィールド参照番号:

operand1 は、カーソルを位置づけるフィールドの番号を指定します。

INPUT ステートメントで指定された各フィールド属性 AD=Aまたは AD=M(保護されていないフィールド)には、1 から開始するフィールド参照番号が割り当てられます。

*fieldname
参照用フィールド名:

フィールド参照番号の代わりに、*fieldname 表記を使用して、フィールドに配置するためにフィールド名を使用できます。

operand4
参照フィールド内のカーソル位置:

MARK POSITION では、operand1 または *fieldname で指定したフィールド内の operand4 で指定した特定の位置にカーソルを置くことができます。

operand4 に小数桁を含めることはできません。

例:

MARK #NUMBER               /* Field number
MARK 3                     /* Third map field
MARK *#FIELD1              /* Map field             
MARK POSITION 3 IN #NUMBER /* Third character in field number

このセクションの最後にある「例 3 - MARK POSITION オプションのある INPUT ステートメント」も参照してください。

ALARM オプション

このオプションは、INPUT ステートメントの実行時にアクティブ化される端末の音声アラーム機能を提供します。この機能を使用するには、対応するハードウェアが使用可能である必要があります。

[AND] [SOUND] ALARM

デフォルトのプロンプトテキスト

セッションパラメータ IP(入力プロンプト)が IP=OFF に設定されていない限り、INPUT ステートメントで使用されるフィールドのフィールド名が、フィールド値の前に(フォームモード)、またはフィールドを選択するためのプロンプトキーワードとして(キーワード/デリミタモード)表示されます。このデフォルトのフィールド名は、'text' 要素(デフォルト名を置換)または '-'(デフォルトフィールド名の表示を抑制)をフィールド名の直前に指定することで上書きできます。

フィールドの位置、文字列、属性の指定

 フィールドの位置、属性の割り当て、およびテキストの作成には複数の表記を使用できます。

構文要素の説明:

構文要素 説明
nX
挿入オプション:

このオプションでは、n 個のスペースがフィールド間に挿入されます。

nT
タブオプション:

このオプションでは、位置 n を出力するように位置指定(タブ設定)されます。

x/y
位置決めオプション:

次の要素を行 x の列 y から開始して配置します。y をゼロにすることはできません。同じ行で後方に位置指定することはできません。

'text'
書き込み保護:

text が書き込み保護状態で表示されます。「テキスト表記」の「ステートメントで使用するテキストの定義」も参照してください。

'c' (n)
文字の繰り返し:

'text' と同一ですが、文字 cn 回表示されます。n1 - 132 にする必要があります。「テキスト表記」の「フィールド値の前に n 回表示する文字の定義」も参照してください。

attributes
表示属性:

表示に使用される属性。下記の「属性」を参照してください。

'-'
マイナス記号:

フィールドの前に配置された場合、'-' はプロンプトテキストとしてのフィールド名の生成を抑制します。

注意:
フィールドの前のテキスト文字列は、フィールド名をプロンプトテキストとして置換します。

'='
等号:

フィールドの前に '=' を配置した場合は、後にフィールドの内容が続くフィールドヘッダーが表示されます。

'/'
スラッシュ記号:

フィールドまたはテキスト要素の間に配置した場合は、'/' により次の出力行の先頭に位置指定されます。

フィールドの内容は、属性設定 AD=AAD=O および AD=M を使用して、それぞれ入力、出力のみ、変更用の出力に指定できます。デフォルトは AD=A です。AD=A(入力のみ)または AD=M(変更用の出力)が指定されたすべてのフィールドでは、保護されていないフィールドが画面に作成されます。このようなフィールドの値はユーザーが入力できます。TTY デバイスの場合、変更用の出力フィールドは、新しい値を入力できるように、フィールドのサイズの 2 倍(出力用に 1 つと入力用に 1 つ)を占めます。表示不能として指定された入力フィールド(AD=A または AD=M)は、TTY デバイスで常に新しい行で開始します。

例:

INPUT #A (AD=A) #B (AD=O) #C (AD=M)

#A は、保護されていない入力フィールドです。つまり、フィールドに値が入力されます。

#B は、書き込み保護で表示されるフィールドです。つまり、フィールドには値を入力できません。

#C は、現在の値が表示されるフィールドであり、フィールドに新しい値を入力することで値を変更できます。

*IN, *OUT and *OUTIN
フィールド属性定義:

それぞれ属性 AD=AAD=OAD=M に相当します。

注意:
変更不能なシステム変数が INPUT ステートメントで使用されている場合は、値が出力専用フィールド AD=O または *OUT 属性として表示されます。

operand1
使用するフィールド:

operand1 は、使用するフィールドを表します。データベースフィールドまたはユーザー定義変数を指定できます。

Natural は、データエリアの各フィールドの内容を INPUT ステートメントにマップするため、移動操作は不要です。

データベースフィールドの内容が INPUT 処理の結果として変更される場合は、データエリアにある値のみが変更されます。適切なデータベースステートメント UPDATE/STORE を使用して、データベースの内容を変更する必要があります

データベースフィールドのグループの名前が INPUT ステートメントで参照されている場合は、そのグループに属するすべてのフィールドが入力フィールドとして個別に使用されます。

配列内のオカレンスの範囲に対する参照が行われた場合は、すべてのオカレンスが個々に入力フィールドとして処理されますが、プロンプトテキストは個々のオカレンスに対しては作成されず、最初のオカレンスに対してのみ作成されます。

メインフレームコンピュータでは、実行時にオカレンス数を変更できる、範囲による配列は指定できません。

parameter(s)
パラメータ:

1 つまたは複数のパラメータをカッコで囲んで operand1 の直後に指定できます(下記の表と例を参照)。

指定した各パラメータは、その前に指定された GLOBALS コマンド、SET GLOBALS(レポーティングモード)または FORMAT ステートメントのパラメータを上書きします。複数のパラメータを指定する場合は、個々のパラメータを 1 つ以上の空白で区切る必要があります。各パラメータ指定を 2 行のステートメント行に分割することはできません。

ここで適用されるパラメータ設定は、変数フィールドにのみ関連し、テキスト定数には影響しません。テキスト定数にフィールド属性を設定する場合は、この要素に属性を明示的に設定する必要があります。

個々のパラメータの詳細については、「ステートメントのパラメータ」の表を参照してください。

注意:
データベースフィールドに編集マスクが定義されている場合は、セッションパラメータ EM が DDM でダイナミックに参照されます。編集マスクは出力フィールドと入力フィールドに対してのみ指定できます。編集マスクが入力フィールドに対して定義された場合、フィールドのデータは編集マスクの仕様に従って入力する必要があります。

Attributes

次の属性を使用できます。

 

B

 

 

BL

 

 

  C     GR   C
  D     NE   D
[AD=] I   [CD=] PI [PM=] I
  N     RE   N
  U     TU    
  V     YE    
      1             2           3    
  1. 表示属性:『パラメータリファレンス』でセッションパラメータ AD を参照してください。

  2. 色属性:『パラメータリファレンス』でセッションパラメータ CD を参照してください。

  3. 出力モード属性:『パラメータリファレンス』でセッションパラメータ PM を参照してください。

例 - 構文 1

例 1 - INPUT ステートメント

** Example 'IPTEX1': INPUT                                              
************************************************************************
DEFINE DATA LOCAL                                                       
1 #FNC  (A1)                                                            
END-DEFINE                                                              
*                                                                       
INPUT 10X 'SELECTION MENU FOR EMPLOYEES SYSTEM' /                       
      10X '-' (35) //                                                   
      10X 'ADD      (A)' /                                              
      10X 'UPDATE   (U)' /                                              
      10X 'DELETE   (D)' /                                              
      10X 'STOP     (.)' //                                             
      10X 'PLEASE ENTER FUNCTION: ' #FNC                              
*                                                                       
DECIDE ON EVERY VALUE OF #FNC                                           
  VALUE 'A'   /* invoke the object containing the add function here     
    WRITE 'Add function selected.'                                      
  VALUE 'U'   /* invoke the object containing the update function here  
    WRITE 'Update function selected.'                                   
  VALUE 'D'   /* invoke the object containing the delete function here
    WRITE 'Delete function selected.'                                 
  VALUE '.'                                                           
    STOP                                                              
  NONE                                                                
    REINPUT 'Please enter a valid function.' MARK *#FNC               
END-DECIDE                                                            
*                                                                     
END

プログラム IPTEX1 の出力:

SELECTION MENU FOR EMPLOYEES SYSTEM
-----------------------------------
                                   
ADD      (A)                       
UPDATE   (U)                       
DELETE   (D)                       
STOP     (.)                       
                                   
PLEASE ENTER FUNCTION:

例 2 - DEFINE WINDOW ステートメントのある INPUT ステートメント

** Example 'INPEX1': INPUT (with DEFINE WINDOW statement)               
************************************************************************
DEFINE DATA LOCAL                                                       
1 #STRING (A15)                                                         
END-DEFINE                                                              
*                                                                       
DEFINE WINDOW WIND1                                                     
  SIZE 10 * 40                                                          
  BASE 5 / 10                                                           
  FRAMED ON POSITION TEXT                                               
*                                                                       
INPUT WINDOW='WIND1'                                                    
      'PLEASE ENTER HERE:' / #STRING                             
*                                                                       
END

プログラム INPEX1 の出力:

+----------------------------------Top+
! PLEASE ENTER HERE:                  !
! #STRING                             !
!                                     !
!                                     !
!                                     !
!                                     !
!                                     !
!                                     !
+-------------------------------Bottom+

例 3 - MARK POSITION オプションのある INPUT ステートメント

** Example 'INPEX2': INPUT (with POSITION)                              
************************************************************************
DEFINE DATA LOCAL                                                       
1 #START (A30)                                                          
END-DEFINE                                                              
*                                                                       
ASSIGN #START = 'EXAM_'                                                 
*                                                                       
INPUT (AD=M) MARK POSITION 5 IN *#START                                 
     / 'PLEASE COMPLETE START VALUE FOR SEARCH'                         
     / 5X #START                                                    
END

プログラム INPEX2 の出力:

PLEASE COMPLETE START VALUE FOR SEARCH
       #START EXAM[]