COBOL 环境设置
在Windows/Linux上安装COBOL
有很多可用于Windows的免费主机模拟器,可用于编写和学习简单的COBOL程序。
其中一个模拟器是Hercules,它可以通过以下几个简单的步骤轻松安装在Windows上:
下载并安装Hercules模拟器,可以从Hercules的官网找到:www.hercules-390.eu
一旦在Windows机器上安装了软件包,它将创建一个C:/hercules/mvs/cobol文件夹。
运行命令提示符(CMD),并在CMD中到达目录C:/hercules/mvs/cobol。
除了是最新的64位Z/架构,Hercules是大型机系统/370和ESA/390架构的开源软件实现。Hercules可在Linux,Windows,Solaris,FreeBSD和Mac OS X下运行。
用户可以通过多种方式连接到大型机服务器,例如瘦客户机,虚拟终端,虚拟客户端系统(VCS)或虚拟桌面系统(VDS)。每个有效用户都有一个登录ID进入Z/OS界面(TSO/E或ISPF)。
编译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参数传递。Copybook是程序在SYSLIB中所使用的库。
执行COBOL程序
以下是JCL示例,其中使用输入文件MYDATA.URMI.INPUT执行程序MYPROG,并产生写入到spool的两个输出文件。
//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-DB2程序
对于运行COBOL-DB2程序,在JCL和程序中有专门的IBM工具可供使用;DB2区域和所需的参数作为输入传递给工具。
接下来运行COBOL-DB2程序的步骤如下:
当编译COBOL DB2程序时,将与加载模块一起创建一个DBRM(数据库请求模块)。该DBRM包含COBOL程序的SQL语句,其语法检查是正确的。
该DBRM绑定到运行COBOL的DB2区域(环境)。这可以使用JCL中的IKJEFT01工具来完成。
绑定步骤之后,使用带有加载库和DBRM库的IKJEFT01(再次)作为JCL的输入运行COBOL-DB2程序。
//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 Sub-System Id(SSID)和DB2 Plan Name是在SYSTSIN DD语句中传递。DBRM库在STEPLIB中指定。