. THIS ELEMENT IS ENTERED WHENEVER AN INCLUDE DIRECTIVE IS . ENCOUNTERED. IT SEARCHES THE PROGRAM FILE FROM WHICH THE . SOURCE PROGRAM IS TAKEN FOR THE PROCEDURE TO BE INCLUDED. . IF NO FIND. IT THEN SEARCHES THE SYSTEM LIBRARY FILE. IF NO FIND . IT TAKES THE ERROR RETURN. THE PROC IS READ INTO A PAIR OF . BUFFERS IN APT. A CHECK IS MADE FOR NESTED INCLUDES AND . THE RPC LINE WHICHFORTRAN CAN NOT UNDERSTAND IS SKIPPED PREQ . DEFINE THE REGISTERS P$IRCB . PROCESSOR INTERFACE DEFINITIONS . MACRO . DEFINITIONS OF OFFSETS IN INCLUDE STACK. MACRO . MACRO REZ* PROC 1,0. MACRO * EQUF INCIOC+Z(1) Z*(1) EQU Z(1)+REZ(1,1) MACRO END MACRO Z(1) EQU 0 MACRO . MACRO DRPKT REZ 8 . DRUM READ PACKET. MACRO FILLED REZ 1. . CORE LOC OF BUFFER IN USE. MACRO POINT REZ 1 . B10 SAVE BETWEEN CALLS. MACRO PRSPLT REZ 1 . INDICATOR FOR PROC LINE SPLIT. MACRO SMTWDS REZ 1 . NO. OF WORDS IN PRESENT STMT. MACRO SPLIT REZ 1 . NO. WORDS OVERLAP IN NEXT BUF. MACRO BFSZM1 REZ 1 . BUFFER SIZE (WORDS) -1 THIS LVL. MACRO FCTP7 REZ 1 . LAST DRUM ADDR THIS LEVEL (FCT+7) MACRO BDSC1 REZ 1 . (NM TBL BUF, NM BUF LNG) MACRO BDSC2 REZ 1 . (1, FIRST BUFFER) MACRO SECNO REZ 1 . SECTORS/BUFFER THIS LEVEL. MACRO BUFADS REZ 1 . H1,H2 BUFFER ADDR'S. MACRO . MACRO INFEX EQUF INCSTK,B8 . =0 TILL FIRST COMMENT. INLST EQUF INCSTK+1,B8,H2 . ZERO TO LIST INCLUDED CODE INLSTA EQUF INCSTK+1,B8,H1 . NON ZERO TO LIST GERTATED CODE SCPEND EQUF INCSTK+2,B8 . SAVE FOR OUTER FCPEND. LNMACL EQUF INCSTK+3,B8 . LOC OF NEXT MAC LINE LMACLB EQUF INCSTK+4,B8 . LOC OF LOCATOR BLOCK. SNLINE EQU INCSTK+5 . NLINE, NLABL SAVE. INSTKL EQU 20 . LENGTH OF STACK ITEM. . SRCLST EQU FCPLST MACRO . MACRO . THIS SECTION IS ENTERED UPON ENCOUNTERING AN INCLUDE. THE . SEARCH FOR THE PROC IS DONE AND IF FOUND INITIATES READING . FROM FASTRAND. THE WAITING IMAGE IN NLINE IS SAVED AND THE FIRST . STATEMENT OF THE PROC IS TRANSMITTED $(2) . OPNIN* S,H2 B11,INXXX REENT S B8,('B8SAVE') MACRO LMJ B11,GIT GET NAME OF PROC TO COPY J IN10 EOS SYNTAX ERROR TE,M A2,3 IS IT A VARIABLE J IN101 NO SYNTAX ERROR L A2,GITV L A3,(' ') DS A2,PACKET SAVE PROC NAME S R15,SRCLST . ASSUME NO INCLUDE LIST.P MACRO TZ FEOS IS THE END OF THE STATEMENT J IN01 YES NO LISTING L FNXT,R8 RESET NEXT FLAG L A0,GXX GET NEXT CHARACTER TE,M A0,',' IS IT A COMMA J IN102 NO SYNTAX ERROR IN00 LMJ B11,GIT J IN103 EOS SYNTAX ERROR TE,M A2,3 TEST FOR VARIABLE J IN104 SYNTAX ERROR L A3,('LIST ') TE A3,GITV J IN105 SYNTAX ERROR SZ SRCLST . INDICATE LISTING. MACRO L A0,INCTYP . INDICATE THAT THIS LEVEL MACRO LSSL A0,1 . IS AN INCLUDE. MACRO S A0,INCTYP MACRO IN01 LMJ B11,INFIND . SEARCH FOR NAME, MACRO J IN13 . RETURN HERE IF NOT FOUND. MACRO . MACRO INFIND. THIS SECTION SEARCHES ALL AVAILABLE LIBRARIES FOR THE PROC WHOSMACRO . NAME IS IN PACKET AND RETURNS IFF NOT FOUND. MACRO . MACRO S,H2 B11,INFXIT . SAVE RETURN. MACRO L A0,INCLVL . STARTS AT -1. MACRO A,M A0,1 MACRO S A0,INCLVL MACRO L A1,EOF . SAVE EOF AT LEVEL 1. MACRO SZ EOF MACRO TNZ INCLVL MACRO S A1,INCEOF MACRO MSI,M A0,INSTKL . INDEX FOR THIS LEVEL. MACRO L B8,A0 . STACK POINTER. MACRO S A0,INCB8S MACRO L A0,SRCLST MACRO S A0,INLST . SET LIST FLAG FOR THIS LEVEL. MACRO . L,T1 A0,COMMAC . S A0,INLSTA L A0,FCPEND . SAVE FCPEND FROM OUTER LEVEL. MACRO S A0,SCPEND MACRO SZ FCPEND . TURN OFF FCPEND. MACRO L,M R1,14 . SAVE NLINE AND LABEL. MACRO TZ FDASCZ . TEST FOR ASCII IMAGE L,M R1,21 . LENGTH FOR AN ASCII IMAGE L A0,(1,NLINE+1) MACRO L A3,(1,SNLINE+1) MACRO A A3,B8 MACRO BT A3,0,*A0 MACRO L A0,NLABL MACRO S A0,SNLINE,B8 MACRO L A0,(' ') S A0,NLABL TP DRPKT+3 . IF PRECEDING READ AT THIS LEVEL MACRO ER WAIT$ . NOT FINISHED, WAIT. MACRO . . SEE IF WE ALREADY KNOW WHERE THIS PROC IS HIDING. . L A0,PACKET . NAME. L,H2 A1,MLBHL INF01 TNZ A1 J INF03 . NOT FOUND. MUST SEARCH DRUM. TNE A0,1,A1 J $+3 . FOUND IT. L,H2 A1,0,A1 . NO, TRY NEXT. J INF01 S A1,LMACLB TNZ,H2 2,A1 . IS IT IN CORE? J INF02 . NO L,M A2,1 . YES. AU,S3 A2,0,A1 . INCR RESPONSIBILITY COUNT. S,S3 A3,0,A1 AU,H1 A2,2,A1 . INCR REFERENCE COUNT. S,H1 A3,2,A1 L,H2 A0,2,A1 L A2,INCLVL TG,M A2,MAXINC J IN106 J GETING . GO LOAD NLINE. INF02 L,H1 A2,0,A1 . SIMULATE INCREMENTING T1 A,M A2,0100 . ADD 1 TO T1 S,H1 A2,0,A1 L,M A2,1 AU,H1 A2,2,A1 . INCR REFERENCE COUNT. S,H1 A3,2,A1 AU,S3 A2,0,A1 . INCR RESPONSIBILITY COUNT. S,S3 A3,0,A1 DL A2,3,A1 . RESTORE INFO TO LOCATE PROC. DS A2,DRPKT L A2,5,A1 S A2,FCTP7 L A2,6,A1 S A2,DRPKT+5 L,H2 A2,7,A1 S,H2 A2,DRPKT+4 L A2,8,A1 S A2,FILLED L A2,9,A1 J INSRRD . GO READ THE THING INTO SYM. INF03. . MACRO . DETERMINE PRIMARY PF TO SEARCH. MACRO . MACRO DL A0,PARTBL+1 ASSUME PF INPUT L,S1 A2,SPARTBL . TYPE OF INPUT TNE,M A2,050 J IN02 PF INPUT JNZ A2,$+3 TAPE INPUT USE RB FILE DL A0,PARTBL+14 CARD INPU TNZ A0 . '0 IF NO SOURCE OUT PUT SPECIFIED DL A0,PARTBL+27 RB OUTPUT FILE IN02 LMJ B11,INSRCH . TRY THE PRIMARY PF. MACRO L,M A7,0 . NOT FOUND, TRY USER LIBRARIES. MACRO L A8,USERFC MACRO TP A8 MACRO J IN025 . NO USER LIBRARIES. MACRO L A0,(' F') L A2,A7 MACRO L A1,USERFT,A2 . INTERNAL NAME FOR LIB. FI LDSC A0,30 . ALIGN IT, FI LMJ B11,INSRCH . TRY IT. MACRO A,M A7,1 . NO, MACRO JGD A8,$-6 . TRY NEXT. FI IN025 . DO JPL , DL A0,ALTLIBN . ALTERNATE LIBRARY NAME DO JPL , TZ ALTLIBN DO JPL , LMJ B11,INSRCH TZ INRLIB J IN027 . YES, TRY IT. MACRO S R15,INRLIB . NO, MARK ASSIGNED. MACRO DL A0,ALTFIL . IF TEST COMPILER, USE ALTERNATE FILE DO LMSC , TZ,S3 CRFLGS . INSTEAD OF SYS$*RLIB$. DS A0,INUSE+2 L A0,(4,INUSE) MACRO ER CSF$ . NAME INCLUD$ MACRO L A0,(3,INASG) MACRO ER CSF$ . ASG INCLUD$. MACRO JN A0,$+4 . GOOD? FI SSC A0,33 . YES, PREV ASSIGN? FI JB A0,IN025A . YES, REMOVE R-OPTION. FI J IN027 . NO FI SSC A0,33 MACRO TE,M A0,1 . PREV ASG? FI J IN13 . NO, OR OTHER ERRORS. FI IN025A. FI L,M A1,' ' . PREV ASSIGNED, MACRO S,S2 A1,INFRE+1 . REMOVE R-OPT FROM FREE. MACRO IN027 DL A0,SYSNAM . NO, TRY RLIB$. MACRO LMJ B11,INSRCH MACRO J *INFXIT REENT . MACRO INSRCH. THIS SECTION SEARCHES THE FILE NAMED IN A0,1 FOR THE ELEMENT MACRO . ELEMENT IN PACKET. RETURNS IFF NOT FOUND. ASSUMES B8 SET. MACRO . MACRO S,H2 B11,INSXIT MACRO DS A0,FCT . NAME TO FILE CTL TBL. MACRO DS A0,DRPKT STORE NAME IN DRUM READ PKT L,M A0,FCT ADDRESS OF FCT L A3,('**PF**') . FLAG TO NOT CLEAR FILE LXI,M B11,JPL$PIRCB$ LIJ B11,BRFTI$ . READ FILE TABLE INDEX J IN11J . TEST ERROR OR FILE NOT WRITTEN IN L,M A0,FCT . USE SAME CORE FOR PROC TABLE AND BUFFER L A1,BDSC1 . NAME TBL BUF, LNG. MACRO LXI,M B11,JPL$PIRCB$ LIJ B11,BRPFFPT$ . READ PROC NAME TABLE J IN06 ERROR IN READING TABLE L,M A0,FCT L,M A1,PACKET . PROC NAME TABLE SEARCH PACKET LXI,M B11,JPL$PIRCB$ LIJ B11,BFPTIS$ . SEARCH TABLE FOR NAME J IN06 ERROR GO CHECK IT . THIS SECTION READS PROC FROM FASTRAND TO BUFFERS IN APT L A1,INCLVL TG,M A1,MAXINC J IN106 . TOO MANY MACROS / INCLUDES L A8,A0 SAVE A0. L,M A0,10 REQUEST SPACE FOR LOCATOR BLOCK. LMJ B11,MPRQST . LOC IN H1(A0) J INMEM INSUFF MEMORY. SSL A0,18 L,M A3,0,A0 A3 -- AREA. S A3,LMACLB L,M A1,MLBHL FIND LAST LOCATOR, TNZ,H2 0,A1 J $+3 L,H2 A1,0,A1 J $-3 S,H2 A3,0,A1 LINK UP. L A0,(0101,0) S A0,0,A3 L A0,PACKET S A0,1,A3 MACRO NAME L A0,(1,0) S A0,2,A3 RELEASE PRIORITY, FIRST LINE LOC. DL A0,DRPKT DS A0,3,A3 FILENAME L A0,A8 RESTORE A0. L A2,FCT+7 MACRO S A2,FCTP7 . SAVE LAST DRUM ADDR THIS LEVEL. MACRO S A2,5,A3 L A2,3,A0 PROC START ADDR IN PROG FILE SZ A1 DI,M A1,28 S A1,DRPKT+5 S A1,6,A3 L,H1 A0,BDSC1 . LOC OF BUF TO FILL. MACRO S,H2 A0,DRPKT+4 S,H2 A0,7,A3 S A0,FILLED S A0,8,A3 S A2,9,A3 INSRRD L A8,LMACLB ENTRY FOR REREAD AFTER FOUND ONCE. A,M A8,2 SET LOC OF 'LAST LINE.' L,M A0,DRPKT ER IO$ READ DRUM L B10,BDSC2 . B10 IS PTR FOR NEXT WD. MACRO A B10,A2 TO USE FROM BUFFER SZ SPLIT IMAGE NOT SPLIT IN 2 BUFFERS SZ PRSPLT PROC LINE NOT SPLIT SZ INFEX =0 UNTIL FIRST NON COMMET INCLUDED TP DRPKT+3 IS READ FINISHED ER WAIT$ AN A2,BFSZM1 . BUFSIZ THIS LEVEL-1 MACRO L,S4 A4,0,B10 DELETED LINE FLAG S,H1 A4,LABBMG L,S1 A4,0,B10 S1=50 IF IT'S A LABEL IMAGE S,H2 A4,LABBMG L,S2 A4,0,B10 NUMBER WORDS IN IMAGE TG,M A4,15 CAN'T BE MORE THAN 15 J IN11 ELEMENT DESTROYED A,S2 A2,0,B10 ADD NO. WORDS IN LINE JN A2,IN03 S A2,SPLIT PROC LINE SPLIT BETWEEN BUFFERS S R15,PRSPLT SET PROC LINE FLAG TNZ A2 SN A0,SPLIT PROC LINE ENDED AT BUFFER END J IN04 IN03 A,S2 B10,0,B10 SKIP PROC LINE OR LABEL IMAGE A,M B10,1 LINE IN04 SLJ IN041 INITIATE NEXT READ J IN05 IN041R L A0,DRPKT+5 REENT A A0,SECNO . READ NEXT LOCATION. MACRO TG A0,FCTP7 . END OF INPUT? MACRO J *IN041 YES S A0,DRPKT+5 STARTING SECTOR FOR NEXT READ L,H2 A1,BUFADS . SWAP BUFFERS. MACRO TNE,H2 A1,DRPKT+4 MACRO L,H1 A1,BUFADS MACRO S,H2 A1,DRPKT+4 MACRO L,M A0,DRPKT ER IO$ FILL NEXT BUFFER J *IN041 IN05 TZ SPLIT WAS IMAGE SPLIT J IN17 YES TZ LABBMG WAS THERE A LABEL IMAGE J RDINF2 SKIP PROC LINE NEXT J RDINF GO STORE THE LINE. . THIS SECTION CHEKCS THE ERROR STATUS RETURNED FROM BSP IN06 JN A0,IN11 IT WAS AN I/O ERROR JNB A0,IN11 . NOT A PF. MACRO J *INSXIT REENT INEXIT L B8,('B8SAVE') MACRO J *INXXX REENT . ERROR MESSAGE FILING AND EXIT ROUTING INMEM LMJ B11,PERR OUT OF SPACE FOR FORM6 012,93,('MACTXT') . STORING MACROS. J PH500 . TREAT AS NOT FOUND. IN10 LMJ B11,PERR . EOS FOLLOWING INCLUDE FORM6 02,4,0 FOLLOWING STMT INCOMPLETE J *IN15 IN101 LMJ B11,PERR PROC NAME NOT A VARIALBE FORM6 022,59,GITV FATAL J *IN15 IN102 LMJ B11,PERR FORM6 010,31,PACKET DIAGNOSTIC J IN00 CHECK FOR LIST IN103 LMJ B11,PERR EOS AFTER FORM6 010,58,(', ') DIAGNOSTIC UNNECESSARY J IN01 NO LIST IN104 LMJ B11,PERR . CONSTANT IN PLACE OF LIST FORM6 020,59,GITV DIAGNOSTIC J IN01 NO LIST IN105 LMJ B11,PERR 'LIST'MISSPELLED FORM6 020,46,GITV DIAGNOSTIC UNRECOGNIZABLE ITM J IN01 NO LIST IN106 LMJ B11,PERR MACRO FORM6 02,116,0 . MACRO / INCLUDE NEST TOO DEEP. MACRO L A0,INCLVL AN,M A0,1 S A0,INCLVL J INFXIT MACRO IN11J JZ A3,INSXIT . IO 5 RETURN ON READING FILE TABLE IN11 L A0,DRPKT MACRO S A0,PACKET MACRO LMJ B11,PERR FORM6 012,18,PACKET . I/O ERR FILE $. MACRO J PH401 . UTTER CATASTROPHY - FILE PROBABLY BAD IN13 LMJ B11,PERR PROC NT FOUND FORM6 012,109,PACKET SZ LMACLB J IN19 . . READ NEXT IMAGE FROM FASTRAND. . READIN L B10,POINT NEXT CORE LOC / NEST STATEMENT. RDINF L,S1 A4,0,B10 GET LABEL IMAGE FLAG (050) S,H2 A4,LABBMG L,S4 A4,0,B10 DELETED LINE FLAG S,H1 A4,LABBMG RDINF2 L,S2 A4,0,B10 NO. WDS IN LINE TG,M A4,15 J IN11 S A4,SMTWDS NO WDS IN STATEMENT A,M A4,0,B10 AN A4,FILLED FILLED LOC OF BUFFER TO USE TG,H1 A4,DRPKT+4 . DOES STMT EXTEND TO NXT BUF? MACRO J IN16 YES L R1,SMTWDS L A0,(1,NLINE+1) A,M B10,1 BT A0,0,*B10 TRANSFER STATEMENT IN14 S B10,POINT ADJUST POINTER FOR NEXT STMT L A1,CTSLNB CTS LINE NUMBER SZ CTSLNB TZ,S2 CRFLGS CTS CALLED FORTRAN? S,H2 A1,NLINE+14 YES, PUT IN CTS LINE NUMBER L A1,(' ') TG A0,(1,NLINE+15) IS NLINE FULL J $+3 S A1,0,*A0 STORE BLANKS J $-3 L A1,NLINE+1 SSL A1,6 TNE A1,('@ END ') IS THIS THE PROC END J RDIN10 YES, CLOSE OUT READ. TNE A4,BFSZM1 MACRO SLJ IN151 IMAGE ENDED AT BUFFER END . . THROW AWAY GARBAGE, MOVE LINE INTO SYM. . L,H2 A0,LABBMG . LABEL IMAGE TE,M A0,052 . IGNORE CORRECTION LINES TZ,H1 LABBMG SKIP DELETED LINES J READIN TE,M A0,050 J NOTLAB L,H1 A0,NLINE+1 MAY BE LITERAL 'CTS' L,H2 A1,NLINE+1 MAY BE CTS LINE NUMBER TNE,M A0,'CTS' S A1,CTSLNB CTS LINE NUMBER J READIN NOTLAB . L,S1 A0,NLINE+1 TE,M A0,'C' J INN2 L A0,INCTYP JB A0,READIN . LOW BIT IS MACRO TZ INLST J READIN INN2 . L B10,(1,0) L,M A5,65 L A6,INCTYP JB A6,$+3 . ALWAYS PACK MACROS TNZ SRCLST . IF ZERO, LIST ON INCLUDE J RDIN4L L A6,(0404040404040) L,M A7,0 NONBLANK COUNT. L,M A4,1 STATE RDIN1 JPS A6,$+2 L A3,NLINE+2,*B10 L,M A2,0 LDSL A2,6 NEXT CHAR TE,M A2,' ' J RDIN2 NONBLANK. TNE,M A4,1 J RDIN4 MULTI LEAD BLANKS. A,M A4,1 NEXT STATE. TE,M A4,3 J RDIN4 LEAD BLANK. J RDIN5 EOS. RDIN2 TZ A2 J RDIN3 TRUE NONBLANK. A,M A4,1 NEXT STATE (@ FOUND.) TNE,M A4,2 EXPECTED? J RDIN4 YES RDIN3 L,M A7,0,B10 NO, TREAT AS NONBLANK. L,M A4,0 RDIN4 JGD A5,RDIN1 NEXT CHAR. TNE,M A4,2 FOUND EOS. L,M A7,0,B10 TREAT HANGING @ AS NONBLANK. . . ALLOCATE SPACE FOR STATEMENT, MOVE IT. . RDIN5 L A0,A7 A,M A0,2 EXTRA LENGT. LMJ B11,MPRQST . REQUEST SPACE J INMEM UNAVAILABLE. SSL A0,18 GET LOC. L A1,A8 LOC OF LAST LINE. S,H2 A0,0,A1 LINK UP. L,M A8,0,A0 SET NEW LAST. A,M A7,1 TRUE STMT LENGTH. L R1,A7 REPEAT COUNT. LSSL A7,18 S A7,0,A0 CTL WORD FOR LINE. A A0,(1,1) L B10,(1,NLINE+1) BT A0,0,*B10 MOVE INTO SYM. J READIN NEXT IMAGE. RDIN4L L,M A7,13 . SET FOR FULL CARD J RDIN5 . . REACHED END OF PROC. CLOSE OUT READING AND START PASSING. . RDIN10 L A0,LMACLB L,H2 A0,2,A0 LOC OF FIRST LINE. J GETING GETRW* . . THIS SECTION TESTS TO SEE IF A MACRO TO BE LOADED IS THE SAME . AS THE CURRENTLY ACTIVE ONE. IF SO IT RESETS THE LINE NUMBER TO THE . TOP AND EXITS TO CALL+2. OTHERWISE IT EXITS TO CALL +1 . NAME IS IN A0 ON ENTRANCE S B8,('B8SAVE') L B8,INCB8S . POINTS TO ACTIVE FILE TABLE L A1,LMACLB . CURRENT DESCRIPTOR BLOCK TE A0,1,A1 J GETWR1 . CURRENT MACRO IS NOT ONE TO LOAD L,H2 A0,2,A1 . LOCATION OF FIRST LINE S A0,LNMACL . RESET TO FIRST LINE L B8,('B8SAVE') J 1,B11 GETWR1 L B8,('B8SAVE') J 0,B11 . GETIN*. READ NEXT PROC LINE FROM SYM. . S,H2 B11,INXXX S B8,('B8SAVE') L B8,INCB8S GETINH L,H2 A0,LNMACL LOC NEXT MAC LINE. GETING TNZ A0 J IN181 END OF PROC. L,H1 A1,0,A0 . TEST LENGTH OF IMAGE TG,M A1,16 J IN11 L,H2 A1,0,A0 S,H2 A1,LNMACL SAVE LOC (NEXT) L,H1 R1,0,A0 COUNT TNZ DELFLG . IF DELETE ONLY LOOK AT LABEL J GET39 L A2,(0777777,0777700) AND A2,1,A0 . TEST FOR BLANKS IN COLUMN 1 TNE A3,(050505050500) J GETINH . LOOK AT NEXT LINE L,M A5,0 . ACCUMULATE SUM L,M A1,5 . COUNTS CHARACTER L A4,1,A0 . LABEL FIELD GET37 SZ A3 JGD A1,$+2 . COUN 5 CHARACTERS J GET38 LDSL A3,6 TNE,M A3,5 . TEST FOR BLANK J GET37 AN,M A3,060 . CONVERT DIGIT TO BINARY MSI,M A5,10 A A5,A3 J GET37 GET38 TE A5,DELAB . FOUND CORRECT LINE J GETINH . LOOK AT NEXT LINE GET39 . DELETE NOT ACTIVE LXM,M B10,1,A0 LXI,M B10,1 L A0,(1,NLINE+1) TZ FDASC . TEST FOR AN ASCII IMAGE J GET39A . CONVERT FD PROC TO ASCII LINE BT A0,0,*B10 L A1,(' ') TG A0,(1,NLINE+15) J $+3 S A1,0,*A0 J $-3 . TZ INFEX HAS FIRST NON COMMENT BEEN INCLUDED IN15 J INEXIT . RETURN MACRO L,S1 A0,NLINE+1 TNE,M A0,'C' IS THIS A COMMENT CARD J IN150 YES L A0,PLABL SAVE PRESENT LABEL S A0,PACKET L A0,(' ') BLANK G3915 . ASCII JOINS HERE S A0,PLABL PRESENT PLABL LMJ B11,PSTL CONVERT LABEL OF NEXT LINE L A0,PACKET RESTORE S A0,PLABL PLABL S R15,INFEX FIRST NON COMMET INCLUDED J *IN15 IN150 TZ INLST IS LIST SPECIFIED J GETINH L A0,(1,NLINE) L,H1 A1,SIRLNG . LENGTH OF IMAGE A,M A1,1 . ADD F60 ID INTO TOTAL L A2,(3,F60ID). TRAILING CONTROL WORDS L,H2 A3,FDASC . SET ACCORDING TO IMAGE LMJ B11,W60F . PLACE IMAGE IN F60 SZ,S1 NLINE RESET F60 ID J GETINH IN151R SLJ IN161 REENT SLJ IN041 INITIATE NEXT READ S B10,POINT J *IN151 . THIS SECTION HANDLES STATEMENNTS THAT ARE SPLIT BETWEEN THE BUFFS IN16 AN A4,BFSZM1 MACRO S A4,SPLIT NO WORDS IN OTHER BUFFER LNA A4,A4 A A4,SMTWDS S A4,R1 NO WORDS IN THIS BUFFER A,M B10,1 L A3,(1,NLINE+1) BT A3,0,*B10 TRANSFER PARTIAL IMAGE S A3,('SAVEA3') SLJ IN161 SWAP THE BUFFERS J IN04 INITIATE THE NEXT READ IN161R TP DRPKT+3 IS LAST READ FINISHED REENT ER WAIT$ NO WAIT LXM,H2 B10,DRPKT+4 S,H2 B10,FILLED J *IN161 . PROCESS SECOND PART OF A SPLIT STATEMENT IN17 TNZ PRSPLT IS PROC LINE BEING PROCESSED J IN18 NO SLJ IN161 SWAP THE BUFFERS TN SPLIT WAS LINE REALLY SPLIT A B10,SPLIT SZ SPLIT SZ PRSPLT J IN04 CONTINUE IN18 L R1,SPLIT L A0,('SAVEA3') SZ SPLIT BT A0,0,*B10 J IN14 FILL WITH BALNKS AND EXIT . END OF INCLUDE WAS FOUND IN181 DL A0,(' END ') . FAKE MACRO TZ FDASC J AIN181 DS A0,NLINE+1 . FORTRAN END CARD. MACRO L A1,(' ') DS A0,NLINE+3 DS A0,NLINE+5 DS A0,NLINE+7 DS A0,NLINE+9 DS A0,NLINE+11 DS A0,NLINE+13 S R15,FCPEND . MARK END READ FOR GNS. MACRO J *IN15 . RETURN. MACRO ASCII AIN181 DL A0,(' EN') DS A0,NLINE+1 DL A0,(' ') L,M A2,8 L A3,(2,0) DS A0,NLINE+3,*A3 JGD A2,$-1 L,M A0,'D' S,Q1 A0,NLINE+3 J *IN15 FIELDATA . THIS SECTION CONVERTS A FD LINE FROM INCLUDE OR MACRO . TO AN ASCII IMAGE IN NLINE G39A L,S1 A2,0,B10 L,S2 A2,0,B10 L,S3 A2,0,B10 L,S4 A2,0,B10 L,S5 A2,0,B10 LMJ B11,$+1 LXM,M A1,0 . RESTORE INCREMENT L,S6 A2,0,*B10 JGD R1,0,B11 J GT39E . ALL BUT ONE CHARACTER MOVED G39B S,Q1 A2,0,A0 S,Q2 A2,0,A0 S,Q3 A2,0,A0 LMJ B11,$+1 LXM,M A3,0 . RESET INCREMENT S,Q4 A2,0,*A0 L A4,(040040040040) . ASCI BLANKS S A4,0,A0 . INITIALIZE NEXT WORD TO BLANKS J 0,B11 GET39A JGD R1,$+1 . SET FOR JGD L A1,(1,0) . FETCH CHARACTER INDEX L A3,(1,0) . STORE CHARACTER INDEX L A4,(040040040040) . INITIALIZE FIRST WORD TO BLANKS S A4,0,A0 EX G39A,*A1 . GET A FIELD DATA CHARACTER L,H2 A2,ASCFDASC$,A2 . CONVERT TO ASCII EX G39B,*A3 . STORE AN ASCII CHARACTER J $-3 GT39E L,H2 A2,ASCFDASC$,A2 . CONVERT TO ASCII EX G39B,*A3 L,M A2,040 TZ,M 0,A3 J $-3 L A4,(040040040040) . ASCII BLANKS TG A0,(1,NLINE+21) J $+3 S A4,0,*A0 J $-3 TZ INFEX . HAS FIRST COMMENT BEEN INCLUDED J *IN15 L,Q1 A0,NLINE+1 . IS THIS A COMMENT CARD TNE,M A0,0103 . AN ASCII "C" J IN150 L A0,PLABL . SAVE PRESENT LABEL S A0,PACKET L A0,(' ') J G3915 . MACRO INCPOP*. THIS ENTRY POINT TERMINATES INPUT AT THE CURRENT LEVEL MACRO . AND RESTORES NEXT OUTER LEVEL. MACRO . MACRO S,H2 B11,INXXX S B8,('B8SAVE') MACRO L B8,INCB8S MACRO L A0,INCTYP . FLAG END FOR CURRENT LEVEL. MACRO AND,M A0,1 MACRO S A1,MACEND MACRO AN,M A1,1 MACRO S A1,INCEND MACRO . THIS SECTION CLOSES THE FILE AND RESETS THE FLAGS IN19 L A0,SNLINE,B8 MACRO S A0,NLABL L,M R1,14 THE SIR IMAGE TZ FDASCZ . TEST FOR ASCII IMAGE L,M R1,21 . LENGTH FOR AN ASCII IMAGE L A0,(1,NLINE+1) L A2,(1,SNLINE+1) AND THE LABEL A A2,B8 MACRO BT A0,0,*A2 L A0,SCPEND . RESTORE OUTER-LEVEL FCPEND. MACRO S A0,FCPEND MACRO L,H2 A2,LMACLB MACRO LOCATOR BLOCK. L R2,A2 JZ A2,$+4 L,S3 A0,0,A2 DECR RESPONSIBILITY COUNT. AN,M A0,1 S,S3 A0,0,A2 AN,M B8,INSTKL . POP UP ONE LEVEL. MACRO S B8,INCB8S MACRO L A0,INCLVL MACRO AN,M A0,1 MACRO S A0,INCLVL MACRO L A1,INCEOF . RESTORE EOF AT 0-LEVEL. MACRO TP A0 MACRO S A1,EOF MACRO L A1,INCTYP MACRO SSL A1,1 MACRO S A1,INCTYP MACRO L A1,INLST . RESTORE FCPLST. MACRO S A1,FCPLST MACRO TP A0 . TURN OFF AT 0-LEVEL. MACRO SZ FCPLST . I MEAN ON . L A1,INLSTA . S,T1 A1,COMMAC IN20 J *IN15 . THIS SECTION FREES RLIB$ CLOSIR L A0,(3,INFRE) REENT TZ INRLIB MACRO ER CSF$ . MACRO . THIS SECTION FREES ANY ADDITIONAL USER LIBRARIES AT END PH 1. MACRO . MACRO L A8,USERFC . NUMBER OF USER LIBRARIES - 1. MACRO TP A8 MACRO J CLOSB L,M A6,' ' MACRO L,M A7,'R' MACRO CLOSA L A2,A8 . INDEX USERFT. MACRO S,S2 A6,USRFRE+1 . ASSUME PREASSIGNED. MACRO TZ,H1 USERFT+USERFM,A2 S,S2 A7,USRFRE+1 . NO, SET R-OPTION ON FREE. MACRO L A0,USERFT,A2 MACRO S A0,USRFRE+2 . SET ATTACHED NAME. MACRO L A0,(3,USRFRE) . RELEASE THE FILE. MACRO TZ,H2 USERFT+USERFM,A2 ER CSF$ MACRO JGD A8,CLOSA . NEXT FILE. MACRO CLOSB . DO JPL , TNZ ALTLIBN DO JPL , J *CLOSIN L,S6 A0,CRJOPT TZ A0 . IF NON ZERO BLANK OUT R OPTION S,S2 A0,INAFRE+2 L A0,(3,INAFRE) ER CSF$ J *CLOSIN . MACRO OPNMAC*. THIS SECTION SEARCHES FOR A MACRO WHOSE NAME IS IN A0, RETURNS MACRO . TO NXT INS IF NOT FOUND, NXT INS+1 IF FOUND. MACRO . MACRO S,H2 B11,OPNMXT . SET NOT-FOUND EXIT. MACRO S B8,('B8SAVE') MACRO A,M B11,1 MACRO S,H2 B11,INXXX . SET FOUND EXIT. L A1,(' ') MACRO DS A0,PACKET . SET NAME TO FIND. MACRO S R15,SRCLST . SET NO LISTING. MACRO TZ,S1 COMMAC MACRO SZ SRCLST . SET TO LIST. MACRO L A0,INCTYP . INDICATE MACRO AT THIS LEVEL. MACRO LSSL A0,1 MACRO A,M A0,1 MACRO S A0,INCTYP MACRO LMJ B11,INFIND . SEARCH MACRO L A0,OPNMXT REENT S,H2 A0,INXXX . SET RETURN POINT. J IN19 MACRO . MACRO $(2) IN151 J $-$ REENT J IN151R REENT IN161 J $-$ REENT J IN161R REENT CLOSIN* J $-$ REENT J CLOSIR REENT OPNMXT J $-$ REENT IN041 J $-$ REENT J IN041R REENT INSXIT J $-$ REENT INXXX J $-$ REENT INFXIT J $-$ REENT LABBMG +0 FTST FORM 6,6,24 FCT EQU N0RGSA INASG '@ASG,A INCLUD$,F' PACKET TO ASG RLIB$ INFRE '@FREE,AR INCLUD$' R OPT DELETED IF RLIB PREV ASG INAFRE '@FREE,AR INCLZ$' INUSE '@USE INCLUD$,SYS$*RLIB$' INRLIB* +0 NON ZERO IF RLIB ASG PACKET 2 PROC ITEM SEARCH PACKET +0 +0 +0 MA SYSNAM 'INCLUD$ ' DO LMSC ,ALTFIL ',IP*FORT ' . ALTERNATE MACRO FILE DO JPL ,ALTFIL ',A*FOR ' END