zoukankan      html  css  js  c++  java
  • JCL的简单学习

     

    1.JCL介绍

             JCL (Job Control language)作业控制语言,主要用来定义和控制执行程序来得到想要的输出结果。

             JCL由多个步骤组成,每个步骤都有明确的任务。JCL可以含多步并且至255步。

             JCL链接程序和输入输出文件在批处理环境中,在操作系统和程序之间起到桥梁的作用。

             JCL主要含三个部分:

      • JOB Card
      • EXEC
      • DD

             JCL必须以JOB Card开始,并且以‘//’结束。

    JCL的常见用途:

      1.编译一个COBOL程序

      2.运行一个COBOL程序。

      3.创建一个数据集。 (也就是PS和PDS)

      4.创建一个GDG’s 和 VSAM 文件

      5.连接多个文件中的数据

      6.合并多个文件中的数据。

      7.执行实用程序。

      8.从一个文件中拷贝数据到另一个文件。

    2.JCL Coding sheet (JCL编码表)

    在JCL中每一个语句可以分为四个类型:

    1. Name field 名字域

    2. Operation操作

    3. Operand操作数

    4. Comments注释

    3. JCL结构

    JCL 结构含有两个部分:

    1. JOB Card 作业卡

    2. JOB Body 作业体

    具体结构如下:

         

    4.简单的例子

     

    第一行是JOB  Card,其语法形式为://JOB-name JOB JOB-card parameters

    JOB card语句可以分成三个部分:

    1. JOB name

    2. JOB Operation

    3. JOB card parameters

    JOB Card parameters含有参数和应用于所有步骤的具体信息。

    第二至五行语句为注释 (以 //* 开始的行为注释)

    第六行

    第七行

    DD 表示数据定义,指定在作业步骤中使用的数据,还负责提供如何使用该数据集的技术规范。DD操作符应在12号到15号之间进行编码。每一个EXEC语句都会有相应的DD语句。DD语句可以用来指定一个数据集,如果有多个数据集需要指定,应该使多条DD语句。DD语句包含数据集和他的位置的实际名称。步骤名称应该唯一,且执行顺序不依赖步骤名称。

    语法

    // DDNAME DD     positional-parameter[,keyword-parameter][comments]

    DD  语句主要用到以下的关键字参数:

    1. DISP

    2. DCB

    3. SPACE

    DISP 描述了数据集的状态,表示数据集的位置,描述了程序终止后是否删除该数据集.

    SYSIN语句  // SYSIN DD parameter … [comments]

    SYSIN card用来将大量输入数据发送到使用该JCL的程序,数据会被程序中的ACCEPT 语句接受,SYSIN中的每一行对应程序中的一个ACCEPT语句。

    /*是分界符,使用它我们可以终止输入数据流,并必须和SYSIN一起使用;/*分界符总是开始于第一列结束于第二列

    如果PARM和DD SYSIN *在一个JCL中,第一选择是PARM参数,然后才是SYSIN *DD

    SYSIN 可以处理 DD* 或 DD的数据。

    第八行

    第九行

    JCL关于cobol程序的使用示例:

    1.编译cobol程序(一般情况)

    //ST214A JOB 1,ST214A,MSGLEVEL=(1,1),NOTIFY=&SYSUID
    //STEP1 EXEC PROC=IGYWCLG
    //COBOL.SYSIN DD DSN=ST214.COBOL.SOURCE(LAB1),DISP=SHR
    //LKED.SYSLMOD DD DSNAME=ST214.LOADLIB(LAB1),DISP=SHR
    

      

    2.为cobol程序制定外部文件

    //ST214A JOB 1,ST214,MSGLEVEL=(1,1),NOTIFY=&SYSUID
    //STEP EXEC PROC=IGYWCLG
    //COBOL.SYSIN DD DSN=ST214.COBOL.SOUCE(LAB3),DISP=SHR
    //LKED.SYSLMOD DD DSNMAE=ST214.LOADLIB(LAB3),DISP=SHR
    //GO.FILEIN DD DSN=ST214.INFILE
    //GO.FILEOUT DD DSN=ST214.OUTFILE
    

      

    3.编译主程序和子程序

    //ST214A JOB 1,ST214A,MSGLEVEL=(1,1),NOTIFY=&SYSUID
    //STEP EXEC PROC=IGYWCLG
    //COBOL.SYSIN DD DSN=ST214.COBOL.SOURCE(LAB2),DISP=SHR
    //LKED.SYSLMOD DD DSNAME=ST214.LOADLIB(LAB2),DISP=SHR
    //LKED.RUNLIB DD DSN=ST214.LOADLIB,DISP=SHR
    //LKED.SYSIN DD *
    	INCLUDE RUNLIB(SUBPROG)
    

    4.外部输入数据(对应程序中的ACCEPT)

    //ST214A JOB 1,ST214A,MSGLEVEL=(1,1),NOTIFY=&SYSUID
    //STEP1 EXEC PROC=IGYWCLG
    //COBOL.SYSIN DD DSN=ST214.COBOL.SOURCE(LAB1),DISP=SHR
    //LKED.SYSLMOD DD DSNAME=ST214.LOADLIB(LAB1),DISP=SHR
    //COBOL.SYSIN DD *
    10
    +
    1
    /*
    

      

    参考来源:

    http://www.mainframestechhelp.com/tutorials/jcl/jcl-introduction.htm

    这里提供一个英文版的ppt教程,推荐英语水平还可以看这个,比本人的博客简洁易懂。

    推荐此书较全面学习大型主机操作系统相关知识。

  • 相关阅读:
    【TCP】TCP三次握手与四次挥手
    【Spring】@PathVariable 获取带点参数,获取不全
    【异常】Caused by: java.sql.SQLTransientConnectionException: HikariPool-1
    【异常】 FlywayException:Validate failed:Migration checksum mismatch
    Eclipse------启动Server时出现弹窗Server at localhost was unable to start within 45 seconds.
    SpringBoot------集成PageHelper分页功能
    SpringBoot------集成MyBatis
    SpringBoot------thymeleaf的使用
    SpringBoot------全局异常捕获
    SpringBoot------JPA连接数据库
  • 原文地址:https://www.cnblogs.com/7explore-share/p/4598477.html
Copyright © 2011-2022 走看看