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

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

DEFINE DATA CONTEXT の一般的な構文:

CONTEXT

USING

local-data-area

parameter-data-area
context-data-definition ../graphics/dot3.gif

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

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


機能

DEFINE DATA CONTEXT ステートメントは、Natural リモートプロシージャコール(RPC)と一緒に使用します。 このステートメントは、コンテキスト変数と呼ばれる変数の定義に使用します。コンテキスト変数では、対応する CALLNAT ステートメントで変数をパラメータとして明示的に渡さなくても、1 つの会話の中で複数のリモートサブプログラムがこの変数を使用できます。

コンテキスト変数は、その名前によって参照されます。また、この変数の内容は、その名前を参照する 1 つの会話で実行されるすべてのプログラミングオブジェクトによって共有されます。 変数は、変数の定義を含むプログラミングオブジェクトが最初に実行されたときに割り当てられ、会話が終了すると解除されます。

コンテキスト変数は、非会話型 CALLNAT で使用されます。 この場合、コンテキスト変数は非会話型 CALLNAT が単独で呼び出されている間だけ存在していますが、CALLNAT から呼び出される側のすべてで共有できます。

コンテキスト変数は、会話内で呼び出されたサブプログラムで共有されることはありません。 このようなサブプログラムまたはサブプログラムから呼び出される側の 1 つでコンテキスト変数を参照する場合は、その変数用に別のストレージエリアが割り当てられます。

任意の INIT 節は、その節を含む、各実行プログラミングオブジェクトで評価されます(変数を割当てるプログラミングオブジェクト内だけではありません)。 これは、グローバル変数の INIT の動作とは異なります。

詳細については、『Natural リモートプロシージャコール(RPC)』ドキュメントの「会話コンテキストの定義」を参照してください。

Top of page

制限事項

コンテキスト変数は、レベル 01 で定義する必要があります。 他のレベルは再定義だけで使用します。

Top of page

構文説明

USING local-data-area

ローカルデータエリア(LDA)には、単一の Natural モジュールで使用されるデータ要素が含まれています。 複数のデータエリアを参照できますが、その場合は、予約語 CONTEXTUSING を繰り返す必要があります。例えば、次のようになります。

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 を使用して、単一の値(スカラ)または複数の値(配列)を持つ単一のフィールド/変数を定義します。 「変数定義」を参照してください。

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

redefinition redefinition を使用して、グループ、ビュー、DDM フィールド、単一のフィールド/変数(スカラまたは配列)を再定義できます。 「再定義」を参照してください。
handle-definition ハンドルは、コードのダイアログエレメントを特定し、ハンドル変数に格納されます。 「ハンドルの定義」を参照してください。

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

Top of page