COBOL 环境设置

由 jyk201115 创建,youj 最后一次修改 2016-12-12

在Windows/Linux上安装COBOL

有很多可用于Windows的免费主机模拟器,可用于编写和学习简单的COBOL程序。

其中一个模拟器是Hercules,它可以通过以下几个简单的步骤轻松安装在Windows上:

  • 下载并安装Hercules模拟器,可以从Hercules的官网找到:www.hercules-390.eu

  • 一旦在Windows机器上安装了软件包,它将创建一个C:/hercules/mvs/cobol文件夹。

  • 运行命令提示符(CMD),并在CMD中到达目录C:/hercules/mvs/cobol。

  • 有关编写和执行JCL和COBOL程序的各种命令的完整指南,请参见:

  • http://www.jaymoseley.com/hercules/installmvs/instmvs2.htm

除了是最新的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在执行时使用加载模块而不是实际的程序。在使用JCLLIBSTEPLIB执行时,加载库被连接并提供给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中指定。

W3Cschool app 编程微课功能上线
二维码
建议反馈
二维码