*COMDECK JOBNS
JOBNS 
*IF -DEF,SVL,1
TITLE(JOB) JOBNS - NS RELEASE DEFAULT JOB SKELETON. 
*IF DEF,SVLC,1
TITLE(JOB) JOBNS - NS SUNNYVALE CLOSED SHOP DEFAULT JOB SKELETON. 
*IF DEF,SVLD,1
TITLE(JOB) JOBNS - NS SUNNYVALE DEVELOPMENT DEFAULT JOB SKELETON. 
.*
.*
.*  THIS IS THE STARTUP JOB FOR NS. 
.*
.*    THE PERMANENT FILES THAT NS DUMPS AND TRACES ARE WRITTEN TO 
.*    WILL BE COLLECTED BY THE COLLECTOR JOB ALONG WITH THE 
.*    REST OF THE THE NETWORK TRACES AND DUMPS. 
.*
.*
.*  THE FOLLOWING PARAMETERS MUST BE SET IN THE PARAMETER RECORD. 
.*
.*    NCFFN = NETWORK CONFIGURATION FILE NAME.
.*            THIS FILE MUST BE PRESENT UNDER THE USER NAME 
.*            SPECIFIED BY THE *NETUN2* PARAMTER. 
.*
.*    NLFFN = NETWORK LOAD FILE NAME. 
.*            THIS FILE MUST BE PRESENT UNDER THE USER NAME 
.*            SPECIFIED BY THE *NETUN2* PARAMETER.
.*
.*    NETUN2 = USER NAME WHERE NETWORK CONFIGURATION AND LOAD FILES 
.*             ARE STORED.
.*
.*    NSFDP = NPU FORCED DUMP OPTION. 
.*
.*    NSRT = TAKE HOST DUMPS AND PRESERVE HOST TRACE FILES
.*           ON NPU FAILURE.
.*
.*    ZZMC = MESSAGE COUNT BEFORE RELEASE OF TRACE FILE.
.*
.*    ZZRUNCT = MAXIMUM NUMBER OF EXECUTION RUNS OF NS
.*              WITHOUT OPERATOR INTERVENTION.
.*
.*
.*  PERMANENT FILES FOR RUN DATA ARE DEFINED AT JOB TERMINATION.
.*
.*       TFN       LFN       PFN       CONTENTS 
.*
.*       OUTPUT    NSOUT     NSD0FIL   OUTPUT FROM JOB (DMP,DMD,ETC). 
.*       ZZZZDMB   NSDMB     NSD2FIL   BINARY FIELD LENGTH DUMPS. 
.*                 NSLST     NSL0FIL   JOB DAYFILE. 
.*       ZZZZZSN   NSSTAT    NSS0FIL   AIP STATISTICS FILE. 
.*       ZZZZZDN   TRCLEV1             AIP TRACE FILE WRITTEN BY NS.
.*                 TRCLEV2   ZZNSFIL   INTERMEDIATE AIP TRACE FILE. 
.*                 TRCLEV3   NST0FIL   PERMANENT AIP TRACE FILE.
.*
.*
.*
*IF -DEF,SVL,1
NS_CIN,T77777.     NS RELEASE DEFAULT JOB.
*IF DEF,SVLC,1
NS_CIN,T77777.     NS SUNNYVALE CLOSED SHOP DEFAULT JOB.
*IF DEF,SVLD,1
NS_CIN,T77777.     NS SUNNYVALE DEVELOPMENT DEFAULT JOB.
USER(UNM,PWM) 
NORERUN.
*IF DEF,SVL,1 
DTSET.*  TODAY IS WWW MMDDYY, SN = SSS. 
*IF -DEF,SVL,2
DISPLAY(DATE) 
DISPLAY(HID)
DISPLAY(OT) 
DISPLAY(SC) 
RETURN(OUTPUT)
.*
.*  SET UP NRF FILES. 
.*
COPYBR(INPUT,NRF1)
COPYBR(INPUT,NRF2)
.*
.*  SET UP NCF AND NLF. 
.*
ATTACH(NSNCF=NCFFN,NSNLF=NLFFN/UN=NETUN2) 
COPYEI(NSNCF,NCF) 
COPYEI(NSNLF,NLF) 
RETURN(NSNCF,NSNLF) 
.*
.*  PURGE OLD LEVEL-2 TRACE FILES.
.*
PURGE(ZZNS_OIN,ZZNS_CIN/NA) 
.*
.*  LOOP RESTARTING NS UNTIL NORMAL TERMINATION OR NAM ABORTS.
.*  ALSO STOP FOR CERTAIN SYSTEM ERRORS.
.*
SET(R1=ZZRUNCT) 
WHILE(1,LOOP1)
SET(EF=0) 
RFL(23000)
NS(NIN=CIN,FDP=NSFDP,RT=NSRT,MC=ZZMC) NLF = NLFFN 
.*
.*  NS NORMAL TERMINATION - CHECK FOR PREVIOUS FAILURE. 
.*
RFL(0)
SKIP(BAILOUT) 
.*
EXIT.  NS 
.*
.*
.*  NS FAILED - CHECK IF LOOP OR QUIT.
.*
.*
DISPLAY(EF) 
RFL(0)
IF(EF.NE.ODE,SAVFILS) 
IF(EF.NE.DRE,SAVFILS) 
IF(EF.NE.SSE,SAVFILS) 
IF(EF.NE.SYE,BAILOUT) 
IF(EF.NE.RAE,SAVFILS) 
IF(EF.NE.ORE,SAVFILS) 
IF(R1.GT.1,SAVFILS) 
SET(R1=R1-1)
.*
.*  WILL LOOP - SAVE TRACE DATA IF AVAILABLE. 
.*
ATTACH(TRCLEV2=ZZNS_CIN/NA) 
IF(FILE(TRCLEV2,AS),NTRCLV2)
SKIPR(TRCLEV2)
IF(.NOT.FILE(TRCLEV2,EOF))  REWIND(TRCLEV2) 
ELSE(NTRCLV2) 
IF(FILE(ZZZZZDN,AS),NOTRACE)
ENDIF(NTRCLV2)
ATTACH(TRCLEV3=NST0FIL/NA,M=W)
*IF DEF,SVL,1 
IF(.NOT.FILE(TRCLEV3,AS))  DEFINE(TRCLEV3=NST0FIL/CT=PU)
*IF -DEF,SVL,1
IF(.NOT.FILE(TRCLEV3,AS))  DEFINE(TRCLEV3=NST0FIL)
SKIPEI(TRCLEV3) 
COPYEI(TRCLEV2,TRCLEV3) 
PURGE(ZZNS_CIN/NA)
IF(FILE(ZZZZZDN,AS),NTRCLV1)
RENAME(TRCLEV1=ZZZZZDN) 
REWIND(TRCLEV1) 
IF(ZZMC.NE.0)  SKIPR(TRCLEV1) 
COPYBF(TRCLEV1,TRCLEV3) 
BKSP(TRCLEV3) 
SKIPR(TRCLEV3)
IF(.NOT.FILE(TRCLEV3,EOF))  WRITEF(TRCLEV3) 
ENDIF(NTRCLV1)
RETURN(TRCLEV1,TRCLEV2,TRCLEV3) 
ENDIF(NOTRACE)
.*
ENDW(LOOP1) 
.*
.*  END OF AUTO RESTART SECTION.
.*
ENDIF(BAILOUT)
IF(R1.EQ.ZZRUNCT,SAVFILS) 
ATTACH(NSLST=NSL0FIL/NA)
IF(.NOT.FILE(NSLST,AS),SAVFILS) 
.*
.*  NO PREVIOUS FAILURE, DO NOT SAVE RUN DATA ON PERMANENT FILES. 
.*
PURGE(NST0FIL,ZZNS_CIN/NA)
SETJOB(DC=NO) 
EXIT.  NS 
.*
.*  SAVE RUN DATA IF AVAILABLE. 
.*
ENDIF(SAVFILS)
.*
IF(FILE(OUTPUT,AS),NOUTPUT) 
ATTACH(NSOUT=NSD0FIL/NA,M=W)
*IF DEF,SVL,1 
IF(.NOT.FILE(NSOUT,AS))  DEFINE(NSOUT=NSD0FIL/CT=PU)
*IF -DEF,SVL,1
IF(.NOT.FILE(NSOUT,AS))  DEFINE(NSOUT=NSD0FIL)
REWIND(OUTPUT)
SKIPEI(NSOUT) 
COPYEI(OUTPUT,NSOUT)
RETURN(OUTPUT,NSOUT)
ENDIF(NOUTPUT)
.*
IF(FILE(ZZZZDMB,AS),NOZZDMB)
ATTACH(NSDMB=NSD2FIL/NA,M=W)
*IF DEF,SVL,1 
IF(.NOT.FILE(NSDMB,AS))  DEFINE(NSDMB=NSD2FIL/CT=PU)
*IF -DEF,SVL,1
IF(.NOT.FILE(NSDMB,AS))  DEFINE(NSDMB=NSD2FIL)
REWIND(ZZZZDMB) 
SKIPEI(NSDMB) 
COPYEI(ZZZZDMB,NSDMB) 
RETURN(ZZZZDMB,NSDMB) 
ENDIF(NOZZDMB)
.*
IF(FILE(ZZZZZSN,AS),NOSTATS)
ATTACH(NSSTAT=NSS0FIL/NA,M=W) 
*IF DEF,SVL,1 
IF(.NOT.FILE(NSSTAT,AS))  DEFINE(NSSTAT=NSS0FIL/CT=PU)
*IF -DEF,SVL,1
IF(.NOT.FILE(NSSTAT,AS))  DEFINE(NSSTAT=NSS0FIL)
REWIND(ZZZZZSN) 
SKIPEI(NSSTAT)
COPYEI(ZZZZZSN,NSSTAT)
RETURN(ZZZZZSN,NSSTAT)
ENDIF(NOSTATS)
.*
ATTACH(TRCLEV2=ZZNS_CIN/NA) 
IF(FILE(TRCLEV2,AS),NTRCLV2)
SKIPR(TRCLEV2)
IF(.NOT.FILE(TRCLEV2,EOF))  REWIND(TRCLEV2) 
ELSE(NTRCLV2) 
IF(FILE(ZZZZZDN,AS),NOTRACE)
ENDIF(NTRCLV2)
ATTACH(TRCLEV3=NST0FIL/NA,M=W)
*IF DEF,SVL,1 
IF(.NOT.FILE(TRCLEV3,AS))  DEFINE(TRCLEV3=NST0FIL/CT=PU)
*IF -DEF,SVL,1
IF(.NOT.FILE(TRCLEV3,AS))  DEFINE(TRCLEV3=NST0FIL)
SKIPEI(TRCLEV3) 
COPYEI(TRCLEV2,TRCLEV3) 
PURGE(ZZNS_CIN/NA)
IF(FILE(ZZZZZDN,AS),NTRCLV1)
RENAME(TRCLEV1=ZZZZZDN) 
REWIND(TRCLEV1) 
IF(ZZMC.NE.0)  SKIPR(TRCLEV1) 
COPYBF(TRCLEV1,TRCLEV3) 
BKSP(TRCLEV3) 
SKIPR(TRCLEV3)
IF(.NOT.FILE(TRCLEV3,EOF))  WRITEF(TRCLEV3) 
ENDIF(NTRCLV1)
RETURN(TRCLEV1,TRCLEV2,TRCLEV3) 
ENDIF(NOTRACE)
.*
ATTACH(NSLST=NSL0FIL/NA,M=W)
*IF DEF,SVL,1 
IF(.NOT.FILE(NSLST,AS))  DEFINE(NSLST=NSL0FIL/CT=PU)
*IF -DEF,SVL,1
IF(.NOT.FILE(NSLST,AS))  DEFINE(NSLST=NSL0FIL)
SKIPEI(NSLST) 
NOTE(DFL,NR)/NSDA_CIN 
DAYFILE(DFL)
PACK(DFL) 
COPYEI(DFL,NSLST) 
.*
*IF DEF,SVL 
IF(EF.NE.0,DONE)
IF(EF.NE.ODE,DONE)
IF(EF.NE.DRE,DONE)
IF(EF.NE.SSE,DONE)
IF(EF.NE.SYE,DONE)
IF(EF.NE.RAE,DONE)
IF(EF.NE.ORE,DONE)
PAUSE.**NS FAILED-NOTE/X.NAMI(RS=NS)
ENDIF(DONE) 
*ENDIF
SETJOB(DC=NO) 
EXIT.  NS 
.EOR
.*
.*
.*  THIS JOB IS SUBMITTED EVERY ZZMC MESSAGES TO PLACE
.*    THE TRACE INFORMATION FROM THE PROGRAM (LEVEL 1) ONTO 
.*    THE INTERMEDIATE PERMANENT FILE ZZNSFIL (LEVEL 2).
.*
.*    IF ALL THAT HAPPENS IS THAT THIS JOB IS REPEATEDLY
.*    SUBMITTED THEN THE TRACE INFORMATION IS KEPT FOR
.*    ONLY THE LAST 2 TIMES ZZMC MESSAGES.
.*
.*    THIS CONSTRAINS THE SIZE OF THE TRACE FILE KEPT 
.*    WHEN THE NETWORK IS RUNNING WITHOUT ANY PROBLEMS. 
.*
.*
NSA_CIN,T77777.     DUMP AIP TRACE TO ZZNSFIL.
USER(UNM,PWM) 
ATTACH(TRCLEV2=ZZNS_CIN/M=W,NA) 
IF(FILE(TRCLEV2,AS),NTRCLV2)
SKIPF(TRCLEV2)
COPYBF(TRCLEV2,TEMP)
REWIND(TRCLEV2,TEMP)
COPYBF(TEMP,TRCLEV2)
ELSE(NTRCLV2) 
*IF DEF,SVL,1 
DEFINE(TRCLEV2=ZZNS_CIN/CT=PU)
*IF -DEF,SVL,1
DEFINE(TRCLEV2=ZZNS_CIN)
WRITEF(TRCLEV2) 
ENDIF(NTRCLV2)
COPYBF(INPUT,TRCLEV2) 
BKSP(TRCLEV2) 
SKIPR(TRCLEV2)
IF(.NOT.FILE(TRCLEV2,EOF))  WRITEF(TRCLEV2) 
SETJOB(DC=NO) 
EXIT.  NSA
.EOR
.*
.*
.*  THIS JOB IS SUBMITTED IN RESPONSE TO A
.*    *HOP RELEASE DEBUG LOGFILE* COMMAND.
.*
.*    THE PURPOSE OF THIS JOB IS TO SAVE ON THE LEVEL 3 PERMANENT 
.*    FILE *NST0FIL* THE PREVIOUS 2 TIMES ZZMC MESSAGES 
.*    CURRENTLY IN THE INTERMEDIATE (LEVEL 2) FILE *ZZNSFIL*
.*    BEFORE WRITING THE NEW TRACE DATA (FROM LEVEL 1 FILE) 
.*    ON THE INTERMEDIATE (LEVEL 2) FILE. THIS WILL ALLOW THESE 
.*    TRACE MESSAGES TO BE COLLECTED AND WRITTEN TO TAPE. 
.*
.*
NSB_CIN,T77777.     DUMP TO PERMANENT TRACE FILE. 
USER(UNM,PWM) 
ATTACH(TRCLEV2=ZZNS_CIN/M=W,NA) 
IF(FILE(TRCLEV2,AS),NTRCLV2)
SKIPR(TRCLEV2)
IF(.NOT.FILE(TRCLEV2,EOF))  REWIND(TRCLEV2) 
ATTACH(TRCLEV3=NST0FIL/NA,M=W)
*IF DEF,SVL,1 
IF(.NOT.FILE(TRCLEV3,AS))  DEFINE(TRCLEV3=NST0FIL/CT=PU)
*IF -DEF,SVL,1
IF(.NOT.FILE(TRCLEV3,AS))  DEFINE(TRCLEV3=NST0FIL)
SKIPEI(TRCLEV3) 
COPYEI(TRCLEV2,TRCLEV3) 
EVICT(TRCLEV2)
ELSE(NTRCLV2) 
*IF DEF,SVL,1 
DEFINE(TRCLEV2=ZZNS_CIN/CT=PU)
*IF -DEF,SVL,1
DEFINE(TRCLEV2=ZZNS_CIN)
ENDIF(NTRCLV2)
WRITEF(TRCLEV2) 
COPYBF(INPUT,TRCLEV2) 
BKSP(TRCLEV2) 
SKIPR(TRCLEV2)
IF(.NOT.FILE(TRCLEV2,EOF))  WRITEF(TRCLEV2) 
SETJOB(DC=NO) 
EXIT.  NSB
*CWEOR,0
