*DECK LFGMAIN USETEXT LFGDIR,LFGIOD,LFGDB,LFGFN PROC LFGMAIN; BEGIN *IF DEF,IMS # ** LFGMAIN - LFG MAIN ROUTINE * * M. E. VATCHER 81/02/18 * * THIS PROC CONTAINS THE LFG MAIN LOOP. EACH INPUT FILE ON THE * LFG CONTROL CARD IS PROCESSED. * * PROC LFGMAIN * * ENTRY NONE. * * EXIT NONE. * * METHOD * * FOR EACH INPUT FILE ON THE LFG CONTROL CARD * FOR EACH FILE IN THIS LFN (WHILE NOT EOI) * GET LOAD PARTITION NAME AND TYPE * WHILE NOT END OF PARTITION (EOP) * READ A HEADER RECORD * IF IT IS A PICB * THEN * REFORMAT PICB * BREAK OUT OF "WHILE NOT EOP" LOOP * FILL READ BUFFER * WHILE NOT EOR * READW TO WORKING BUFFER * MOVE AND SHIFT WORDS TO WORKING BUFFER FOR WRITE * CALCULATE CHECKSUM * ADD SM HEADER AND WRITE MESSAGE TO NLF * SEND SUMMARY LISTING LINE * SKIP TRAILER RECORDS * WRITE DIRECTORY * # *ENDIF # **** PROC LFGMAIN - XREF LIST BEGIN. # XREF BEGIN ITEM IFET U; # INPUT FILE FET # ITEM NLF U; # NETWORK LOAD FILE FET # ITEM OUTPUT U; # FWA OF OUTPUT FILE FET # PROC LFGCKSM; # COMPUTE CHECKSUM # PROC LFGCRAK; # CRACK CONTROL CARD # PROC LFGGFN; # GET FILE NAMES FOR REFORMATTING # PROC LFGGPN; # GET PARTITION NAME # PROC LFGHDRW; # ADD SM HEADER AND WRITE TO NLF # PROC LFGLHDR; # SEND SUMMARY LISTING HEADER # PROC LFGMOVW; # MOVE AND SHIFT 16 BIT WORDS # PROC LFGNLFH; # WRITE HEADER RECORD TO NLF # PROC LFGRDER; # READ ERROR PROCESSOR # PROC LFGRDHR; # READ HEADER RECORD # PROC LFGRDSR; # READ SEQUENTIAL RECORD # PROC LFGREFP; # REFORMAT PICB # PROC LFGSKIP; # SKIP TRAILER RECORDS # PROC LFGSSLL; # SEND SUMMARY LISTING LINE # PROC LFGWRD; # WRITE DIRECTORY TO NLF # PROC MESSAGE; # SEND MESSAGE TO DAYFILE # PROC READW; # READ WORDS FROM CIO BUFFER # PROC WRITEC; # WRITE LINE TO CIO BUFFER # PROC WRITER; # WRITE RECORD # FUNC XCDD C(10); # CONVERT INTEGER TO DECIMAL DISPLAY CODE # FUNC XSFW C(10); # SPACE FILL WORD # END # **** # DEF DEF$BC # 64 #; # DEFAULT BATCH COUNT VALUE # DEF SYSLOC # 0 #; # MESSAGE TO SYSTEM AND LOCAL DAYFILES # CONTROL PRESET; CONTROL NOLIST; # LFGSTAN COMMON DECK # *CALL LFGSTAN CONTROL LIST; ITEM BEGADDR U; # BEGINNING ADDRESS # ITEM BPOS U; # BIT POSITION COUNTED FROM LEFT # ITEM CKSM U; # CHECKSUM # ITEM EOI B; # END OF INFORMATION INDICATOR # ITEM EOP B; # END OF PARTITION INDICATOR # ITEM FRST$REC B; # FLAG INDICATING 1ST RECORD IN PARTITION # ITEM FOUTR B; # FIRST OUTPUT RECORD OF PARTITION # ITEM I U; # LOOP INDEX # ITEM IW60 U; # NUMBER OF 60 BIT WORDS MOVED # ITEM J U; # LOOP INDEX # ITEM K U; # LOOP INDEX # ITEM LPAK U; # 16 BIT WORDS IN LAST PACKET # ITEM MRES B; # MEMORY RESIDENT INDICATOR # ITEM NP B; # NEW PARTITION INDICATOR # ITEM NPAK U; # NUMBER OF PACKETS (MESSAGES) # ITEM NWDS16 U; # 16 BIT WORDS IN CURRENT PACKET # ITEM ON U; # OVERLAY NAME IN ASCII # ITEM PICBF B; # PICB FLAG # ITEM PN C(6); # PARTITION NAME # ITEM PRC U; # PARTITION RECORD COUNT # ITEM RC U; # INPUT RECORD COUNT # ITEM STATIS; ITEM SUCCESS B; ITEM TEMP C(10); ITEM WC U; # WORD COUNT OF 16 BIT WORDS # ITEM WPOS; # WORD POSITION FOR SHIFTING # ARRAY LFGCOMP [0:0] S(2); BEGIN ITEM LFGCOMP1 C(0,0,14) = [" LFG COMPLETE."]; ITEM LFGCOMPZ U(1,24,36) = [ 0 ]; END ARRAY MEMIN [0:27] S(1); BEGIN ITEM INBUF U; END CONTROL EJECT; PROC ERRCHECK(SUCCESS); BEGIN XREF BEGIN PROC ABORT; PROC MESSAGE; END ITEM SUCCESS B; ARRAY LFGERR [0:0] S(2); BEGIN ITEM LERR C(0,0,12) = [" LFG ERRORS."]; ITEM LZ U(1,12,48) = [ 0 ]; END IF NOT SUCCESS THEN BEGIN MESSAGE(LFGERR,SYSLOC); # *LFG ERRORS.* # ABORT; END END CONTROL EJECT; # LFGMAIN CODE STARTS HERE # BC$VAL = DEF$BC; # SET DEFAULT BATCH COUNT VALUE # FIRST$PAGE = TRUE; # SET FIRST PAGE FLAG # LFGCRAK; LFGNLFH; # WRITE HEADER RECORD TO NLF # LFGGFN(FN,NUMIFILE); # GET FILE NAMES # # INITIALIZE DIRECTORY # P