Natural RPC 用のコンテキスト変数の定義

DEFINE DATA CONTEXT の全般的な構文:

DEFINE DATA
  CONTEXT

USING

local-data-area
parameter-data-area

context-data-definition ../graphics/dot3.gif
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 モジュールで使用されるデータ要素が含まれています。複数のデータエリアを参照できますが、その場合は、予約語 CONTEXTUSING を繰り返す必要があります。例えば、次のようになります。

DEFINE DATA
  CONTEXT USING DATX_L
  CONTEXT USING DATX_P

  ...
END-DEFINE ;

詳細については、『プログラミングガイド』の「別のデータエリアでのフィールドの定義」を参照してください。

USING parameter-data-area
PDA 名:

パラメータデータエリアには、サブプログラム、外部サブルーチン、またはダイアログでパラメータとして使用されるデータ要素が含まれています。

context-data-definition
コンテキストデータ定義:

コンテキストデータは、プログラムまたはルーチン内で直接定義することができます。コンテキストデータ定義には、下記の構文が適用されます。

END-DEFINE
DEFINE DATA ステートメントの終了:

DEFINE DATA ステートメントを終了するには、Natural の予約語 END-DEFINE を使用する必要があります。

コンテキストデータ定義

コンテキストデータは、プログラムまたはルーチン内で直接定義することができます。コンテキストデータ定義には、次の構文が適用されます。

level

variable-definition

redefinition

詳細については、『プログラミングガイド』の「DEFINE DATA ステートメント内のフィールドの定義」を参照してください。

構文要素 説明
level
レベル番号:

アプリケーションに依存しない変数は、レベル 01 で定義する必要があります。他のレベルは再定義だけで使用します。

variable-definition
変数定義:

variable-definition を使用して、単一の値(スカラ)または複数の値(配列)を持つ単一のフィールド/変数を定義します。

詳細については、「変数定義」を参照してください。

注意:
CONSTANT 節は、このコンテキストでは使用できません。

redefinition
再定義:

redefinition を使用して、グループ、ビュー、DDM フィールド、単一のフィールド/変数(スカラまたは配列)を再定義できます。

詳細については、「再定義」を参照してください。

注意:
再定義によって生成されるフィールドは、コンテキスト変数とはみなされません。これらのフィールドは、ローカル変数として処理されます。