2

rpgle から COBOL プログラムを呼び出しました。cobol プログラムから rpgle に値を返したいです。私はこれらに不慣れで、正しい方法で行っているかどうかわかりません。誰かがこれを行う手順を説明してもらえますか。以下は、cobol を呼び出すために rpgle で使用したコマンドです。

callp prog(id:name);

そしてcobolで私が使用した

working storage section.
linkage section.
01 newid.
01 newname.
procedure division using newid, newname.

値がcobolで編集されている場合、値はnewid自動的newnameにrpgに渡されますか、それとも他の方法がありますか? cobol の値を rpgle に戻す方法。

4

1 に答える 1

4

あなたは基本を正しく持っています。両方のプログラムで一致するフィールド定義を提供する限り、それは問題ありません。ILE COBOL リンケージ・セクションでは、パラメーター名が参照するものの定義を追加する必要があります。PICorLIKE句がありません。

ILE RPG プログラムでは、COBOL コードへの呼び出しのプロトタイプを定義する必要があります。プロトタイプのパラメーター定義は、 COBOLのパラメーターの形式と一致する必要があります。一方でパック、ゾーン、またはバイナリ整数を使用している場合は、もう一方のそのパラメーターにも同じものを使用する必要があります。

( http://pic.dhe.ibm.com/infocenter/iseries/v7r1m0/index.jsp?topic=%2Frzase%2Fsc092540419.htmを参照)

たとえば、RPG PROG1 では、一般的に次のようなものがあります。

 D   someID                       7p 0                                                         
 D   someName                    10a                                                            

 D addInfo         PR                  EXTPROG("PROG2")                                                    
 D                                7p 0 
 D                               10a                                                            

         callp addInfo (someID:someName);

         // or omit the optional callp opcode

         addInfo (someID:someName);

次に、COBOL PROG2 では次のようになります。

  working storage section.
  linkage section.
  01 newid           pic s9(7)    packed-decimal.
  01 newname         pic x(10).

  procedure division using newid, newname.

この時点での最も簡単なオプションは、両方を個別のプログラムとしてコンパイルすることです。しかし、ILE 技法を使用して、COBOL プロシージャーを最終的な RPG プログラム・オブジェクトに結合することもできます。しかし、それは別の機会に取っておきましょう。

于 2013-11-06T20:24:31.993 に答える