. UNIVAC 1107 FORTRAN-IV CONTROL PROGRAM . THIS SECTION IS READ INTO MEMORY BY THE EXECUTIVE SYSTEM WHEN A COMPILATION . IS TO BEGIN. . THE COMPILER CONSISTS OF 6 PHASES WHICH ARE EACH READ BY THE CONTROL PROGRAM . IN SUCCESSION. AFTER THE EXECUTION OF PHASE 6, THE COMPILER RETURNS CONTROL TO . THE EXECUTIVE SYSTEM. . . IN ADDITION TO THE CONTROL PROGRAM, THIS SECTION CONSISTS OF . 1. THE DRUM BLOCK BUFFERING PACKAGE (RANDOM DRUM-RNDRM ) . REFERED TO BY ALL PHASES FOR PROCESSING THE GENERATED FILES AND THE INPUT . AND FINAL OUTPUT. . . 2. THE COMMUNICATION REGION (DESCRIBED IN VOL.2 OF THE INTERNAL MANUAL) . . 3 THE FILE DESCRIPTION TABLES,A TABLE FOR EACH FILE PREQ REN EQU 0 . 0 RUN NON REENTRANTLY NRN EQU 1-REN CB EQU 1 . COMPILER IS MAPPED AS BANKS RLOAD* PROC LXI,M B11,RLOAD(1,1) LIJ B11,RLOAD(2,1) END CLP* PROC L A0,CTRAP0 ER IALL$ DO CB , L,M A1,0 . RETURN PAST LOAD$ CALL DO CB , L,M A0,CLP(4,1) . NAME OF SEGMENT DO CB , LXI,M A0,-1 . DO NOT CLEAR CORE DO CB , ER LOAD$ L,M A0,CLP(3,1) S A0,N0CCTL L,M A0,CLP(2,1) DO REN , L,M A1,0 DO NRN , L,M A1,CLP(1,1) LXI,M A0,0,*0 DO REN , L,M B11,$+5 DO NRN , L,M B11,$+3 S,H2 B11,PHEXIT ER LOAD$ END STC1* EQU 03777 . NON EDITING ABSOLUTE 131K STC2 EQU 1 . INSIRUCTIONS STC3 EQU 0 . TEMP STC4 EQU 5 . COMMON 131K STC5 EQU 2 . SINGLE VARIABLES 131K STC6 EQU 4 . ARRAYS 131K STC7 EQU 5 . COUNTER USED FOR RANDOM STORAGE STC9 EQU 3 . CONSTANTS $(2) LIT $(3) . WARRT . WARNING - FORTRAN ELEMENTS ASSUME STATIC LENGTHS AND RELATIVE WARRT . POSITIONS OF ALL CELLS IN CRRGZZ. IT IS SAFE TO ADD TO END. WARRT . WARRT +0 . SO CRDUMP WILL BE AT 0100001 CRDUMP* J 0 DUMP JUMP SET BY PHASES CRC* + 0 COMMON BLOCK COUNT CRCD* + 0 COMPLEX/DOUBLE FLAG CRCDP* + 0 COMMON DEFINITION POINTS CRCRDT* +0 ALLOW MODE CONVERSION IN DATA STATEMENT IF NON ZERO CRCOMP* + 0,1 . INITIALIZE DP ON CRD* + 0 DEBUG FLAG CRE* + 0 ERROR COUNT CREDP* +0 . EQUIVALENT DEF POINTS CREP* + STC2,0 ENTRY POINT CRFL* + 0 FATAL ERROR FLAG CRGSYM* + SYM,0 GLOBAL SYM TABLE LIMITS LCN* +0 . LOCATION COUNTER POINTER CRISYM* +SYM . FIRST SYMBOL TABLE LOCATION CRLAB* + 0 EXTERNAL SYMBOL COUNT CRLIST* + 0 . 0=NO LIST, 1=PARTIAL, 2=FULL CRME* +N0MER MAX ERROR COUNT CRMLEV* + 50,0 MAX LOOP LEVEL N0LOGF* +0 . ADDRESS OF VARIABLE ASSUMED TO BE IN ALL LOGICAL IF'S CRFLGS* +1,0,0,0,0,0 . S1 - RETN=NOP, S2 NON ZERO IF CTS CALL . S3 NOT ZERO IF COMPILER NOT LOADED FROM LIB$, S3 IS TEMP TO PHASE 5 NEXD* RES 0 . PHASE 3 NAME FOR CRNEXD CRNEXD* + 0 SUBEXD LENGTH TSYM* +0 CRPRO* +0,-1 TYPE OF PROGRAM SET POSITVE AFTER BEGGINING OFPROGRAM ITEM CRALC* +1,0,0,0,0,0 . S1 = INSTR ODD BANK, S2= TEMP, S3 = VA . S4 = ARRAYS, S5 = CONSTANTS CRRELN* +010100,0 . USED TO CONTROL CONDITIONAL GENERATION OF CODE RPFLG$* +0 . USED TO CONTROL OUTPUT TO ATHENA$ CREFCT* +0 . COUNTS ENTRIES IN XREF CRDGSY* +0 . S1 NON ZERO IF SYMBOL TABLES TO BE OUTPUT BRKPTT* +0 . BREAKPOINT AND PAGE EJECT ALTERNATE PRINT FILE. CRSTC1* + STC1 CRSTC2* + STC2 CRSTC3* + STC3 CRSTC5* + STC5 131K CRSTC6* + STC6 131K CRSTC7* +STC7 CRSTC8* +0 CRSTC9* +STC9 . SYMBOLLIC COUNTER FOR CONSTANTS CRELC* + 0 . TABLES FOR ASSIGNING STORAGE CLASSES 131K + 2 . ON ODD EVEN BASIS 131K + 4 131K + 6 131K + 8 131K +10 CROLC* + 1 131K + 3 131K + 5 131K + 7 131K +9 +11 CR131K* + 0 . FLAG TO GENERATE 131K CODE 131K CRSTC4* + STC4 CRSTED* +0 NON ZERO IF EDITING STATEMENTS OCCURED +0 . NOT USED CRSYM* + 4,SYM NEXT AVAILABLE SYM ITEM CRZER* + 0 CRLC* EQU CRZER-2 CRZERM* - 0 CRBC* EQU CRZERM-2 CRHEAD* + CRBC,CRLC HEAD LINK CRGHL* EQU CRHEAD GLOBAL HEAD LINK CRLHL* + CRBC,CRLC LOCAL HEAD LINK CRIHL* + CRBC,CRLC INTEGER HEAD LINK CRRHL* + CRBC,CRLC REAL HEAD LINK CRDHL* + CRBC,CRLC DOUBLE HEAD LINK CRCHL* + CRBC,CRLC CRFHL* + CRBC,CRLC CRLOHL* + CRBC,CRLC LOGICAL HEAD LINK CRBHL* + CRBC,CRLC BOOLEAN HEAD LINK CRLBHL* +CRBC,CRLC LABEL HEAD LINK + CRBC,CRLC CRFEQ* + 0 CRPH6* + 1 CRB11* + 0 CRMSYM* + SYM+MSYM-1 . FINAL LOCATION IN SYMBOL TABLE CRPNCH* + 0 +0 . NOT USED CRSDG* + 0 NON ZERO ON SIMPLE DIAGNOSTICS FROM B OPTION +0 . NOT USED CRPRAM* + 0 START OF PREAMBLE TABLE +0 . NOT USED +0 . NOT USED CRDINT* +0 IF DINT IS MENTIONED CONTAINS CONSTANT ITEM FOR DP C CRSFL* +0 . (BEG,END) OF NAMELIST TABLE IN SYM MTFSYM CRSFNX* -1,SYM+MSYM-2 NEXT ADDRESS IN DYNAMIC POOL + 0 + 0 + 0 CRENT* +0 NON ZERO IF ENTRY HAS APPEARED CRIFZ* +0 NON ZERO IF THERE WAS AN INTERNAL FUNCTION COMDT* +0 USED TO IMPLEMENT DATA STATEMENT VARIATIONS +0 . NOT USED CRLIBR* + 0 . LIBRARY COMPATABILITY FLAG 131L CRDBUG* + 0 CRUAL* +0 NON ZERO FOR LIMITED REENTRANT CODE CRCNVT* +0 NON ZERO IF DOUBLE PREC CONSTANTS ARE TO BE TREATED AS REAL CRMON* +0 . H1 NON ZERO FOR CODE AND H2 NON ZERO FOR ALL COMFL* +9,3,0,0,0,0 S1 IS NUMBER OF J FACTORS S2 IS THRD QUATER NUMMBER . H2 IS NON ZERO FOR COUNT FROM RIGHT SEQNO* +0 . COMMON SYMBOLE FOR PHASES 3 CUSFL* +1 NON ZERO TO SUPPRESS ALL DUMPS CONTNG BGKLDG* . . NAME KLUDGE TO KEEP BUG NOT UNDEF IN PH1131K BUG* + 0 . BUG AND DMPFLG WERE MOVED HERE SO THAT 131K DMPFLG* + 0 . DUMPS OF ZERO LEVEL CODE COULD COME OUT 131K + 0 . ON A DIAGNOSTIC 131K MAXD* + 0177777 . DIMENSION SIZE IS DINAMIC 131K CRREFL* +0 . S1 COMPLEX, S2 DOUBLE PREC, S3 IO, S4 IO WITH UNIT . S5 NAMELIST READ, S6 NL WRITE CRSERR* +0 EXEC 8 ONLY NON ZERO FOR SIR ERROR N5RGFB* +0777777 . DEFINES VARIABLE AT CALL N5RGFC* +0777777 . DEFINES START FO REGISTER SAVE AREA CRTRAC* +0 GLOBAL FLAGS FOR TRACE MODE TRACE . 1 IS SHORT LINE TRACE . 2 IS MATERIALIZE ALWAYS TRACE . 4 IS OCTAL FOR REAL OR INTEGER TRACE . SUPPRESSING DIAGNOSTIC INFO S6 NON ZERO NO NER10 CALLS PARTBZ* +0 SAVE OPTION LETTERS COMMAC* +0 GLOBAL FLAGS FOR MACOR STATEMENT COMVER* +0 VERSION FOR CREATED ELEEMENT FROM MACRO STATEMENT COMNAM* +0 NAME OF CREATED ELEMENT FROM MACRO STATEMENT FEXIT +0 SAVES RETURN POINT FOR COMPILER CROWN* +1 CRN0DP* +0 NON ZERO FOR BUFFER DUMPS BETWEEN PHASES CRLBCM* +1 . FORCE UNIVAC LIB COMPATIBILITY IF NON 0 U1110A* +0 . S1 IS 1110, S2 IS REENTRANT LIB. CREMOT* +0 NON ZERO IF DEMAND TTY TRACE CRSD1* +0 SET NON ZERO TO SUPPRESS SOME DIAGNOSTICS TRACE CRPD1A* +0 NON ZERO TO SUPPRESS DIAGNOSTICS TRACE CRSTEX* +0 NON ZERO IF TIME SHARE EDIT REQUIRED TSEDIT CRAGDG* +0 CRJOPT* +0 . FLAGS FOR OPTIONS DO EX8=1 ,USRAD$* +0 CRSPSU* +0 IF NONZERO ONLY 1108 SUBSCRIPTS ALLOWED CR360C* +0 . IF NON ZERO 360 COMPATILIBILITY COMVB* +0 HEADLINK FOR COMMON VARIABLES EQVTI* +0 HEADLINK FOR EQUIVALENT VARIABLES FQEHLK* +0,FQEHLK . HEADLINK FOR FREE STORAGE MLINK* +0 LINK FLAG CELL FOR MTLT MLBHL* +0 HEADLINK FOR MACRO LOCATOR TABLE CRLNLB* +0 LINK FOR COMMON BLOCKS CRLNAR* +0 LINK FOR DUMMY ARGUMENTS CRLNSB* +0 LINK FOR SUBROUTINE ENTRIES CRLNIF* +0 LINK FOR INTERNAL FUNCTIONS CRLPLB* -1 INDEX TO LAST LABELED COMMON BLOCK RPFOR$* +0 +0 +0 CRCRFT* +0 H2 CONTAINS LOC OF CROSS REF FILE SLCRX* +0 2 WORD PACKET FOR CROSS REF INSERTION +0 EPPTR* +0 . POINTER TO EP TABLE IN SYM (BEGIN,END) EPSVI* +0 . POINTER TO A PART IN EP TABLE CRTIME* +0 . BEGINNING CPU TIME N0LA* +020000,0 . SYM TABLE LOC OF FIRST VARIABLE IN NSCRH N0LB* +020000,0 . SYM TABLE LOC OF FIRST VARIABLE IN NBF0$ N0LC* +020000,0 . FIRST AND ONLY LOC IN BLOCK TO PASS LOC IN STORAGE IN N CRCRFI* +0 BLOCK BUFFERING CONTROL WORD CRCRFJ* +0 ST* +0 STATEMENT TYPES AS USED IN PHASE 1 LRSTC1* +0 . USED AS COUNTERS BY PHASE 5 TO GENERATE ABSOLUTE +0 . INSTRUCTIONS +0 . CONSTANTS AND TEMPS +0 . ARRAYS +0 . SINGLE VARIABLES +0 . STATIC DIAGNOSTIC +0 . DBANK INSTRUCTIONS +0 . CONSTANTS RES 3 BSTC1* +0 . PSUEDO ABSOLUTE BSTC2* +0 . INSTRUCTIONS BSTC3* +0 . CONSTANTS AND TEMP BSTC4* +0 . ARRAYS BSTC5* +0 . VARIABLES +0 . INSTRUCTIONS +0 . DUMMY USED FOR INDEXING +0 . FOR BANK STATEMENT +0 . ALSO NEXT THREE +0 +0 DO JPL ,DQFB1* RES 9 . INITIAL ACCOUNTING DO JPL ,DQFB2* RES 9 . FINAL ACCOUNTING DO JPL ,DQFB3* RES 12 . EDIT AREA DO JPL ,DQPKT* +DQFB1,DQFB2 DO JPL , +037012,DQFB3 DO JPL ,ALTLIBN* RES 2 . ALTERNATE LIBRARY NAME MCEXPD* +0 . IF NON ZERO GIVES SPACE TO RELEASE AFTER PHASE 1 DELVHL* +CRBC,CRLC . HEADLINK FOR DELTA V'S CRLNHL* +CRBC,CRLC +CRBC,CRLC . HEAD LINK FOR LONG NAMES N1FIX* +020000,0 CRFLD* +0 . SYMBOL TABLE LOCATION OF FLD CRCHAR* +0 . FLAGS USED FOR CHARACTER PROCESSING FDASCZ* +0 . FIELDATA/ASCII INDICATOR FOR ENTIRE ELEMENT CRMXOF* +0 . ACCUMULATES LARGEST NEGATIVE OFFSET N0SYSLV* +0 . 0 ON LEVEL 31 NON ZERO ON LEVEL 36 CRNCCB* +0 . FLAGS FOR NON CONFIGURED TESTING CRVRSY* +0 . SYM POINTER OF VAR TO BE NUMBER OF ARGS CRVRSQ* +0 . TEMPORARY FOR VARIABLE LENGTH SEQUENCES LC1* EQU 1 LC2* EQU 0 LC3* EQU 2 LC7* EQU 5 LC8* EQU 6 LC9* EQU 7 . FOR CHARACTER TEMP F30I* EQU 75 . R11 PHASES 0-III F30J* EQU 76 . R12 PHASES 0-III F40I* EQU 71 F40J* EQU 72 F50I* EQU 73 F50J* EQU 74 F51I* EQU 75 F51J* EQU 76 F61I* EQU 71 F61J* EQU 72 F60I* EQU 77 . R13 ONLY USE IN COMPILER F60J* EQU 78 . R14 ONLY USE IN COMPILER . LENGCR* EQU $(3)-CRDUMP . LENGTH OF CR FOR DUMPS. . CRRGZZ INFO 2 3 . . THIS PART IS THE FILE DESCRIPTION TABLES FOR . ALL FILES USED BY THE COMPILER. $(7) LNBF1 EQU LNBUF+LNBUF LNBF2 EQU LNBF1+LNBUF F30* RF$FCT 'PSF$ ' FPOOL,LNBUF POOL,POOL+LNBUF F40* RF$FCT 'PSF$ ' FPOOL,LNBUF POOL3,POOL3+LNBUF F50* RF$FCT 'PSF$ ' FPOOL,LNBUF POOL+LNBF1,POOL+LNBF2 F51A* RF$FCT 'PSF$ ' FPOOL,LNBUF POOL,POOL+LNBUF F60* RF$FCT 'PSF$ ' FPOOL,LNBUF POOL+LNBF1,POOL+LNBF2 F61* RF$FCT 'PSF$ ' FPOOL,LNBUF POOL3,POOL3+LNBUF FPOOL* RF$POL 780,NSPB,0 . # OF BLOCKS, # OF SECTORS/BLOCK,START MAXBLK* +0 . LARGEST BLOCK NUMBER USED FILTZZ INFO 2 7 $(2) . . PRINT PACKETS P FORM 12,6,18 PRNTP* P 1,7,BMX PRNTPA* P 1,7,CM PRNTB* P 1,3,FSTERR FSTERR 'INTERNAL I/O ERROR' PARTBL* . DO 40 , +0 . START FORTRAN COMPILATION SET UP FILE DESCRIPTION TABLES' FORTRN* . L A0,CTRAP0 ER IALL$ DO CB , LXI,M B11,INSFRT . NAME OF IBANK DO CB , LIJ B11,$+1 LOAD IBANK SLJ VAL1 LMJ B11,PREPRO J PRXXX PREPRO ERROR . LOAD EACH PHASE SUCCESSIVLEY THEN EXECUTE THE PHASE L,M A0,SSS L,M A1,0 LXI,M A0,-1 ER LOAD$ SPD A1 . CAPTURE PSR OR,M A1,1*/3 . SET QUARTER WORD BIT LPD 0,A2 CLP N1MN N1SCD 1 IN1SCD SPD A1 . GET CURRENT PSR SETTINGS AND,XM A1,-1*/3 . A2 HAS QUARTER WORD REMOVED LPD 0,A2 . RESET PSR DO REN , RLOAD N1SCDR N1MN CLP N2MN N2MNX 2 IN2MNX DO REN , RLOAD N2MNR N2MN . TEST FOR BLOCK DATA PROGRAM L,H2 A0,CRPRO TNZ CRFL ABORT TO PHASE 6 IF FATAL ERROR TNE,M A0,3 J RP6 CLP N3MN N3SCD 3 IN3SCD DO REN , RLOAD N3SCDR N3MN TZ CRFL J RP6 ABORT TO PHASE 6 IF FATAL ERROR CLP N5MN N5SCD 5 IN5SCD DO REN , RLOAD N5SCDR N5MN RP6* L,M A0,SEXIT S,H2 A0,PHEXIT SPD A1 . CAPTURE PSR OR,M A1,1*/3 . SET QUARTER WORD BIT LPD 0,A2 CLP N6MN N6SCD 6 IN6SCD DO REN , RLOAD N6SCDR N6MN SEXIT* . SEXITT L,M A0,4 L,H1 A1,CRE AND,M A1,0777700 TZ A2 . SIMULATE TZ,T1 CRE TOP A0,PARTBL ER EXIT$ NO RETURNS TO EXEC ER ABORT$ ERRORS AND X OPTION PRXXX L,M A0,1 S,S1 A0,CRE S,S2 A0,CRE J SEXIT CM* 'COMPILATION DONE ON DD MMM YY AT HH:MM:SS ' BMX* RES 7 PHEXIT* J 0 . EXIT FOR EACH PHASE F30ERX* NOP . SLJ N0RGSV L A0,PRNTB ER PRINT$ SZ A0 ER IALL$ ER ERR$ CTRAPD. CONTNG L,M A0,1 S,S1 A0,CRE S,S2 A0,CRE S A0,CRFL LMJ B11,N0DMP +N0RGSA +((1)) FLAG FOR ERROR ENTRANCE J SEXIT ERROR RETURN +500,0 WALKBACK L,M A15,RP6 S A15,CRFL L,M A14,1 S,S1 A14,CRE S,S2 A14,CRE . SET FATAL ERROR TLE,H2 A15,PHEXIT J SEXIT ABORT L A0,CTRAP0 ER IALL$ J RP6 TRY TO EDIT SOMETHING . CONTNG . PHASE 0 CONTINGENCY TRAP; PRODUCES A PHASE 0 DUMP AND ABORTS TO CONTNG . PHASE 6 IF WE HAVEN'T BEEN THERE YET. THE PHASE 0 DUMP IS CONTNG . PRECEDED BY A REGISTER DUMP WITH CURRENT PHASE IN B0, CONTINGENCY CONTNG . DESCRIPTION IN R15. CONTNG . CONTNG CTRAP0* +0123700,$+1 CTRAP +0 . CONTING PARAMS. CONTNG +0 CONTNG ER CEND$ SLJ N0RGSV CONTNG LMJ B11,CONTTT +006000,CTRAP L,M A0,'0' A,S6 A0,N0CCTL S,S6 A0,CTRAPM+1 L A0,(0102,CTRAPM) ER PRINT$ J CTRAPD CONTNG CTRAPM 'PAST PHASE 0' N0CCTL* +0 LIT END