このセクションでは、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 サブプログラムに渡されます。
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 環境では、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 .....
ダイナミック範囲の配列は使用できません。
以下に示す 3GL CALLNAT 環境の例では、特定の TP モニタシステムまたはバッチモード環境で COBOL ルーチンから Natural サブプログラムを呼び出す方法を説明し、このような環境を作成するためのシステム固有の手順を示します。
以下のトピックについて説明します。
CICS でサンプル Natural 3GL CALLNAT 環境を作成するには、次の手順に従います。
3GL CALLNAT 環境を初期化するフロントエンドプログラムをセットアップします。
Natural/CICS ソースライブラリの COBOL フロントエンド XNCIFRCX
を使用します。 これは、Natural を起動し、LOGON YOURLIB
をスタックし、Natural 3GL CALLNAT 環境を初期化する TSTCOB
プログラムを実行します。
ソースコードで文字列 NCvr
を見つけ、Natural 用の有効なトランザクション ID と置き換えます。
COBOL プログラムをコンパイルおよびリンクエディットし、CEDA DEFINE PROGRAM
を使用してプログラムを CICS に定義します。
Natural/CICS ソースライブラリ NCI.SRCE
にサンプルメンバ XNCI3GC1
がある場合は、その中に Natural サブプログラム MYPROG
へのデフォルト呼び出しが含まれています。
テストに使用するために、SYSTEM
ライブラリに以下のプログラムを作成し格納します。
WRITE 'BEFORE PGM EXECUTION' CALL 'COBNAT' WRITE 'AFTER PGM EXECUTION' END
XNCI3GC1
ソースを調べ、CALL
と LINK
を確認します。 以下の CICS INCLUDE 指示を使用して COBNAT としてコンパイルおよびリンクするか、ジョブ例 NCTI070
の手順 2 を使用します。
INCLUDE CICSLIB(DFHECI) INCLUDE XNCI3GC1 <= output from translator and compiler INCLUDE NCILIB(NCIXCPRM) ENTRY XNCI3GC1 NAME COBNAT(R)
デフォルトでは、ソースメンバ XNCI3GC1
は YOURLIB
ライブラリの Natural サブプログラム MYPROG
を呼び出すように設定されています。 前述したように、TSTCOB
は Natural サブプログラム MYPROG
への実際の呼び出しを含む COBNAT
を呼び出すことによってプロセスを起動します。
Natural サブプログラムの実行をデモンストレーションするサブプログラム MYPROG
を作成します。
DEFINE DATA PARAMETER 01 PARM1 (A18) 01 PARM2 (A18) 01 PARM3 (A18) END-DEFINE * MOVE 'PARAM01' TO PARM1 MOVE 'PARAM02' TO PARM2 MOVE 'PARAM03' TO PARM3 END
CICS リソース(PPT および PCT)を定義するためのガイドとして、ジョブ NCII005 を使用します。
必要な CICS リソース(PPT および PCT)を定義します。
NCYC デフォルトトランザクションを使用して環境をテストします。 CEDF を使用して、プログラム制御をモニタし、使用中のデータエリアをモニタします。
重要:
Natural は CICS プログラム階層の最上位にあるため、端末 I/O を発行する COBOL サブプログラムは会話型モードで実行する必要があります。 擬似会話型のプログラムは変更する必要があり、Natural 3GL CALLNAT インターフェイスを使用した新しい開発は会話型モードで行う必要があります。
XNCI3GC2 |
XNCI3GC1 と同じ機能の COBOL サンプルですが、呼び出し元の Natural プログラムからのパラメータを受け入れます。
|
XNCI3GP1 |
COBOL サンプル XNCI3GC1 と同じ機能の PL/I サンプルです。
|
XNCI3GP2 |
XNCI3GC1 と同じ機能の PL/I サンプルですが、呼び出し元の Natural プログラムからのパラメータを受け入れます。
|
XNAT3GC2 |
CICS サンプル XNCI3GC2 と同じ機能の COBOL サンプルです。
|
XNAT3GP2 |
CICS サンプル XNCI3GP2 と同じ機能の PL/I サンプルです。
|
サンプル Natural 3GL CALLNAT を作成するには、次の手順に従います。
サンプルアセンブラルーチン XNAT3GA1
には、CALLNAT
インターフェイスにアクセスするための基本例が含まれています。 このプログラムのソースには、レジスタ呼び出し規則が含まれています。
NATXCAL
と XNAT3GA1
をエントリポイント ASMNAT
でリンクします。
実際に Natural サブルーチン ASMNAT
を呼び出す ASMNAT
プログラムを呼び出すプログラムをスタックして Natural セッションを開始します。