作業控制語言簡介1_第1頁
作業控制語言簡介1_第2頁
作業控制語言簡介1_第3頁
作業控制語言簡介1_第4頁
作業控制語言簡介1_第5頁
已閱讀5頁,還剩132頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

作業控制語言楊夢寧mnyang@基本概念主機包含的單元:處理器(Processor)Mainfram大型主機,ES9000,S/390,zSeries輸入/輸出設備(Input/OutputDevice)Disk硬盤,如3390,3380Reader讀卡器(少用)Printer打印機,如4248,3828,3800Terminal終端,如3270終端Punch打孔機(少用)Tape磁帶機,如3490,3480操作系統(OperatingSystem)程序(Programs)數據(Data)基本概念作業包含下列信息:程序(Program)數據集(DataSets)外部設備(Devices)磁盤卷(Volumes)數據空間(Space)數據集屬性(DataSetAttributes)JCL語句將這些信息傳遞給系統JES系統概念在工作執行前后,JES負責-接收作業-準備執行作業-在DASD臨時存儲直到OS390準備好接收-選擇OS390執行的作業在工作執行時,JES負責-HANDLE輸出-執行結束后,清除工作Input/Output設備DISKREADERTERMINALPUNCHHOSTSPRINTERTAPEInput/Output數據PROG1PROG2PROG3DATADATAInput/Output數據程序通常需要輸入和輸出數據數據存放在數據集中提交至系統的作業必須指明相關的數據集作業作業(Job)-用戶在完成某任務時要求計算機所做工作的集合。在大型服務器系統中,當用戶需要使用計算機完成某項任務時,用戶必須準備一個作業流(JobStream),作業流中包含一個或多個作業。作業控制語言作業控制語言JCL(JobControlLanguage)-用戶與操作系統的接口。用戶通過JCL的相應語句與操作系統通訊,獲得作業所需的資源,并按自己的意圖來控制作業的執行。JCL由幾個語句組成,對于一個作業,JCL為被執行的任務引導操作系統,并注釋所需要的全部I/O設備。作業步作業步-在一個作業中,每一次程序的執行就稱為一個作業步。一個作業可包含幾個作業步,一般的,一個作業由以下相對獨立的三步組成:(1)編譯:把源程序語句(源模塊)轉換成目標模塊;作業步(2)鏈接編輯:把目標模塊同子程序庫中的其他程序鏈接起來得到可執行模塊;(3)執行:運行可執行模塊得到結果。一個作業中的各步是順序執行的,因此上一個作業步的輸出可以作為下一個作業步的輸入。基本概念大型服務器系統中用戶的作業可以由一個或多個作業步構成。只有一個作業步的作業叫做單步作業;由多個作業步構成的作業叫做多步作業。不論單步作業還是多步作業都必須包含三個JCL基本語句(JCLStatement)。JCL基本語句(1)作業語句(JOB):標識一個作業的開始,提供必要的運行參數。(2)執行語句(EXEC):標識一個作業步的開始,定義本作業步所要執行的程序或過程。(3)數據定義語句(DD):用于描述應用程序所需要的數據文件。Example下面我們來看一個多步作業的例子://JOB1JOB…

//STEP1EXEC…//DD1DD…作業步1//STEP2EXEC…//INDD1DD…作業步2//INDD2DD…//作業控制語句在大型服務器系統中,作業控制語句有兩種類型:一類是JES2控制語句(負責控制作業和給作業提供參數);另一類就是JCL。作業控制語言由九種語句組成,分別是:三種基本語句:JOB,EXEC和DD。六種附加語句:(1)/*語句:表示流內數據結束或調用JES控制語句;(2)//*語句:注釋語句,由第4到第80列寫出注釋內容;作業控制語句(3)//語句:空語句,用以標記一個作業的結束;(4)PROC語句:流內過程(IN-STREAMPROCEDURE)或編目過程(CATALOGEDPROCEDURE)的起始標記。(5)PEND語句:標志一個流內過程的結束。(6)Command語句:操作員用這個語句在輸入流中寫入操作命令。Example下面我們再來看一個單步作業的JCL實例://BACKUPJOB,’EXAMPLEJOB’//*ITISAEXAMPLE!*//STEP1EXECPGM=IEBGENER//STEPLIBDD//DSN=SYS1.LINKLIB,DISP=SHR//SYSINDDDUMMYExampleCont.//SYSPRINTDDSYSOUT=A//SYSUT1DDDSN=PR.MASTER,DISP=OLD//SYSUT2DD//DSN=PR.MAILY.BACKUP,//DISP=(NEW,CATLG),UNIT=TAPE,//DCB=(RECFM=FB,LRECL=200,//BLKSIZE=1000)/*JCL的語法規則與計算機語言一樣,JCL有一套嚴格的語法規則,不僅如此,JCL還有嚴格的語句格式規范。用戶只有嚴格按照這些規則來編寫作業控制程序,系統才能按照其意圖正確完成用戶的作業,否則系統就會給出錯誤信息,甚至產生不可預知的后果。

JCL字符集(1)

字母26個(2)

數字10個(3)

特殊字符(共10個),./()*&+-=(4)

通配符(共3個)@$#(5)

關系字符集(共6個)GT,GE,EQ,LT,NE,LE特殊字符字符功能,分隔參數和子參數=分隔關鍵字參數與它的值,例:CLASS=A()括起子參數列表或PDS、PDSE的成員名&標志一個符號參數(symbolicparameter),例:&LIB&&標志一個臨時數據集名(temporarydatasetname)例:&&TEMPDS標志一個流內或系統輸出(sysout)數據集名,例:&&PAYOUT特殊字符字符功能.分隔受限數據集(qualifieddataset)名字的各部分,例:A.B.C分隔一些特定參數與子參數的各部分,例:nodename.userid*提及一條先前的語句,例:OUTPUT=*.name,或在特定的語句內,標志特定的功能,例://ddnameDD*特殊字符字符功能‘’括起含有特殊字符的參數值空格劃分域一般語句格式規范在JCL中,除/*語句外的所有語句均以第一、二列的//符號作為開始標志,系統規定這些語句的長度為80列。這80列在邏輯上被劃分為五個區域,分別是標識符區、名字區、操作符區、參數區和注釋區,即:一般語句格式規范標識符區名字區操作符區參數區注釋區//名字操作符參數說明標識符區一般情況下,標識符區的符號為“//”,該符號表明該條語句為JCL語句,標識符區位于每條語句的第一、二列。在特殊情況下,標識符區的符號可以是“/*”語句和“//*語句。名字區名字區指明一個語句,便于系統控制塊或其他語句識別。名字可以由1~8個字母數字或通配符組成,但第一個字符必須是字母或通配符(#,@,$),且必須從第三列開始。名字區后必須跟一個或多個空格,可以選擇名字表達出這個JCL語句的作用。Example下面給出若干例子:CorrectWrong//Z//9Z//BACKUP#1//TAPEBACKUP//#99//TEST*9//$EXAM//EXAM(0)建議:用比較有意義的名字。操作符區操作符區位于名字區之后,規定了語句的類型:JOB、EXEC、DD、PROC、PEND或操作員命令。名字區后必須跟一個或多個空格。例如://EXAMPLEJOB//STEP1EXEC//INDD1DD參數區參數區在操作符區之后,其中包括被逗號分隔的參數,參數由事先規定好的關鍵字組成,對于這些參數其數值必須是可被代換的變值。參數區沒有固定的長度及列的要求。例如://EXAMPLEJOB2000,CLASS=A//STEP1EXECPGM=IEYFORT//PRINTDDSYSOUT=A注釋區注釋區位于參數區后,用于對相應語句進行注釋說明,它可以是任何需要的注釋信息,注釋區后必須跟一空格。需要注意的是,僅當參數出現時才能書寫注釋信息,不然容易與參數混淆。下面是一個注釋區的例子:

//EXAMPLEJOB,CLASS=AITISACOMMENT注意:不建議采用這種注釋方式

關于續行的說明JCL只允許在參數區和注釋區有續行,當需要續行時,在當前行的第71列前必須將某個參數或某個子參數以及參數后的逗號寫完整,且下一行第1、2列為“//”,第3列為空格,續行的內容只能從4~16列開始,如從16列后開始,將被認為是注釋語句。下面是一個續行的例子://DATADDDSN=SYS1.FORTLIB,//DISP=OLDExample//DD1DDDSNAME=STU118.GROUP12,//UNIT=3390,VOLUME=335230,//SPACE=(TRK,(8),15)),DISP=(,PASS)參數續行從第四列開始參數規則在JCL中,參數區內的參數的類型分為兩類:(1)位置參數(positional):參數的含義與它在各個參數中的前后順序有關,當位置參數有子參數時,子參數也必須按順序排列在圓括號內,位置參數之間以及子參數之間用逗號分隔。規則如下:用逗號表示缺省;如果是最后一個位置參數省略,不需要用逗號;如果全部位置參數省略,不需要用逗號。Example//DD1OPER//POS1,POS2,KEY3=C,KEY1=A//DD2OPER,POS2,KEY2=B//DD3OPERPOS1,KEY2=B//DD4OPERKEY3=C,KEY1=A參數規則(2)關鍵字參數(keyword):由一個關鍵字和等號后面的可變數據組成。關鍵字參數和位置參數不一樣,關鍵字的意義與順序無關。參數規則如果在一個語句內既有位置參數又有關鍵字參數時,所有的關鍵字參數必須位于位置參數之后。例如://EXAMPLEJOB2000,CLASS=A

位置參數關鍵字參數參數的書寫規則1.位置參數和關鍵字參數之間必須用逗號分開,不允許有空格。值得注意的是,在JCL語句中錯寫空格,會導致非常難以查出的錯誤。

參數的書寫規則2.必須按規定的次序書寫參數:所有的關鍵字參數必須位于位置參數之后,而所有位置參數也必須按規定排列。3.當缺省某個位置參數或某個子參數時,應以一個逗號指明所在位置。當缺省最后一個位置參數時,逗號可以省略。Example例如://EXPJOB(2000,,9),CLASS=A//SYSTEMJOB,SYSTEM,CLASS=S,//MSGLEVEL=(0,0)參數的書寫規則4.當沒有任何位置參數時,可以不必書寫任何內容表示。//EXPJOBCLASS=A5.關鍵字參數之間沒有相對位置的規定,可以按任何次序排列。//EXPJOB2000,CLASS=A,MSGLEVEL=1也可寫作://EXPJOB2000,MSGLEVEL=1,CLASS=A參數的書寫規則6.允許含有特殊字符的參數或子參數,且其中的特殊字符并非起某種特定的語法功能時,必須用撇號‘’替代括號將這些參數和子參數括起來。例:ACCT=’123+456’。參數的書寫規則7.JCL的位置參數與關鍵字參數最多只能由兩級子參數。也就是說用于括起子參數列表的括號最多只能有兩層。

JCL語句1.JOB語句。2.JOBLIB語句。3.JOBCAT及SYSCHK語句。4.任何流內過程。5.EXEC語句。6.任何的STEPCAT、STEPLIB,或一般的屬于這一步的DD語句。7.任何空語句。JCL語句//commandJCLcommandEntersanMVSsystemoperatorcommandthroughtheinputstream.Thecommandstatementisusedprimarilybytheoperator.UsetheCOMMANDstatementinsteadoftheJCLcommandstatement.JCL語句//COMMANDcommandSpecifiesanMVSorJEScommandthatthesystemissueswhentheJCLisconverted.UsetheCOMMANDstatementinsteadoftheJCLcommandstatement.JCL語句//*commentcommentContainscomments.Thecommentstatementisusedprimarilytodocumentaprogramanditsresourcerequirements.//CNTLcontrolMarksthebeginningofoneormoreprogramcontrolstatements.//DDdatadefinitionIdentifiesanddescribesadataset.JCL語句/*delimiterIndicatestheendofdataplacedintheinputstream.Note:Ausercandesignateanytwocharacterstobethedelimiter.JCL語句//ENDCNTLendcontrolMarkstheendofoneormoreprogramcontrolstatements.//EXECexecuteMarksthebeginningofajobstep;assignsanametothestep;identifiestheprogramorthecatalogedorin-streamproceduretobeexecutedinthisstep.JCL語句//IF/THEN/ELSE/ENDIFSpecifiesconditionalexecutionofjobstepswithinajob.//INCLUDEincludeIdentifiesamemberofapartitioneddataset(PDS)orpartitioneddatasetextended(PDSE)thatcontainsJCLstatementstoincludeinthejobstream.JCL語句//JCLLIBJCLlibraryIdentifiesthelibrariesthatthesystemwillsearchfor:1.INCLUDEgroups2.ProceduresnamedinEXECstatements.//JOBjobMarksthebeginningofajob;assignsanametothejob.JCL語句//nullMarkstheendofajob//OUTPUToutputJCLSpecifiestheprocessingoptionsthatthejobentrysubsystemistouseforprintingasysoutdataset.//PENDprocedureendMarkstheendofanin-streamorcatalogedprocedure.JCL語句//PROCprocedureMarksthebeginningofanin-streamprocedureandmaymarkthebeginningofacatalogedprocedure;assignsdefaultvaluestoparametersdefinedintheprocedure.//SETsetDefinesandassignsinitialvaluestosymbolicparametersusedwhenprocessingJCLstatements.Changesornullifiesthevaluesassignedtosymbolicparameters.JCL語法實例作業語句//EXPJOBJOB,’USERNAME’,MSGLEVEL=(1,1),作業語句續行//MSGCLASS=Q,CLASS=A//**********************注釋語句//*ITISAEXAMPLE*//**********************執行語句//STEP1EXECPGM=IEFBR14DD語句//DD1DDDSN=MJSN.TEAM01.ONE,DISP=(,CATLG),DD語句續行//SPACE=(TRK,(5,2)),UNIT=SYSDADD語句//DD2DDDSN=MJSN.TEAM01.TWO,DISP=(,KEEP),DD語句續行//SPACE=(TRK,(1,1)),UNIT=SYSDAJOB語句JOB語句標志一個作業的開始、分配作業名并設置相關的位置參數及關鍵字參數,每個作業的第一條語句必須是JOB語句,且僅有一條。JOB語句的格式如下://作業名JOB位置參數[,關鍵字參數][,關鍵字參數]…[注釋說明]作業名-JOBNAME作業名是用戶給作業指定的名字,為使操作系統識別作業,必須選擇合適的作業名字,由于系統不能同時運行具有相同名字的作業,因此只能給作業一個唯一的名字。一般來說,建議用戶采用“用戶標識USERID+數字或字符”的作業名,例如用戶標識為JACK,則作業名可用JACKA(也是出于安全控制的考慮)。位置參數作業語句中的位置參數有兩個:1.記賬信息(accountinginformation):記賬信息位于操作符JOB后,它用于提供用戶使用系統的合法性、時間和紙張的收費管理等。其格式為:([account-number][,accounting-information]…)account-number:用戶賬號;accounting-information:附加的記賬信息,如房間號和部門名等等。位置參數記賬信息參數及其子參數最多不可超過143個字符,特殊字符用單引號(包括分隔子參數的逗號,但不包括括起子參數列表的括號)。例如://EXAMPLE1JOB//(D548-8686,’12/8/98’,PGMBIN)//EXAMPLE2JOBD548-8686位置參數2.程序員名(programmer’sname)程序員名用于標識作業的所有者(owner))信息,包括特殊字符在內,其長度不得超過20個字符,特殊字符用單引號包含。例如://EXAMPLE1JOB2000,J.A.C.K//EXAMPLE2JOB2001,JACK//EXAMPLE3JOB2003,‘OSUN’Example下面是幾個位置參數不同的書寫格式的例子:1.帶有全部位置參數的作業語句://JOBAJOB(20008,60),A.B.C,CLASS=S,…2.缺省記賬信息的作業語句://JOBBJOB,USER-NAME,CLASS=A,…3.不帶位置參數的作業語句://JOBCJOBCLASS=Q,…關鍵字參數CLASS指定輸入隊列COND指定作業執行條件LINES輸出行數控制MSGCLASS指定輸出隊列MSGLEVEL顯示作業輸出信息NOTIFY作業結束時通知TSO用戶REGION指定作業使用的最大虛存RESTART控制作業的重新啟動TIME指定作業執行的最大時間TYPRUN執行類型控制ADDRSPC指定作業所需的存儲空間類型REGION指定存儲空間的大小PARM指明作業的參數關鍵字參數JOB語句中的關鍵字參數有如下幾個:

1.ADDRSPC指明作業所需之存貯類型,它有兩個子參數:VIRT及REAL。VIRT表示作業請求虛擬頁式存貯,而REAL表示作業請求實存空間。缺省值為VIRT。其格式為:ADDRSPC={VIRT}{REAL}Example例如://PEHJOB,BAKER,ADDRSPC=VIRT//DEBJOB,ERIC,ADDRSPC=REAL,//REGION=100KCLASSCLASS參數:-將作業置于JES輸入隊列;-一個字符,A-Z,0-9;-如果不指定CLASS,JES使用初始化時缺省的CLASS。CLASSCLASS參數規定了作業的類別,JCL中可選用的作業類別有36個,用字母A~Z及數字0~9表示。相同類別的作業處于同一輸入隊列等待執行,并具有相同的處理屬性。作業類別的屬性定義在JES中,當CLASS參數缺省時,JES將會根據安裝時的缺省值賦予該作業一個缺省的CLASS值。格式:CLASS=jobclassMSGCLASSMSGCLASS參數-控制輸出CLASS;-一個字符,A-Z,0-9;-缺省與CLASS參數一致。MSGCLASS用于為作業日志(joblog)設置輸出類別。作業日志是為程序員提供的與作業相關信息的記錄。當該參數省略時,系統將會采用默認值。格式:MSGCLASS=class例如://EXMP1JOB,GEORGE,MSGCLASS=FMSGLEVEL用于控制JCL作業輸出清單的內容。格式:MSGLEVEL=([statements][,messages])statements:指明在JCL作業輸出清單中應打印出的作業控制語句的類型,取值范圍為:0~2。MSGLEVELMSGLEVEL=0,僅輸出JOB語句;MSGLEVEL=1,輸出所有JCL和JES語句包括PROCEDURE中的語句;MSGLEVEL=2,僅輸出被提交的JCL和JES語句,不輸出PROCEDURE中的語句。MSGLEVEL第二個子參數控制輸出哪一條信息。MSGLEVEL=(,0),如果正常結束,僅輸出JCL信息,否則輸出所有信息;MSGLEVEL=(,1),不管是否正常結束,都輸出所有信息。如果省略MSGLEVEL,JES提供初始化時的缺省值。Example例如://EXMP3JOB,MSGLEVEL=(2,1)//EXMP4JOB,MENTLE,MSGLEVEL=0//EXMP5JOB,MIKE,MSGLEVEL=(,0)缺省設置為:MSGLEVEL=(1,1)NOTIFY用于請求系統在后臺作業處理完畢時給指定用戶發送信息。如果作業完成時,該用戶未在系統登錄,則系統所發送的信息將會保留到此用戶下次登錄。格式:NOTIFY=USERIDNOTIFY參數使得作業結束時,系統通知NOTIFY參數指定的TSO用戶。USERID必須是有效的用戶ID。命名規則USERID:必須以字母或通配符開頭的1~8個字母、數字或通配符組成,其值必須是一個存在的TSO用戶標識。例://SIGNJOB,//TLOMP,NOTIFY=STU123TYPRUNTYPRUN參數-修改JES處理作業的方式。

TYPRUN=SCAN僅檢查語法錯誤,不執行TYPRUN=HOLD作業在輸入隊列HOLD住,操作員必須釋放它才能執行TYPRUN=COPY作業流COPY的是提交到MSGCLASS參數指定的系統輸出CLASS的作業流(僅用于JES2)PRTY用于為相應的輸入隊列中的作業分配優先級。系統根據作業優先級的高低來選擇作業執行,對于同一級的作業的選擇將采取“先進先出”的原則。格式:PRTY=PRIORITYPRTYPRIORITY:用數字量來表示優先級,數字越大表示優先級越高。根據作業進入子系統的類型,在JES2系統中,其取值范圍是0~15;例://JOBAJOB1,//‘JIMWEBSTER’,PRTY=12REGIONREGION參數指定作業或一個作業步所使用的虛存大小。用于JOB或EXEC語句。-定義在JOB語句,優先于定義在EXEC語句;-如果某個作業步所需要的虛存超過了JOB語句REGION參數指定的虛存,或者REGION參數指定的虛存大小值不能夠被獲得,就會導致ABEND;-如果在EXEC語句指定REGION參數,則參數指定的虛存值為該作業步所使用的虛存大小;-如果一個作業步所需要的大于指定的空間大小,或者指定的無法獲得,就會導致該作業步ABEND。格式:REGION={valueK}={valueM}

REGIONvalueK:以千字節(Kb)為單位指出所需空間大小,系統以每4k為一存儲單位分配空間,所以value值應取4的倍數,如REGION=68K。當value值不是4的倍數時,系統會將其增至一最為接近的4的倍數的值。valueK:1-7digitsfrom1-2096128REGIONvalueM:以兆字節(Mb)為單位指出所需空間大小。注:REGION值必須是有效的存儲空間,如果取值為0或任何大于系統極限的值時都有可能會引起存儲問題。valueM:1-4digitsfrom1-2047Example例如://ACCT1JOB//A23,SMITH,REGION=100K,//ADDRSPC=REAL//ACCT2JOB175,FRED,REGION=250KLINESLINES參數用于限定作業的系統輸出數據集的打印行數(以K為單位)行數超過限制時,系統可以使用下列三種處理方式://MAXLINE1JOBLINES=(50,CANCEL)如果輸出超過50,000行,取消該作業。//MAXLINE2JOBLINES=(50,DUMP)如果輸出超過50,000行,出DUMP。//MAXLINE3JOBLINES=(50,WARNING)如果輸出超過50,000行,向操作員發出警告信息。RESTARTRESTARTJOB出錯時重新執行。可以使用下面4種方式:-自動步重起:從發生錯誤的作業步開始處重新執行。-自動點重起:從發生錯誤的作業步中的某個語句重新執行。-延遲步重起:系統允許檢查錯誤,可以修改并重新提交。從失敗的作業步開始處重新執行。-延遲點重起:系統允許檢查錯誤,可以修改并重新提交。從失敗的作業步中的某個語句重新執行。RESTART用NOTIFY參數以達到等待用戶修改的目的使用延遲重起RESTART參數表明系統重起作業時的作業步。例://JOBNAMEJOB//ACCOUNTING,’PRGMR//NAME’,CLASS=A,//NOTIFY=TSOMJ01,RESTART=STEP10TIME用于指定作業占用處理器的最長時間并可通過一些信息得知該作業占用處理器的時間。當作業占用處理器時間超過指定值時,系統將終止該作業。TIME通常情況下,此參數不用設置。當作業所需處理器時間長于系統缺省值時,或出于某種測試目的才設置此參數。格式:TIME={([minutes][,seconds])}={1440}={NOLIMIT}={MAXIMUM}TIMEminutes:指定作業可占用處理器最長時間的分鐘數。注意:不可以將TIME參數寫作TIME=0,這樣將導致不可預知的后果。TIMESeconds:作為minutes的補充,定義指定作業可占用處理器最長時間的秒鐘數(1-59)。NOLIMIT:表明作業的運行無時間限制,等同于TIME=1440。1440:表明作業的運行無時間限制,即24小時。TIMEMAXIMUM:表示作業的運行時間為357912分鐘。當JOB語句中的TIME參數沒有指明時,每作業步的運行時間限制由以下值決定:1.在EXEC語句中TIME參數的值;2.當EXEC語句中也沒有設置TIME參數時,采用默認的時間限制值(也就是JES默認的作業步時間限制值)。Example例1://STD1JOBACCT271,TIME=(12,10)例2://STD2JOB,GOR,TIME=(,30)Example例3://FIRSTJOB,SMITH,TIME=2……//STEP1EXECPGM=READER,TIME=1……//STEP2EXECPGM=WRITER,TIME=1……Example說明:在例3中,JOB語句中規定了2分鐘的作業運行時間限制,每個作業步允許的時間為1分鐘,如果任何一個作業步的執行時間超過1分鐘,作業將會異常終止。下面我們再來看一個例子:Example例4://SECONDJOB,JONES,TIME=3……//STEP1EXECPGM=ADDER,TIME=2……//STEP2EXECPGM=PRINT,TIME=2……Example說明:在例4中,JOB語句中規定了3分鐘的作業運行時間限制,每個作業步允許2分鐘,如果任何一個作業步的執行時間超過2分鐘,作業將會異常終止。但兩個作業步的總共運行時間不得超過作業運行時間限制——3分鐘,也即:如果作業步1的運行時間為1.56分鐘,則作業步2的運行時間不得超過1.44分,否則作業也會異常終止。其他參數JOB語句中的關鍵字參數還有:COND、GROUP,PASSWOR、PERFORM、RD、SECLABEL、USER等。《MVSJCLReference》EXEC語句EXEC語句標志要執行的程序或者過程,標明作業或過程中的每一作業步的開始,并告知系統如何執行該作業步。一個作業最多可以有255個作業步,包括所有在EXEC語句中調用的過程中的所有作業步。EXEC語句格式如下://[作業步名]EXEC位置參數[,關鍵字參數]…[符號參數=值]…[注釋]作業步作業步名是可以省略不寫的,如需要標明作業名時,該作業名必須在該作業內以及該作業調用的所有過程中是唯一的,它由1~8個字母或通配符開頭的字符數字構成,作業步名和作業名的命名規則相同。

位置參數EXEC語句中的位置參數有兩個:PGM和PROC。每條EXEC語句必須有且僅有一個位置參數。PGM參數用于指明所要執行的程序名。該程序必須是一個分區數據集(PDS)的成員或者是系統庫(systemlibrary)、私有庫(privatelibrary)及臨時庫(temporarylibrary)的擴充分區數據集(PDSE)的成員。程序名的調用方法分為直接調用和間接調用。PGM參數格式:PGM={program-name}{*.stepname.ddname}{*.cstepname.ddname}

program-name:指明要執行的程序名或別名,程序名由1~8個字母或通配符開頭的字符數字構成。PGM參數*.stepname.ddname:表示要執行的程序名由本作業步前名為“stepname”的作業步內名為“ddname”的DD語句的DSN參數決定。*.cstepname.ddname:表示要執行的程序名由本作業步前名為“stepname”的作業步里所調用過程名為“procstepname”的過程步中相應名為“ddname”DD語句的DSN參數決定。程序調用方法

1.直接調用;2.間接調用:采用向“后”參考的方法。這里的“后”指在本作業步讀入之前,已先讀入系統的本作業的其它JCL語句。

Example例如://JOBCJOB,JOHN,MSGCLASS=H//STEP2EXECPGM=UPDT//DDADDDSN=SYS1.LINKLIB(P40),//DISP=OLD//STEP3EXECPGM=*.STEP2.DDAExample說明:在上例中,名為STEP3的EXEC語句采用程序間接調用方式,所調用的程序名由作業步STEP2中的名為DDA的DD語句決定,在該DD語句中定義了系統庫SYS1.LINKLIB,程序P40是該庫的一個成員,“P40”即STEP3中要調用執行的程序名。PROC參數指明作業步所要運行的過程名。格式:{PROC=procedure-name}{procedure-name}procedure-name需要調用的過程名,過程名由1~8個字母或通配符開頭的字符數字構成。所調用的過程名可以是:1.編目過程的成員名或別名。2.由PROC語句定義的流內過程的過程名,該流內過程必須在本作業內且在本作業步前定義。Example例如://SPEXECPROC=PAYWRKS//BKEXECOPERATE在本例中,PORC可以省略關鍵字參數EXEC語句的關鍵字參數只作用于本作業步。當EXEC語句的位置參數指定程序名時,關鍵字參數的寫法同JOB語句;當EXEC語句的位置參數指定編目或流內過程時,EXEC語句的關鍵字參數將覆蓋所調用過程中各EXEC語句的關鍵字參數。關鍵字參數如果想僅覆蓋過程中的某個EXEC語句的關鍵字參數,則應在設置關鍵字參數時,同時指出所調用過程的相關過程步的名字。格式如下:關鍵字參數.過程步名=值ACCT參數指明作業步所需的一個或多個記賬信息子參數。記賬信息參子參數最多不可超過142個字符(包括分隔子參數的逗號,但不包括括起子參數列表的括號)。ADDRSPC參數指明作業步所需之存貯類型,它有兩個子參數:VIRT及REAL,缺省值為VIRT。EXEC語句中的ADDRSPC參數僅在本作業步中起作用,JOB語句中的ADDRSPC參數會覆蓋該作業中的所有EXEC語句中的ADDRSPC參數。格式:ADDRSPC[.過程步名]={VIRT}{REAL}Example例如://CAC1EXECPGM=A,ADDRSPC=VIRT//CAC2EXECPROC=B,//ADDRSPC=REAL,REGION=100KREGION參數用于指定本作業步所需的實存或虛存空間的大小,系統僅在本作業步中使用該值。格式:REGION[.過程步名]={valueK}={valueM}

EXEC語句中REGION的子參數定義與JOB語句中相同。TIME參數用于指定作業步占用處理器的最長時間,并可通過作業輸出清單得知該作業步占用處理器的時間。當作業步占用處理器時間超過指定值時,系統將終止該作業。格式:TIME[.過程步名]={([minutes][,seconds])}={1440}={NOLIMIT}={MAXIMUM}TIME參數EXEC語句與JOB語句中的TIME參數的子參數的設置方法基本相同。值得注意的是:在JOB語句中不可設置TIME=0,而在EXEC語句中則可以設置TIME=0,當TIME=0時表示本作業步的執行時間由前面作業步的剩余執行時間決定。COND參數用于對先前作業步執行的返回碼(returncode)進行測試,以決定是否執行本作業步。用戶可以對特定作業步的返回碼進行測試,也可以對每一步執行完畢的的返回碼都進行測試。如果測試條件不滿足,系統執行本作業步;如果測試條件滿足系統則不執行該作業步。作業中的第一個EXEC語句中的COND參數將被系統忽略。注意,當測試條件滿足時,系統并非不正常終止該作業步,而只是跳過該作業步,該作業仍將正常執行。COND參數格式:(1)COND[.過程步名]=(code,operator)(2)COND[.過程步名]=((code,operator[,作業步名][,過程步名])[,(code,operator[,作業步名][,過程步名])]…[,EVEN])[,ONLY](3)COND=EVENCOND=ONLYCOND參數code:系統使用code(測試碼)與先前作業步或某特定作業步的返回碼進行比較。Code的取值范圍為:0~4095。Returncode:系統代碼,0,4,8,16以及ABEND等。operater:表示code與返回碼的比較類型,這些比較的操作符是:GT(大于)、GE(大于等于)、EQ(等于)、NE(不等于)、LT(小于)、LE(小于等于)。COND參數作業步名:指定先前某一作業步,并用該作業步的返回碼與本作業步的測試碼進行比較。當省略作業步名時,表示本作業步的測試碼將與先前所有作業的返回碼進行比較測試。作業步名.過程步名:指定先前某一作業步調用過程的過程步。系統將用該過程步的返回碼與給定的測試碼進行比較。其中該作業步由“作業步名”指定,而過程步由“過程步名”指定。COND參數利用COND參數最多可以有8個返回碼測試,如果有EVEN或ONLY時,最多有7個測試。格式(1)只有在先前作業步沒有非正常終止時,才能進行該測試。格式(2)、(3)測試決定于EVEN和ONLY的設置。EVENEVEN:表示無論即使先前作業步異常終止,本作業步都要執行(execut

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論