Rational Developer for System z
Enterprise COBOL for z/OS バージョン 4.1 コンパイラーおよびランタイム 移行ガイド


DB2 coprocessor の組み込み

coprocessor アプローチによって、SQL ステートメントを含む COBOL プログラムで DB2 プリコンパイラーを使用してプリコンパイルする必要がなくなります。

coprocessor アプローチでは、COBOL コンパイラーを使用してネイティブの COBOL とソース・プログラムに組み込まれた SQL ステートメントの両方を処理します。SQL ステートメントが検出された場合、コンパイラーは DB2 coprocessor とインターフェースをとります。DB2 coprocessor は適切な処置を行ってから、通常は、生成するネイティブ言語ステートメントを指示してコンパイラーに制御を戻します。

個別プリコンパイラー・アプローチは現在でも Enterprise COBOL でサポートされますが、coprocessor アプローチの方が望ましく、推奨されるソリューションです。coprocessor アプローチは使用可能度が高く、機能面でも優れています。特に、coprocessor ソリューションを使用すると、Debug Tool を使用した COBOL アプリケーションの対話式デバッグ機能が拡張されます。これは、DB2 プリコンパイラーによって生成された拡張ソースではなく、元のソース・レベルでアプリケーションをデバッグすることができるためです。

coprocessor アプローチには DB2 バージョン 7 以降が必要です。coprocessor アプローチには以下のような利点があります。

以下のジョブ・ストリームは、DB2 プリコンパイラーの使用例を示しています。
//DB2PRE JOB ...,
//NOTIFY=GTAO,MSGCLASS=A,CLASS=A,TIME=(0,5),
//REGION=10M,MSGLEVEL=(1,1)MIN00030
//PC       EXEC PGM=DSNHPC,
//         PARM=’HOST(COB2),QUOTE,APOSTSQL,SOURCE,XREF’
//DBRMLIB DD DSN=GTAO.DBRMLIB.DATA(COBTEST),DISP=SHR
//STEPLIB  DD DSN=DSN910.SDSNLOAD,DISP=SHR
//SYSCIN   DD DSN=&&DSNHOUT,DISP=(MOD,PASS),UNIT=SYSDA,
//            SPACE=(800,(500,500))
//SYSPRINT DD SYSOUT=*
//SYSTERM  DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//SYSUT1   DD UNIT=SYSDA,SPACE=(800,(500,500),,,ROUND)
//SYSUT2   DD UNIT=SYSDA,SPACE=(800,(500,500),,,ROUND)
//SYSIN    DD *

IDENTIFICATION DIVISION.
PROGRAM-ID.COBTEST.
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 RES PIC X(10).
EXEC SQL
INCLUDE SQLCA
END-EXEC.
PROCEDURE DIVISION.
EXEC SQL
SELECT COL1 INTO :RES FROM TABLE1
END-EXEC.

//COB EXEC PGM=IGYCRCTL,
//PARM=(QUOTE,NODYNAM,ADV,’BUF(12288)’,SOURCE,NOXREF)
//STEPLIB DD DSN=IGY.V4R1M0.SIGYCOMP,DISP=SHR
//SYSIN    DD DSN=&&DSNHOUT,DISP=(OLD,DELETE)
//SYSLIN DD DSN=&&LOADSET,DISP=(MOD,PASS),UNIT=SYSDA,
//SPACE=(800,(500,500))
//SYSPRINT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//SYSUT1 DD UNIT=SYSDA,SPACE=(800,(500,500),,,ROUND)
//SYSUT2 DD UNIT=SYSDA,SPACE=(800,(500,500),,,ROUND)
//SYSUT3 DD UNIT=SYSDA,SPACE=(800,(500,500),,,ROUND)
//SYSUT4 DD UNIT=SYSDA,SPACE=(800,(500,500),,,ROUND)
//SYSUT5 DD UNIT=SYSDA,SPACE=(800,(500,500),,,ROUND)
//SYSUT6 DD UNIT=SYSDA,SPACE=(800,(500,500),,,ROUND)
//SYSUT7 DD UNIT=SYSDA,SPACE=(800,(500,500),,,ROUND)
組み込みの SQL coprocessor の例を以下に示します。
//DB2INT JOB (GTAO,F342,090,M49),’Gianni Tao’,
//NOTIFY=GTAO,MSGCLASS=A,CLASS=A,TIME=(0,5),
//REGION=10M,MSGLEVEL=(1,1)
//COB EXEC PGM=IGYCRCTL,
//PARM=(QUOTE,NODYNAM,ADV,’BUF(12288)’,SOURCE,NOXREF)
//STEPLIB DD DSN=IGY.V4R1M0.SIGYCOMP,DISP=SHR
//                    DD DSN=DSN910.SDSNLOAD,DISP=SHR
//DBRMLIB DD DSN=GTAO.DBRMLIB.DATA(COBTEST),DISP=SHR
//SYSIN DD *
CBL SQL(’HOST(COB2),QUOTE,APOSTSQL,SOURCE,XREF’),LIB
IDENTIFICATION DIVISION.
PROGRAM-ID.COBTEST.
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 RES PIC X(10).
EXEC SQL
INCLUDE SQLCA
END-EXEC.
PROCEDURE DIVISION.
EXEC SQL
SELECT COL1 INTO :RES FROM TABLE1
END-EXEC.
//SYSLIN DD DSN=&&LOADSET,DISP=(MOD,PASS),UNIT=SYSDA,
//SPACE=(800,(500,500))
//SYSPRINT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//SYSUT1 DD UNIT=SYSDA,SPACE=(800,(500,500),,,ROUND)
//SYSUT2 DD UNIT=SYSDA,SPACE=(800,(500,500),,,ROUND)
//SYSUT3 DD UNIT=SYSDA,SPACE=(800,(500,500),,,ROUND)
//SYSUT4 DD UNIT=SYSDA,SPACE=(800,(500,500),,,ROUND)
//SYSUT5 DD UNIT=SYSDA,SPACE=(800,(500,500),,,ROUND)
//SYSUT6 DD UNIT=SYSDA,SPACE=(800,(500,500),,,ROUND)
//SYSUT7 DD UNIT=SYSDA,SPACE=(800,(500,500),,,ROUND)

ご利用条件 | フィードバック

このインフォメーション・センターでは Eclipse テクノロジーが採用されています。(http://www.eclipse.org)