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教程,推薦英語水平還可以看這個,比本人的博客簡潔易懂。
推薦此書較全面學習大型主機操作系統相關知識。