2012-04-20 20 views
1

ユーザーがデータベース表で更新する2つの値を入力するマップがあります。私は両方のプログラムを書きましたが、私はマップに入力された2つのフィールド値を別のプログラムに渡す方法を知ることができません。私はLinkage Sectionを使うことができることを知りました。しかし、構文やその詳細を知らないでください。誰も私の構文を助けることができます。ありがとうございますCICS-COBOLからCOBOL-DB2プログラムにパラメーターを渡す方法

答えて

4

CICSマップから取得された値が保持されるプログラムには、WORKING-STORAGEがあるはずです。たとえば:

01 SCREEN-DATA. 
    05 SOME-FIELD   PIC X(10). 
    05 SOME-OTHER-FIELD PIC 9(4). 

77 PROGRAM-NAME   PIC X(8) VALUE 'PROG2'. 

は、このプログラムがPROG1と呼ばれていると、あなたは、第二のCOBOLプログラムがPROG2と呼ばれるこれらの値を渡したいです。 一般的に、これはCOBOLで 動的サブルーチン呼び出しを使用して行われます。動的コールを実行する典型的な方法は、プログラムと呼ばれる の名前をWORKING-STORAGE変数に入れることです。私はこの目的のためにPROGRAM-NAMEと宣言しました。データは、個々のアイテムと呼ばれるプログラムに を渡すことができる。

CALL PROGRAM-NAME USING SOME-FIELD, SOME-OTHER-FIELD 

上記文献によってSOME-FILEDSOME-OTHER-FIELDを通過PROG2に動的呼び出しです。次のように

PROG2はそのリンケージ部を介してこれらのデータを受信:PROG2

LINKAGE SECTION. 
    01 LINKAGE-DATA. 
    05 FIELD1   PIC X(10). 
    05 FILED2   PIC 9(4). 

手続き部はこのようなものになります。また

PROCEDURE DIVISION USING FIELD1, FIELD2. 

を、あなたはとしてレコード全体を渡すことができます単一パラメータ::

CALL PROGRAM-NAME USING SCREEN-DATA 

PROG2がその作業を完了したときPROG2

PROCEDURE DIVISION USING LINKAGE-DATA. 

で最後に、それはGOBACKまたはEXIT PROGRAMで終了する必要があります。 STOP RUNを として使用しないでください。これにより、メインプログラム(PROG1)も終了します。

COBOL呼び出し規約は、他のほとんどの手続き言語と同様です。パラメータは、参照(デフォルト)、値または内容によって に渡すことができます。ほとんどのCOBOLベンダーは、これらのパラメータのすべてを に渡すことをサポートしていますが、実装に多少の違いがあるかもしれません。上記の例は、IBM Enterprise COBOLの例です。 が異なるバージョンのCOBOLを使用している場合は、COBOLリファレンスガイドとCOBOLプログラミングガイドを確認することをお勧めします。

あなたはIBMエンタープライズCOBOLは、ライン上でガイドを得ることができます:Language Reference GuideProgramming Reference Guide

+0

をありがとうございました。それは動作していますが、私はcobol-db2プログラムでFIELD1、FIELD2変数を使用することができません。これらの変数を別の変数に移動しようとすると、私はcics画面に異常終了ASRAを取得しています。これで私を助けてくれるのですか – Pramod

+0

A、B、Cを使った手続き部のように聞こえるのですが、A、B、Cを使って呼び出したプログラムの名前が並んでいません... " これがDB2とCICSの両方である場合、トランスレータ/コンパイラによって挿入されるリンケージ・セクション項目を考慮していますか?DFHEIBLKとDFHCOMMAREAにダミー・パラメータを渡す必要があるかもしれません。 ASRAで –

0

あなたはちょうどあなたが2つのバッチCOBOLプログラム間の場合と同じように引数を渡すことができます。ただし、DFHEIBLKとDFHCOMMAREAの2つの必須引数を渡す必要があることにも注意してください。

実際に呼び出されたプログラムでは、コンパイラのリストにPROCEDURE DIVISIONに2つの引数が追加されているので、呼び出しプログラムでそれらの引数が必要になることがあります。私はあなたが明示的にあなたのソースコードに書き込むことをお勧めします。最後に

、それは次のようになります。プログラムの呼び出し

PROCEDURE DIVISION USING DFHEIBLK DFHCOMMAREA PARM1 PARM2 ... PARMXX. 

は、プログラムと呼ば

WORKING-STORAGE SECTION. 
01 PGM-NAME PIC X(8). 

PROCEDURE DIVISION. 
    CALL PGM-NAME USING DFHEIBLK DFHCOMMAREA PARM1 PARM2 ... PARMXX 
    END-CALL. 
関連する問題