• JCL入门教程


    JCL是什么

    作业控制语言(JCL)是多虚拟存储(MVS)的命令语言,它是IBM大型机计算机中常用的操作系统。 JCL识别要执行的程序,所需的输入和输入/输出的位置,并通过作业控制语句通知操作系统。

    JCL三大要素:JOB,EXEC,DD
    (1)作业语句(JOB):标识一个作业的开始,提供必要的运行参数。
    (2)执行语句(EXEC):标识一个作业步的开始,定义本作业步所要执行的程序或过程。
    (3)数据定义语句(DD):用于描述应用程序所需要的数据文件。

    JOB

    JOB语句是JCL中的第一个控制语句。

    语法 (Syntax):
    	//JobName JOB  Positional-param(非必须) Keyword-param
    
    • 1
    • 2

    Positional-param

    有位置参数,可以有两种类型:

    Account information
    Programmer name

    Keyword-param

    根据需要使用一个或多个参数,并用逗号分隔:

    CLASS参数的有效值是A到Z字符和0到9数字(长度为1)

    PRTY 参数的有效值0到15之间的数字,数字越高,优先级越高。
    NOTIFY=“userid | &SYSUID” 此处系统将消息发送给用户“userid”,但如果我们使用NOTIFY =&SYSUID,则将消息发送给提交JCL的用户。

    MSGCLASS=CLASS CLASS的有效值可以是“A”到“Z”和“0”到“9”。

    MSGLEVEL=( ST, MSG )
    当ST = 0时,仅限Job语句。
    当ST = 2时,仅输入JCL。
    当MSG = 0时,在异常作业完成时写入分配和终止消息。
    当MSG = 1时,无论工作完成的性质如何,都会写入分配和终止消息。

    EXEC

    每个JCL都可以由许多工作步骤组成。 每个作业步骤可以直接执行程序或者可以调用程序,该程序又执行一个或多个程序(作业步骤)。

    语法 (Syntax):
    //StepName EXEC Positional-param, Keyword-param (非必须)
    
    • 1
    • 2

    Positional-param
    这些是位置参数,可以有两种类型:

    PGM这是指要在作业步骤中执行的程序名称。
    PROC这是指在作业步骤中要执行的过程名称。

    DD(重要)

    使用DD statement给出JCL中使用的每个数据集的定义。 需要在DD语句中描述作业步骤所需的输入和输出资源,其中包含数据集组织,存储要求和记录长度等信息。

    语法 (Syntax):
    //DD-name DD Parameters
    
    • 1
    • 2

    DSN 参数引用新创建或现有数据集的物理数据集名称。

    DISP 参数用于描述数据集的状态,在正常和异常完成时作业步骤结束时的处置。
    DISP=(status, normal-disposition, abnormal-disposition)

    以下是status有效值:

    • NEW :数据集由作业步骤新创建。
    • OLD :数据集已创建,将在作业步骤中被覆盖。
    • SHR :数据集已经创建,将在作业步骤中读取。 数据集可以同时由多个作业读取。
    • MOD :数据集已经创建。 当需要将新记录附加到现有数据集时将使用此处置(现有记录不会被覆盖)

    normal-disposition参数可以采用以下值之一

    • CATLG :数据集通过系统目录中的条目保留。
    • UNCATLG :保留数据集,但删除系统目录条目。
    • DELETE :从用户和系统目录中删除数据集。
    • PASS :这仅适用于正常处置。 当数据集由JCL中的下一个作业步骤传递和处理时使用

    abnormal-disposition参数可以采用以下值之一

    • CATLG,UNCATLG,DELETE和KEEP

    DCB 参数详细说明了数据集的物理特征。

    DCB=(LRECL= ?,RECFM=?,BLKSIZE=?)

    • LRECL是数据集中保存的每条记录的长度
    • RECFM是数据集的记录格式。 RECFM可以保存值FB,V或VB。
    • BLKSIZE是物理块的大小

    SPACE 参数指定DASD(直接访问存储磁盘)中数据集所需的空间。

    SPACE=(spcunits, (pri, sec, dir), RLSE)

    • spcunits :这可以是CYL(Cylinder),TRK(Tracks)或BLKSIZE(Block Size)之一。
    • pri :这是数据集所需的主要空间。
    • sec :当主要空间不足时,这是所需的额外空间。
    • dir :如果数据集是包含成员的PDS(分区数据集),则这是所需的目录块。
    • RLSE :用于在作业完成时释放未使用的空间。

    UNITVOL参数列在编目数据集的系统目录中,因此只能使用物理DSN名称进行访问。 但对于未编目的数据集,DD语句应包含这些参数。 对于要创建的新数据集,可以指定UNIT/VOL参数,或者Z/OS分配合适的设备和卷。

    UNIT=DASD | SYSDA
    VOL=REF=*.DDNAME

    SYSOUT 参数根据指定的类将数据定向到输出设备。
    SYSOUT=class
    如果class为A,则它将输出定向到打印机,如果class为*则它将输出定向到JOB语句中MSGCLASS参数的目标。

    例子 (Example)

    //TTYYSAMP JOB 'TUTO',CLASS=A,MSGCLASS=X,
    //         NOTIFY=&SYSUID
    //*
    //STEP010  EXEC PGM=IDCAMS 
    //SYSPRINT DD SYSOUT=*
    //IN1   DD DSN=TUTO.SORT.INPUT1,DISP=SHR
    //OUT1  DD DSN=MYFILES.SAMPLE.OUTPUT1,DISP=(NEW,CATLG),
    //         DCB=(RECFM=FB,LRECL=80,BLKSIZE=28720),SPACE=(TRK,(10,20))
    //SYSIN   DD *
      REPORT FILEIN(IN1) FILEOUT(OUT1) 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    数据集TUTO.SORT.INPUT1 复制到 新建数据集MYFILES.SAMPLE.OUTPUT1中。

  • 相关阅读:
    JVM调参,看这一篇就够了
    uniapp(uncloud) 使用生态开发接口详情5(云公共模块)
    LaTeX:在标题section中添加脚注footnote
    ES6模块导入与导出的方式
    福布斯发布2022中国内地富豪榜,上榜者总财富下跌近四成
    【强化学习论文合集 | 2018年合集】一. ICML-2018 强化学习论文
    前端设计模式
    Day105.尚医通: 后台前端搭建、Elementui、增删改查、分页条件查询、批量删除
    Python优化算法03——粒子群算法
    牛客网语法篇练习循环控制(一)
  • 原文地址:https://blog.csdn.net/sjdaasd/article/details/126613255