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教程,推薦英語水平還可以看這個,比本人的博客簡潔易懂。

推薦此書較全面學習大型主機操作系統相關知識。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM