- 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 執行的批處理程式都需要資料輸入,這些資料會被處理並建立輸出。有多種方法可以將輸入提供給程式並寫入從 JCL 收到的輸出。在批處理模式下,不需要使用者互動,但輸入和輸出裝置以及所需的組織都定義在 JCL 中並提交。
JCL 中的資料輸入
有多種方法可以使用 JCL 將資料提供給程式,這些方法已在下面解釋
內嵌資料
可以使用 SYSIN DD 語句為程式指定內嵌資料。
//CONCATEX JOB CLASS=6,NOTIFY=&SYSUID //* Example 1: //STEP10 EXEC PGM=MYPROG //IN1 DD DSN=SAMPLE.INPUT1,DISP=SHR //OUT1 DD DSN=SAMPLE.OUTPUT1,DISP=(,CATLG,DELETE), // LRECL=50,RECFM=FB //SYSIN DD * //CUST1 1000 //CUST2 1001 /* //* //* Example 2: //STEP20 EXEC PGM=MYPROG //OUT1 DD DSN=SAMPLE.OUTPUT2,DISP=(,CATLG,DELETE), // LRECL=50,RECFM=FB //SYSIN DD DSN=SAMPLE.SYSIN.DATA,DISP=SHR //*
在示例 1 中,輸入 MYPROG 透過 SYSIN 傳遞。資料在 JCL 中提供。兩條資料記錄被傳遞到程式。請注意,/* 標記內嵌 SYSIN 資料的結尾。
"CUST1 1000" 是 record1,“CUST2 1001” 是 record2。當讀取資料時遇到符號 /* 時,就會滿足資料結束條件。
在示例 2 中,SYSIN 資料儲存在一個數據集中,其中 SAMPLE.SYSIN.DATA 是一個 PS 檔案,可以儲存一條或多條資料記錄。
透過檔案進行資料輸入
如前幾章中的大多數示例中所述,程式的資料輸入可以透過 PS、VSAM 或 GDG 檔案提供,並附帶相關的 DSN 名稱和 DISP 引數以及 DD 語句。
在示例 1 中,SAMPLE.INPUT1 是透過其將資料傳遞到 MYPROG 的輸入檔案。在程式中將其稱為 IN1。
JCL 中的資料輸出
JCL 中的輸出可以編入資料集目錄或傳遞到 SYSOUT。如 DD 語句章節中所述,**SYSOUT=*** 將輸出重定向到 JOB 語句的 MSGCLASS 引數中提到的相同類別。
儲存作業日誌
指定 **MSGCLASS=Y** 將作業日誌儲存在 JMR(作業日誌管理和檢索)中。整個作業日誌可以重定向到 SPOOL,並可以透過在 SPOOL 中針對作業名稱發出 XDC 命令將其儲存到資料集。當在 SPOOL 中發出 XDC 命令時,會開啟一個數據集建立螢幕。然後可以透過提供適當的 PS 或 PDS 定義來儲存作業日誌。
還可以透過為 SYSOUT 和 SYSPRINT 指定已建立的資料集來將作業日誌儲存到資料集中。但是,無法透過這種方式捕獲整個作業日誌(即,JESMSG 不會像在 JMR 或 XDC 中那樣編入目錄)。
//SAMPINST JOB 1,CLASS=6,MSGCLASS=Y,NOTIFY=&SYSUID //* //STEP1 EXEC PGM=MYPROG //IN1 DD DSN=MYDATA.URMI.INPUT,DISP=SHR //OUT1 DD SYSOUT=* //SYSOUT DD DSN=MYDATA.URMI.SYSOUT,DISP=SHR //SYSPRINT DD DSN=MYDATA.URMI.SYSPRINT,DISP=SHR //SYSIN DD MYDATA.BASE.LIB1(DATA1),DISP=SHR //* //STEP2 EXEC PGM=SORT
在上面的示例中,SYSOUT 編入 MYDATA.URMI.SYSOUT 目錄,SYSPRINT 編入 MYDATA.URMI.SYSPRINT 目錄。
