Annotation of researchv10no/cmd/pfort/MAIN0.f, revision 1.1.1.1

1.1       root        1:       INTEGER STMT, PSTMT, SYMLEN, OUTUT, SYMHD, BNEXT, HASH, DSA,
                      2:      *    STACK, DOLIST, DOPT, OUTUT2, OUTUT3, PDSA, OUTUT4, REF, PREF,
                      3:      *    PNODE, PLAT, PCOM, COM
                      4:       LOGICAL ERR, SYSERR, OPT, P1ERR, ABORT, P2
                      5:       LOGICAL SW, QBR
                      6:       COMMON /SWS/ SW(10)
                      7: C*****SWS
                      8: C     SW(1) (LOG) IF TRUE, CAN USE END= OPTION IN READ STMTS
                      9: C
                     10:       COMMON /OPTNS/ OPT(5), P1ERR
                     11: C
                     12: C*****OPTNS
                     13: C     OPT(1) (LOG) IF TRUE, SYMBOL TABLE PRINTED FOR EACH P. U.
                     14: C     OPT(2) (LOG) IF TRUE, CROSS REFERENCES PRINTED FOR EACH SYMBOL
                     15: C     OPT(3) (LOG) IF TRUE, PASS 2 IS EXECUTED
                     16: C     OPT(4) (LOG) IF TRUE, LISTING PRINTED FOR EACH P. U.
                     17: C     OPT(5) (LOG) IF TRUE, FORTRAN PGM COMPILED AFTER VERIFIER
                     18: C     RUN;  IF ANY OF THESE ARE FALSE THE CORRESPONDING ACTION IS NOT TA
                     19: C     P1ERR (LOG) SET TO TRUE IF INFO NORMALLY SAVED FOR PASS 2 IS
                     20: C     SUPPRESSED FOR THIS P. U.
                     21: C
                     22:       COMMON /INPUT/ NSTMT, PSTMT, STMT(1327)
                     23: C
                     24: C*****INPUT
                     25: C     NSTMT (INT) INDEX OF END-OF-INPUT-STMT CHARACTER IN STMT
                     26: C     PSTMT (INT) POINTS TO CURRENT POSITION IN STMT (EXCEPT IN LEXICAL
                     27: C     SUBPGMS WHERE IT IS UPDATED IN CALLING SUBPGM AFTER A TOKEN IS
                     28: C     FOUND)
                     29: C     STMT (INT) ENCODED FORM OF DEBLANKED INPUT STMT
                     30: C
                     31:       COMMON /CEXPRS/ LSTACK, STACK(620)
                     32: C
                     33: C*****CEXPRS
                     34: C     LSTACK (INT) LENGTH OF STACK
                     35: C     STACK(*), (INT) ARRAY USED IN EXPR AS A STACK; ALSO FOR AUXILLARY
                     36: C     STORAGE AND OUTPUT
                     37: C
                     38:       COMMON /PARAMS/ INUT, OUTUT, NOCHAR, SYMLEN, OUTUT2, OUTUT3,
                     39:      *    OUTUT4
                     40: C
                     41: C*****PARAMS
                     42: C     INUT (INT) LOGICAL INPUT NUMBER FOR THE HOST MACHINE
                     43: C     OUTUT (INT) LOGICAL OUTPUT NUMBER FOR THE HOST MACHINE
                     44: C     NOCHAR (INT) NUMBER OF CHARACTERS PER MACHINE WORD IN HOST
                     45: C     SYMLEN (INT) NUMBER OF WORDS NECESSARY ON HOST TO STORE 6
                     46: C     CHARACTERS (I.E. A FORTRAN SYMBOL)
                     47: C     OUTUT2 (INT), OUTUT3(INT), OUTUT4(INT) LOGICAL OUTPUT NUMBERS
                     48: C     FOR THE HOST MACHINE TO BE USED BY THE VERIFIER FOR INTERPASS
                     49: C     COMMUNICATION
                     50: C
                     51:       COMMON /FACTS/ NAME, NOST, ITYP, IASF
                     52: C
                     53: C*****FACTS
                     54: C     NAME (INT) INDEX IN SYMBOL TABLE OF ENTRY FOR CURRENT P.U.
                     55: C     NOST (INT) STMT NUMBER OF CURRENT STMT BEING PROCESSED
                     56: C     ITYP (INT) TYPE OF STMT CURRENTLY BEING PROCESSED (SEE PU
                     57: C     FOR FURTHER DOC)
                     58: C
                     59:       COMMON /DETECT/ ERR, SYSERR, ABORT
                     60: C
                     61: C*****DETECT
                     62: C     ERROR (LOG) SET TO TRUE IN VARIOUS SUBPGMS USUALLY TO CEASE PROCES
                     63: C     OF CURRENT STMT
                     64: C     SYSERR (LOG) IRRECOVERABLE ERROR IN SYSTEM; (E.G., TABLE OVERFLOW)
                     65: C     IN PASS 1 CAUSES CURRENT P.U. TO HAVE AN END STMT SIMULATED AND
                     66: C     EXECUTION PROCEDES TO NEXT P.U.;  IN PASS 2 CAUSES PROCESSING
                     67: C     OF PROGRAM TO CEASE.
                     68: C
                     69:       COMMON /TABL/ NEXT, LABHD, SYMHD, BNEXT
                     70: C
                     71: C*****TABL
                     72: C     NEXT (INT) POINTS TO NEXT FREE WORD IN DSA (COUNTING FROM DSA(1))
                     73: C     LABHD (INT) POINTS TO HEAD OF LINEAR LINKED LIST IN DSA OF ALL
                     74: C     LABELS IN P.U.
                     75: C     SYMHD (INT) POINTS TO HEAD OF LINEAR LINKED LIST IN DSA OF ALL
                     76: C     SYMBOLS IN P.U.
                     77: C     BNEXT (INT) POINTS TO NEXT FREE WORD IN DSA (COUNTING FROM
                     78: C     DSA(LDSA))
                     79: C
                     80:       COMMON /CHASH/ LHASH, HASH(401)
                     81: C
                     82: C*****CHASH
                     83: C     LHASH (INT) LENGTH OF HASH ARRAY
                     84: C     HASH (*) (INT) HASH TABLE USED TO INDEX INTO DSA
                     85: C
                     86:       COMMON /CTABL/ LDSA, PDSA, DSA(5000)
                     87: C
                     88: C*****CTABL
                     89: C     LDSA (INT) LENGTH OF DSA
                     90: C     DSA(*) (INT) SYMBOL TABLE (SEE LOOKUP FOR MORE EXPLICIT DOC)
                     91: C
                     92:       COMMON /DOS/ DOPT, LDO, DOLIST(192)
                     93: C
                     94: C*****DOS
                     95: C     DOPT (INT) POINTER TO FIRST FREE WORD IN DOLIST
                     96: C     LDO (INT) LENGTH OF DOLIST
                     97: C     DOLIST (*) (INT) ARRAY USED AS STACK FOR NESTING OF DOS (USED
                     98: C     TO TEST FOR LEGAL BRANCHING WITHIN P.U. (SEE DOSPEC FOR FURTHER
                     99: C     DOC)
                    100: C
                    101:       COMMON /LISTDO/ LPT, LEN, LS(64)
                    102: C
                    103: C*****LISTDO
                    104: C     LPT (INT) POINTER TO FIRST FREE WORD IN LS
                    105: C     LEN (INT) LENGTH OF LS
                    106: C     LS (*) (INT) ARRAY USED AS STACK FOR NESTING OF IMPLIED
                    107: C     DO'S IN INPUT/OUTPUT STMTS (SEE DOSPEC FOR FURTHER DOC)
                    108: C
                    109:       COMMON /PASS/ P2, QBR
                    110: C
                    111: C*****PASS
                    112: C     P2 (LOG) IF TRUE, VERIFIER IS IN PASS 2; ELSE VERIFIER IS IN PASS
                    113: C     QBR (LOG) IF TRUE, VERIFIER IS TO PRINT ERROR MESSAGES
                    114: C     ELSE IS NOT
                    115: C
                    116:       COMMON /CREF/ LREF, PREF, REF(100)
                    117: C
                    118: C*****CREF
                    119: C     LREF (INT) TOTAL LENGTH OF ARRAY REF
                    120: C     PREF (INT) CURRENT LENGTH OF REF
                    121: C     REF (*) (INT) ARRAY CONTAINING INFORMATION CONCERNING A SUBR/FCN
                    122: C     REF (SEE SETREF FOR FURTHER DOC)
                    123: C
                    124:       COMMON /HEAD/ LNODE, PNODE, NODE(500)
                    125: C
                    126: C*****HEAD
                    127: C     LNODE (INT) LENGTH OF NODE
                    128: C     PNODE (INT) POINTER TO NEXT FREE WORD IN NODE
                    129: C     NODE (*) (INT) ARRAY OF INDICES OF P.U. ENTRIES IN LAT
                    130: C
                    131:       COMMON /GRAPH/ LLAT, PLAT, LAT(6000)
                    132: C
                    133: C*****GRAPH
                    134: C     LLAT (INT) LENGTH OF LAT
                    135: C     PLAT (INT)  POINTER TO NEXT FREE WORD IN LAT
                    136: C     LAT (*) (INT) ARRAY WHOSE ENTRIES DESCRIBE EACH P.U. IN PGM
                    137: C     AND THEIR INTER-RELNS (SEE SETNOD FOR FURTHER DOC)
                    138: C
                    139:       COMMON /COMS/ LCOM, PCOM, COM(300)
                    140: C
                    141: C*****COMS
                    142: C     LCOM (INT) LENGTH OF COM
                    143: C     PCOM (INT) POINTER TO NEXT FREE WORD IN COM
                    144: C     COM (*) (INT) ARRAY WHOSE ENTRIES DESCRIBE EACH COMMON BLOCK
                    145: C     IN PGM (SEE  SETCOM FOR FURTHER DOC)
                    146:       COMMON /SCR1/ LINODE, INODE(500)
                    147:       COMMON /SCR2/ LNNODE, NNODE(500)
                    148: C
                    149: C***SCR1,SCR2,SCR3
                    150: C     INODE(INT), NNODE(INT) SCRATCH ARRAYS KEYED ON LENGTH NODE(*)
                    151: C     LINNODE = LNNODE .GE. MAX( LNODE, LCOM/(SYMLEN+5) )
                    152: C
                    153: C     THREE MORE BLOCK COMMON REGIONS ARE USED : STS -SEE TYPST
                    154: C     TRANS - SEE MAPCHR EXPRS - SEE EXPR FOR FURTHER DOC
                    155: C
                    156:       QBR = .FALSE.
                    157:       NOCHAR = 4
                    158:       INUT = 5
                    159:       OUTUT = 6
                    160:       OUTUT2 = 7
                    161:       OUTUT3 = 8
                    162:       OUTUT4 = 9
                    163: C      NOCHAR WAS &, OUT2-4 was 12,13,14 in distribution tape
                    164:       REWIND INUT
                    165:       REWIND OUTUT2
                    166:       REWIND OUTUT3
                    167:       REWIND OUTUT4
                    168:       LEN = 64
                    169:       SYMLEN = (5/NOCHAR) + 1
                    170:       P2 = .FALSE.
                    171:       ERR = .FALSE.
                    172:       ABORT = .FALSE.
                    173:       SYSERR = .FALSE.
                    174:       SW(1) = .FALSE.
                    175:       PDSA = 1
                    176:       LDSA = 5000
                    177:       LHASH = 401
                    178:       DO 10 I=1,LHASH
                    179:         HASH(I) = 0
                    180:    10 CONTINUE
                    181:       OPT(1) = .TRUE.
                    182:       OPT(2) = .TRUE.
                    183:       OPT(3) = .TRUE.
                    184:       OPT(4) = .TRUE.
                    185:       OPT(5) = .FALSE.
                    186:       LSTACK = 620
                    187:       LREF = 100
                    188:       PREF = 1
                    189:       LDO = 192
                    190:       CALL OVRLAY(1)
                    191:       CALL PU
                    192:       IF (.NOT.OPT(3) .OR. SYSERR) GO TO 30
                    193:       P2 = .TRUE.
                    194:       IF (.NOT.OPT(4)) WRITE (OUTUT,99999)
                    195: 99999 FORMAT (1H1)
                    196:       CALL OVRLAY(2)
                    197:       LLAT = 6000
                    198:       PLAT = 1
                    199:       BNEXT = LDSA
                    200:       NEXT = 1
                    201:       LNODE = 500
                    202:       PNODE = 1
                    203:       LCOM = 300
                    204:       PCOM = 1
                    205:       LINODE = LNODE
                    206:       LNNODE = LNODE
                    207: C
                    208: C     PASS 1 CAN SUPPRESS PASS 2 PROCESSING FOR SPECIFIC P.U.
                    209: C     BUT NEVER SHUTS OFF PASS 2 COMPLETELY;  PASS 2 CAN CEASE
                    210: C     PROCESSING FOR VARIOUS REASONS:
                    211: C      1. 2 SUBPRGMS WITH SAME NAME(IN SETNOD)
                    212: C      2. NO PROGRAM UNIT SUCCESSFULLY PASSED TO PASS 2
                    213: C       (IN CONSTR)
                    214: C      3. RECURSION (IN ASLEV AND INVOKE)
                    215: C     IF MISSING SUBPRGMS ARE DISCOVERED, PASS 2 CAN
                    216: C     PROCEDE WITH INCOMPLETE PROCESSING, A MESSAGE
                    217: C     IS PRINTED TO INFORM THE USER
                    218: C
                    219:       REWIND OUTUT2
                    220:       REWIND OUTUT3
                    221:       REWIND OUTUT4
                    222:       CALL CONSTR(IROOT)
                    223: C     CAN RETURN FROM CONSTR IN ERROR CONDITION WITH FILES LACKING
                    224: C     VERIFIER SOFTWARE END OF FILE
                    225:       IF (ABORT .OR. SYSERR) GO TO 30
                    226:       REWIND OUTUT4
                    227:       REWIND OUTUT3
                    228:       REWIND OUTUT2
                    229:       CALL CHECKS(IROOT)
                    230:    20 REWIND INUT
                    231:       CALL OVRLAY(3)
                    232:       CALL COMPIL(.NOT.(ABORT.OR.SYSERR).AND.OPT(5))
                    233:       STOP
                    234:    30 WRITE (OUTUT,99998)
                    235: 99998 FORMAT (47H1INTER-PROGRAM-UNIT COMMUNICATIONS NOT VERIFIED)
                    236:       GO TO 20
                    237:       END

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.