当前位置: 首页 > news >正文

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

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 (非必须)

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

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

DD(重要)

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

语法 (Syntax):
//DD-name DD Parameters

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) 

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

相关文章:

  • 5.6如何寻找最长回文子串
  • tkinter-event事件
  • Windows10环境gradle安装与配置
  • DELMIA弧焊虚拟仿真:带变位机的机器人弧焊焊接程序自动生成方法
  • Redis 非关系型数据库学习(三)---- Redis 基础知识
  • 离线数仓(2):数据仓库相关架构和规范
  • MySQL-数据类型和DDL
  • Linux学习笔记6 - 系统启动流程
  • 动态数组写模板类
  • 代码错误与检查简短教程(新手适用)
  • Java Design Patterns 之API 网关模式
  • vue框架的基础语法之方法和事件的绑定,样式绑定,循环渲染,条件渲染
  • 项目第一天
  • go get 拉取报错The project you were looking for could not be found的解决方法
  • 算法题练习——NC15 求二叉树的层序遍历、NC88 寻找第K大
  • 「译」Node.js Streams 基础
  • 【干货分享】SpringCloud微服务架构分布式组件如何共享session对象
  • 【技术性】Search知识
  • 03Go 类型总结
  • CEF与代理
  • django开发-定时任务的使用
  • eclipse(luna)创建web工程
  • JS学习笔记——闭包
  • php的插入排序,通过双层for循环
  • SpiderData 2019年2月16日 DApp数据排行榜
  • Web Storage相关
  • 两列自适应布局方案整理
  • 聊聊spring cloud的LoadBalancerAutoConfiguration
  • 让你的分享飞起来——极光推出社会化分享组件
  • 数据科学 第 3 章 11 字符串处理
  • 我这样减少了26.5M Java内存!
  • 小程序 setData 学问多
  • 验证码识别技术——15分钟带你突破各种复杂不定长验证码
  • 组复制官方翻译九、Group Replication Technical Details
  • ​secrets --- 生成管理密码的安全随机数​
  • # 执行时间 统计mysql_一文说尽 MySQL 优化原理
  • (20050108)又读《平凡的世界》
  • (Bean工厂的后处理器入门)学习Spring的第七天
  • (ctrl.obj) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“
  • (C语言)strcpy与strcpy详解,与模拟实现
  • (二)Pytorch快速搭建神经网络模型实现气温预测回归(代码+详细注解)
  • (附源码)计算机毕业设计SSM智慧停车系统
  • (官网安装) 基于CentOS 7安装MangoDB和MangoDB Shell
  • (七)MySQL是如何将LRU链表的使用性能优化到极致的?
  • (轉貼) UML中文FAQ (OO) (UML)
  • .net on S60 ---- Net60 1.1发布 支持VS2008以及新的特性
  • .NET 同步与异步 之 原子操作和自旋锁(Interlocked、SpinLock)(九)
  • .net 中viewstate的原理和使用
  • .NET/C# 判断某个类是否是泛型类型或泛型接口的子类型
  • .Net中ListT 泛型转成DataTable、DataSet
  • .Net转Java自学之路—SpringMVC框架篇六(异常处理)
  • @基于大模型的旅游路线推荐方案
  • [AIGC] 开源流程引擎哪个好,如何选型?
  • [C/C++]数据结构 循环队列
  • [CC2642r1] ble5 stacks 蓝牙协议栈 介绍和理解