DEFINE DATA CONTEXT
の一般的な構文:
CONTEXT |
USING |
local-data-area | |||||||
parameter-data-area | |||||||||
context-data-definition |
このドキュメントでは、次のトピックについて説明します。
構文図で使用されている記号については、「構文記号」を参照してください。
関連機能グループ:「Natural リモートプロシージャコール」
DEFINE DATA CONTEXT
ステートメントは、Natural リモートプロシージャコール(RPC)と一緒に使用します。 このステートメントは、コンテキスト変数と呼ばれる変数の定義に使用します。コンテキスト変数では、対応する CALLNAT
ステートメントで変数をパラメータとして明示的に渡さなくても、1 つの会話の中で複数のリモートサブプログラムがこの変数を使用できます。
コンテキスト変数は、その名前によって参照されます。また、この変数の内容は、その名前を参照する 1 つの会話で実行されるすべてのプログラミングオブジェクトによって共有されます。 変数は、変数の定義を含むプログラミングオブジェクトが最初に実行されたときに割り当てられ、会話が終了すると解除されます。
コンテキスト変数は、非会話型 CALLNAT
で使用されます。 この場合、コンテキスト変数は非会話型 CALLNAT
が単独で呼び出されている間だけ存在していますが、CALLNAT
から呼び出される側のすべてで共有できます。
コンテキスト変数は、会話内で呼び出されたサブプログラムで共有されることはありません。 このようなサブプログラムまたはサブプログラムから呼び出される側の 1 つでコンテキスト変数を参照する場合は、その変数用に別のストレージエリアが割り当てられます。
任意の INIT
節は、その節を含む、各実行プログラミングオブジェクトで評価されます(変数を割当てるプログラミングオブジェクト内だけではありません)。 これは、グローバル変数の INIT
の動作とは異なります。
詳細については、『Natural リモートプロシージャコール(RPC)』ドキュメントの「会話コンテキストの定義」を参照してください。
コンテキスト変数は、レベル 01 で定義する必要があります。 他のレベルは再定義だけで使用します。
USING local-data-area |
ローカルデータエリア(LDA)には、単一の Natural モジュールで使用されるデータ要素が含まれています。 複数のデータエリアを参照できますが、その場合は、予約語 DEFINE DATA CONTEXT USING DATX_L CONTEXT USING DATX_P ... END-DEFINE ; 詳細については、『プログラミングガイド』の「別のデータエリアでのフィールドの定義」を参照してください。 |
---|---|
USING parameter-data-area | パラメータデータエリアには、サブプログラム、外部サブルーチン、またはダイアログでパラメータとして使用されるデータ要素が含まれています。 |
context-data-definition | コンテキストデータは、プログラムまたはルーチン内で直接定義することができます。 ダイレクトデータ定義には、下記の構文が適用されます。 |
END-DEFINE | Natural 予約語 END-DEFINE を使用して、DEFINE DATA ステートメントを終了させる必要があります。
|
コンテキストデータは、プログラムまたはルーチン内で直接定義することができます。 ダイレクトデータ定義には、次の構文が適用されます。
level | variable-definition | ||
redefinition | |||
handle-definition |
詳細については、『プログラミングガイド』の「DEFINE DATA ステートメント内のフィールドの定義」を参照してください。
level | アプリケーションに依存しない変数は、レベル 01 で定義する必要があります。 他のレベルは再定義だけで使用します。 |
---|---|
variable-definition |
variable-definition を使用して、単一の値(スカラ)または複数の値(配列)を持つ単一のフィールド/変数を定義します。 「変数定義」を参照してください。 注意: |
redefinition | redefinition を使用して、グループ、ビュー、DDM フィールド、単一のフィールド/変数(スカラまたは配列)を再定義できます。 「再定義」を参照してください。 |
handle-definition | ハンドルは、コードのダイアログエレメントを特定し、ハンドル変数に格納されます。 「ハンドルの定義」を参照してください。 |
注意:
再定義によって生成されるフィールドは、コンテキスト変数とはみなされません。 これらのフィールドは、ローカル変数として処理されます。