天天看点

JCL那些事儿(一)

我本人是很爱看小说的,虽然<明朝那些事>没有读完,但是那种风格的文章还是挺喜欢的,所以这篇JCL那些事,我也试着用一种比较浪的方式来写吧.

话说,JCL,他得名于谁我就不知道了,但是他得名的故事肯定没有朱重八精彩便是了,他的全名是Job control language,虽然,也和language搭上了亲戚,但他却不是一门编程语言.那他是一种什么样的语言呢,我把他理解成'代办中介',因为他是用户与操作系统的接口,用户通过他来委托系统代为控制程序的执行等操作.

然后就是作业步,作业步就是就是用户交给代办中介的办事清单啦,一条一条的,把事给代办中介交代清楚,然后中介就会去跟系统一步步的对应.如果用户只让系统办一件事,就是清单上只有个作业步,这样的作业就叫单步作业,如果有好多事,那就是多步作业了.这个中介比较靠谱,他办事的顺序完全是按照用户交代的顺序,所以,上一个作业步的输出,就可以作为这一步的输入,就像你要出国,得办护照吧,办了护照再去办签证,办护照那一步的输出,护照本子,就是办签证那一步的输入,在JCL里也是这么个流程.

那么JCL中都包含几个部分呢?我们先想想让中介去办事吧,你首先得给中介个大方向,这事怎么办,给你多少预算什么的,然后呢,要告诉中介,我让你办什么,最后,你还得告诉中介,去哪办.JCL也是一样的,JCL中的JOB语句,就是告诉系统,我要执行的这个操作的基本属性,EXEC语句则是标识了一个作业步的开始,也就是告诉系统,我要执行什么,而DD语句呢,他就是程序与设备的接口了,有了DD语句才能找对文件,才能拜准了衙门,办成事.

JCL主要由9种语句组成,上边已经介绍了三种,还有6种附加的.

/* 语句: 表示流内数据结束或调用JES控制语句;

//* 语句:注释语句,由第4到第80列写出注释内容;

// 语句:空语句,用以标记一个作业的结束;

PROC 语句:流内过程(IN-STREAM PROCEDURE)或编目过程(CATALOGED PROCEDURE)的起始标记;

PEND 语句:标志一个流内过程的结束;

Command 语句:操作员用这个语句在输入流中写入操作命令。

我们的JCL中介有一套很严谨的规章制度,所以,用户交代他办的事也要严格的按照这个规章制度去交代,不然,他整不明白,事就办不了了,没准还办糟了......

首先,JCL是一个半文盲,只认识26个英文字母,10个数字,10个特殊字符,包括", . / ( ) * & + - =",不含引号,3个通配符,@$#,6个关系字符"GT,GE,EQ,LT,NE,LE",还有EBCDIC可打印字符集(具体这个是什么,我也不知道了.....看来我是75%文盲....).

以下是一个JCL的例子:

File  Edit  Edit_Settings  Menu  Utilities  Compilers  Test  Help            
sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss
EDIT       [email protected](COMPILE) - 01.16                        Columns 00001 00072 
****** ***************************** Top of Data ******************************
000100 //@CCICS       JOB IBMUSER,JAKE,ADDRSPC=VIRT,CLASS=A,MSGCLASS=H,        
000200 // MSGLEVEL=(1,1),NOTIFY=&SYSUID,PRTY=15,REGION=108M,TIME=1440          
000300 //*                                                                     
000400 //* CHANGE *** TO PROGRAM NAME                                          
000500 //*                                                                     
000600 //STEP000      EXEC DFHYITVL,OUTC=H,                                    
000610 // DSCTLIB=WK1.JAKE.LGC                                                 
000700 //TRN.SYSIN    DD [email protected](***),DISP=SHR                              
000800 //LKED.SYSIN   DD *                                                     
000900   NAME ***(R)                                                           
001000 /*                                                                      
****** **************************** Bottom of Data ****************************
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
Command ===>                                                  Scroll ===> CSR  
 F1=Help      F2=Split     F3=Exit      F5=Rfind     F6=Rchange   F7=Up        
 F8=Down      F9=Swap     F10=Left     F11=Right    F12=Cancel                 
           

TO BE CONTINUED

继续阅读