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] |
オペランド定義テーブル:
| オペランド | 構文要素 | フォーマット | オペランド参照 | ダイナミック定義 | ||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
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