- 「メインフレーム・コンピューター」で遊ぼう - http://www.arteceed.net -

COBOLプログラムの作成(COBOLコンパイラー)

COBOLはメインフレーム・コンピューターの業務アプリケーション・プログラムでは最も多く使われているプログラミング言語です。バッチ・オンラインを問わず広く利用されています。基本的なコンパイルを行うためのサンプルJCLを示します。コンパイラーも標準のカタログプロシージャーを提供しています(SYS1.PROCLIB等)からそちらも参考にしてください。ユーザーによっては自社のプログラム開発用に標準化されたJCLを作成していたりします。業務用プログラムの場合はそれらの使用が規定されているかも知れません。
コンパイルオプションや追加のDD文などについては使用するCOBOLのマニュアルを参照して下さい。

MVS Enterprise COBOLのコンパイラーJCLサンプル

    //COBOL    EXEC PGM=IGYCRCTL,PARM='LIB'
    //STEPLIB  DD DISP=SHR,DSN=IGY.V3R2.SIGYCOMP
    //SYSPRINT DD SYSOUT=*
    //SYSUT1   DD UNIT=SYSDA,SPACE=(CYL,(1,1))
    //SYSUT2   DD UNIT=SYSDA,SPACE=(CYL,(1,1))
    //SYSUT3   DD UNIT=SYSDA,SPACE=(CYL,(1,1))
    //SYSUT4   DD UNIT=SYSDA,SPACE=(CYL,(1,1))
    //SYSUT5   DD UNIT=SYSDA,SPACE=(CYL,(1,1))
    //SYSUT6   DD UNIT=SYSDA,SPACE=(CYL,(1,1))
    //SYSUT7   DD UNIT=SYSDA,SPACE=(CYL,(1,1))
    //SYSLIN   DD DISP=(,PASS),UNIT=SYSDA,SPACE=(TRK,(3,3))
    //SYSLIB   DD DISP=SHR,DSN=MY.PROGRAM
    //SYSIN    DD DISP=SHR,DSN=MY.PROGRAM(COBTEST1)
    //
    
    //LKED     EXEC PGM=IEWL,PARM=('LIST,LET,MAP,XREF')
    //SYSPRINT DD SYSOUT=*
    //SYSUT1   DD UNIT=SYSDA,SPACE=(CYL,(1,1))
    //SYSLIB   DD DISP=SHR,DSNAME=CEE.SCEELKED
    //SYSLMOD  DD DISP=SHR,DSN=MY.LINKLIB(COBTEST1)
    //SYSLIN   DD DISP=(OLD,DELETE),DSN=*.COBOL.SYSLIN
    //         DD *
    リンケージエディタ制御文
    //
    
    //LOADER   EXEC PGM=LOADER,PARM='LIST,LET,MAP,XREF'
    //SYSLIB   DD DISP=SHR,DSNAME=CEE.SCEELKED
    //SYSLOUT  DD SYSOUT=*
    //SYSLIN   DD DISP=(OLD,DELETE),DSN=*.COBOL.SYSLIN
    //
    

STEPLIBにコンパイラーが格納されたロードモジュール・ライブラリーを指定します。コンパイルされたオブジェクトモジュールはバインダーでロードモジュールにするか、ローダーで直接実行します。
REGIONパラメーターは必要に応じて指定して下さい。コンパイラーオプションはEXEC文のPARMパラメーターで指定します。長すぎて1行に書ききれない場合は以下のように記述して次の行へ継続できます。

    ----+----1----+----2----+----3----+----4----+----5----+----6----+----7--
    //COBOL    EXEC PGM=IGYCRCTL,
    //         PARM=('AAA,BBBBBB,CC(99999),DDDD(XXXXX),EEEE,FFF,GGG,HH',
    //             'II(XXX,YYYY(ZZ)),JJJJJJJ(KKKK)')
    

富士通COBOL85のコンパイラーJCLサンプル

    //COBOL    EXEC PGM=JMN000,PARM='XREF,APOST'
    //SYSPRINT DD SYSOUT=*
    //SYSUT1   DD UNIT=SYSDA,SPACE=(CYL,(5,5))
    //SYSLIN   DD DISP=(,PASS),UNIT=SYSDA,SPACE=(TRK,(3,3))
    //SYSLIB   DD DISP=SHR,DSN=MY.PROGRAM
    //SYSIN    DD DISP=SHR,DSN=MY.PROGRAM(COBTEST1)
    //
    

リンケージエディターはプログラム名をJQALにすればMVSと同じJCLを使えます。ローダーも同じJCLです。ただしSYSLIB DD文で指定するCOBOLの実行時ライブラリー名はSYS1.COBLIBとなります。


日立COBOL85のコンパイラーJCLサンプル

    //COBOL    EXEC PGM=JOTZ00,PARM='LIST=(S(A),M,R,E(W))'
    //SYSPRINT DD SYSOUT=*
    //SYSLIN   DD DISP=(,PASS),UNIT=SYSDA,SPACE=(CYL,(1,1))
    //SYSLIB   DD DISP=SHR,DSN=MY.PROGRAM
    //SYSIN    DD DISP=SHR,DSN=MY.PROGRAM(COBTEST1)
    //
    

リンケージエディターはプログラム名をJSAXLNKにすればMVSと同じJCLを使えます。ローダーも同じJCLです。ただしSYSLIB DD文で指定するCOBOLの実行時ライブラリー名はSYS1.COBLIBとなります。