COBOL - 环境设置

  • 简述

    我们已经在线设置了 COBOL 编程环境,您可以在线编译和执行所有可用的示例。它使您对正在阅读的内容充满信心,并使您能够使用不同的选项验证程序。随意修改任何示例并在线执行。
    
    IDENTIFICATION DIVISION.
    PROGRAM-ID. HELLO.
    PROCEDURE DIVISION.
       DISPLAY 'Hello World'.
    STOP RUN.
    
    对于本教程中给出的大多数示例,您将在我们网站右上角的代码部分中找到一个 Try it 选项,该选项将带您进入在线编译器。因此,只需利用它并享受您的学习。
  • 在 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 在执行时使用加载模块而不是实际程序。加载库在执行时连接并提供给 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 指示编译器在程序中使用相对寻址模式。使用 SYSIN 参数传递 COBOL 程序。Copybook 是 SYSLIB 中程序使用的库。
  • 执行 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-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 中指定。