REINPUT |
[FULL ] [(statement-parameters)]
|
USING HELP |
||
WITH-TEXT-option | ||||
[MARK-option] | ||||
[ALARM-option] |
このドキュメントでは、次のトピックについて説明します。
構文図で使用されている記号については、「構文記号」を参照してください。
関連ステートメント:DEFINE
WINDOW
| INPUT
| SET WINDOW
関連機能グループ:対話型処理用の画面生成
REINPUT
ステートメントは、INPUT
ステートメントに戻って再実行するために使用します。これは通常、前の INPUT
ステートメントの結果、データ入力が無効であったことを示すメッセージを表示するために使用します。「例 1」を参照してください。
INPUT
ステートメントとそれに対応する REINPUT
ステートメントの間に、WRITE
または DISPLAY
ステートメントを実行することはできません。REINPUT
ステートメントをバッチモードで使用することはできません。
REINPUT
ステートメントが実行されると、INPUT
ステートメントが実行されたときに存在していたサブルーチン、特殊条件、およびループ処理を考慮してプログラムステータスが再位置づけされます(INPUT
ステートメントのステータスがまだ有効な場合)。INPUT
ステートメントの実行後にループが開始され、REINPUT
ステートメントがそのループ内にある場合、ループは中断され、REINPUT
の結果として再処理された INPUT
ステートメントの後で再開されます。
INPUT
ステートメントの実行後にサブルーチン階層が呼び出され、サブルーチン内で REINPUT
が実行された場合、Natural は自動的に全サブルーチンをさかのぼり、INPUT
ステートメントの位置にプログラムステータスを再位置づけします。
INPUT
ステートメントが実行されたステータスがすでに終了してしまった時点では、INPUT
ステートメントをループ、サブルーチン、または特殊条件ブロック内に位置づけ、REINPUT
ステートメントを実行することはできません。このエラー条件が検出されると、エラーメッセージが生成され、プログラムの実行が終了します。
注意:FULL
オプションなしで REINPUT
ステートメントを実行しても、対応する INPUT
ステートメントで使用された属性制御変数の MODIFIED
ステータスはリセットされません。属性制御変数にステータス MODIFIED
が割り当てられているかどうかを確認するには、MODIFIED
オプションを使用します。
構文要素 | 説明 | |
---|---|---|
REINPUT FULL |
FULL オプション:
注意:
「例 3 - MARK POSITION を指定した REINPUT FULL」も参照してください。 |
|
statement-parameters |
Parameters:
要素(フィールド)レベルで指定したパラメータ(MARK オプションを参照)は、ステートメントレベルの対応する各パラメータを上書きします。 |
|
REINPUT ステートメントで指定可能なパラメータ
|
指定(S = ステートメントレベル、E = 要素レベル) | |
AD - 属性定義 * |
SE | |
CD - カラー定義
|
S | |
* 各セッションパラメータの詳細については、『パラメータリファレンス』を参照してください。 |
||
USING HELP |
USING HELP オプション:
このオプションにより、
例: REINPUT USING HELP MARK 3 結果として、 |
|
WITH-TEXT-option |
WITH TEXT オプション:
下記の「WITH TEXT オプション」を参照してください。 |
|
MARK-option |
MARK オプション
|
|
ALARM-option |
ALARM オプション:
このオプションは、 下記の「ALARM オプション」を参照してください。 |
WITH TEXT
は、メッセージ行に表示されるテキストを提供するために使用します。これは通常、画面処理やエラー修正のために実行する必要がある操作を示すメッセージです。
[WITH ] [TEXT ]
|
[(attributes)] [,operand3]7 |
オペランド定義テーブル:
オペランド | 構文要素 | フォーマット | オペランド参照 | ダイナミック定義 | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
operand1 |
C | S | N | P | I | B * | ○ | × | ||||||||||||
operand2 |
C | S | A | U | ○ | × | ||||||||||||||
operand3 |
C | S | A | U | N | P | I | F | B | D | T | L | ○ | × |
* operand1
のフォーマット B は、4 以下の長さでのみ使用できます。
構文要素の説明:
構文要素 | 説明 |
---|---|
operand1 |
Natural メッセージファイルからのメッセージテキスト:
ユーザー定義メッセージまたは Natural システムメッセージのいずれかを取得できます。
「例 4 - WITH TEXT オプション」も参照してください。 Natural メッセージファイルは、関連ドキュメントで説明しているように、SYSERR ユーティリティで作成およびメンテナンスします。
|
operand2 |
メッセージテキスト:
「例 4 - WITH TEXT オプション」も参照してください。 |
attributes |
出力属性:
|
operand3 |
メッセージテキストのダイナミック置換:
提供された値は、 表記 「例 4 - WITH TEXT オプション」も参照してください。 注意: 先頭のゼロまたは末尾の空白は、メッセージに表示される前にフィールド値から削除されます。 |
attributes は、テキスト表示に使用される出力属性を示します。可能な属性:
|
|||
指定可能なセッションパラメータ値については、『パラメータリファレンス』ドキュメントの該当するセクションを参照してください。
注意:
コンパイラは、実際には 1 つの出力フィールドに複数の属性値を受け入れます。例えば、「AD=BDI
ただし、この場合は最後の値のみが適用されます。示した例では、値 I
のみが有効になり、出力フィールドは強調表示されます。
MARK
オプションを使用して、特定のフィールドをマークすることができます。つまり、REINPUT
ステートメントの実行時にカーソルが配置されるフィールドを指定できます。また、フィールド内の特定の位置をマークすることもできます。さらに、入力保護フィールドにしたり、表示属性やカラー属性を変更できます。
MARK [POSITION operand4 [IN ]] [FIELD ]
|
[(attributes)] | ||||||
オペランド定義テーブル:
オペランド | 構文要素 | フォーマット | オペランド参照 | ダイナミック定義 | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
operand4 |
C | S | N | P | I | ○ | × | |||||||||||||
operand5 |
C | S | A | N | P | I | ○ | × |
構文要素の説明:
構文要素 | 説明 |
---|---|
マークするフィールド:
該当する INPUT #ARRAY (A1/1:5) ... REINPUT (AD=P) 'TEXT' MARK *#ARRAY (2:3)
RESET #X(N2/1:2) INPUT #ARRAY ... ... REINPUT (AD=P) 'TEXT' MARK #X (1:2) |
|
MARK
POSITION |
MARK POSITION オプション:
このオプションでは、フィールド内の特定の位置( 「例 3 - MARK POSITION を指定した REINPUT FULL」も参照してください。 |
operand4 |
カーソル位置:
|
attributes |
属性割り当て:
下記の「属性割り当て」を参照してください。 |
明示的な属性を使用して、WITH TEXT
メッセージのディスプレイ表示と色、および(REINPUT
ステートメントによって配置される)MARK
フィールドのレイアウトを定義できます。
B |
BL |
||||||||||||
C |
GR |
||||||||||||
D |
NE |
||||||||||||
AD =[P ]
|
I |
CD= |
PI |
[CV =operand6]
|
|||||||||
N |
RE |
||||||||||||
U |
TU |
||||||||||||
V |
YE |
オペランド定義テーブル:
オペランド | 構文要素 | フォーマット | オペランド参照 | ダイナミック定義 | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
operand6 |
S | C | × | × |
入力フィールド(AD=A
または AD=M
)に対しては、入力保護属性(AD=P
)を指定できます。
注意:
入力に使用できる出力専用フィールド(AD=O
)を作成するために属性を使用することはできません。
属性 AD
、CD
および CV
の詳細については、『パラメータリファレンス』を参照してください。
WITH TEXT
フィールドと MARK
フィールドの属性を固定された方法で指定する必要はありませんが、(CV=operand6)
節で参照される、制御変数を使用してダイナミックに割り当てることもできます。「例 5 - 制御変数を使用した属性の割り当てによる REINPUT」を参照してください。
AD
と CV
オプションの両方が同じフィールドに指定されている場合、AD
オプションの属性は完全に無視されますが、(AD=P)
は引き続き有効です。
CD
と CV
オプションが同じフィールドに指定されている場合、CV
オプションの色が使用されます。CV
変数に色の仕様が含まれていない場合は、CD
オプションの色がそのフィールドに適用されます。
AD=P
をステートメントレベルで指定した場合、MARK
オプションで指定されたフィールドを除く全フィールドが入力保護フィールドになります。「例 2 - 属性を割り当てた REINPUT」も参照してください。
[AND ] [SOUND ] ALARM |
このオプションは、REINPUT
ステートメントの実行時にアクティブ化される端末の音声アラーム機能を提供します。この機能を使用するには、対応するハードウェアが使用可能である必要があります。
** Example 'REIEX1': REINPUT ************************************************************************ DEFINE DATA LOCAL 1 #FUNCTION (A1) 1 #PARM (A1) END-DEFINE * INPUT #FUNCTION #PARM * DECIDE FOR FIRST CONDITION WHEN #FUNCTION = 'A' AND #PARM = 'X' REINPUT 'Function A with parameter X selected.' MARK *#PARM WHEN #FUNCTION = 'C' THRU 'D' REINPUT 'Function C or D selected.' WHEN #FUNCTION = 'X' STOP WHEN NONE REINPUT 'Please enter a valid function.' MARK *#FUNCTION END-DECIDE * END
#FUNCTION A #PARM Y
PLEASE ENTER A VALID FUNCTION #FUNCTION A #PARM Y
** Example 'REIEX2': REINPUT (with attributes) ************************************************************************ DEFINE DATA LOCAL 1 #A (A20) 1 #B (N7.2) 1 #C (A5) 1 #D (N3) END-DEFINE * INPUT (AD=A) #A #B #C #D * IF #A = ' ' OR #B = 0 REINPUT (AD=P) 'RETYPE VALUES' MARK *#A (AD=I CD=RE) /* put cursor on first field *#B (AD=U CD=PI) /* and change colors END-IF * END
** Example 'REIEX3': REINPUT (with FULL and POSITION option) ************************************************************************ DEFINE DATA LOCAL 1 #A (A20) 1 #B (N7.2) 1 #C (A5) 1 #D (N3) END-DEFINE * INPUT (AD=M) #A #B #C #D * IF #A = ' ' COMPUTE #B = #B + #D RESET #D END-IF * IF #A = SCAN 'TEST' OR = ' ' REINPUT FULL 'RETYPE VALUES' MARK POSITION 5 IN *#A END-IF * END
RETYPE VALUES #A #B 0.00 #C #D 0
** Example 'REIEX4': REINPUT (with TEXT option) ************************************************************************ DEFINE DATA LOCAL 01 #NAME (A8) 01 #TEXT (A20) END-DEFINE * * INPUT WITH TEXT 'Enter a program name.' 'Program name:' #NAME * IF #NAME = ' ' REINPUT WITH TEXT 'Input missing. Enter a name.' END-IF * IF #NAME NE MASK (A) MOVE 'Invalid input.' TO #TEXT REINPUT WITH TEXT ':1: Name must start with a letter.',#TEXT ELSE /* Using Natural error message 7600 for demonstration COMPRESS *INIT-USER 'on' *DAT4I INTO #TEXT INPUT WITH TEXT *-7600,#NAME,#TEXT 'Input accepted.' END-IF END
DEFINE DATA LOCAL 1 #HELLO (A5) INIT <'HELO'> 1 #VAR (A20) INIT <'Enter "HELLO"'> 1 #CV (C) END-DEFINE * INPUT (IP=OFF) #HELLO (AD=M) * IF #HELLO NE 'HELLO' THEN MOVE (AD=U CD=RE) TO #CV REINPUT FULL WITH TEXT #VAR (CD=YE) MARK *#HELLO (CV=#CV) END-IF END