*DECK JOBFTPS 
JOBFTPS 
TITLE(JOB) JOBFTPS - FTPS RELEASE DEFAULT JOB.
.*
.*
.*  THIS IS THE STARTUP JOB FOR FTPS. 
.*
.*    THIS RECORD MUST BE ADDED TO THE NAMSTRT FILE FOR FTPS
.*    TO BE STARTED WITH THE REST OF THE NETWORK. 
.*
.*    JOBFTPS INITIALIZES (MODIFIES, OR CREATES IF NECESSARY) THE 
.*    ZZFTPS FILE WHICH IS USED TO ACTUALLY RUN FTPS.  FTPS WILL
.*    BE RUN AFTER INITIALIZATION IF THE PARAMETER *TSSTART* IS SET 
.*    TO *YES* IN THE PARAMETER RECORD. 
.*
.*    THE *JOBFTSR* RECORD MUST BE ADDED TO THE NAMSTRT FILE TO ALLOW 
.*    OPERATOR RESTART OF FTPS SHOULD IT BECOME NECESSARY; IT IS
.*    NORMALLY STARTED ON DEMAND (REQUEST STARTABLE). 
.*
.*    STATEMENTS OF THE FORM
.*                 JOB(JOBFTPS,ST,SY,NS)
.*    MUST BE ADDED TO ALL PARAMETER RECORDS TO SELECT THIS RECORD
.*    TO BE PROCESSED BY NAMI AND SUBMITTED TO START FTPS AT NETWORK
.*    STARTUP.
.*
.*    STATEMENTS OF THE FORM
.*                 JOB(JOBFTSR,TS,DI,SY,NS) 
.*    MUST BE ADDED TO ALL PARAMETER RECORDS TO SELECT THE *JOBFTSR*
.*    RECORD TO ALLOW OPERATOR RESTARTS OF FTPS.
.*
.*    THE PERMANENT FILES THAT FTPS DUMPS AND TRACES ARE WRITTEN TO 
.*    WILL BE COLLECTED BY THE COLLECTOR JOB ALONG WITH THE REST OF 
.*    THE NETWORK TRACES AND DUMPS. 
.*
.*
.*  PERMANENT FILES FOR RUN DATA ARE DEFINED AT JOB TERMINATION.
.*
.*       TFN       LFN       PFN       CONTENTS 
.*
.*       OUTPUT    FTPSOUT   TSD0FIL   OUTPUT FROM JOB (DMP,DMD,ETC). 
.*       ZZZZDMB   FTPSDMB   TSD2FIL   BINARY FIELD LENGTH DUMPS. 
.*                 FTPSLST   TSL0FIL   JOB DAYFILE. 
.*       ZZZZZSN   TSSTATS   TSS0FIL   AIP STATISTICS FILE. 
.*       ZZZZZDN   TRCLEV1             AIP TRACE FILE WRITTEN BY FTPS.
.*                 TRCLEV2   ZZTSFIL   INTERMEDIATE AIP TRACE FILE. 
.*                 TRCLEV3   TST0FIL   PERMANENT AIP TRACE FILE.
.*
.*
.*
FTPS_CIN,T77777.   FTPS RELEASE DEFAULT JOB.
USER(UNM,PWM) 
NORERUN.
DISPLAY(STR($DATE = $)//STRD(DATE)) 
DISPLAY(STR($HID = $)//STR(HID))
DISPLAY(STR($OT = $)//STRB(OT)) 
DISPLAY(STR($SC = $)//STRB(SC)) 
.*
.*  SET UP THE ZZFTPS FILE. 
.*
COPYBR(INPUT,NEW,2) 
COPYBR(INPUT,SETID) 
BEGIN(,SETID) 
WHILE(1,INTLKLP)
ATTACH(INTRLCK=ZXFTPS/M=W,NA) 
IF(.NOT.FILE(INTRLCK,AS))  DEFINE(INTRLCK=ZXFTPS/NA)
IF(.NOT.FILE(INTRLCK,AS))  ENDW(INTLKLP)
GET(OLD=ZZFTPS/NA)
IF(FILE(OLD,AS),INIT) 
SKIPR(OLD,2)
COPYEI(OLD,NEW) 
RENAME(OLD=NEW) 
LIBEDIT(I=0,P=OLD,B=REP,N=NEW)
ELSE(INIT)
COPYBR(REP,NEW) 
ENDIF(INIT) 
REPLACE(NEW=ZZFTPS) 
RETURN(INTRLCK) 
.*
.*  IF STARTUP FLAG SET ROUTE ZZFTPS TO START FTPS. 
.*
IF($TSSTART$.EQ.$YES$)  ROUTE(NEW,DC=IN,OT=SYOT,SCL=NS) 
ROLLOUT(3)
NOEXIT. 
ATTACH(INTRLCK=ZXFTPS)
ONEXIT. 
IF(FILE(INTRLCK,AS))  PURGE(ZXFTPS/NA)
RETURN(OUTPUT)
SETJOB(DC=NO) 
EXIT.  FTPS 
.*
WHILE(1,LSTLOOP)
ATTACH(FTPSLST=TSL0_CIN/M=W,NA) 
IF(.NOT.FILE(FTPSLST,AS))  DEFINE(FTPSLST=TSL0_CIN/NA)
IF(.NOT.FILE(FTPSLST,AS))  ENDW(LSTLOOP)
SKIPEI(FTPSLST) 
NOTE(DFL,NR)/TSDA_CIN 
DAYFILE(DFL)
PACK(DFL) 
COPYEI(DFL,FTPSLST) 
.*
SETJOB(DC=NO) 
EXIT.  FTPS 
.EOR
.*
.*  THIS IS THE COMMON JOB PART OF THE ZZFTPS FILE. 
.*
FTPS,T77777.
CLASS(CT) 
NORERUN.
DISPLAY(STR($DATE = $)//STRD(DATE)) 
DISPLAY(STR($HID = $)//STR(HID))
DISPLAY(STR($OT = $)//STRB(OT)) 
DISPLAY(STR($SC = $)//STRB(SC)) 
COPYEI(INPUT,APLPROX) 
BEGIN(APPLHID,APLPROX)
RETURN(OUTPUT)
SETJOB(DC=NO) 
EXIT.  FTPS 
.*
USER(UNM,PWM) 
WHILE(1,LSTLOOP)
ATTACH(FTPSLST=TSL0_CIN/M=W,NA) 
IF(.NOT.FILE(FTPSLST,AS))  DEFINE(FTPSLST=TSL0_CIN/NA)
IF(.NOT.FILE(FTPSLST,AS))  ENDW(LSTLOOP)
SKIPEI(FTPSLST) 
NOTE(DFL,NR)/TSDA_CIN 
DAYFILE(DFL)
PACK(DFL) 
COPYEI(DFL,FTPSLST) 
.*
SETJOB(DC=NO) 
EXIT.  FTPS 
.EOR
.*
.*  THIS PROC SELECTS THE ACTUAL PROC TO EXECUTE BASED ON HID.
.*
.PROC,APPLHID,CCLA450.
.SET,ID=STR(HID). 
*  /ID. 
REVERT(EX)  BEGIN(FTPS_ID,APLPROX)
EXIT.  APPLHID
REVERT(ABORT)  APPLHID
.EOR
.*
.*  THIS PROC PUTS THE HOST ID IN THE APPL PROC, WHICH IS THE 
.*  LOWER PART OF THIS PROC.
.*
.PROC,SETID,CCLA450.
.SET,ID=STR(HID). 
*  /ID. 
REVERT.  SETID
EXIT.  SETID
REVERT(ABORT)  SETID
.*
.DATA,REP 
.PROC,FTPS_ID.
SETJOB(FTPS_CIN)
.*
.*  PURGE OLD LEVEL-2 TRACE FILES.
.*
PURGE(ZZTS_OIN,ZZTS_CIN/NA) 
.*
.*  ASSIGN OUTPUT AND NETWORK STATISTICS AND TRACE FILES. 
.*
ASSIGN(MS,OUTPUT) 
ASSIGN(MS,ZZZZZSN)
ASSIGN(MS,ZZZZZDN)
.*
.*  START FTPS. 
.*
FTPS(NIN=CIN,MC=ZZMC,TCPHUN=NETUN2) 
.*
.*  FTPS NORMAL TERMINATION - DO NOT SAVE RUN DATA ON PERMANENT FILES.
.*
RFL(0)
SKIP(BAILOUT) 
.*
EXIT.  FTPS 
.*
.*
.*  FTPS FAILED - SAVE RUN DATA IF REQUIRED.
.*
.*
DISPLAY(EF) 
RFL(0)
IF(EF.NE.SYE,BAILOUT) 
SKIP(SAVFILS) 
.*
ENDIF(BAILOUT)
RETURN(OUTPUT)
SETJOB(DC=NO) 
EXIT.  FTPS 
.*
.*  SAVE RUN DATA IF AVAILABLE. 
.*
ENDIF(SAVFILS)
DISPLAY(STR($DATE = $)//STRD(DATE)) 
USER(UNM,PWM,0) 
.*
IF(FILE(OUTPUT,AS),NOUTPUT) 
IF(.NOT.FILE(OUTPUT,ZL),NOUTPUT)
WHILE(1,OUTLOOP)
ATTACH(FTPSOUT=TSD0_CIN/M=W,NA) 
IF(.NOT.FILE(FTPSOUT,AS))  DEFINE(FTPSOUT=TSD0_CIN/NA)
IF(.NOT.FILE(FTPSOUT,AS))  ENDW(OUTLOOP)
REWIND(OUTPUT)
SKIPEI(FTPSOUT) 
COPYEI(OUTPUT,FTPSOUT)
RETURN(OUTPUT,FTPSOUT)
ELSE(NOUTPUT) 
RETURN(OUTPUT)
ENDIF(NOUTPUT)
.*
IF(FILE(ZZZZDMB,AS),NOZZDMB)
WHILE(1,DMBLOOP)
ATTACH(FTPSDMB=TSD2_CIN/M=W,NA) 
IF(.NOT.FILE(FTPSDMB,AS))  DEFINE(FTPSDMB=TSD2_CIN/NA)
IF(.NOT.FILE(FTPSDMB,AS))  ENDW(DMBLOOP)
REWIND(ZZZZDMB) 
SKIPEI(FTPSDMB) 
COPYEI(ZZZZDMB,FTPSDMB) 
RETURN(ZZZZDMB,FTPSDMB) 
ENDIF(NOZZDMB)
.*
IF(FILE(ZZZZZSN,AS),NOSTATS)
IF(.NOT.FILE(ZZZZZSN,ZL),NOSTATS) 
WHILE(1,STATSLP)
ATTACH(TSSTATS=TSS0_CIN/M=W,NA) 
IF(.NOT.FILE(TSSTATS,AS))  DEFINE(TSSTATS=TSS0_CIN/NA)
IF(.NOT.FILE(TSSTATS,AS))  ENDW(STATSLP)
REWIND(ZZZZZSN) 
SKIPEI(TSSTATS) 
COPYEI(ZZZZZSN,TSSTATS) 
RETURN(ZZZZZSN,TSSTATS) 
ELSE(NOSTATS) 
RETURN(ZZZZZSN) 
ENDIF(NOSTATS)
.*
ATTACH(TRCLEV2=ZZTS_CIN/NA) 
IF(FILE(TRCLEV2,AS),NTRCLV2)
SKIPR(TRCLEV2)
IF(.NOT.FILE(TRCLEV2,EOF))  REWIND(TRCLEV2) 
ELSE(NTRCLV2) 
IF(FILE(ZZZZZDN,AS),NOTRACE)
IF(.NOT.FILE(ZZZZZDN,ZL),NOTRACE) 
ENDIF(NTRCLV2)
WHILE(1,TRCLOOP)
ATTACH(TRCLEV3=TST0_CIN/M=W,NA) 
IF(.NOT.FILE(TRCLEV3,AS))  DEFINE(TRCLEV3=TST0_CIN/NA)
IF(.NOT.FILE(TRCLEV3,AS))  ENDW(TRCLOOP)
SKIPEI(TRCLEV3) 
COPYEI(TRCLEV2,TRCLEV3) 
IF(FILE(TRCLEV2,AS))  PURGE(ZZTS_CIN/NA)
IF(FILE(ZZZZZDN,AS),NTRCLV1)
IF(.NOT.FILE(ZZZZZDN,ZL),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(ZZZZZDN,TRCLEV1,TRCLEV2,TRCLEV3) 
ELSE(NOTRACE) 
RETURN(ZZZZZDN) 
ENDIF(NOTRACE)
.*
WHILE(1,LSTLOOP)
ATTACH(FTPSLST=TSL0_CIN/NA,M=W) 
IF(.NOT.FILE(FTPSLST,AS))  DEFINE(FTPSLST=TSL0_CIN/NA)
IF(.NOT.FILE(FTPSLST,AS))  ENDW(LSTLOOP)
SKIPEI(FTPSLST) 
NOTE(DFL,NR)/TSDA_CIN 
DAYFILE(DFL)
PACK(DFL) 
COPYEI(DFL,FTPSLST) 
RETURN(FTPSLST) 
.*
SETJOB(DC=NO) 
EXIT.  FTPS 
#.DATA,ZZZZZN1
.*
.*
.*  THIS JOB IS SUBMITTED EVERY ZZMC MESSAGES TO PLACE
.*    THE TRACE INFORMATION FROM THE PROGRAM (LEVEL 1) ONTO 
.*    THE INTERMEDIATE PERMANENT FILE ZZTS_CIN (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. 
.*
.*
FTSA_CIN,T77777.             DUMP AIP TRACE TO ZZTS_CIN.
USER(UNM,PWM) 
.*
WHILE(1,LOOP) 
ATTACH(TRCLEV2=ZZTS_CIN/M=W,NA) 
IF(FILE(TRCLEV2,AS),NTRCLV2)
SKIPF(TRCLEV2)
COPYBF(TRCLEV2,TEMP)
REWIND(TRCLEV2,TEMP)
COPYBF(TEMP,TRCLEV2)
ELSE(NTRCLV2) 
DEFINE(TRCLEV2=ZZTS_CIN/NA) 
IF(.NOT.FILE(TRCLEV2,AS))  ENDW(LOOP) 
WRITEF(TRCLEV2) 
ENDIF(NTRCLV2)
COPYBF(INPUT,TRCLEV2) 
BKSP(TRCLEV2) 
SKIPR(TRCLEV2)
IF(.NOT.FILE(TRCLEV2,EOF))  WRITEF(TRCLEV2) 
SETJOB(DC=NO) 
EXIT.  FTSA 
#.DATA,ZZZZZN2
.*
.*
.*  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 *TST0_CIN* THE PREVIOUS 2 TIMES ZZMC MESSAGES
.*    CURRENTLY IN THE INTERMEDIATE (LEVEL 2) FILE *ZZTS_CIN*,
.*    AND THE NEW TRACE DATA FROM THE LEVEL 1 FILE.  THIS WILL ALLOW
.*    THESE TRACE MESSAGES TO BE COLLECTED AND WRITTEN TO TAPE. 
.*
.*
FTSB_CIN,T77777.             DUMP TO PERMANENT TRACE FILE.
USER(UNM,PWM) 
.*
ATTACH(TRCLEV2=ZZTS_CIN/M=W,NA) 
WHILE(1,LOOP) 
ATTACH(TRCLEV3=TST0_CIN/M=W,NA) 
IF(.NOT.FILE(TRCLEV3,AS))  DEFINE(TRCLEV3=TST0_CIN/NA)
IF(.NOT.FILE(TRCLEV3,AS))  ENDW(LOOP) 
SKIPEI(TRCLEV3) 
IF(FILE(TRCLEV2,AS),NTRCLV2)
SKIPR(TRCLEV2)
IF(.NOT.FILE(TRCLEV2,EOF))  REWIND(TRCLEV2) 
COPYEI(TRCLEV2,TRCLEV3) 
EVICT(TRCLEV2)
ENDIF(NTRCLV2)
COPYBF(INPUT,TRCLEV3) 
BKSP(TRCLEV3) 
SKIPR(TRCLEV3)
IF(.NOT.FILE(TRCLEV3,EOF))  WRITEF(TRCLEV3) 
SETJOB(DC=NO) 
EXIT.  FTSB 
