artificerpi

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教程,推荐英语水平还可以看这个,比本人的博客简洁易懂。

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

posted @ 2015-06-24 19:23  artificerpi  阅读(5854)  评论(0编辑  收藏  举报

Copyright ©2017 artificerpi