バージョン 6.3.3
 —  ステートメント  —

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

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

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

'text' [(attributes)]

       

nX

'c' (n) [(attributes)]

*IN

 
nT '-' *OUT {operand1 [(parameter)]}
x/y '=' *OUTIN  
      /        

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

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


INPUT 構文 1 - 説明

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

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

構文要素の説明:

INPUT WINDOW='window-name'

オプション WINDOW='window-name' では、INPUT ステートメントを指定されたウィンドウに対して実行することを指定します。 指定されたウィンドウは DEFINE WINDOW ステートメントで定義されている必要があります。 指定されたウィンドウは、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 は、メッセージ行に表示されるテキストを提供するために使用します(下記の対応するセクションを参照)。
MARK-option MARK POSITION を使用して、フィールド内の特定の位置にカーソルを配置できます。 下記の「MARK オプション」を参照してください。
ALARM-option このオプションは、INPUT ステートメントの実行時にアクティブ化される端末の音声アラーム機能を提供します。 下記の「Alarm オプション」を参照してください。
その他の構文要素(nX、nT、x/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 ヘルプルーチン SE
IP 入力プロンプトのテキスト SE
LS 行サイズ S
MC マルチプルバリューフィールド数 S
MS 手動による省略 S
NL 出力の数値長 SE
PC ピリオディックグループ数 S
PM 出力モード * SE
PS ページサイズ ** S
SB 選択ボックス E
SG 符号の位置 SE
ZP ゼロ出力 SE

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

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

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

WITH TEXT オプション

[WITH] TEXT

* operand1

[(attributes)][,operand3] 7
operand2

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

オペランド 構文要素 フォーマット ステートメント参照 ダイナミック定義
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
Natural メッセージファイルからのメッセージテキスト:

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 を INPUT 区切り文字(セッションパラメータ ID で指定)で区切ることができます。ただし、INPUT ステートメント構文ではスラッシュは別の意味を持つため、ID=/(スラッシュ)の場合は使用できません。

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

出力属性

attributes は、テキスト表示に使用される出力属性を示します。 可能な属性:

AD=AD-value
CD=CD-value
PM=PM-value

AD-value
CD-value

指定可能なセッションパラメータ値については、『パラメータリファレンス』ドキュメントの該当するセクションを参照してください。

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

MARK オプション

MARK POSITION を使用して、フィールド内の特定の位置にカーソルを配置できます。

[MARK POSITION operand4 [IN]] [FIELD]

operand1

*fieldname

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

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

構文要素の説明:

MARK *fieldname *fieldname は、フィールド名を使用して位置付けるために使用します。
MARK POSITION operand4

MARK POSITION では、operand1 で指定したフィールド内の operand4 で指定した特定の位置にカーソルを置くことができます。 operand4 に小数桁を含めることはできません。

例:

MARK 3
MARK #A
MARK *#
MARK POSITION 3 IN #A
operand1

operand1 では、マークするフィールドを指定します。

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

ALARM オプション

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

[[AND] [SOUND] ALARM]

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

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

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

     

'text'  [(attributes)]

       

nX

'c' (n) [(attributes)]

*IN

{operand1 [(parameter(s))]}
nT '-' *OUT
x /y '=' *OUTIN
      /        

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

nX n 個のスペースがフィールド間に挿入されます。
nT 位置 n を出力するように位置指定(タブ設定)されます。
x/y 次の要素を行 x の列 y から開始して配置します。 y を "0" にすることはできません。 同じ行で後方に位置指定することはできません。
'text' text が書き込み保護状態で表示されます。「テキスト表記」の「ステートメントで使用するテキストの定義」も参照してください。
'c' (n) 'text' と同一ですが、文字 cn 回表示されます。 n は 1~132 にする必要があります。「テキスト表記」」の「フィールド値の前に n 回表示する文字の定義」も参照してください。
attributes 表示に使用される属性を示します。 下記の「属性」を参照してください。
'-'
マイナス記号:

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

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

'='
等号:

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

'/'
スラッシュ記号:

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

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

例:

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

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

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

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

*IN、*OUT および *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 で動的に参照されます。 編集マスクは出力フィールドと入力フィールドに対してのみ指定できます。 編集マスクが入力フィールドに対して定義された場合、フィールドのデータは編集マスクの仕様に従って入力する必要があります。

属性

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

 

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 を参照してください。

Top of page

例 - 構文 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[]

Top of page