有适用于Windows,很多免费的主机模拟器可用于书写和学习简单的COBOL程序。
一个这样的仿真器,可以按照下面给出几个简单的步骤,很容易地安装在Windows中:
下载并安装Hercules模拟器,它可以从Hercules“主页- :www.hercules-390.eu
一旦在Windows机器上安装包,它会创建这样一个文件夹 C:/hercules/mvs/cobol.
运行命令提示符(CMD),进入目录C:/hercules/mvs/cobol on CMD.
对各种命令编写和执行JCL与COBOL程序的完整指南可在网址上找到
Hercules是一个开源软件实现主机System/370 和ESA/390 架构,除了最新的64位Z/架构。Hercules可以在Linux,Windows,Solaris和FreeBSD和Mac OS X上运行
用户可以连接到主机服务器,使用的方法有很多,例如瘦客户端,虚拟终端,虚拟客户端系统(VCS)或虚拟桌面系统(VDS)。每个有效用户提供的登录ID进入到Z/OS界面(TSO/ E或ISPF)。
为了执行使用JCL在批处理模式下的COBOL程序,该程序需要编译和负载模块与所有的子程序创建。JCL使用加载模块,而不是实际程序在执行时。负载库连接起来,并提供给JCL在使用JCLLIB或STEPLIB执行的时候。
有许多可用的编译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程序库提供。
下面,说明使用该输入文件MYDATA.URMI.INPUT执行该程序MYPROG并产生写入卷轴两个输出文件的JCL例子。
//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 程序,IBM的专业工具被用在JCL程序; DB2区域和所需的参数作为输入传递给该实用程序。
运行的COBOL-DB2程序的步骤如下面:
当一个COBOL-DB2程序被编译一个DBRM(数据库请求模块)一起装入模块创建的。该DBRM包含了COBOL程序的SQL语句的语法正确检查。
DBRM绑定到DB2的区域(环境),其中COBOL运行。这可以通过使用IKJEFT01实用的JCL来完成。
绑定步骤之后,COBOL-DB2 程序正在使用IKJEFT01(再次)与负载库和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。