
- JCL 教程
- JCL 首頁
- JCL - 概述
- JCL - 環境
- JCL - JOB 語句
- JCL - EXEC 語句
- JCL - DD 語句
- JCL - 基本庫
- JCL - 過程
- JCL - 條件處理
- JCL - 定義資料集
- JCL - 輸入/輸出方法
- JCL - 執行 COBOL 程式
- JCL - 實用程式
- JCL - 基本排序技巧
- JCL 有用資源
- JCL - 問題和解答
- JCL - 快速指南
- JCL - 有用資源
- JCL - 討論
使用 JCL 執行 COBOL 程式
編譯 COBOL 程式
為了使用 JCL 在批處理模式下執行 COBOL 程式,需要編譯程式並建立包含所有子程式的載入模組。JCL 在執行時使用載入模組而不是實際程式。載入庫在執行時使用 **JCLLIB** 或 **STEPLIB** 連線並提供給 JCL。
有許多大型機編譯器實用程式可用於編譯 COBOL 程式。一些公司使用更改管理工具(如 **Endevor**),這些工具可以編譯並存儲程式的每個版本。這有助於跟蹤對程式所做的更改。
//COMPILE JOB ,CLASS=6,MSGCLASS=X,NOTIFY=&SYSUID //* //STEP1 EXEC IGYCRCTL,PARM=RMODE,DYNAM,SSRANGE //SYSIN DD DSN=MYDATA.URMI.SOURCES(MYCOBB),DISP=SHR //SYSLIB DD DSN=MYDATA.URMI.COPYBOOK(MYCOPY),DISP=SHR //SYSLMOD DD DSN=MYDATA.URMI.LOAD(MYCOBB),DISP=SHR //SYSPRINT DD SYSOUT=* //*
IGYCRCTL 是 IBM COBOL 編譯器實用程式。編譯器選項透過 PARM 引數傳遞。在上面的示例中,RMODE 指示編譯器在程式中使用相對定址模式。COBOL 程式透過 SYSIN 引數傳遞,副本庫是程式在 SYSLIB 中使用的庫。
此 JCL 生成的程式載入模組作為輸出,用作執行 JCL 的輸入。
執行 COBOL 程式
下面是一個 JCL 示例,其中程式 MYPROG 使用輸入檔案 MYDATA.URMI.INPUT 執行,並生成兩個寫入卷軸的輸出檔案。
//COBBSTEP JOB CLASS=6,NOTIFY=&SYSUID // //STEP10 EXEC PGM=MYPROG,PARM=ACCT5000 //STEPLIB DD DSN=MYDATA.URMI.LOADLIB,DISP=SHR //INPUT1 DD DSN=MYDATA.URMI.INPUT,DISP=SHR //OUT1 DD SYSOUT=* //OUT2 DD SYSOUT=* //SYSIN DD * //CUST1 1000 //CUST2 1001 /*
MYPROG 的載入模組位於 MYDATA.URMI.LOADLIB 中。需要注意的是,上述 JCL 只能用於非 DB2 COBOL 模組。
向 COBOL 程式傳遞資料
COBOL 批處理程式的資料輸入可以透過檔案、PARAM 引數和 SYSIN DD 語句進行。在上面的示例中
資料記錄透過檔案 MYDATA.URMI.INPUT 傳遞給 MYPROG。此檔案將在程式中使用 DD 名稱 INPUT1 引用。可以在程式中開啟、讀取和關閉該檔案。
PARM 引數資料 ACCT5000 在程式 MYPROG 的 LINKAGE 部分接收,該部分中定義了一個變數。
SYSIN 語句中的資料透過程式 PROCEDURE 部分中的 ACCEPT 語句接收。每個 ACCEPT 語句將一個完整記錄(即 CUST1 1000)讀入程式中定義的工作儲存變數。
執行 COBOL-DB2 程式
為了執行 COBOL DB2 程式,JCL 和程式中使用了專門的 IBM 實用程式;DB2 區域和所需引數作為輸入傳遞給實用程式。
執行 COBOL-DB2 程式時,遵循以下步驟
編譯 COBOL-DB2 程式時,除了載入模組外,還會建立一個 DBRM(資料庫請求模組)。DBRM 包含 COBOL 程式的 SQL 語句,並對其語法進行了檢查以確保其正確性。
DBRM 繫結到 COBOL 將執行的 DB2 區域(環境)。這可以透過 JCL 中的 IKJEFT01 實用程式來完成。
繫結步驟完成後,使用 IKJEFT01(再次)執行 COBOL-DB2 程式,並將載入庫和 DBRM 庫作為輸入傳遞給 JCL。
//STEP001 EXEC PGM=IKJEFT01 //* //STEPLIB DD DSN=MYDATA.URMI.DBRMLIB,DISP=SHR //* //input files //output files //SYSPRINT DD SYSOUT=* //SYSABOUT DD SYSOUT=* //SYSDBOUT DD SYSOUT=* //SYSUDUMP DD SYSOUT=* //DISPLAY DD SYSOUT=* //SYSOUT DD SYSOUT=* //SYSTSPRT DD SYSOUT=* //SYSTSIN DD * DSN SYSTEM(SSID) RUN PROGRAM(MYCOBB) PLAN(PLANNAME) PARM(parameters to cobol program) - LIB('MYDATA.URMI.LOADLIB') END /*
在上面的示例中,MYCOBB 是使用 IKJEFT01 執行的 COBOL-DB2 程式。請注意,程式名稱、DB2 子系統 ID(SSID)和 DB2 計劃名稱都透過 SYSTSIN DD 語句傳遞。DBRM 庫在 STEPLIB 中指定。