Natural サブプログラムは、第 3 世代プログラミング言語(3GL)で作成されたプログラミングオブジェクトから呼び出すことができます。 呼び出し元のプログラムは、標準の CALL
インターフェイスをサポートする任意のプログラミング言語で作成できます。
この目的のために、Natural にはインターフェイス ncxr_callnat
が用意されています。 3GL プログラムでは、必要なサブプログラム名を指定してこのインターフェイスを呼び出します。
注意:
あらかじめ Natural を有効化しておく必要があります。つまり、Natural オブジェクトで CALL
ステートメントを使用して、呼び出し元の 3GL プログラムを呼び出しておく必要があります。
サブプログラムは、CALLNAT
ステートメントで別の Natural オブジェクトから呼び出されたかのように実行されます。
(END
ステートメントまたは ESCAPE ROUTINE
ステートメントで)サブプログラムの処理が終了すると、3GL プログラムに制御が戻ります。
このドキュメントでは、次のトピックについて説明します。
呼び出し元の 3GL プログラムから Natural サブプログラムにパラメータを渡すことができます。 パラメータを渡す場合、CALL
ステートメントを使用してパラメータを渡すときと同じルールが適用されます。
3GL プログラムでは、以下の 4 つのパラメータとともに Natural インターフェイス ncxr_callnat
を呼び出します。
1 番目のパラメータは、呼び出す Natural サブプログラムの名前です。
2 番目のパラメータは、サブプログラムに渡すパラメータの数です。
3 番目のパラメータは、サブプログラムに渡すパラメータのアドレスが格納されたテーブルのアドレスです。
4 番目のパラメータは、サブプログラムに渡すパラメータのフォーマット/長さ指定が格納されたテーブルのアドレスです。
呼び出し元プログラムのパラメータの順序、フォーマット、および長さは、サブプログラムの DEFINE DATA PARAMETER
ステートメント内のフィールドの順序、フォーマット、および長さと正確に一致している必要があります。 呼び出し元プログラムのフィールド名と呼び出されるサブプログラムのフィールド名は、同一である必要はありません。
3GL プログラムから Natural サブプログラムを呼び出す方法の例については、Natural ルートディレクトリのサブディレクトリ samples\sysexuex にある以下の例を参照してください。
MY3GL.NSP(メインプログラム)
MY3GLSUB.NSN(サブプログラム)
MYC3GL.C("C" の関数)