Annotation of researchv10no/cmd/pfort/MAIN0.f, revision 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.