3GL プログラムからの Natural サブプログラムの呼び出し

Natural サブプログラムは、第 3 世代プログラミング言語(3GL)で作成された Natural オブジェクトから呼び出すことができます。呼び出し元のプログラムは、標準の CALL インターフェイスをサポートする任意のプログラミング言語で作成できます。

この目的のために、Natural にはインターフェイス ncxr_callnat が用意されています。3GL プログラムでは、必要なサブプログラム名を指定してこのインターフェイスを呼び出します。

注意:
あらかじめ Natural を有効化しておく必要があります。つまり、Natural オブジェクトで CALL ステートメントを使用して、呼び出し元の 3GL プログラムを呼び出しておく必要があります。

サブプログラムは、CALLNAT ステートメントで別の Natural オブジェクトから呼び出されたかのように実行されます。

END ステートメントまたは ESCAPE ROUTINE ステートメントで)サブプログラムの処理が終了すると、3GL プログラムに制御が戻ります。

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


3GL プログラムからサブプログラムへのパラメータ渡し

呼び出し元の 3GL プログラムから Natural サブプログラムにパラメータを渡すことができます。パラメータを渡す場合、CALL ステートメントを使用してパラメータを渡すときと同じルールが適用されます。

3GL プログラムでは、以下の 4 つのパラメータとともに Natural インターフェイス ncxr_callnat を呼び出します。

  • 1 番目のパラメータは、呼び出す Natural サブプログラムの名前です。

  • 2 番目のパラメータは、サブプログラムに渡すパラメータの数です。

  • 3 番目のパラメータは、サブプログラムに渡すパラメータのアドレスが格納されたテーブルのアドレスです。

  • 4 番目のパラメータは、サブプログラムに渡すパラメータのフォーマット/長さ指定が格納されたテーブルのアドレスです。

呼び出し元プログラムのパラメータの順序、フォーマット、および長さは、サブプログラムの DEFINE DATA PARAMETER ステートメント内のフィールドの順序、フォーマット、および長さと正確に一致している必要があります。呼び出し元プログラムのフィールド名と呼び出されるサブプログラムのフィールド名は、同一である必要はありません。

3GL プログラムからの Natural サブプログラムの呼び出し例

3GL プログラムから Natural サブプログラムを呼び出す方法の例については、Natural ルートディレクトリのサブディレクトリ samples\sysexuex にある次の例を参照してください。

  • MY3GL.NSP(メインプログラムの場合)、

  • MY3GLSUB.NSN(サブプログラムの場合)、

  • MYC3GL.CC 関数の場合)。