我本人是很愛看小說的,雖然<明朝那些事>沒有讀完,但是那種風格的文章還是挺喜歡的,是以這篇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