//LINK
EXEC PGM=IEWL,
// PARM='NOCALL,AMODE=x,RMODE=y,REUS=z' //SYSPRINT DD SYSOUT=* //OBJ DD DSN=object.library,DISP=SHR //LOADLIB DD DSN=loadlib.med.gammel.modul,DISP=SHR //SYSLMOD DD DSN=loadlib.til.nyt.modul,DISP=SHR //SYSLIN DD * ENTRY PGMO1 INCLUDE OBJ(PGMU1) INCLUDE LOADLIB(LOAD001) ORDER PGMO1,PGMU1,PGMU2 NAME LOAD001(R) /* |
ENTRY PGMO1:
Program i loadmodulet der skal have kontrollen når programmet
refereres ved loadmodulnavnet. Hvis du ikke specificerer et ENTRY statement
bliver første byte i det første program i loadmodulet entrypoint,
og det er ikke sikkert det er det du ønsker.
Hvis du ikke ved hvad der er "overprogram" kan du bruge AMBLIST til at finde ud af det.
INCLUDE OBJ(PGMU1):
OBJ er dd-navnet hvorfra dette modul skal hentes. Jeg har kaldt det
OBJ, men det behøver ikke at være et object modul. Det kan
ligeså godt være et helt loadmodul.
I sidstnævnte tilfælde skal du passe på ikke at få for meget med. Det kan klares med et REPLACE kort. Et REPLACE kort med kun en parameter betyder nemlig DELETE, bare for at gøre det nemmere!
"Formeget med" hentyder til, hvis PGMU1 kalder PGMU2, vil linkningen af PGMU1 indsætte PGMU2 i loadmodulet PGMU1, og når vi linker PGMU1 ind i LOAD001, får vi den forkerte version af PGMU2 med. Det gør sig også gældende for de residente dele af runtime environmentet til eksempelvis COBOL.
LINK parameter:
NOCALL fortæller linkage editor, at den ikke automatisk skal
lede efter programmer der kaldes og som ikke er eksplicit medtaget.