开发手册 欢迎您!
软件开发者资料库

使用JCL运行COBOL程序

使用JCL运行COBOL程序 - 从概述,环境设置,JOB语句,Exec语句,DD语句,基本库,过程,条件作业处理,定义数据集,输入,输出等简单而简单的步骤学习JCL(作业控制语言) ,运行COBOL程序,实用程序,排序技巧,常见问题解答。

编译COBOL程序

为了使用JCL以批处理模式执行COBOL程序,需要编译程序并使用所有子程序创建加载模块. JCL在执行时使用加载模块而不是实际程序.加载库在执行时使用 JCLLIB STEPLIB 连接并提供给JCL.

有许多主机编译器可用于编译COBOL程序的实用程序.一些公司公司使用变更管理工具,如 Endevor ,它编译和存储程序的每个版本.这对于跟踪对程序所做的更改非常有用.

//COMPILE   JOB ,CLASS=6,MSGCLASS=X,NOTIFY=&SYSUID             //*            //STEP1     EXEC IGYCRCTL,PARM=RMODE,DYNAM,SSRANGE//SYSIN     DD DSN=MYDATA.URMI.SOURCES(MYCOBB),DISP=SHR//SYSLIB    DD DSN=MYDATA.URMI.COPYBOOK(MYCOPY),DISP=SHR//SYSLMOD   DD DSN=MYDATA.URMI.LOAD(MYCOBB),DISP=SHR//SYSPRINT  DD SYSOUT=*//*


IGYCRCTL是IBM COBOL编译器实用程序.使用PARM参数传递编译器选项.在上面的示例中,RMODE指示编译器在程序中使用相对寻址模式. COBOL程序使用SYSIN参数传递,副本是SYSLIB中程序使用的库.

此JCL生成程序的加载模块作为输出,用作输入执行JCL.

运行COBOL程序

在JCL示例下面,使用输入文件MYDATA.URMI.INPUT执行程序MYPROG并生成写入假脱机的两个输出文件.

//COBBSTEP  JOB CLASS=6,NOTIFY=&SYSUID////STEP10    EXEC PGM=MYPROG,PARM=ACCT5000//STEPLIB   DD DSN=MYDATA.URMI.LOADLIB,DISP=SHR//INPUT1    DD DSN=MYDATA.URMI.INPUT,DISP=SHR//OUT1      DD SYSOUT=*//OUT2      DD SYSOUT=*//SYSIN     DD *//CUST1     1000//CUST2     1001/*


MYPROG的加载模块位于MYDATA.URMI.LOADLIB中.需要注意的是,上述JCL只能用于非DB2 COBOL模块.

将数据传递给COBOL程序

数据输入到COBOL批处理程序可以通过文件,PARAM参数和SYSIN DD语句.在上面的示例中:

  • 数据记录通过文件MYDATA.URMI.INPUT传递给MYPROG.该文件将使用DD名称INPUT1在程序中引用.该文件可以在程序中打开,读取和关闭.

  • PARM参数数据ACCT5000在程序MYPROG的LINKAGE部分中以定义的变量接收在该部分中.

  • SYSIN语句中的数据是通过程序的PROCEDURE分区中的ACCEPT语句接收的.每个ACCEPT语句将一整条记录(即CUST1 1000)读入程序中定义的工作存储变量.

运行COBOL- DB2程序

为了运行COBOL DB2程序,在JCL和程序中使用专用的IBM实用程序; DB2区域和必需参数作为输入传递给实用程序.

在运行COBOL-DB2程序时遵循以下步骤:

  • 编译COBOL-DB2程序时,会与加载模块一起创建DBRM(数据库请求模块). DBRM包含COBOL程序的SQL语句,其语法检查正确.

  • DBRM绑定到DB2区域(环境),其中COBOL将运行.这可以使用JCL中的IKJEFT01实用程序来完成.

  • 在绑定步骤之后,使用IKJEFT01(再次)运行COBOL-DB2程序库和DBRM库作为JCL的输入.

//STEP001  EXEC PGM=IKJEFT01//*//STEPLIB  DD DSN=MYDATA.URMI.DBRMLIB,DISP=SHR//*//input files//output files//SYSPRINT DD SYSOUT=*//SYSABOUT DD SYSOUT=*//SYSDBOUT DD SYSOUT=*//SYSUDUMP DD SYSOUT=*//DISPLAY  DD SYSOUT=*//SYSOUT   DD SYSOUT=*//SYSTSPRT DD SYSOUT=*//SYSTSIN  DD *    DSN SYSTEM(SSID)    RUN PROGRAM(MYCOBB) PLAN(PLANNAME) PARM(parameters to cobol program) -    LIB('MYDATA.URMI.LOADLIB')    END/*

在上面的示例中,MYCOBB是使用IKJEFT01运行的COBOL-DB2程序.请注意,程序名称,DB2子系统标识(SSID),DB2计划名称在SYSTSIN DD语句中传递. DBRM库在STEPLIB中指定.

: "Jzndc69N7BtnPgpT" })