
- 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中為未覆蓋的資料集指定DD DUMMY。
//STEP1.IN1 DD DUMMY // DD DSN=MYDATA.URMI.IN2,DISP=SHR // DD DUMMY
以下程式碼片段顯示了每個GDG版本的引用:
Step1 input: (0) Step1 output: (+1) Step2 input: (+1) Step2 output: (+2)
如果檔案為空,則當檔案用作IDCAMS中的輸入時,作業將以警告(返回碼4)完成。
在JOB語句中指定RESTART = STEP2。幷包含如下IF-THEN-ELSE結構:
//URMIIF JOB 1, CLASS=6, MSGCLASS=0, NOTIFY = &SYSUID,RESTART=STEP2 //* //STEP1 EXEC //STEP2 EXEC //IF1 IF (STEP2.RC = 0 & STEP2.RC <> 0) THEN //STEP3 EXEC //STEP4 EXEC //ENDIF
可以透過檔案、PARM引數和SYSIN DD語句將資料傳遞到COBOL程式。
JCL的可變部分可以使用JOB中的符號引數指定,靜態部分可以在PROC中指定。例如,如果使用PROC的每個JOB的檔名都不同,則可以使用符號引數在JCL中編寫檔名的可變部分。
//IN1 DD DSN = &ID.URMI.IN1, DISP = SHR //*Coded in PROC ID=MYDATA1 is coded in JOB1, ID = MYDATA2 is coded in JOB2 and so on
使用IEBGENER並將現有檔案傳遞到SYSUT1。將新檔案傳遞到SYSUT2,並提及DCB=*.SYSUT1以獲得與SYSUT1資料集相同的DCB。
透過在資料集DD語句中使用UNIT和VOL序列引數。
虛擬DD語句、資料卡規範、PROC、JOB、PROC語句不能在INCLUDE成員中編碼。INCLUDE語句可以編碼在INCLUDE成員中,並且可以巢狀多達15層。
在STEP2中編寫COND = ONLY。
在JOB/EXEC語句中使用RD引數。需要執行RESTART的異常終止程式碼可以在IBM系統parmlib庫的SCHEDxx成員中提及。
使用JCL中的IEBEDIT,可以執行另一個JCL的選定步驟。在上述JCL中,包含10個步驟的輸入JCL位於MYDATA.URMI.JOBS(INPUTJOB)中。在IEBEDIT的SYSIN中指定STEP3和STEP7,以便執行這兩個步驟。
//STEP001 EXEC PGM=IEBEDIT //SYSUT1 DD DSN=MYDATA.URMI.JOBS(INPUTJOB),DISP=SHR //SYSUT2 DD SYSOUT=(*,INTRDR) //SYSPRINT DD SYSOUT=* //SYSIN DD * EDIT TYPE=INCLUDE,STEPNAME=(STEP3,STEP7) /*
當在建立時使用DISP = (NEW,KEEP)定義時。對於GDG,如果GDG基在達到LIMIT時已使用NOEMPTY引數定義,則最近最少使用的世代將未編目。當使用EMPTY編碼時,所有世代都將未編目。
可以使用IDCAMS實用程式建立GDG基。達到LIMIT時,EMPTY將取消編目所有世代。SCRATCH在取消編目時物理刪除世代。(LIMIT指定GDG基可以容納的最大版本數)。
在SORT/ICETOOL程式中,可以使用SKIPREC = n,它跳過前n條記錄,然後將其餘記錄複製到輸出檔案。
//JSTEP020 EXEC PGM=ICETOOL //TOOLMSG DD SYSOUT = * //DFSMSG DD SYSOUT = * //IN1 DD DSN = MYDATA.URMI.SKIPREC,DISP=SHR //OUT1 DD SYSOUT = * //TOOLIN DD * COPY FROM(IN1) TO(OUT1) USING(CTL1) /* //CTL1CNTL DD * SORT FIELDS = COPY SKIPREC = 1000 /*
STARTREC和ENDREC限制對指定記錄號的輸入檔案的讀取。
//URMISPLT EXEC PGM = SORT //SORTIN DD DSN=MYDATA.URMI.FILEIN,DISP=SHR //SORTOF01 DD DSN = MYDATA.URMI.FILEOUT1, // DISP = (NEW,CATLG,DELETE), // RECFM = FB, LRECL = 50 //SORTOF02 DD DSN = MYDATA.URMI.FILEOUT2, // DISP = (NEW, CATLG, DELETE), // RECFM = FB, LRECL = 50 //SORTOF03 DD DSN = MYDATA.URMI.FILEOUT3, // DISP = (NEW, CATLG, DELETE), // RECFM = FB, LRECL = 50 //SYSPRINT DD SYSOUT = * //SYSOUT DD SYSOUT = * //SYSUDUMP DD SYSOUT = * //SYSIN DD * SORT FIELDS = COPY OUTFIL FILES = 01,ENDREC=100 //*assuming input file has 300 records. OUTFIL FILES = 02, STARTREC = 101, ENDREC = 200 OUTFIL FILES = 03, STARTREC = 201 //*
當程式花費的時間超過指定類別的時限時,可能會發生作業超時錯誤。這稱為S322異常終止。當程式中存在一些迴圈錯誤並且無法完成時,會遇到此錯誤。
如果程式中處理的資料非常龐大,並且需要的時間超過類別限制,則可以將TIME引數編碼為TIME = 1440,以便無限期地執行直到作業完成。
可以根據表的容量增加映像副本資料集的SPACE引數,並且可以從STEP2重新啟動作業。
可以在JOB語句中指定NOTIFY = 使用者ID(不是提交者),以便使用者在作業完成後收到包含返回碼的通知。但是作業日誌僅存在於提交者的使用者ID下的SPOOL中。
SORT中的FTOV選項有助於將FB檔案轉換為VB檔案。
//URMIFTOV EXEC PGM = SORT //SORTIN DD * 123******* 4560000000 123****123 789 //SORTOF01 DD DSN = MYDATA.URMI.FILEOUT1, // DISP = (NEW, CATLG, DELETE), // RECFM = VB, LRECL = 54 //SORTOF02 DD DSN = MYDATA.URMI.FILEOUT2, // DISP = (NEW, CATLG, DELETE), // RECFM = VB, LRECL = 54 //SORTOF03 DD DSN = MYDATA.URMI.FILEOUT3, // DISP = (NEW, CATLG, DELETE), // RECFM = VB, LRECL = 54 //SYSPRINT DD SYSOUT = * //SYSOUT DD SYSOUT = * //SYSUDUMP DD SYSOUT = * //SYSIN DD * SORT FIELDS=COPY OUTFIL FNAMES = SORTOF01, FTOV, VLTRIM = C'*' //*removes trailing '*' OUTFIL FNAMES = SORTOF02, FTOV, VLTRIM = X'40'//*removes trailing space OUTFIL FNAMES = SORTOF03, FTOV, VLTRIM = X'00'//*removes trailing zeros //*
JCL代表作業控制語言,它提供處理作業所需的規範。它是一組控制語句,提供處理作業所需的規範。它是程式和MVS作業系統之間的介面。
MVS代表多重虛擬儲存,它是IBM大型主機系統的作業系統。
識別符號是從第1列開始的兩個斜槓(//)。所有JCL語句都以識別符號開頭,但有兩個例外——對於分隔符語句,/* 從第1列開始;對於註釋語句,//* 從第1列開始。
輸入->轉換->執行->輸出->硬複製->清除
JCL以及PROC被轉換為JES可以理解的解釋文字,並存儲到一個我們稱為SPOOL的資料集中。
當作業達到其最高優先順序時,它將從作業佇列中被提取以執行。JCL從SPOOL中讀取,程式被執行,並且輸出被重定向到JCL中指定的相應輸出目標。
指定作業SPOOL所需的資訊,例如作業ID、執行優先順序、作業完成後要通知的使用者ID。
JCL由一個可選的空語句終止。對於空語句,只從第1列編寫//。所有後續行都不會執行。
根據作業所需的時間長度和資源數量,公司會分配不同的作業類別。這些可以被視為作業系統使用的各個排程程式來接收作業。將作業放置在正確的排程程式中將有助於輕鬆執行作業。一些公司在測試和生產環境中為作業分配不同的類別。CLASS引數的有效值為A到Z字元和0到9數字(長度為1)。以下是語法:CLASS=0到9 | A到Z
系統將成功或失敗訊息(最大條件程式碼)傳送給在此引數中指定的使用者。語法:NOTIFY = "userid | &SYSUID"
TYPRUN = SCAN 在不執行JCL的情況下檢查其語法錯誤。
DSN引數指的是新建立或現有資料集的物理資料集名稱。DSN值可以由長度為1到8個字元的子名稱組成,用句點分隔,總長度為44個字元(字母數字)。
DISP引數用於描述資料集的狀態,以及在作業步驟正常和異常完成時的最終處理方式。只有當資料集在同一個作業步驟中建立和刪除時(例如臨時資料集),DD語句中才不需要DISP。語法:DISP = (狀態,正常處理方式,異常處理方式)
SPACE引數指定資料集在DASD(直接存取儲存磁碟)中所需的空間。語法:SPACE = (空間單位,(主要,次要,目錄),RLSE)
資料控制塊 (DCB) 引數詳細說明了資料集的物理特性。此引數對於在作業步驟中新建立的資料集是必需的。LRECL 是資料集內每個記錄的長度。RECFM 是資料集的記錄格式。
臨時資料集是在作業中建立和刪除的資料集,宣告為 DSN=&&TEMP。不要在此處提及 DSN 引數。
程式碼 SYSOUT = *,則資料將定向到輸出佇列。
IEFBR14 是一個無操作實用程式。用於將控制權返回給使用者並終止。它通常用於建立空資料集或刪除現有資料集。
DISP = (NEW,PASS)。PASS 僅對普通處理有效。當資料集需要傳遞並由 JCL 中的下一個作業步驟處理時使用此引數。
IKJEFT01 實用程式用於執行 COBOL-DB2 程式。
DSN(資料集名稱)用於在 DD 語句中宣告資料集的名稱。
PEND 語句用於結束內聯過程。
要引用 GDG 的最新一代,我們使用 (+0) 作為引用。
COND=(12,LT,STEP1),它將條件讀取為 12 小於 8,這是假的,因此將執行此步驟。
在 SORT 步驟中,提及 SYSIN 和 SYSOUT 資料集名稱,並在排序卡中編寫 SORT FIELDS=COPY 以將資料從輸入檔案複製到輸出檔案。
此語句正確。
SORT 實用程式用於根據排序卡以特定順序排序檔案。
IEBUPDTE 用於更新 PDS。
SPACE引數指定資料集在DASD(直接存取儲存磁碟)中所需的空間。語法:SPACE = (空間單位,(主要,次要,目錄),RLSE)
此語句正確。
接下來是什麼?
接下來你可以回顧一下你過去完成的作業,確保你能自信地談論它們。如果你剛畢業,面試官並不期望你會回答非常複雜的問題,而是要確保你的基本概念非常紮實。
其次,如果你無法回答一些問題,其實並不重要,重要的是你回答的任何問題,你都必須自信地回答。所以在面試中要充滿自信。Tutorialspoint 祝你找到一位好面試官,並祝你未來的事業一切順利!乾杯 :-)