A load library contains programs ready to be executed.
一個(gè)加載庫(kù)存里面包含著那些準(zhǔn)備被調(diào)用的程序。
加載庫(kù)可以是下面幾種類型
- System library 系統(tǒng)庫(kù)
- Private library 私有庫(kù)
- Temporary library. 臨時(shí)庫(kù)
System library 系統(tǒng)庫(kù)
假如你沒有在編碼的時(shí)候指明一個(gè)私有庫(kù), 系統(tǒng)默認(rèn)在系統(tǒng)庫(kù)里面尋找這個(gè)程序進(jìn)行調(diào)用。//stepname EXEC PGM=program-name
The system looks in the libraries for a member with a name or alias that is the same as the specified program-name. The most-used system library is SYS1.LINKLIB, which contains executable programs that have been processed by the linkage editor.
系統(tǒng)會(huì)根據(jù)你提供的程序的名字或者是別名尋找所需要的程序,而最常用的系統(tǒng)庫(kù)是SYS1.LINKLIB,他包含了那些已經(jīng)被連接和編譯的程序。
Private library 私有庫(kù)
每一個(gè)可執(zhí)行,用戶自己編寫的程序都是私有庫(kù)的一個(gè)成員,要告訴系統(tǒng)怎么調(diào)用這個(gè)私有庫(kù)的程序,可以使用DD語(yǔ)句,方式有如下幾種:
- With a DD statement with the ddname JOBLIB after the JOB statement, and before the first EXEC statement in the job.
在EXEC語(yǔ)句的之前,JOB語(yǔ)句之后,用DD語(yǔ)句加上ddname 來(lái)編碼 - If the library is going to be used in only one step, with a DD statement with the ddname STEPLIB in the step.
假如這個(gè)庫(kù)只在一個(gè)作業(yè)步中使用,那么可以使用在這個(gè)作業(yè)部上用 DD語(yǔ)句加上ddname STEPLI 進(jìn)行編碼
//stepname EXEC PGM=program-name
When you code JOBLIB or STEPLIB, the system searches for the program to be executed in the library defined by the JOBLIB or STEPLIB DD statement before searching in the system libraries.
當(dāng)你編寫了JOBLIB 或者 STEPLIB,那么系統(tǒng)就會(huì)優(yōu)先搜索那些定義在JOBLIB或者STEPLIB的DD語(yǔ)句的庫(kù)的同名程序進(jìn)行調(diào)用,假如找不到,系統(tǒng)就會(huì)在系統(tǒng)庫(kù)里面去找
假如用DD語(yǔ)句在JOB的之前的定義了一個(gè)私有庫(kù),那么就可以用下面的這種方式調(diào)用之前定義了的庫(kù)的程序。
//stepname EXEC PGM=*.stepname.ddname
Private libraries are particularly useful for programs used too seldom to be needed in a system library. For example, programs that prepare quarterly sales tax reports are good candidates for a private library.
私有庫(kù)在實(shí)際使用上是非常有用的,而系統(tǒng)庫(kù)是很少被使用,例如,用于季度銷售稅報(bào)告的程序就是一個(gè)很好的例子。
Temporary library 臨時(shí)庫(kù)
Temporary libraries are partitioned data sets created to store a program until it is used in a later step of the same job. A temporary library is created and deleted within a job.
臨時(shí)庫(kù)是一個(gè)用于存儲(chǔ)程序的分區(qū)數(shù)據(jù)集,這個(gè)數(shù)據(jù)集直到同名作業(yè)完成后被銷毀,一個(gè)臨時(shí)庫(kù)是由一個(gè)作業(yè)來(lái)創(chuàng)建或者被刪除。
When testing a newly written program, a temporary library is particularly useful for storing the load module from the linkage editor until it is executed by a later job step. Because the module will not be needed by other jobs until it is fully tested, it should not be stored in a private library or a system library.
當(dāng)我們?cè)跍y(cè)試一個(gè)新編寫的程序的時(shí)候,臨時(shí)數(shù)據(jù)集十分有用,它用于存儲(chǔ)來(lái)自于連接編輯器的加載模塊直至被后面的作業(yè)步執(zhí)行,因?yàn)檫@個(gè)模塊在其他作業(yè)被測(cè)試完成時(shí)候就不需要了,因此,它不應(yīng)該被存為私有庫(kù)或者是系統(tǒng)庫(kù),在下面的圖1中嗎,LKED作業(yè)步就創(chuàng)建了一個(gè)叫做&&LOADMOD的臨時(shí)庫(kù)在名為SYSLMOD的DD語(yǔ)句中,在GO作業(yè)步中,我們就引用了這個(gè)臨時(shí)庫(kù),代碼如下
//GO EXEC PGM=*.LKED.SYSLMOD,....
//USUAL JOB A2317P,'COMPLGO' //ASM EXEC PGM=IEV90,REGION=256K, EXECUTES ASSEMBLER // PARM=(OBJECT,NODECK,'LINECOUNT=50') //SYSPRINT DD SYSOUT=*,DCB=BLKSIZE=3509 PRINT THE ASSEMBLY LISTING //SYSPUNCH DD SYSOUT=B PUNCH THE ASSEMBLY LISTING //SYSLIB DD DSNAME=SYS1.MACLIB,DISP=SHR THE MACRO LIBRARY //SYSUT1 DD DSNAME=&&SYSUT1,UNIT=SYSDA, A WORK DATA SET // SPACE=(CYL,(10,1)) //SYSLIN DD DSNAME=&&OBJECT,UNIT=SYSDA, THE OUTPUT OBJECT DECK // SPACE=(TRK,(10,2)),DCB=BLKSIZE=3120,DISP=(,PASS) //SYSIN DD * inline SOURCE CODE . . code . /* //LKED EXEC PGM=HEWL, EXECUTES LINKAGE EDITOR // PARM='XREF,LIST,LET',COND=(8,LE,ASM) //SYSPRINT DD SYSOUT=* LINKEDIT MAP PRINTOUT //SYSLIN DD DSNAME=&&OBJECT,DISP=(OLD,DELETE) INPUT OBJECT DECK //SYSUT1 DD DSNAME=&&SYSUT1,UNIT=SYSDA, A WORK DATA SET // SPACE=(CYL,(10,1)) //SYSLMOD DD DSNAME=&&LOADMOD,UNIT=SYSDA, THE OUTPUT LOAD MODULE // DISP=(MOD,PASS),SPACE=(1024,(50,20,1)) //GO EXEC PGM=*.LKED.SYSLMOD,TIME=(,30), EXECUTES THE PROGRAM // COND=((8,LE,ASM),(8,LE,LKED)) //SYSUDUMP DD SYSOUT=* IF FAILS, DUMP LISTING //SYSPRINT DD SYSOUT=*, OUTPUT LISTING // DCB=(RECFM=FBA,LRECL=121) //OUTPUT DD SYSOUT=A, PROGRAM DATA OUTPUT // DCB=(LRECL=100,BLKSIZE=3000,RECFM=FBA) //INPUT DD * PROGRAM DATA INPUT . . data . /* //