Natural スタックは、Natural コマンド、ユーザー定義コマンド、および INPUT
ステートメントで使用する入力データを格納できる、一種の "中間ストレージ" です。
このドキュメントでは、次のトピックについて説明します。
スタックには、一連のログオンコマンドのように、頻繁に連続して実行する一連の機能を格納できます。
スタックに格納されたデータ/コマンドは、その一番上に "スタック" されます。 格納するデータ/コマンドをスタックの一番上と一番下のどちらに置くかは指定できます。 スタック内のデータ/コマンドは、スタックされている順番(スタックの一番上から)でのみ処理できます。
プログラムでは、システム変数 *DATA
を参照することにより、スタックの内容を確認できます。詳細については、『システム変数』ドキュメントを参照してください。
スタックに格納されているコマンド/データの処理は、実行する機能によって異なります。
コマンドを実行しようとしている場合、つまり、NEXT プロンプトを表示しようとしている場合、Natural はまず、スタックの一番上がコマンドかどうかをチェックします。 スタックの一番上がコマンドの場合、NEXT プロンプトは抑制されます。そして、コマンドが読み込まれ、スタックから削除されます。その後、NEXT プロンプトに応答して手動で入力されたかのように、コマンドが実行されます。
入力フィールドが含まれている INPUT
ステートメントを実行しようとしている場合、Natural はまず、スタックの一番上に何らかの入力データがあるかどうかをチェックします。 入力データがある場合、そのデータが INPUT
ステートメントにデリミタモードで渡されます。スタックから読み込まれるデータは、INPUT
ステートメントの変数と互換性のあるフォーマットである必要があります。その後、データはスタックから削除されます。 INPUT
ステートメントの説明の「Natural スタックデータの処理」も参照してください。
スタックデータを使用して実行した INPUT
ステートメントを REINPUT
ステートメント経由で再実行すると、INPUT
ステートメントの画面が再表示され、最初に実行したときと同じスタックデータが表示されます。 REINPUT
ステートメントでは、スタックから他のデータは読み込まれません。
Natural プログラムが正常に終了するときは、コマンドがスタックの一番上に来るか、またはスタックがクリアされるまで、スタックは一番上からフラッシュされます。 Natural プログラムが端末コマンド %%
またはエラーで終了した場合は、スタックが完全にクリアされます。
以下の方法を使用して、データ/コマンドをスタックに格納します。
Natural プロファイルパラメータ STACK
は、データ/コマンドをスタックに格納するために使用できます。 STACK
パラメータ(『パラメータリファレンス』を参照)は、Natural のインストール時に Natural 管理者が Natural パラメータモジュールに指定するか、またはダイナミックパラメータとして Natural の起動時に指定します。
データ/コマンドを STACK
パラメータ経由でスタックに格納する場合、複数のコマンドはセミコロン(;)で分割する必要があります。 コマンドを一連のデータまたはコマンド要素に格納して渡す場合、コマンドの前にセミコロンを付ける必要があります。
複数の INPUT
ステートメントに対するデータは、コロン(:)で分割する必要があります。 単独の INPUT
ステートメントで読み込むデータには、コロンを前に付ける必要があります。 パラメータを必要とするコマンドをスタックする場合、コマンドとパラメータの間にはコロンを置きません。
セミコロンとコロンはでセパレータ文字として解釈されるため、入力データ自体にセミコロンとコロンを使用することはできません。
プログラム内で STACK
ステートメントを使用すると、データ/コマンドをスタックに格納できます。 1 つの STACK
ステートメントで指定したデータ要素は、1 つの INPUT
ステートメントで使用します。これは、複数の INPUT
ステートメントに対するデータをスタックに格納するには、複数の STACK
ステートメントを使用する必要があることを意味します。
スタックには、フォーマットされていないデータもフォーマットされているデータも格納できます。
フォーマットされていないデータがスタックから読み込まれると、データ文字列はデリミタモードで解釈され、セッションパラメータ IA
(INPUT 割り当て文字)および ID
(INPUT 区切り文字)で指定されている文字が、割り当てとデータ分割のキーワードに対する制御文字として処理されます。
フォーマットされているデータがスタックに格納されている場合、フィールドの個々の内容が分割され、対応する INPUT
ステートメントの 1 つの入力フィールドに渡されます。 スタックに格納するデータにデリミタ文字、制御文字、または DBCS 文字が含まれている場合、これらの文字が不適切に解釈されないように、フォーマットしてスタックに格納する必要があります。
STACK
ステートメントの詳細については、『ステートメント』ドキュメントを参照してください。
呼び出すプログラムに渡すパラメータを持つ FETCH
または RUN
ステートメントを実行すると、これらのパラメータはスタックの一番上に格納されます。
Natural 端末コマンド %.P
は、Natural スタックの一番上のエントリを削除します。
スタックの内容は、RELEASE
ステートメントで削除できます。 RELEASE
ステートメントの詳細については、『ステートメント』ドキュメントを参照してください。
注意:
Natural プログラムが端末コマンド %%
またはエラーで終了した場合は、スタックが完全にクリアされます。