Here is a very old CLIST from the 1980's that did selective
assemble/compile/lnk/run:-
PROC 1 MEMBER +
ALL +
A +
L +
G +
P +
PARM(&SYSUID) +
PRINT +
LIB(USER) +
LOAD(X$X$X) +
LMOD(X$X$X) +
LVOL(X$X$X) +
ASMBLR(IEV90) +
DEST(LOCAL) +
TEST +
CICS +
VOLUME(SYSDA) +
USER(&SYSUID.) +
RENT REFR REUS LIST XREF NCAL LET AC(0) +
DEBUG
/* */
/* MEMBER MEMBER TO BE PROCESSED */
/* ALL ASSEMBLE, AND LINK EDIT */
/* A ASSEMBLE */
/* L LINK EDIT */
/* PRINT PRINT ASSEMBLY LISTINGS */
/* LIB(MAGIC) SOURCE LIBRARY */
/* LOAD(X$X$X) LOAD LIBRARY (DEFAULT SAME AS LIB) */
/* ASMBLR(IFOX00) NAME OF ASSEMBLER TO USE */
/* DEST(LOCAL) DESTINATION FOR LISTINGS */
/* CICS ASSEMBLE USING CICS MACRO LIBRARIES */
/* TEST ASSEMBLER AND LINK EDIT PARM */
/* RENT LINK EDIT PARM */
/* REFR LINK EDIT PARM */
/* REUS LINK EDIT PARM */
/* LIST LINK EDIT PARM */
/* XREF LINK EDIT PARM */
/* NCAL LINK EDIT PARM */
/* LET LINK EDIT PARM */
/* AC(0) LINK EDIT PARM */
/* DEBUG DEBUGGING OUTPUT FROM CLIST */
/* */
CONTROL NOMSG NOFLUSH NOSYMLIST NOCONLIST NOPROMPT
IF &DEBUG = DEBUG THEN +
CONTROL LIST SYMLIST CONLIST MSG PROMPT
IF &LOAD = X$X$X THEN +
SET LOAD = &LIB
IF &LMOD = X$X$X THEN +
SET LMOD = &MEMBER
IF &LVOL ¬= X$X$X THEN +
SET LVOL = VOL(&LVOL)&STR( )UNIT(DISK)
ELSE +
SET LVOL =
IF &ALL EQ ALL THEN DO
SET ASM = ASM
SET LKED = LKED
END
ELSE DO
IF &A = A | &L = L | &G = G THEN DO
IF &A = A THEN +
SET ASM = ASM
IF &L = L THEN +
SET LKED = LKED
END
ELSE DO
WRITENR ASSEMBLE THE SOURCE? (Y/N)
READ ASM
IF &ASM = Y THEN +
SET ASM = ASM
WRITENR LINK EDIT? (Y/N)
READ LKED
IF &LKED = Y THEN +
SET LKED = LKED
END
END
IF &SUBSTR(1:1,&LIB) NE ' AND &P = P THEN +
SET LIB = '&USER..&LIB..PLI'
IF &SUBSTR(1:1,&LIB) NE ' AND &ASM = ASM THEN +
SET LIB = '&USER..&LIB..CARD'
SET LIB = &SUBSTR(2:&LENGTH(&LIB)-1,&LIB)
IF &SUBSTR(1:1,&LOAD) NE ' THEN +
SET LOAD = '&USER..&LOAD..LOAD'
SET LOAD = &SUBSTR(2:&LENGTH(&LOAD)-1,&LOAD)
SET BCKTS='()'
SET LB=&SUBSTR(2,&BCKTS)
SET RB=&SUBSTR(3,&BCKTS)
IF &VOLUME=SYSDA THEN SET VOLUME=
ELSE SET VOLUME=&STR(UNIT&LB.3380&RB. VOLUME&LB.&VOLUME&RB.)
SET ASMCC = 0
SET PLICC = 0
SET LKEDCC = 0
IF &ASM = ASM THEN DO
WRITE ASSEMBLING '&LIB(&MEMBER)'
ALLOC F(SYSIN) DA('&LIB(&MEMBER)') SHR REUSE
DELETE '&USER..&MEMBER..ASMLIST'
DELETE '&USER..&MEMBER..ASMLIST' NSCR
FREE ATTR(Y)
ATTR Y LRECL(121) BLKSIZE(3630) RECFM(F B M)
ALLOC F(SYSPRINT) DA('&USER..&MEMBER..ASMLIST') +
SP(10,10) TRACKS USING(Y) +
REUSE &VOLUME
DELETE '&USER..&MEMBER..OBJ'
DELETE '&USER..&MEMBER..OBJ' NSCR
FREE ATTR(Y,Z)
ATTR Y LRECL(80) BLKSIZE(3120) RECFM(F B)
ATTR Z LRECL(80) BLKSIZE(6160) RECFM(F B)
ALLOC FI(SYSGO) DA('&USER..&MEMBER..OBJ') SP(1,1) TRA USING(Y) REUS
IF &CICS¬= THEN +
ALLOC F(SYSLIB) DA('&LIB.' +
'SYS1.MACLIB') SHR REUSE USING(Z)
ELSE +
ALLOC F(SYSLIB) DA( '&LIB' +
'SYS1.ACFMAC' +
'SYS1.MACLIB' +
) SHR REUSE USING(Z)
ALLOC F(SYSUT1) SP(1,1) CYLINDER REUSE UNIT(DISK)
ALLOC F(SYSPUNCH) DUMMY REUSE
ALLOC F(SYSTERM) DA(*) REUSE
SET MORE=
IF &RENT¬= THEN SET MORE=&STR(&MORE.,&RENT)
IF &TEST¬= THEN SET MORE=&STR(&MORE.,&TEST)
IF &ASMBLR = IFOX00 THEN DO
ALLOC F(SYSUT2) SP(1,1) CYLINDER REUSE UNIT(DISK) VOL(HED998)
ALLOC F(SYSUT3) SP(1,1) CYLINDER REUSE UNIT(DISK) VOL(HED998)
CALL 'SYS1.LINKLIB(IFOX00)' 'NOALIGN,OBJ,TERM,DECK,LOAD,LIST&MORE'
SET ASMCC = &LASTCC
FREE F(SYSUT2,SYSUT3)
END
ELSE DO
ALLOC F(SYSLIN) DA('&USER..&MEMBER..OBJ') SHR REUSE
CALL 'SYS1.LINKLIB(IEV90)' 'OBJECT,NODECK,TERM,LIST&MORE'
SET ASMCC = &LASTCC
END
FREE F(SYSIN,SYSLIN,SYSPRINT,SYSGO,SYSLIB,SYSUT1,SYSPUNCH,SYSTERM)
END
IF &P = P THEN DO
WRITE COMPILING '&LIB(&MEMBER)'
ALLOC F(SYSIN) DA('&LIB(&MEMBER)') SHR REUSE
DELETE '&USER..&MEMBER..PLILIST'
DELETE '&USER..&MEMBER..PLILIST' NSCR
FREE ATTR(Y)
ATTR Y LRECL(121) BLKSIZE(3630) RECFM(F B M)
ALLOC F(SYSPRINT) DA('&USER..&MEMBER..PLILIST') +
SP(10,10) TRACKS USING(Y) +
REUSE &VOLUME
DELETE '&USER..&MEMBER..OBJ'
DELETE '&USER..&MEMBER..OBJ' NSCR
FREE ATTR(Y,Z)
ATTR Y LRECL(80) BLKSIZE(3120) RECFM(F B)
ATTR Z LRECL(80) BLKSIZE(4240) RECFM(F B)
ALLOC F(SYSLIN) DA('&USER..&MEMBER..OBJ') SP(1,1) TRA USING(Y) REUS
ALLOC F(SYSLIB) DA( +
'&LIB.' +
) SHR REUSE USING(Z)
ALLOC F(SYSUT1) SP(1,1) CYLINDER REUSE
CALL 'SYS1.PLICOMP(IEL0AA)' +
'OBJECT,NODECK,INCLUDE,NS,LIST,SOURCE,MAP'
SET PLICC = &LASTCC
FREE F(SYSUT1)
END
IF &LKED = LKED THEN DO
IF &ASMCC > 4 OR &PLICC > 4 THEN DO
WRITE LINK EDIT NOT EXECUTED BECAUSE OF CONDITION CODES
EXIT
END
WRITE LINKING &MEMBER INTO '&LOAD'
ALLOC F(SYSLIB) DA( +
'&LOAD' +
'SYS1.VFORTLIB' +
'SYS1.PLIBASE' +
'SYS1.ISPLOAD' +
'SYS1.ACFMOD' +
) SHR REUSE
ALLOC F(SYSPRINT) DA(*) REUSE
ALLOC F(SYSLIN) DA('&USER..&MEMBER..OBJ') SHR REUSE
ALLOC F(SYSLMOD) DA('&LOAD(&LMOD)') SHR REUSE &LVOL
IF &LASTCC NE 0 THEN DO
FREE ATTR(X$X$)
ATTR X$X$ RECFM(U) BLKSIZE(6294)
ALLOC F(SYSLMOD) DA('&LOAD(&LMOD)') +
NEW SP(5,5) DIR(5) TRACKS USING(X$X$)
FREE ATTR(X$X$)
END
ALLOC F(SYSUT1) SP(1,1) CYLINDERS
CALL 'SYS1.LINKLIB(IEWL)' +
'AC=&AC,&RENT,&REFR,&REUS,&LIST,&XREF,&NCAL,&TEST'
SET LKEDCC = &LASTCC
FREE F(SYSLIB,SYSPRINT,SYSLIN,SYSLMOD,SYSUT1)
END
IF &PRINT EQ PRINT THEN DO
IF &LKEDCC > 4 | &ASMCC > 4 THEN DO
WRITE PRINTING NOT EXECUTED BECAUSE OF CONDITION CODES
EXIT
END
IF &DEST = LOCAL THEN +
PRINTO ('&USER..&MEMBER..ASMLIST')
ELSE +
PRINTO ('&USER..&MEMBER..ASMLIST') +
DEST(&DEST.)
END
IF &G ¬= THEN DO
WRITE CALLING &MEMBER FROM '&LOAD'
CALL '&LOAD(&LMOD)' '&PARM'
WRITE CC=&LASTCC;
ALLOC F(SYSIN) DS(*) SHR REUS
ALLOC F(SYSPRINT) DS(*) SHR REUS
END ---------------------------------------------------------------------- For IBM-MAIN subscribe / signoff / archive access instructions, send email to [email protected] with the message: INFO IBM-MAIN
