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