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

INPUT 構文 2 - 定義済みマップレイアウトの使用

この形式の INPUT ステートメントは、Natural マップエディタを使用して作成されたマップレイアウトを使用して入力処理を実行するために使用されます。

マップレイアウトは次の 2 つの方法で使用できます。

INPUT [WINDOW='window-name'] [WITH-TEXT-option]
  [MARK-option]
  [ALARM-option]
  [USING] MAPmap-name [NO ERASE]

operand1

NO PARAMETER

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

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


パラメータリストのない INPUT USING MAP

パラメータリストのない INPUT USING MAP を使用する場合は、次の要件を満たす必要があります。

Top of page

プログラムで定義されている INPUT フィールド

プログラムで処理するフィールドの名前(operand1)を指定することで、マップ内のフィールドの名前とは異なる名前をプログラムのフィールドの名前にすることができます。

プログラムのフィールドの順序はマップの順序と一致している必要があります。 マップエディタは、マップで指定されたフィールドを、フィールド名の英字順でソートすることに注意してください。 詳細については、Natural の『エディタ』ドキュメントのマップエディタの説明を参照してください。

プログラムエディタの行コマンド .I(mapname) を使用して、指定されたマップで定義されているフィールドから派生したパラメータリストとともに完全な INPUT USING MAP ステートメントを取得できます。

マップのレイアウトが変更された場合でも、マップを使用してプログラムを再カタログする必要はありません。 ただし、フィールド名、フィールド形式/長さ、またはマップ内の配列構造が変更された場合、またはマップでフィールドが追加または削除された場合は、プログラムを再カタログする必要があります。

プログラムで指定されたフィールドの形式と長さが、マップで指定されたフィールドと一致することを確認するために、実行時にチェックが行われます。 両方のレイアウトが一致しない場合は、エラーメッセージが生成されます。

Top of page

INPUT 構文 2 - 説明

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

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

構文要素の説明:

INPUT WINDOW='window-name' このオプションについては、INPUT ステートメントの「構文 1」で説明しています。
WITH TEXT/MARK/ALARM-options これらのオプションについては、INPUT ステートメントの「構文 1」で説明しています。「WITH TEXT オプション」、「MARK オプション」、「ALARM オプション」を参照してください。
USING MAP map-name

USING MAP は、マップエディタを使用して以前に Natural システムファイルに格納されたマップ定義を呼び出します。

map-name は、1~8 文字の英数字定数またはユーザー定義変数にすることができます。 変数を使用する場合、事前にこれを定義しておく必要があります。 マップ名にアンパサンド(&)を含めることができます。この文字は実行時に Natural システム変数 *LANGUAGE の現在の値で置き換えられます。 この機能で複数言語のマップを使用できます。

INPUT ステートメントを実行すると、NO ERASE オプションが指定されていない限り、対応するマップで画面の現在の内容が置き換えられます。このオプションを指定した場合は、マップが画面の現在の内容をオーバーレイします。

NO ERASE このオプションについては、INPUT ステートメントの「構文 1」で説明しています。
operand1
フィールド指定:

データベースフィールドまたはユーザー定義変数、あるいはその両方のリスト。 フィールドは、参照先のマップ内のフィールドと、数、順序、形式、長さ、およびオカレンス数(配列の場合)が一致している必要があります。そうでないとエラーが発生します。

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

Top of page

非スクリーンモードでの INPUT ステートメントの使用

セッションパラメータ IM または端末コマンド %F および %D を使用して、入力モードを変更できます。

フォームモード

端末コマンド %F を実行すると、フォームモードが有効になります。

フォームモード(プロファイル/セッションパラメータ IM=F)では、Natural は位置パラメータに従ってフィールドごとに端末にマップレイアウトの出力テキストをすべて表示します。 これにより、ユーザーはフィールドごとにデータを入力できます。 すべてのデータが入力されると、ハードコピーの出力が、画面に表示されるのと同じ形式で生成されます。

フォームモードでは、%R と入力すると、エラーの発生時にオペレータがフォーム全体を再入力できます。 入力は、INPUT ステートメントの最初の実行時に処理されます。

キーワード/デリミタモード

端末コマンド %D を実行すると、キーワード/デリミタモードが有効になります。

キーワード/デリミタモード(プロファイル/セッションパラメータ IM=D)では、キーワードまたは位置入力値を使用してデータを入力できます。

キーワード入力を使用すると、端末オペレータは、プロンプトテキストを使用して個々のフィールドのデータを入力できます。フォームモードでは、プロンプトテキストは、フィールドを識別するキーワードとして値の前に表示されます。 キーワードの後には、INPUT 割り当て文字(IA パラメータ)、その直後にデータが続く必要があります。 割り当て文字に続くスペースは、区切り文字(ID パラメータ)までデータとして取得されます。 区切り文字は、最後のデータ要素の後には不要です。 異なるフィールドのキーワードデータは、区切り文字で分割して任意の順序で入力できます。 INPUT ステートメントで定義されていないキーワードをオペレータが入力した場合は、エラーメッセージが返されます。 入力フィールドにデータを入力する必要はありません。 データが入力されていないフィールドは、英数字フィールドでは空白に、数値および 16 進数フィールドではゼロに設定されます。

位置値入力を使用する場合、端末オペレータは、現在定義されている INPUT 区切り文字(ID パラメータ)で区切られたすべての入力フィールドのデータのみ入力します。 入力するフィールドの順序は、INPUT ステートメントのフィールドの順序に対応します。

ユーザーは、デリミタ文字で区切った位置入力に値の数を入力し、値の前にキーワードを指定して選択したフィールドのキーワードモードに切り替えることにより、位置入力からキーワード入力に切り替えることができます。

キーワードがフィールドの位置指定に使用された場合、キーワードの値に続くキーワード以外の入力は、INPUT ステートメントで以前に選択されたフィールドに続くフィールドに割り当てられる位置入力として処理されます。

注意:
キーワードおよび対応する入力フィールドは、同じ論理行にある必要があります。 合計の長さが行サイズを超える場合は、行サイズ(LS パラメータ)を適宜調整して、キーワードとフィールドが 1 行に収まるようにします。

キーワード/デリミタモードで入力されたデータは、スクリーンモードの場合と同じように検証されます。 フィールドに対して定義されている文字数を超えて入力しようとした場合は、エラーメッセージが返されます。

バッファ(3270タイプ)端末またはワークステーションで、INPUT ステートメントをキーワード/デリミタモードで処理する場合は、1 つの INPUT ステートメントに割り当てるすべてのデータを 1 つの画面に入力する必要があります。 Enter は、INPUT ステートメントに対するすべてのデータが入力された場合にのみ使用します。

Top of page

Natural スタックデータの処理

Natural スタックに FETCHRUN、または STACK ステートメントを介して配置されたデータ要素は、実行時に検出された次の INPUT ステートメントで処理されます。

INPUT ステートメントは、前述したようにキーワード/デリミタモードのデータを処理します。

すべての入力フィールドを充填するためのデータ要素が使用可能でない場合は、フィールド形式に応じて空白/ゼロが充填されます。 存在する入力フィールドよりも多くのデータ要素が指定されている場合、残りのデータは無視されます。

フィールドにスタックからのデータが入力されている場合、フィールド属性はデータに適用されません。

Natural システム変数 *DATA を参照して、Natural スタックで現在使用可能なデータ要素の数を判断できます。

Top of page

バッチモードでの INPUT ステートメントの使用

以下では次のトピックについて説明します。

バッチフォームモード

バッチフォームモードでは、INPUT マップが表示されます。 データレコードは、1 つ以上の AD=A フィールドや AD=M フィールドを含む行ごとに読み取られ、レコードに含まれるデータが 1 つ以上の適切なフィールドに割り当てられます。

入力データフィールドは、連続していると想定されます。 デリミタ文字が使用されていない限り、入力データはフィールドの内部定義に従って正確な長さで入力する必要があります。 数値フィールドの場合は、記号(SG=ON の場合)および小数点に空白を適宜許可する必要があります。

オプションとして、個々のフィールドの値を分割するデリミタ文字を使用してデータを入力することもできます。 この場合、内部定義に従って正確な位置番号で入力する必要はなく、位置 1 から開始して左から右に処理されます。 データ入力のルールは、「データ入力」で説明したルールと同じです。 また、割り当て文字を使用して、*OUTIN フィールドの内容がリセットされないことを指定できます。

バッチキーワード/デリミタモード

キーワード/デリミタモードがバッチモードで使用されている場合は、TP モードのキーワード/デリミタモードと同じように機能しますが、次の例外があります。

バッチモードでの端末コマンドの使用

次の Natural 端末コマンドは、INPUT ステートメントをメインフレームコンピュータでバッチモードで使用している場合に使用できます。

コマンド 説明
%* レコード抑制。 レコードの位置 1 および 2 に入力された場合、%* を使用すると次の入力レコードの出力が抑制されます。
DATA RECORD
%*
SUPPRESSED DATA RECORD
% レコード継続。 % がレコードの最後の空白以外の文字として入力された場合は、次の入力レコードが継続レコードとして扱われます。
DATA, RECORD, WITH,
CONTINUATION, %
CONTINUATION RECORD


INPUT V1 V2 V3 V4 V5 V6
DISPLAY V1 V2 V3 V4 V5 V6 

次の出力を生成します。

DATA RECORD WITH CONTINUATION CONTINUATION RECORD
%/ エンドオブファイル。 レコードの最初の 2 つの位置に入力された場合(最後に空白以外の文字はなし)、%/ はエンドオブファイル条件を発生させます。
%% 入力データストリームに再開位置を設定します。
%. 現在の INPUT ステートメントの入力値の読み取りが終了します。
%Knn PF キーをシミュレートします。
%KPn PA キーをシミュレートします。
%Q このコマンドでは、入力データの読み取りに使用されるマップの出力が抑制されます。

詳細については、『端末コマンド』ドキュメントを参照してください。

バッチモードでのデータ入力に INPUT ステートメントを使用している場合は、追加の JCL ステートメントが必要です。 Natural をバッチモードで実行する前に、これらのステートメントが提供されていることを Natural 管理者に確認する必要があります。

Top of page