- COBOL 教程
- COBOL - 首页
- COBOL - 概述
- COBOL - 环境设置
- COBOL - 程序结构
- COBOL - 基本语法
- COBOL - 数据类型
- COBOL - 基本动词
- COBOL - 数据布局
- COBOL - 条件语句
- COBOL - 循环语句
- COBOL - 字符串处理
- COBOL - 表格处理
- COBOL - 文件处理
- COBOL - 文件组织
- COBOL - 文件访问模式
- COBOL - 文件处理动词
- COBOL - 子程序
- COBOL - 内部排序
- COBOL - 数据库接口
- COBOL 有用资源
- COBOL - 问答
- COBOL - 快速指南
- COBOL - 有用资源
COBOL - 环境设置
我们已经在线设置了 COBOL 编程环境,以便您可以在线编译和执行所有可用的示例。它让您对正在阅读的内容充满信心,并使您能够使用不同的选项验证程序。请随意修改任何示例并在网上执行。
IDENTIFICATION DIVISION. PROGRAM-ID. HELLO. PROCEDURE DIVISION. DISPLAY 'Hello World'. STOP RUN.对于本教程中提供的多数示例,您将在我们网站代码部分的右上角找到一个“试一试”选项,该选项将带您进入在线编译器。因此,请充分利用它并享受您的学习。
在 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 程序的各种命令的完整指南,请访问
www.jaymoseley.com/hercules/installmvs/instmvs2.htm
Hercules 是大型机 System/370 和 ESA/390 架构以及最新的 64 位 z/Architecture 的开源软件实现。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 示例,其中程序 MYPROG 使用输入文件 MYDATA.URMI.INPUT 执行并生成两个写入卷轴的输出文件。
//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 实用程序来完成。
在绑定步骤之后,使用 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 子系统 ID (SSID) 和 DB2 计划名称是在 SYSTSIN DD 语句中传递的。DBRM 库在 STEPLIB 中指定。