バージョン 4.2.5
 —  オペレーション  —

Natural 3GL CALLNAT インターフェイス - 使用方法、例

このセクションでは、3GL CALLNAT インターフェイスの使用方法を説明し、3GL CALLNAT 環境の例をいくつか示します。

以下のトピックについて説明します。


使用方法

以下のトピックについて説明します。

概要

Natural サブプログラムを 3GL プログラムから呼び出すときは、Natural セッションがアクティブである、つまり 3GL プログラム自体が Natural によって呼び出される必要があります。

そのため、Natural 層を表示したくない場合は、特別な予防措置を取る必要があります。 以下の図に、このような場合に、Natural 3GL CALLNAT インターフェイスを使用するアプリケーションをどのように設計するかについて概要を示します。

Natural 起動プログラムの最初の呼び出しによって、必要な環境が設定されます。 その後で、この起動プログラムは Natural CALL ステートメントを使用して、CALLNAT インターフェイスを呼び出す場所から 3GL プログラムを呼び出すことができます。

呼び出しの構造

Natural のメインプログラムは極めて単純で、COBOL などのプログラムを呼び出すだけです。

.....
CALL 'cobpgm'
END
.....

3GL プログラミング言語(COBOL など)の CALL ステートメントは、Natural 3GL CALLNAT インターフェイスにアクセスできる必要があり、それによって Natural サブプログラムを呼び出します。

.....
CALL 'interface' USING natpgmp1 ... pn
.....

パラメータ interface は環境依存(NATXCAL など)で、呼び出し元プログラムにリンクされます。 パラメータ natpgm は、8 バイトの英数字変数で、呼び出される Natural サブプログラムの名前を含む必要があります。 パラメータ p1 ... pn は Natural サブプログラムに渡されます。

例(CICS を除くすべての環境):

COBOL プログラム cobpgm に、以下のようなコーディングを含めることができます。

.....
MOVE 'FINDNPGM' TO natpgm
CALL 'interface' USING natpgm number name
IF natpgm NE 'FINDNPGM'
THEN GOTO error_handling_1
.....

呼び出される Natural サブプログラム natpgm では、ファイル EMPLOYEES 内で、COBOL プログラムから渡された値と同じ name の人の数を計算します。

DEFINE DATA
PARAMETER
1 pnumber (P10)
1 pname (A20)
LOCAL
1 emp VIEW OF employees
END-DEFINE
*
RESET presp
FIND NUMBER emp WITH name=pname
MOVE *NUMBER TO pnumber
ESCAPE ROUTINE

サブプログラムの実行中にエラーが発生した場合は、このエラーに関する情報が変数 natpgm*NATnnnn フォーマットで返されます。nnnn は対応する Natural エラー番号です。

例(CICS のみ):

CICS 環境では、COBOL などからの Natural サブルーチンの呼び出しは、以下のように指定する必要があります。

...
WORKING STORAGE SECTION
...
01 PARM-LIST PIC X(132).
01 NATPGM PIC X(8).
01 NUMBER PIC 9(10) comp-3.
01 NAME PIC X(20).
...
PROCEDURE DIVISION
...
MOVE 'FINDNPGM' TO NATPGM
CALL 'NCIXCPRM' USING PARM-LIST NATPGM NUMBER NAME ...
EXEC CICS LINK PROGRAM('NCIXCALL')
COMMAREA(PARM-LIST) LENGTH(132) END-EXEC.
...

呼び出されるサブルーチン NCIXCPRM では、後続の EXEC CICS LINK コマンドで COMMAREA として使用されるパラメータアドレスリストを作成します。

パラメータ処理

フォーマットおよび長さの確認は行いません。 正しいパラメータリストを渡すのは呼び出し元の責任です。 パラメータの数値、フォーマット、および長さは、呼び出される Natural サブプログラムによって定義されます。

パラメータを渡す場合は、グループ配列を渡してはなりません。グループ配列は個別の配列として解決されるからです。

無効な構文の例:

..... 
01 GROUP (1:2)          
02 F1
02 F2
.....
..... 
CALL ..... F1 F2 
..... 

有効な構文の例:

.....
01 F1 (1:2)
01 F2 (1:2)
....
.....
CALL ..... F1 F2
.....

ダイナミック範囲の配列は使用できません。

Top of page

環境の例

以下に示す 3GL CALLNAT 環境の例では、特定の TP モニタシステムまたはバッチモード環境で COBOL ルーチンから Natural サブプログラムを呼び出す方法を説明し、このような環境を作成するためのシステム固有の手順を示します。

以下のトピックについて説明します。

CICS の環境例

CICS でサンプル Natural 3GL CALLNAT 環境を作成するには、次の手順に従います。

手順 1:環境の初期化の作成

手順 2:サンプル COBOL 呼び出しのインストール

Natural/CICS ソースライブラリ NCI.SRCE にサンプルメンバ XNCI3GC1 がある場合は、その中に Natural サブプログラム MYPROG へのデフォルト呼び出しが含まれています。

手順 3:サンプル Natural サブプログラムの作成

デフォルトでは、ソースメンバ XNCI3GC1YOURLIB ライブラリの Natural サブプログラム MYPROG を呼び出すように設定されています。 前述したように、TSTCOB は Natural サブプログラム MYPROG への実際の呼び出しを含む COBNAT を呼び出すことによってプロセスを起動します。

手順 4:CICS リソースの確認

手順 5:環境のテスト

NCYC デフォルトトランザクションを使用して環境をテストします。 CEDF を使用して、プログラム制御をモニタし、使用中のデータエリアをモニタします。

重要:
Natural は CICS プログラム階層の最上位にあるため、端末 I/O を発行する COBOL サブプログラムは会話型モードで実行する必要があります。 擬似会話型のプログラムは変更する必要があり、Natural 3GL CALLNAT インターフェイスを使用した新しい開発は会話型モードで行う必要があります。

その他のサンプル

XNCI3GC2 XNCI3GC1 と同じ機能の COBOL サンプルですが、呼び出し元の Natural プログラムからのパラメータを受け入れます。
XNCI3GP1 COBOL サンプル XNCI3GC1 と同じ機能の PL/I サンプルです。
XNCI3GP2 XNCI3GC1 と同じ機能の PL/I サンプルですが、呼び出し元の Natural プログラムからのパラメータを受け入れます。

その他の非 CICS サンプル

XNAT3GC2 CICS サンプル XNCI3GC2 と同じ機能の COBOL サンプルです。
XNAT3GP2 CICS サンプル XNCI3GP2 と同じ機能の PL/I サンプルです。

その他のサポートされている環境用のサンプル

サンプル Natural 3GL CALLNAT を作成するには、次の手順に従います。

手順 1:ASMNAT のアセンブルとリンク

サンプルアセンブラルーチン XNAT3GA1 には、CALLNAT インターフェイスにアクセスするための基本例が含まれています。 このプログラムのソースには、レジスタ呼び出し規則が含まれています。

NATXCALXNAT3GA1 をエントリポイント ASMNAT でリンクします。

手順 2:Natural セッションの開始

実際に Natural サブルーチン ASMNAT を呼び出す ASMNAT プログラムを呼び出すプログラムをスタックして Natural セッションを開始します。

Top of page