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

Reply via email to