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
ステートメントを実行することはできません。 このエラー条件が検出されると、エラーメッセージが生成され、プログラムの実行が終了します。
「ダイアログ設計」の「ステートメント REINPUT/REINPUT FULL(『プログラミングガイド』)も参照してください。
入出力フィールド(オプション (AD=M)
)が INPUT
ステートメントによって表示されているとき、画面に表示されているデータは、フィールドが "変更された" とみなされる場合にのみ変数に戻されます。 フィールドのステータスは、次の条件のいずれかが当てはまる場合、MODIFIED
になります。
フィールドの内容が変更された(フィールドに異なるデータが入力された)場合。
空のフィールドでキー EEOF(フィールド末尾まで削除)が押された場合。
空のフィールド、またはフィールド内の最後の非空白文字の後ろに空白が入力された場合。
プロファイルパラメータ CVMIN
が ON
に設定されており、フィールドのデータが編集オペレーションによって操作されたが最後には内容が復元された場合(例えば、最初の文字を同じ文字で上書きした場合など)。
最終的に変更されなかったフィールドの内容は、画面から変数に転送されません。
FULL
オプションを指定することなく REINPUT
ステートメントを実行した場合、入出力フィールドの MODIFIED
状態は影響を受けません。 上記のオペレーションのいずれかによって INPUT
ステートメントを介してフィールドが操作された場合以外は、フィールドは変更されていないとみなされます。 逆に言うと、前述のオペレーションの少なくとも 1 つが実行された場合は、FULL
オプションなしで REINPUT
ステートメントにより INPUT
ステートメントが何度送られたかにかかわらず、フィールドは変更されたものとして扱われます。
つまり、FULL
オプションなしで REINPUT
ステートメントによりトリガされた INPUT
ステートメントを使用して表示されたフィールド値は、前述のフィールドオペレーションによってフィールドが変更された場合にのみ、変数に転送されます。
属性制御変数(オプション CV
)が、INPUT
ステートメントの後の MODIFIED
でチェックされているフィールドに割り当てられている場合は、プログラムコード内で MODIFIED
ステータスをチェックできます。
REINPUT FULL |
注意:
「例 3 - MARK POSITION を指定した REINPUT FULL」も参照してください。 |
||
---|---|---|---|
statement-parameters |
フィールドレベルで指定したパラメータ(MARK オプションを参照)は、ステートメントレベルの対応する各パラメータを上書きします。 |
||
REINPUT ステートメントで指定可能なパラメータ | 指定(S = ステートメントレベル、E = 要素レベル) | ||
AD | 属性定義 * | SE | |
CD | カラー定義 | S | |
* 各セッションパラメータの詳細については、『パラメータリファレンス』を参照してください。 |
|||
USING HELP |
例: REINPUT USING HELP MARK 3 結果として、 |
||
WITH-TEXT-option | WITH TEXT オプションは、メッセージ行に表示されるテキストを提供するために使用します。 下記の「WITH TEXT オプション」を参照してください。
|
||
MARK-option | MARK オプションを使用して、特定のフィールドをマークすることができます。つまり、REINPUT ステートメントの実行時にカーソルが配置されるフィールドを指定できます。 下記の「MARK オプション」を参照してください。
|
||
ALARM-option | このオプションは、REINPUT ステートメントの実行時にアクティブ化される端末の音声アラーム機能を提供します。 下記の「ALARM オプション」を参照してください。
|
WITH TEXT
は、メッセージ行に表示されるテキストを提供するために使用します。 これは通常、画面処理やエラー修正のために実行する必要がある操作を示すメッセージです。
[WITH ] [TEXT ]
|
* operand1 |
[(attributes)] [,operand3]7 | ||
operand2 |
オペランド定義テーブル:
オペランド | 構文要素 | フォーマット | ステートメント参照 | ダイナミック定義 | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
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 メッセージファイルからのメッセージテキスト:
operand1 は、Natural メッセージファイルから取得するメッセージテキストの番号を表します。 ユーザー定義メッセージまたは Natural システムメッセージのいずれかを取得できます。
「例 4 - WITH TEXT オプション」も参照してください。 Natural メッセージファイルは、関連ドキュメントで説明しているように、SYSERR ユーティリティで作成およびメンテナンスします。 |
---|---|
operand2 |
メッセージテキスト:
operand2 は、メッセージ行に配置されるメッセージを表します。 「例 4 - WITH TEXT オプション」も参照してください。 |
attributes |
operand1/operand2 にさまざまな出力属性を割り当てることができます。 これらの属性と構文については、以下の「出力属性」で説明します。 |
operand3 |
メッセージテキストのダイナミック置換:
operand3 は、英数字、テキスト定数、または変数名を表します。 提供された値は、operand1 または operand2 のいずれかで指定されるメッセージテキストの一部を置き換えるために使用されます。 表記 「例 4 - WITH TEXT オプション」も参照してください。 注意: 先頭のゼロまたは末尾の空白は、メッセージに表示される前にフィールド値から削除されます。 |
attributes は、テキスト表示に使用される出力属性を示します。 可能な属性:
AD =AD-value
|
||
CD =CD-value
|
指定可能なセッションパラメータ値については、『パラメータリファレンス』ドキュメントの該当するセクションを参照してください。
注意:
コンパイラは、実際には 1 つの出力フィールドに複数の属性値を受け入れます。 例えば、「AD=BDI
」と指定できます。 ただし、この場合は最後の値のみが適用されます。 示した例では、値 I
のみが有効になり、出力フィールドは強調表示されます。
MARK
オプションを使用して、特定のフィールドをマークすることができます。つまり、REINPUT
ステートメントの実行時にカーソルが配置されるフィールドを指定できます。 また、フィールド内の特定の位置をマークすることもできます。 さらに、入力保護フィールドにしたり、表示属性やカラー属性を変更できます。
MARK [POSITION operand4 [IN ]] [FIELD ]
|
operand5 | [(attributes)] | ||||
*fieldname |
オペランド定義テーブル:
オペランド | 構文要素 | フォーマット | ステートメント参照 | ダイナミック定義 | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
operand4 | C | S | N | P | I | 可 | 不可 | |||||||||||||
operand5 | C | S | A | N | P | I | 可 | 不可 |
構文要素の説明:
operand5 |
マークするフィールド:
*fieldnameの表記は、フィールド名を参照として用いて、( 該当する INPUT #ARRAY (A1/1:5) ... REINPUT (AD=P) 'TEXT' MARK *#ARRAY (2:3) operand5 も配列の場合、operand5 の値は INPUT 配列に対するフィールド番号として使用されます。 RESET #X(N2/1:2) INPUT #ARRAY ... ... REINPUT (AD=P) 'TEXT' MARK #X (1:2) |
---|---|
MARK POSITION |
「例 3 - MARK POSITION を指定した REINPUT FULL」も参照してください。 |
operand4 | operand4 ではカーソル位置を指定します。 operand4 に小数桁を含めることはできません。 |
attributes | 下記の「属性割り当て」を参照してください。 |
B
|
BL
|
|||||||||||
C
|
GR
|
|||||||||||
D
|
NE
|
|||||||||||
AD =[P ]
|
I |
CD = |
PI
|
|||||||||
N
|
RE
|
|||||||||||
U
|
TU
|
|||||||||||
V
|
YE
|
入力フィールド(AD=A
または AD=M
)に対しては、入力保護属性(AD=P
)を指定できます。
注意:
出力専用フィールド(AD=O
)として定義されたフィールドに対して入力非保護属性は指定できません。
AD=P
をステートメントレベルで指定した場合、MARK
オプションで指定されたフィールドを除く全フィールドが入力保護フィールドになります。
さらにフィールドの表示属性およびカラー属性を変更できます。 これらの属性の詳細については、『パラメータリファレンス』のセッションパラメータ AD
および CD
を参照してください。
「例 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 colours 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