|
|
1.1 ! root 1: C COMMENT SECTION. 00010103 ! 2: C DATE***82/08/02*18.33.46 ! 3: C OWNER PRE/850703/TC-85- -410/ /FSTC/278FCVS*F78UBP20/ ! 4: C AUDIT FCVS78 V2.0 ! 5: C 00020103 ! 6: C FM103 00030103 ! 7: C 00040103 ! 8: C THIS ROUTINE IS A TEST OF THE X FORMAT AND IS TAPE AND PRINTER00050103 ! 9: C ORIENTED. THE ROUTINE CAN ALSO BE USED FOR DISK. BOTH THE READ 00060103 ! 10: C AND WRITE STATEMENTS ARE TESTED. VARIABLES IN THE INPUT AND 00070103 ! 11: C OUTPUT LISTS ARE INTEGER OR REAL VARIABLES, INTEGER ARRAY ELEMENTS00080103 ! 12: C OR ARRAY NAME REFERENCES. READ AND WRITE STATEMENTS ARE DONE 00090103 ! 13: C WITH FORMAT STATEMENTS. THE ROUTINE HAS AN OPTIONAL SECTION OF 00100103 ! 14: C CODE TO DUMP THE FILE AFTER IT HAS BEEN WRITTEN. DO LOOPS AND 00110103 ! 15: C DO-IMPLIED LISTS ARE USED IN CONJUNCTION WITH A ONE DIMENSIONAL 00120103 ! 16: C INTEGER ARRAY FOR THE DUMP SECTION. 00130103 ! 17: C 00140103 ! 18: C THIS ROUTINE WRITES A SINGLE SEQUENTIAL FILE WHICH IS 00150103 ! 19: C REWOUND AND READ SEQUENTIALLY FORWARD. EVERY RECORD IS READ AND 00160103 ! 20: C CHECKED FOR ACCURACY AND THE END OF FILE ON RECORD 31 IS ALSO 00170103 ! 21: C CHECKED. DURING THE READ AND CHECK PROCESS THE FILE IS REWOUND 00180103 ! 22: C TWICE. THE FIRST PASS CHECKS THE ODD NUMBERED RECORDS AND THE 00190103 ! 23: C SECOND PASS CHECKS THE EVEN NUMBERED RECORDS. 00200103 ! 24: C 00210103 ! 25: C THE LINE CONTINUATION IN COLUMN 6 IS USED IN READ, WRITE, 00220103 ! 26: C AND FORMAT STATEMENTS. FOR BOTH SYNTAX AND SEMANTIC TESTS, ALL 00230103 ! 27: C STATEMENTS SHOULD BE CHECKED VISUALLY FOR THE PROPER FUNCTIONING 00240103 ! 28: C OF THE CONTINUATION LINE. 00250103 ! 29: C 00260103 ! 30: C REFERENCES 00270103 ! 31: C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, 00280103 ! 32: C X3.9-1978 00290103 ! 33: C 00300103 ! 34: C SECTION 8, SPECIFICATION STATEMENTS 00310103 ! 35: C SECTION 9, DATA STATEMENT 00320103 ! 36: C SECTION 11.10, DO STATEMENT 00330103 ! 37: C SECTION 12, INPUT/OUTPUT STATEMENTS 00340103 ! 38: C SECTION 12.8.2, INPUT/OUTPUT LIST 00350103 ! 39: C SECTION 12.9.5.2, FORMATTED DATA TRANSFER 00360103 ! 40: C SECTION 13, FORMAT STATEMENT 00370103 ! 41: C SECTION 13.2.1, EDIT DESCRIPTORS 00380103 ! 42: C 00390103 ! 43: DIMENSION IDUMP(136) 00400103 ! 44: DIMENSION IADN11(5), IADN12(3), IADN13(3) 00410103 ! 45: CHARACTER*1 NINE,IADN11,ICON04,ICON06,IDUMP 00420103 ! 46: CHARACTER*2 IADN12 00430103 ! 47: CHARACTER*3 IADN13 00440103 ! 48: DATA NINE/'9'/ 00450103 ! 49: DATA IADN11/'A', 'B', 'C', 'D', 'E'/, IADN12 / 'HE', 'LL', 'O'/ 00460103 ! 50: 1,IADN13 / 'H', 'EL', 'LO' / 00470103 ! 51: C 00480103 ! 52: 77701 FORMAT ( 80A1 ) 00490103 ! 53: 77702 FORMAT (10X,19HPREMATURE EOF ONLY ,I3,13H RECORDS LUN ,I2,8H OUT O00500103 ! 54: 1F ,I3,8H RECORDS) 00510103 ! 55: 77703 FORMAT (10X,12HFILE ON LUN ,I2,7H OK... ,I3,8H RECORDS) 00520103 ! 56: 77704 FORMAT (10X,12HFILE ON LUN ,I2,20H TOO LONG MORE THAN ,I3,8H RECOR00530103 ! 57: 1DS) 00540103 ! 58: 77705 FORMAT ( 1X,80A1) 00550103 ! 59: 77706 FORMAT (10X,43HFILE I09 CREATED WITH 31 SEQUENTIAL RECORDS) 00560103 ! 60: 77751 FORMAT ( I3,2I2,3I3,I4,5X,I5,5X,F5.2,5X,5A1,5X,I5,5X,F5.4,5X,2A2,A00570103 ! 61: 11 ) 00580103 ! 62: 77752 FORMAT ( I3,2I2,3I3,I4,I5,5X,F5.2,5X,5A1,5X,I5,5X,F5.4,5X,A1,2A2,500590103 ! 63: 1X ) 00600103 ! 64: 77753 FORMAT (7X,I3,6X,I4,5X,I5,15X,A1,9X,I5,5X,F5.4,9X,A1 ) 00610103 ! 65: 77754 FORMAT (7X,I3,6X,I4,I5,15X,A1,9X,I5,5X,F5.4,9X,A1 ) 00620103 ! 66: C 00630103 ! 67: C 00640103 ! 68: C ********************************************************** 00650103 ! 69: C 00660103 ! 70: C A COMPILER VALIDATION SYSTEM FOR THE FORTRAN LANGUAGE 00670103 ! 71: C BASED ON SPECIFICATIONS AS DEFINED IN AMERICAN NATIONAL STANDARD 00680103 ! 72: C PROGRAMMING LANGUAGE FORTRAN X3.9-1978, HAS BEEN DEVELOPED BY THE 00690103 ! 73: C FEDERAL COBOL COMPILER TESTING SERVICE. THE FORTRAN COMPILER 00700103 ! 74: C VALIDATION SYSTEM (FCVS) CONSISTS OF AUDIT ROUTINES, THEIR RELATED00710103 ! 75: C DATA, AND AN EXECUTIVE SYSTEM. EACH AUDIT ROUTINE IS A FORTRAN 00720103 ! 76: C PROGRAM, SUBPROGRAM OR FUNCTION WHICH INCLUDES TESTS OF SPECIFIC 00730103 ! 77: C LANGUAGE ELEMENTS AND SUPPORTING PROCEDURES INDICATING THE RESULT 00740103 ! 78: C OF EXECUTING THESE TESTS. 00750103 ! 79: C 00760103 ! 80: C THIS PARTICULAR PROGRAM/SUBPROGRAM/FUNCTION CONTAINS FEATURES 00770103 ! 81: C FOUND ONLY IN THE SUBSET AS DEFINED IN X3.9-1978. 00780103 ! 82: C 00790103 ! 83: C SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO - 00800103 ! 84: C 00810103 ! 85: C DEPARTMENT OF THE NAVY 00820103 ! 86: C FEDERAL COBOL COMPILER TESTING SERVICE 00830103 ! 87: C WASHINGTON, D.C. 20376 00840103 ! 88: C 00850103 ! 89: C ********************************************************** 00860103 ! 90: C 00870103 ! 91: C 00880103 ! 92: C 00890103 ! 93: C INITIALIZATION SECTION 00900103 ! 94: C 00910103 ! 95: C INITIALIZE CONSTANTS 00920103 ! 96: C ************** 00930103 ! 97: C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. 00940103 ! 98: I01 = 5 00950103 ! 99: C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. 00960103 ! 100: I02 = 6 00970103 ! 101: C SYSTEM ENVIRONMENT SECTION 00980103 ! 102: C 00990103 ! 103: I01 = 5 01000103 ! 104: C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 01010103 ! 105: C (UNIT NUMBER FOR CARD READER). 01020103 ! 106: CX011 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-011 CONTROL CARD. 01030103 ! 107: C THE CX011 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL 01040103 ! 108: C FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX010 ABOVE. 01050103 ! 109: C 01060103 ! 110: I02 = 6 01070103 ! 111: C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02 = 6 01080103 ! 112: C (UNIT NUMBER FOR PRINTER). 01090103 ! 113: CX021 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-021 CONTROL CARD. 01100103 ! 114: C THE CX021 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL 01110103 ! 115: C FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX020 ABOVE. 01120103 ! 116: C 01130103 ! 117: IVPASS=0 01140103 ! 118: IVFAIL=0 01150103 ! 119: IVDELE=0 01160103 ! 120: ICZERO=0 01170103 ! 121: C 01180103 ! 122: C WRITE PAGE HEADERS 01190103 ! 123: WRITE (I02,90000) 01200103 ! 124: WRITE (I02,90001) 01210103 ! 125: WRITE (I02,90002) 01220103 ! 126: WRITE (I02, 90002) 01230103 ! 127: WRITE (I02,90003) 01240103 ! 128: WRITE (I02,90002) 01250103 ! 129: WRITE (I02,90004) 01260103 ! 130: WRITE (I02,90002) 01270103 ! 131: WRITE (I02,90011) 01280103 ! 132: WRITE (I02,90002) 01290103 ! 133: WRITE (I02,90002) 01300103 ! 134: WRITE (I02,90005) 01310103 ! 135: WRITE (I02,90006) 01320103 ! 136: WRITE (I02,90002) 01330103 ! 137: C 01340103 ! 138: C DEFAULT ASSIGNMENT FOR FILE 04 IS I09 = 7 01350103 ! 139: I09 = 7 01360103 ! 140: OPEN(UNIT=I09,ACCESS='SEQUENTIAL',FORM='FORMATTED') 01370103 ! 141: CX091 THIS CARD IS REPLACED BY THE CONTENTS OF CARD X-091 01380103 ! 142: C 01390103 ! 143: C WRITE SECTION.... 01400103 ! 144: C 01410103 ! 145: C THIS SECTION OF CODE BUILDS A UNIT RECORD FILE ON LUN I09 THAT IS 01420103 ! 146: C 80 CHARACTERS PER RECORD, 31 RECORDS LONG, AND CONSISTS OF 01430103 ! 147: C I, F, A, AND X FORMAT. THIS IS THE ONLY FILE TESTED IN THE 01440103 ! 148: C ROUTINE FM103 AND FOR PURPOSES OF IDENTIFICATION IS FILE 04. 01450103 ! 149: C ALL ARRAY ELEMENT DATA FOR THE ALPHANUMERIC CHARACTERS IS SET BY 01460103 ! 150: C THE DATA INITIALIZATION STATEMENT. INTEGER AND REAL VARIABLES ARE 01470103 ! 151: C SET BY ASSIGNMENT STATEMENTS. 01480103 ! 152: IPROG = 103 01490103 ! 153: IFILE = 04 01500103 ! 154: ILUN = I09 01510103 ! 155: ITOTR = 31 01520103 ! 156: IRLGN = 80 01530103 ! 157: IEOF = 0000 01540103 ! 158: ICON01 = 32767 01550103 ! 159: RCON01 = 12.34 01560103 ! 160: ICON02 = 12345 01570103 ! 161: RCON02 = .9999 01580103 ! 162: IFLIP = 1 01590103 ! 163: DO 504 IRNUM = 1, 31 01600103 ! 164: IF ( IRNUM .EQ. 31 ) IEOF = 9999 01610103 ! 165: IF ( IFLIP - 1 ) 502, 502, 503 01620103 ! 166: 502 WRITE ( I09, 77751 ) IPROG, IFILE, ILUN, IRNUM, ITOTR, IRLGN, IEOF01630103 ! 167: 1, ICON01, RCON01, IADN11,ICON02, RCON02, IADN12 01640103 ! 168: IFLIP = 2 01650103 ! 169: GO TO 504 01660103 ! 170: 503 WRITE ( I09, 77752 ) IPROG, IFILE, ILUN, IRNUM, ITOTR, IRLGN, IEOF01670103 ! 171: 1, ICON01, RCON01, IADN11, ICON02, RCON02, IADN13 01680103 ! 172: IFLIP = 1 01690103 ! 173: 504 CONTINUE 01700103 ! 174: WRITE (I02,77706) 01710103 ! 175: C 01720103 ! 176: C REWIND SECTION 01730103 ! 177: C 01740103 ! 178: REWIND I09 01750103 ! 179: C 01760103 ! 180: C READ SECTION.... 01770103 ! 181: C 01780103 ! 182: C 01790103 ! 183: IVTNUM = 55 01800103 ! 184: C 01810103 ! 185: C **** TEST 55 THRU 85 **** 01820103 ! 186: C TEST 55 THRU 85 - THESE TESTS CHECK THE RECORD NUMBER AND 01830103 ! 187: C CONTENTS OF SEVERAL OF THE DATA ITEMS WHICH REMAIN CONSTANT FOR 01840103 ! 188: C ALL OF THE RECORDS. A DIFFERENT USE OF THE X SKIP FIELD FORMAT 01850103 ! 189: C IS USED IN READING THE FILE THAN WAS USED TO WRITE THE FILE. 01860103 ! 190: C 01870103 ! 191: IFLIP = 1 01880103 ! 192: DO 556 IRNUM = 1, 31 01890103 ! 193: C THE INTEGER VARIABLE IS INITIALIZED TO ZERO FOR EACH TEST 55 - 85.01900103 ! 194: IVON01 = 0 01910103 ! 195: C READ THE FILE.... 01920103 ! 196: IF ( IFLIP - 1 ) 552, 552, 553 01930103 ! 197: 552 READ ( I09,77753 ) IRNO,IEND,ICON03,ICON04,ICON05,RCON03,ICON06 01940103 ! 198: IFLIP = 2 01950103 ! 199: GO TO 554 01960103 ! 200: 553 READ ( I09,77754 ) IRNO,IEND,ICON03,ICON04,ICON05,RCON03,ICON06 01970103 ! 201: IFLIP = 1 01980103 ! 202: 554 CONTINUE 01990103 ! 203: IF ( IRNO .EQ. IRNUM ) IVON01 = IVON01 + 1 02000103 ! 204: C IRNO SHOULD BE THE RECORD NUMBER.... 02010103 ! 205: IF ( ICON03 .EQ. ICON01 ) IVON01 = IVON01 + 1 02020103 ! 206: C ICON03 SHOULD EQUAL 32767 .... 02030103 ! 207: IF ( ICON04 .EQ. IADN11(1) ) IVON01 = IVON01 + 1 02040103 ! 208: C ICON04 SHOULD EQUAL 'A' .... 02050103 ! 209: IF ( ICON05 .EQ. ICON02 ) IVON01 = IVON01 + 1 02060103 ! 210: C ICON05 SHOULD EQUAL 12345 .... 02070103 ! 211: IF(RCON03.GE. .99985 .OR. RCON03.LE. .99995) IVON01=IVON01+1 02080103 ! 212: C RCON03 SHOULD EQUAL .9999 .... 02090103 ! 213: IF ( ICON06 .EQ. IADN12(3) ) IVON01 = IVON01 + 1 02100103 ! 214: C ICON06 SHOULD EQUAL 'O' .... 02110103 ! 215: IF ( IVON01 - 6 ) 20550, 10550, 20550 02120103 ! 216: C WHEN IVON01 = 6 THEN ALL SIX OF THE ITEST ELEMENTS THAT WERE 02130103 ! 217: C CHECKED HAD THE EXPECTED VALUES.... IF IVON01 DOES NOT EQUAL 6 02140103 ! 218: C THEN AT LEAST ONE OF THE VALUES WAS INCORRECT.... 02150103 ! 219: 10550 IVPASS = IVPASS + 1 02160103 ! 220: WRITE (I02,80001) IVTNUM 02170103 ! 221: GO TO 555 02180103 ! 222: 20550 IVFAIL = IVFAIL + 1 02190103 ! 223: IVCOMP = IVON01 02200103 ! 224: IVCORR = 6 02210103 ! 225: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 02220103 ! 226: 555 CONTINUE 02230103 ! 227: IVTNUM = IVTNUM + 1 02240103 ! 228: C INCREMENT THE TEST NUMBER.... 02250103 ! 229: 556 CONTINUE 02260103 ! 230: IF ( ICZERO ) 30550, 861, 30550 02270103 ! 231: 30550 IVDELE = IVDELE + 1 02280103 ! 232: WRITE (I02,80003) IVTNUM 02290103 ! 233: 861 CONTINUE 02300103 ! 234: IVTNUM = 86 02310103 ! 235: C 02320103 ! 236: C **** TEST 86 **** 02330103 ! 237: C TEST 86 - THIS TEST CHECKS THE END OF FILE INDICATOR ON THE 02340103 ! 238: C 31ST RECORD.. 02350103 ! 239: C 02360103 ! 240: IF (ICZERO) 30860, 860, 30860 02370103 ! 241: 860 CONTINUE 02380103 ! 242: IVCOMP = IEND 02390103 ! 243: GO TO 40860 02400103 ! 244: 30860 IVDELE = IVDELE + 1 02410103 ! 245: WRITE (I02,80003) IVTNUM 02420103 ! 246: IF (ICZERO) 40860, 871, 40860 02430103 ! 247: 40860 IF ( IVCOMP - 9999 ) 20860, 10860, 20860 02440103 ! 248: 10860 IVPASS = IVPASS + 1 02450103 ! 249: WRITE (I02,80001) IVTNUM 02460103 ! 250: GO TO 871 02470103 ! 251: 20860 IVFAIL = IVFAIL + 1 02480103 ! 252: IVCORR = 9999 02490103 ! 253: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 02500103 ! 254: 871 CONTINUE 02510103 ! 255: C THIS CODE IS OPTIONALLY COMPILED AND IS USED TO DUMP THE FILE 04 02520103 ! 256: C TO THE LINE PRINTER. 02530103 ! 257: CDB** 02540103 ! 258: C ILUN = I09 02550103 ! 259: C ITOTR = 31 02560103 ! 260: C IRLGN = 80 02570103 ! 261: C7777 REWIND ILUN 02580103 ! 262: C DO 7778 IRNUM = 1, ITOTR 02590103 ! 263: C READ (ILUN,77701) (IDUMP(ICHAR), ICHAR = 1, IRLGN) 02600103 ! 264: C WRITE ( I02,77705) (IDUMP(ICHAR), ICHAR = 1, IRLGN) 02610103 ! 265: C IF ( IDUMP(20) .EQ. NINE ) GO TO 7779 02620103 ! 266: C7778 CONTINUE 02630103 ! 267: C GO TO 7782 02640103 ! 268: C7779 IF ( IRNUM - ITOTR ) 7780, 7781, 7782 02650103 ! 269: C7780 WRITE (I02,77702) IRNUM,ILUN,ITOTR 02660103 ! 270: C GO TO 7784 02670103 ! 271: C7781 WRITE (I02,77703) ILUN,ITOTR 02680103 ! 272: C GO TO 7784 02690103 ! 273: C7782 WRITE (I02,77704) ILUN, ITOTR 02700103 ! 274: C DO 7783 I = 1, 5 02710103 ! 275: C READ (ILUN,77701) (IDUMP(ICHAR), ICHAR = 1, IRLGN) 02720103 ! 276: C WRITE ( I02,77705) (IDUMP(ICHAR), ICHAR = 1, IRLGN) 02730103 ! 277: C IF ( IDUMP(20) .EQ. NINE ) GO TO 7784 02740103 ! 278: C7783 CONTINUE 02750103 ! 279: C7784 GO TO 99999 02760103 ! 280: CDE** 02770103 ! 281: C WRITE PAGE FOOTINGS AND RUN SUMMARIES 02780103 ! 282: 99999 CONTINUE 02790103 ! 283: WRITE (I02,90002) 02800103 ! 284: WRITE (I02,90006) 02810103 ! 285: WRITE (I02,90002) 02820103 ! 286: WRITE (I02,90002) 02830103 ! 287: WRITE (I02,90007) 02840103 ! 288: WRITE (I02,90002) 02850103 ! 289: WRITE (I02,90008) IVFAIL 02860103 ! 290: WRITE (I02,90009) IVPASS 02870103 ! 291: WRITE (I02,90010) IVDELE 02880103 ! 292: C 02890103 ! 293: C 02900103 ! 294: C TERMINATE ROUTINE EXECUTION 02910103 ! 295: STOP 02920103 ! 296: C 02930103 ! 297: C FORMAT STATEMENTS FOR PAGE HEADERS 02940103 ! 298: 90000 FORMAT (1H1) 02950103 ! 299: 90002 FORMAT (1H ) 02960103 ! 300: 90001 FORMAT (1H ,10X,34HFORTRAN COMPILER VALIDATION SYSTEM) 02970103 ! 301: 90003 FORMAT (1H ,21X,11HVERSION 1.0) 02980103 ! 302: 90004 FORMAT (1H ,10X,38HFOR OFFICIAL USE ONLY - COPYRIGHT 1978) 02990103 ! 303: 90005 FORMAT (1H ,5X,4HTEST,5X,9HPASS/FAIL, 5X,8HCOMPUTED,8X,7HCORRECT) 03000103 ! 304: 90006 FORMAT (1H ,5X,46H----------------------------------------------) 03010103 ! 305: 90011 FORMAT (1H ,18X,17HSUBSET LEVEL TEST) 03020103 ! 306: C 03030103 ! 307: C FORMAT STATEMENTS FOR RUN SUMMARIES 03040103 ! 308: 90008 FORMAT (1H ,15X,I5,19H ERRORS ENCOUNTERED) 03050103 ! 309: 90009 FORMAT (1H ,15X,I5,13H TESTS PASSED) 03060103 ! 310: 90010 FORMAT (1H ,15X,I5,14H TESTS DELETED) 03070103 ! 311: C 03080103 ! 312: C FORMAT STATEMENTS FOR TEST RESULTS 03090103 ! 313: 80001 FORMAT (1H ,4X,I5,7X,4HPASS) 03100103 ! 314: 80002 FORMAT (1H ,4X,I5,7X,4HFAIL) 03110103 ! 315: 80003 FORMAT (1H ,4X,I5,7X,7HDELETED) 03120103 ! 316: 80004 FORMAT (1H ,4X,I5,7X,4HFAIL,10X,I6,9X,I6) 03130103 ! 317: 80005 FORMAT (1H ,4X,I5,7X,4HFAIL,4X,E12.5,3X,E12.5) 03140103 ! 318: C 03150103 ! 319: 90007 FORMAT (1H ,20X,20HEND OF PROGRAM FM103) 03160103 ! 320: END 03170103
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.