天天看點

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

繼續閱讀