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教程,推荐英语水平还可以看这个,比本人的博客简洁易懂。
推荐此书较全面学习大型主机操作系统相关知识。