|
|
1.1 ! root 1: C COMMENT SECTION 00010037 ! 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 00020037 ! 6: C FM037 00030037 ! 7: C 00040037 ! 8: C THIS ROUTINE TESTS ARITHMETIC ASSIGNMENT STATEMENTS OF THE 00050037 ! 9: C FORM 00060037 ! 10: C INTEGER VARIABLE = ARITHMETIC EXPRESSION 00070037 ! 11: C WHERE THE ARITHMETIC EXPRESSION IS FORMED WITH THREE INTEGER 00080037 ! 12: C CONSTANTS AND THE ARITHMETIC OPERATOR /. BOTH POSITIVE AND NEGA- 00090037 ! 13: C TIVE CONSTANTS ARE USED IN THE ARITHMETIC EXPRESSION. 00100037 ! 14: C 00110037 ! 15: C THERE ARE TESTS WHICH REQUIRE NO TRUNCATION OF THE RESULT 00120037 ! 16: C AND TESTS WHERE THE RESULT MUST BE TRUNCATED BEFORE BEING STORED 00130037 ! 17: C IN THE RESULTANT INTEGER VARIABLE. THE STANDARD STATES 'THE VALUE00140037 ! 18: C OF AN INTEGER FACTOR OR TERM IS THE NEAREST INTEGER WHOSE MAGNI- 00150037 ! 19: C TUDE DOES NOT EXCEED THE MAGNITUDE OF THE MATHEMATICAL VALUE 00160037 ! 20: C REPRESENTED BY THAT FACTOR OR TERM. THE ASSOCIATIVE AND COMMUTA- 00170037 ! 21: C TIVE LAWS DO NOT APPLY IN THE EVALUATION OF INTEGER TERMS CON- 00180037 ! 22: C TAINING DIVISION, HENCE THE EVALUATION OF SUCH TERMS MUST EFFEC- 00190037 ! 23: C TIVELY PROCEED FROM LEFT TO RIGHT.' 00200037 ! 24: C 00210037 ! 25: C THERE ARE TESTS WHERE THE ARITHMETIC EXPRESSION CONTAINS 00220037 ! 26: C (1) INTEGER CONSTANT/INTEGER CONSTANT/INTEGER CONSTANT 00230037 ! 27: C NO TRUNCATION REQUIRED 00240037 ! 28: C (2) INTEGER CONSTANT/INTEGER CONSTANT/INTEGER CONSTANT 00250037 ! 29: C TRUNCATION REQUIRED 00260037 ! 30: C 00270037 ! 31: C REFERENCES 00280037 ! 32: C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, 00290037 ! 33: C X3.9-1978 00300037 ! 34: C 00310037 ! 35: C SECTION 4.3, INTEGER TYPE 00320037 ! 36: C SECTION 4.3.1, INTEGER CONSTANT 00330037 ! 37: C SECTION 6.1, ARITHMETIC EXPRESSIONS 00340037 ! 38: C SECTION 6.6, EVALUATION OF EXPRESSIONS 00350037 ! 39: C SECTION 10.1, ARITHMETIC ASSIGNMENT STATEMENT 00360037 ! 40: C 00370037 ! 41: C ********************************************************** 00380037 ! 42: C 00390037 ! 43: C A COMPILER VALIDATION SYSTEM FOR THE FORTRAN LANGUAGE 00400037 ! 44: C BASED ON SPECIFICATIONS AS DEFINED IN AMERICAN NATIONAL STANDARD 00410037 ! 45: C PROGRAMMING LANGUAGE FORTRAN X3.9-1978, HAS BEEN DEVELOPED BY THE 00420037 ! 46: C FEDERAL COBOL COMPILER TESTING SERVICE. THE FORTRAN COMPILER 00430037 ! 47: C VALIDATION SYSTEM (FCVS) CONSISTS OF AUDIT ROUTINES, THEIR RELATED00440037 ! 48: C DATA, AND AN EXECUTIVE SYSTEM. EACH AUDIT ROUTINE IS A FORTRAN 00450037 ! 49: C PROGRAM, SUBPROGRAM OR FUNCTION WHICH INCLUDES TESTS OF SPECIFIC 00460037 ! 50: C LANGUAGE ELEMENTS AND SUPPORTING PROCEDURES INDICATING THE RESULT 00470037 ! 51: C OF EXECUTING THESE TESTS. 00480037 ! 52: C 00490037 ! 53: C THIS PARTICULAR PROGRAM/SUBPROGRAM/FUNCTION CONTAINS FEATURES 00500037 ! 54: C FOUND ONLY IN THE SUBSET AS DEFINED IN X3.9-1978. 00510037 ! 55: C 00520037 ! 56: C SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO - 00530037 ! 57: C 00540037 ! 58: C DEPARTMENT OF THE NAVY 00550037 ! 59: C FEDERAL COBOL COMPILER TESTING SERVICE 00560037 ! 60: C WASHINGTON, D.C. 20376 00570037 ! 61: C 00580037 ! 62: C ********************************************************** 00590037 ! 63: C 00600037 ! 64: C 00610037 ! 65: C 00620037 ! 66: C INITIALIZATION SECTION 00630037 ! 67: C 00640037 ! 68: C INITIALIZE CONSTANTS 00650037 ! 69: C ************** 00660037 ! 70: C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. 00670037 ! 71: I01 = 5 00680037 ! 72: C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. 00690037 ! 73: I02 = 6 00700037 ! 74: C SYSTEM ENVIRONMENT SECTION 00710037 ! 75: C 00720037 ! 76: I01 = 5 00730037 ! 77: C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 00740037 ! 78: C (UNIT NUMBER FOR CARD READER). 00750037 ! 79: CX011 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-011 CONTROL CARD. 00760037 ! 80: C THE CX011 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL 00770037 ! 81: C FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX010 ABOVE. 00780037 ! 82: C 00790037 ! 83: I02 = 6 00800037 ! 84: C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02 = 6 00810037 ! 85: C (UNIT NUMBER FOR PRINTER). 00820037 ! 86: CX021 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-021 CONTROL CARD. 00830037 ! 87: C THE CX021 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL 00840037 ! 88: C FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX020 ABOVE. 00850037 ! 89: C 00860037 ! 90: IVPASS=0 00870037 ! 91: IVFAIL=0 00880037 ! 92: IVDELE=0 00890037 ! 93: ICZERO=0 00900037 ! 94: C 00910037 ! 95: C WRITE PAGE HEADERS 00920037 ! 96: WRITE (I02,90000) 00930037 ! 97: WRITE (I02,90001) 00940037 ! 98: WRITE (I02,90002) 00950037 ! 99: WRITE (I02, 90002) 00960037 ! 100: WRITE (I02,90003) 00970037 ! 101: WRITE (I02,90002) 00980037 ! 102: WRITE (I02,90004) 00990037 ! 103: WRITE (I02,90002) 01000037 ! 104: WRITE (I02,90011) 01010037 ! 105: WRITE (I02,90002) 01020037 ! 106: WRITE (I02,90002) 01030037 ! 107: WRITE (I02,90005) 01040037 ! 108: WRITE (I02,90006) 01050037 ! 109: WRITE (I02,90002) 01060037 ! 110: C 01070037 ! 111: C TEST SECTION 01080037 ! 112: C 01090037 ! 113: C ARITHMETIC ASSIGNMENT STATEMENT 01100037 ! 114: C 01110037 ! 115: C TEST 491 THROUGH TEST 519 CONTAIN THREE INTEGER CONSTANTS AND 01120037 ! 116: C OPERATOR / IN AN ARITHMETIC EXPRESSION. THE FORM TESTED IS 01130037 ! 117: C INTEGER VARIABLE = INTEGER CONSTANT/INTEGER CONSTANT/INT.CON. 01140037 ! 118: C 01150037 ! 119: C 01160037 ! 120: C TEST 491 THROUGH TEST 496 - POSITIVE INTEGER CONSTANTS 01170037 ! 121: C NO TRUNCATION REQUIRED 01180037 ! 122: C 01190037 ! 123: 4911 CONTINUE 01200037 ! 124: IVTNUM = 491 01210037 ! 125: C 01220037 ! 126: C **** TEST 491 **** 01230037 ! 127: C 01240037 ! 128: IF (ICZERO) 34910, 4910, 34910 01250037 ! 129: 4910 CONTINUE 01260037 ! 130: IVCOMP = 24/3/4 01270037 ! 131: GO TO 44910 01280037 ! 132: 34910 IVDELE = IVDELE + 1 01290037 ! 133: WRITE (I02,80003) IVTNUM 01300037 ! 134: IF (ICZERO) 44910, 4921, 44910 01310037 ! 135: 44910 IF (IVCOMP - 2) 24910,14910,24910 01320037 ! 136: 14910 IVPASS = IVPASS + 1 01330037 ! 137: WRITE (I02,80001) IVTNUM 01340037 ! 138: GO TO 4921 01350037 ! 139: 24910 IVFAIL = IVFAIL + 1 01360037 ! 140: IVCORR = 2 01370037 ! 141: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 01380037 ! 142: 4921 CONTINUE 01390037 ! 143: IVTNUM = 492 01400037 ! 144: C 01410037 ! 145: C **** TEST 492 **** 01420037 ! 146: C 01430037 ! 147: IF (ICZERO) 34920, 4920, 34920 01440037 ! 148: 4920 CONTINUE 01450037 ! 149: IVCOMP = 330/3/2 01460037 ! 150: GO TO 44920 01470037 ! 151: 34920 IVDELE = IVDELE + 1 01480037 ! 152: WRITE (I02,80003) IVTNUM 01490037 ! 153: IF (ICZERO) 44920, 4931, 44920 01500037 ! 154: 44920 IF (IVCOMP - 55) 24920,14920,24920 01510037 ! 155: 14920 IVPASS = IVPASS + 1 01520037 ! 156: WRITE (I02,80001) IVTNUM 01530037 ! 157: GO TO 4931 01540037 ! 158: 24920 IVFAIL = IVFAIL + 1 01550037 ! 159: IVCORR = 55 01560037 ! 160: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 01570037 ! 161: 4931 CONTINUE 01580037 ! 162: IVTNUM = 493 01590037 ! 163: C 01600037 ! 164: C **** TEST 493 **** 01610037 ! 165: C 01620037 ! 166: IF (ICZERO) 34930, 4930, 34930 01630037 ! 167: 4930 CONTINUE 01640037 ! 168: IVCOMP = 15249/13/51 01650037 ! 169: GO TO 44930 01660037 ! 170: 34930 IVDELE = IVDELE + 1 01670037 ! 171: WRITE (I02,80003) IVTNUM 01680037 ! 172: IF (ICZERO) 44930, 4941, 44930 01690037 ! 173: 44930 IF (IVCOMP - 23) 24930,14930,24930 01700037 ! 174: 14930 IVPASS = IVPASS + 1 01710037 ! 175: WRITE (I02,80001) IVTNUM 01720037 ! 176: GO TO 4941 01730037 ! 177: 24930 IVFAIL = IVFAIL + 1 01740037 ! 178: IVCORR = 23 01750037 ! 179: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 01760037 ! 180: 4941 CONTINUE 01770037 ! 181: IVTNUM = 494 01780037 ! 182: C 01790037 ! 183: C **** TEST 494 **** 01800037 ! 184: C 01810037 ! 185: IF (ICZERO) 34940, 4940, 34940 01820037 ! 186: 4940 CONTINUE 01830037 ! 187: IVCOMP = 7150/2/25 01840037 ! 188: GO TO 44940 01850037 ! 189: 34940 IVDELE = IVDELE + 1 01860037 ! 190: WRITE (I02,80003) IVTNUM 01870037 ! 191: IF (ICZERO) 44940, 4951, 44940 01880037 ! 192: 44940 IF (IVCOMP - 143) 24940,14940,24940 01890037 ! 193: 14940 IVPASS = IVPASS + 1 01900037 ! 194: WRITE (I02,80001) IVTNUM 01910037 ! 195: GO TO 4951 01920037 ! 196: 24940 IVFAIL = IVFAIL + 1 01930037 ! 197: IVCORR = 143 01940037 ! 198: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 01950037 ! 199: 4951 CONTINUE 01960037 ! 200: IVTNUM = 495 01970037 ! 201: C 01980037 ! 202: C **** TEST 495 **** 01990037 ! 203: C 02000037 ! 204: IF (ICZERO) 34950, 4950, 34950 02010037 ! 205: 4950 CONTINUE 02020037 ! 206: IVCOMP = 32766/2/3 02030037 ! 207: GO TO 44950 02040037 ! 208: 34950 IVDELE = IVDELE + 1 02050037 ! 209: WRITE (I02,80003) IVTNUM 02060037 ! 210: IF (ICZERO) 44950, 4961, 44950 02070037 ! 211: 44950 IF (IVCOMP - 5461) 24950,14950,24950 02080037 ! 212: 14950 IVPASS = IVPASS + 1 02090037 ! 213: WRITE (I02,80001) IVTNUM 02100037 ! 214: GO TO 4961 02110037 ! 215: 24950 IVFAIL = IVFAIL + 1 02120037 ! 216: IVCORR = 5461 02130037 ! 217: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 02140037 ! 218: 4961 CONTINUE 02150037 ! 219: IVTNUM = 496 02160037 ! 220: C 02170037 ! 221: C **** TEST 496 **** 02180037 ! 222: C 02190037 ! 223: IF (ICZERO) 34960, 4960, 34960 02200037 ! 224: 4960 CONTINUE 02210037 ! 225: IVCOMP = 32766/1/1 02220037 ! 226: GO TO 44960 02230037 ! 227: 34960 IVDELE = IVDELE + 1 02240037 ! 228: WRITE (I02,80003) IVTNUM 02250037 ! 229: IF (ICZERO) 44960, 4971, 44960 02260037 ! 230: 44960 IF (IVCOMP - 32766) 24960,14960,24960 02270037 ! 231: 14960 IVPASS = IVPASS + 1 02280037 ! 232: WRITE (I02,80001) IVTNUM 02290037 ! 233: GO TO 4971 02300037 ! 234: 24960 IVFAIL = IVFAIL + 1 02310037 ! 235: IVCORR = 32766 02320037 ! 236: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 02330037 ! 237: C 02340037 ! 238: C TEST 497 THROUGH TEST 502 - POSITIVE INTEGER CONSTANTS 02350037 ! 239: C TRUNCATION REQUIRED 02360037 ! 240: C 02370037 ! 241: 4971 CONTINUE 02380037 ! 242: IVTNUM = 497 02390037 ! 243: C 02400037 ! 244: C **** TEST 497 **** 02410037 ! 245: C 02420037 ! 246: IF (ICZERO) 34970, 4970, 34970 02430037 ! 247: 4970 CONTINUE 02440037 ! 248: IVCOMP = 24/3/3 02450037 ! 249: GO TO 44970 02460037 ! 250: 34970 IVDELE = IVDELE + 1 02470037 ! 251: WRITE (I02,80003) IVTNUM 02480037 ! 252: IF (ICZERO) 44970, 4981, 44970 02490037 ! 253: 44970 IF (IVCOMP -2) 24970,14970,24970 02500037 ! 254: 14970 IVPASS = IVPASS + 1 02510037 ! 255: WRITE (I02,80001) IVTNUM 02520037 ! 256: GO TO 4981 02530037 ! 257: 24970 IVFAIL = IVFAIL + 1 02540037 ! 258: IVCORR = 2 02550037 ! 259: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 02560037 ! 260: 4981 CONTINUE 02570037 ! 261: IVTNUM = 498 02580037 ! 262: C 02590037 ! 263: C **** TEST 498 **** 02600037 ! 264: C 02610037 ! 265: IF (ICZERO) 34980, 4980, 34980 02620037 ! 266: 4980 CONTINUE 02630037 ! 267: IVCOMP = 230/2/3 02640037 ! 268: GO TO 44980 02650037 ! 269: 34980 IVDELE = IVDELE + 1 02660037 ! 270: WRITE (I02,80003) IVTNUM 02670037 ! 271: IF (ICZERO) 44980, 4991, 44980 02680037 ! 272: 44980 IF (IVCOMP - 38) 24980,14980,24980 02690037 ! 273: 14980 IVPASS = IVPASS + 1 02700037 ! 274: WRITE (I02,80001) IVTNUM 02710037 ! 275: GO TO 4991 02720037 ! 276: 24980 IVFAIL = IVFAIL + 1 02730037 ! 277: IVCORR = 38 02740037 ! 278: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 02750037 ! 279: 4991 CONTINUE 02760037 ! 280: IVTNUM = 499 02770037 ! 281: C 02780037 ! 282: C **** TEST 499 **** 02790037 ! 283: C 02800037 ! 284: IF (ICZERO) 34990, 4990, 34990 02810037 ! 285: 4990 CONTINUE 02820037 ! 286: IVCOMP = 7151/3/10 02830037 ! 287: GO TO 44990 02840037 ! 288: 34990 IVDELE = IVDELE + 1 02850037 ! 289: WRITE (I02,80003) IVTNUM 02860037 ! 290: IF (ICZERO) 44990, 5001, 44990 02870037 ! 291: 44990 IF (IVCOMP - 238) 24990,14990,24990 02880037 ! 292: 14990 IVPASS = IVPASS + 1 02890037 ! 293: WRITE (I02,80001) IVTNUM 02900037 ! 294: GO TO 5001 02910037 ! 295: 24990 IVFAIL = IVFAIL + 1 02920037 ! 296: IVCORR = 238 02930037 ! 297: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 02940037 ! 298: 5001 CONTINUE 02950037 ! 299: IVTNUM = 500 02960037 ! 300: C 02970037 ! 301: C **** TEST 500 **** 02980037 ! 302: C 02990037 ! 303: IF (ICZERO) 35000, 5000, 35000 03000037 ! 304: 5000 CONTINUE 03010037 ! 305: IVCOMP = 15248/51/13 03020037 ! 306: GO TO 45000 03030037 ! 307: 35000 IVDELE = IVDELE + 1 03040037 ! 308: WRITE (I02,80003) IVTNUM 03050037 ! 309: IF (ICZERO) 45000, 5011, 45000 03060037 ! 310: 45000 IF (IVCOMP - 22) 25000,15000,25000 03070037 ! 311: 15000 IVPASS = IVPASS + 1 03080037 ! 312: WRITE (I02,80001) IVTNUM 03090037 ! 313: GO TO 5011 03100037 ! 314: 25000 IVFAIL = IVFAIL + 1 03110037 ! 315: IVCORR = 22 03120037 ! 316: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 03130037 ! 317: 5011 CONTINUE 03140037 ! 318: IVTNUM = 501 03150037 ! 319: C 03160037 ! 320: C **** TEST 501 **** 03170037 ! 321: C 03180037 ! 322: IF (ICZERO) 35010, 5010, 35010 03190037 ! 323: 5010 CONTINUE 03200037 ! 324: IVCOMP = 27342/4/3 03210037 ! 325: GO TO 45010 03220037 ! 326: 35010 IVDELE = IVDELE + 1 03230037 ! 327: WRITE (I02,80003) IVTNUM 03240037 ! 328: IF (ICZERO) 45010, 5021, 45010 03250037 ! 329: 45010 IF (IVCOMP - 2278) 25010,15010,25010 03260037 ! 330: 15010 IVPASS = IVPASS + 1 03270037 ! 331: WRITE (I02,80001) IVTNUM 03280037 ! 332: GO TO 5021 03290037 ! 333: 25010 IVFAIL = IVFAIL + 1 03300037 ! 334: IVCORR = 2278 03310037 ! 335: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 03320037 ! 336: 5021 CONTINUE 03330037 ! 337: IVTNUM = 502 03340037 ! 338: C 03350037 ! 339: C **** TEST 502 **** 03360037 ! 340: C 03370037 ! 341: IF (ICZERO) 35020, 5020, 35020 03380037 ! 342: 5020 CONTINUE 03390037 ! 343: IVCOMP = 32767/2/1 03400037 ! 344: GO TO 45020 03410037 ! 345: 35020 IVDELE = IVDELE + 1 03420037 ! 346: WRITE (I02,80003) IVTNUM 03430037 ! 347: IF (ICZERO) 45020, 5031, 45020 03440037 ! 348: 45020 IF (IVCOMP - 16383) 25020,15020,25020 03450037 ! 349: 15020 IVPASS = IVPASS + 1 03460037 ! 350: WRITE (I02,80001) IVTNUM 03470037 ! 351: GO TO 5031 03480037 ! 352: 25020 IVFAIL = IVFAIL + 1 03490037 ! 353: IVCORR = 16383 03500037 ! 354: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 03510037 ! 355: C 03520037 ! 356: C TEST 503 THROUGH TEST 507 - NEGATIVE INTEGER CONSTANTS INCLUDED 03530037 ! 357: C NO TRUNCATION REQUIRED 03540037 ! 358: C 03550037 ! 359: 5031 CONTINUE 03560037 ! 360: IVTNUM = 503 03570037 ! 361: C 03580037 ! 362: C **** TEST 503 **** 03590037 ! 363: C 03600037 ! 364: IF (ICZERO) 35030, 5030, 35030 03610037 ! 365: 5030 CONTINUE 03620037 ! 366: IVCOMP = -24/3/4 03630037 ! 367: GO TO 45030 03640037 ! 368: 35030 IVDELE = IVDELE + 1 03650037 ! 369: WRITE (I02,80003) IVTNUM 03660037 ! 370: IF (ICZERO) 45030, 5041, 45030 03670037 ! 371: 45030 IF (IVCOMP +2) 25030,15030,25030 03680037 ! 372: 15030 IVPASS = IVPASS + 1 03690037 ! 373: WRITE (I02,80001) IVTNUM 03700037 ! 374: GO TO 5041 03710037 ! 375: 25030 IVFAIL = IVFAIL + 1 03720037 ! 376: IVCORR = -2 03730037 ! 377: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 03740037 ! 378: 5041 CONTINUE 03750037 ! 379: IVTNUM = 504 03760037 ! 380: C 03770037 ! 381: C **** TEST 504 **** 03780037 ! 382: C 03790037 ! 383: IF (ICZERO) 35040, 5040, 35040 03800037 ! 384: 5040 CONTINUE 03810037 ! 385: IVCOMP = 330/(-3)/2 03820037 ! 386: GO TO 45040 03830037 ! 387: 35040 IVDELE = IVDELE + 1 03840037 ! 388: WRITE (I02,80003) IVTNUM 03850037 ! 389: IF (ICZERO) 45040, 5051, 45040 03860037 ! 390: 45040 IF (IVCOMP + 55) 25040,15040,25040 03870037 ! 391: 15040 IVPASS = IVPASS + 1 03880037 ! 392: WRITE (I02,80001) IVTNUM 03890037 ! 393: GO TO 5051 03900037 ! 394: 25040 IVFAIL = IVFAIL + 1 03910037 ! 395: IVCORR = -55 03920037 ! 396: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 03930037 ! 397: 5051 CONTINUE 03940037 ! 398: IVTNUM = 505 03950037 ! 399: C 03960037 ! 400: C **** TEST 505 **** 03970037 ! 401: C 03980037 ! 402: IF (ICZERO) 35050, 5050, 35050 03990037 ! 403: 5050 CONTINUE 04000037 ! 404: IVCOMP = 15249/(-13)/(-51) 04010037 ! 405: GO TO 45050 04020037 ! 406: 35050 IVDELE = IVDELE + 1 04030037 ! 407: WRITE (I02,80003) IVTNUM 04040037 ! 408: IF (ICZERO) 45050, 5061, 45050 04050037 ! 409: 45050 IF (IVCOMP - 23) 25050,15050,25050 04060037 ! 410: 15050 IVPASS = IVPASS + 1 04070037 ! 411: WRITE (I02,80001) IVTNUM 04080037 ! 412: GO TO 5061 04090037 ! 413: 25050 IVFAIL = IVFAIL + 1 04100037 ! 414: IVCORR = 23 04110037 ! 415: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 04120037 ! 416: 5061 CONTINUE 04130037 ! 417: IVTNUM = 506 04140037 ! 418: C 04150037 ! 419: C **** TEST 506 **** 04160037 ! 420: C 04170037 ! 421: IF (ICZERO) 35060, 5060, 35060 04180037 ! 422: 5060 CONTINUE 04190037 ! 423: IVCOMP = -7150/(-2)/(-25) 04200037 ! 424: GO TO 45060 04210037 ! 425: 35060 IVDELE = IVDELE + 1 04220037 ! 426: WRITE (I02,80003) IVTNUM 04230037 ! 427: IF (ICZERO) 45060, 5071, 45060 04240037 ! 428: 45060 IF (IVCOMP + 143) 25060,15060,25060 04250037 ! 429: 15060 IVPASS = IVPASS + 1 04260037 ! 430: WRITE (I02,80001) IVTNUM 04270037 ! 431: GO TO 5071 04280037 ! 432: 25060 IVFAIL = IVFAIL + 1 04290037 ! 433: IVCORR = -143 04300037 ! 434: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 04310037 ! 435: 5071 CONTINUE 04320037 ! 436: IVTNUM = 507 04330037 ! 437: C 04340037 ! 438: C **** TEST 507 **** 04350037 ! 439: C 04360037 ! 440: IF (ICZERO) 35070, 5070, 35070 04370037 ! 441: 5070 CONTINUE 04380037 ! 442: IVCOMP = (-32766)/(-2)/(-3) 04390037 ! 443: GO TO 45070 04400037 ! 444: 35070 IVDELE = IVDELE + 1 04410037 ! 445: WRITE (I02,80003) IVTNUM 04420037 ! 446: IF (ICZERO) 45070, 5081, 45070 04430037 ! 447: 45070 IF (IVCOMP + 5461) 25070,15070,25070 04440037 ! 448: 15070 IVPASS = IVPASS + 1 04450037 ! 449: WRITE (I02,80001) IVTNUM 04460037 ! 450: GO TO 5081 04470037 ! 451: 25070 IVFAIL = IVFAIL + 1 04480037 ! 452: IVCORR = -5461 04490037 ! 453: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 04500037 ! 454: C 04510037 ! 455: C TEST 508 THROUGH TEST 513 - NEGATIVE INTEGER CONSTANTS INCLUDED 04520037 ! 456: C TRUNCATION REQUIRED 04530037 ! 457: C 04540037 ! 458: 5081 CONTINUE 04550037 ! 459: IVTNUM = 508 04560037 ! 460: C 04570037 ! 461: C **** TEST 508 **** 04580037 ! 462: C 04590037 ! 463: IF (ICZERO) 35080, 5080, 35080 04600037 ! 464: 5080 CONTINUE 04610037 ! 465: IVCOMP = -24/3/3 04620037 ! 466: GO TO 45080 04630037 ! 467: 35080 IVDELE = IVDELE + 1 04640037 ! 468: WRITE (I02,80003) IVTNUM 04650037 ! 469: IF (ICZERO) 45080, 5091, 45080 04660037 ! 470: 45080 IF (IVCOMP + 2) 25080,15080,25080 04670037 ! 471: 15080 IVPASS = IVPASS + 1 04680037 ! 472: WRITE (I02,80001) IVTNUM 04690037 ! 473: GO TO 5091 04700037 ! 474: 25080 IVFAIL = IVFAIL + 1 04710037 ! 475: IVCORR = -2 04720037 ! 476: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 04730037 ! 477: 5091 CONTINUE 04740037 ! 478: IVTNUM = 509 04750037 ! 479: C 04760037 ! 480: C **** TEST 509 **** 04770037 ! 481: C 04780037 ! 482: IF (ICZERO) 35090, 5090, 35090 04790037 ! 483: 5090 CONTINUE 04800037 ! 484: IVCOMP = 230/(-2)/3 04810037 ! 485: GO TO 45090 04820037 ! 486: 35090 IVDELE = IVDELE + 1 04830037 ! 487: WRITE (I02,80003) IVTNUM 04840037 ! 488: IF (ICZERO) 45090, 5101, 45090 04850037 ! 489: 45090 IF (IVCOMP + 38) 25090,15090,25090 04860037 ! 490: 15090 IVPASS = IVPASS + 1 04870037 ! 491: WRITE (I02,80001) IVTNUM 04880037 ! 492: GO TO 5101 04890037 ! 493: 25090 IVFAIL = IVFAIL + 1 04900037 ! 494: IVCORR = -38 04910037 ! 495: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 04920037 ! 496: 5101 CONTINUE 04930037 ! 497: IVTNUM = 510 04940037 ! 498: C 04950037 ! 499: C **** TEST 510 **** 04960037 ! 500: C 04970037 ! 501: IF (ICZERO) 35100, 5100, 35100 04980037 ! 502: 5100 CONTINUE 04990037 ! 503: IVCOMP = 7151/(-3)/(-10) 05000037 ! 504: GO TO 45100 05010037 ! 505: 35100 IVDELE = IVDELE + 1 05020037 ! 506: WRITE (I02,80003) IVTNUM 05030037 ! 507: IF (ICZERO) 45100, 5111, 45100 05040037 ! 508: 45100 IF (IVCOMP - 238) 25100,15100,25100 05050037 ! 509: 15100 IVPASS = IVPASS + 1 05060037 ! 510: WRITE (I02,80001) IVTNUM 05070037 ! 511: GO TO 5111 05080037 ! 512: 25100 IVFAIL = IVFAIL + 1 05090037 ! 513: IVCORR = 238 05100037 ! 514: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 05110037 ! 515: 5111 CONTINUE 05120037 ! 516: IVTNUM = 511 05130037 ! 517: C 05140037 ! 518: C **** TEST 511 **** 05150037 ! 519: C 05160037 ! 520: IF (ICZERO) 35110, 5110, 35110 05170037 ! 521: 5110 CONTINUE 05180037 ! 522: IVCOMP = -15248/(-51)/(-13) 05190037 ! 523: GO TO 45110 05200037 ! 524: 35110 IVDELE = IVDELE + 1 05210037 ! 525: WRITE (I02,80003) IVTNUM 05220037 ! 526: IF (ICZERO) 45110, 5121, 45110 05230037 ! 527: 45110 IF (IVCOMP + 22) 25110,15110,25110 05240037 ! 528: 15110 IVPASS = IVPASS + 1 05250037 ! 529: WRITE (I02,80001) IVTNUM 05260037 ! 530: GO TO 5121 05270037 ! 531: 25110 IVFAIL = IVFAIL + 1 05280037 ! 532: IVCORR = -22 05290037 ! 533: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 05300037 ! 534: 5121 CONTINUE 05310037 ! 535: IVTNUM = 512 05320037 ! 536: C 05330037 ! 537: C **** TEST 512 **** 05340037 ! 538: C 05350037 ! 539: IF (ICZERO) 35120, 5120, 35120 05360037 ! 540: 5120 CONTINUE 05370037 ! 541: IVCOMP = (-27342)/(-4)/(-3) 05380037 ! 542: GO TO 45120 05390037 ! 543: 35120 IVDELE = IVDELE + 1 05400037 ! 544: WRITE (I02,80003) IVTNUM 05410037 ! 545: IF (ICZERO) 45120, 5131, 45120 05420037 ! 546: 45120 IF (IVCOMP + 2278) 25120,15120,25120 05430037 ! 547: 15120 IVPASS = IVPASS + 1 05440037 ! 548: WRITE (I02,80001) IVTNUM 05450037 ! 549: GO TO 5131 05460037 ! 550: 25120 IVFAIL = IVFAIL + 1 05470037 ! 551: IVCORR = -2278 05480037 ! 552: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 05490037 ! 553: 5131 CONTINUE 05500037 ! 554: IVTNUM = 513 05510037 ! 555: C 05520037 ! 556: C **** TEST 513 **** 05530037 ! 557: C 05540037 ! 558: IF (ICZERO) 35130, 5130, 35130 05550037 ! 559: 5130 CONTINUE 05560037 ! 560: IVCOMP = 32767/2/(-1) 05570037 ! 561: GO TO 45130 05580037 ! 562: 35130 IVDELE = IVDELE + 1 05590037 ! 563: WRITE (I02,80003) IVTNUM 05600037 ! 564: IF (ICZERO) 45130, 5141, 45130 05610037 ! 565: 45130 IF (IVCOMP + 16383) 25130,15130,25130 05620037 ! 566: 15130 IVPASS = IVPASS + 1 05630037 ! 567: WRITE (I02,80001) IVTNUM 05640037 ! 568: GO TO 5141 05650037 ! 569: 25130 IVFAIL = IVFAIL + 1 05660037 ! 570: IVCORR = -16383 05670037 ! 571: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 05680037 ! 572: C 05690037 ! 573: C TEST 514 THROUGH TEST 519 - POSITIVE AND NEGATIVE SIGNED INTEGER 05700037 ! 574: C CONSTANTS IN ARITHMETIC EXPRESSION. 05710037 ! 575: C 05720037 ! 576: 5141 CONTINUE 05730037 ! 577: IVTNUM = 514 05740037 ! 578: C 05750037 ! 579: C **** TEST 514 **** 05760037 ! 580: C 05770037 ! 581: IF (ICZERO) 35140, 5140, 35140 05780037 ! 582: 5140 CONTINUE 05790037 ! 583: IVCOMP = +24/(-3)/4 05800037 ! 584: GO TO 45140 05810037 ! 585: 35140 IVDELE = IVDELE + 1 05820037 ! 586: WRITE (I02,80003) IVTNUM 05830037 ! 587: IF (ICZERO) 45140, 5151, 45140 05840037 ! 588: 45140 IF (IVCOMP +2) 25140,15140,25140 05850037 ! 589: 15140 IVPASS = IVPASS + 1 05860037 ! 590: WRITE (I02,80001) IVTNUM 05870037 ! 591: GO TO 5151 05880037 ! 592: 25140 IVFAIL = IVFAIL + 1 05890037 ! 593: IVCORR = -2 05900037 ! 594: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 05910037 ! 595: 5151 CONTINUE 05920037 ! 596: IVTNUM = 515 05930037 ! 597: C 05940037 ! 598: C **** TEST 515 **** 05950037 ! 599: C 05960037 ! 600: IF (ICZERO) 35150, 5150, 35150 05970037 ! 601: 5150 CONTINUE 05980037 ! 602: IVCOMP = 24/(+3)/(-4) 05990037 ! 603: GO TO 45150 06000037 ! 604: 35150 IVDELE = IVDELE + 1 06010037 ! 605: WRITE (I02,80003) IVTNUM 06020037 ! 606: IF (ICZERO) 45150, 5161, 45150 06030037 ! 607: 45150 IF (IVCOMP +2) 25150,15150,25150 06040037 ! 608: 15150 IVPASS = IVPASS + 1 06050037 ! 609: WRITE (I02,80001) IVTNUM 06060037 ! 610: GO TO 5161 06070037 ! 611: 25150 IVFAIL = IVFAIL + 1 06080037 ! 612: IVCORR = -2 06090037 ! 613: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 06100037 ! 614: 5161 CONTINUE 06110037 ! 615: IVTNUM = 516 06120037 ! 616: C 06130037 ! 617: C **** TEST 516 **** 06140037 ! 618: C 06150037 ! 619: IF (ICZERO) 35160, 5160, 35160 06160037 ! 620: 5160 CONTINUE 06170037 ! 621: IVCOMP = -24/(-3)/(+4) 06180037 ! 622: GO TO 45160 06190037 ! 623: 35160 IVDELE = IVDELE + 1 06200037 ! 624: WRITE (I02,80003) IVTNUM 06210037 ! 625: IF (ICZERO) 45160, 5171, 45160 06220037 ! 626: 45160 IF (IVCOMP -2) 25160,15160,25160 06230037 ! 627: 15160 IVPASS = IVPASS + 1 06240037 ! 628: WRITE (I02,80001) IVTNUM 06250037 ! 629: GO TO 5171 06260037 ! 630: 25160 IVFAIL = IVFAIL + 1 06270037 ! 631: IVCORR = 2 06280037 ! 632: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 06290037 ! 633: 5171 CONTINUE 06300037 ! 634: IVTNUM = 517 06310037 ! 635: C 06320037 ! 636: C **** TEST 517 **** 06330037 ! 637: C 06340037 ! 638: IF (ICZERO) 35170, 5170, 35170 06350037 ! 639: 5170 CONTINUE 06360037 ! 640: IVCOMP = -16811/(-16812)/(+1) 06370037 ! 641: GO TO 45170 06380037 ! 642: 35170 IVDELE = IVDELE + 1 06390037 ! 643: WRITE (I02,80003) IVTNUM 06400037 ! 644: IF (ICZERO) 45170, 5181, 45170 06410037 ! 645: 45170 IF (IVCOMP - 0) 25170,15170,25170 06420037 ! 646: 15170 IVPASS = IVPASS + 1 06430037 ! 647: WRITE (I02,80001) IVTNUM 06440037 ! 648: GO TO 5181 06450037 ! 649: 25170 IVFAIL = IVFAIL + 1 06460037 ! 650: IVCORR = 0 06470037 ! 651: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 06480037 ! 652: 5181 CONTINUE 06490037 ! 653: IVTNUM = 518 06500037 ! 654: C 06510037 ! 655: C **** TEST 518 **** 06520037 ! 656: C 06530037 ! 657: IF (ICZERO) 35180, 5180, 35180 06540037 ! 658: 5180 CONTINUE 06550037 ! 659: IVCOMP = (-16811) / (+16811) / (+1) 06560037 ! 660: GO TO 45180 06570037 ! 661: 35180 IVDELE = IVDELE + 1 06580037 ! 662: WRITE (I02,80003) IVTNUM 06590037 ! 663: IF (ICZERO) 45180, 5191, 45180 06600037 ! 664: 45180 IF (IVCOMP +1) 25180,15180,25180 06610037 ! 665: 15180 IVPASS = IVPASS + 1 06620037 ! 666: WRITE (I02,80001) IVTNUM 06630037 ! 667: GO TO 5191 06640037 ! 668: 25180 IVFAIL = IVFAIL + 1 06650037 ! 669: IVCORR = -1 06660037 ! 670: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 06670037 ! 671: 5191 CONTINUE 06680037 ! 672: IVTNUM = 519 06690037 ! 673: C 06700037 ! 674: C **** TEST 519 **** 06710037 ! 675: C 06720037 ! 676: IF (ICZERO) 35190, 5190, 35190 06730037 ! 677: 5190 CONTINUE 06740037 ! 678: IVCOMP = (-335)/(+168)/(+1) 06750037 ! 679: GO TO 45190 06760037 ! 680: 35190 IVDELE = IVDELE + 1 06770037 ! 681: WRITE (I02,80003) IVTNUM 06780037 ! 682: IF (ICZERO) 45190, 5201, 45190 06790037 ! 683: 45190 IF (IVCOMP + 1) 25190,15190,25190 06800037 ! 684: 15190 IVPASS = IVPASS + 1 06810037 ! 685: WRITE (I02,80001) IVTNUM 06820037 ! 686: GO TO 5201 06830037 ! 687: 25190 IVFAIL = IVFAIL + 1 06840037 ! 688: IVCORR = -1 06850037 ! 689: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 06860037 ! 690: C **** END OF TESTS **** 06870037 ! 691: 5201 CONTINUE 06880037 ! 692: C 06890037 ! 693: C WRITE PAGE FOOTINGS AND RUN SUMMARIES 06900037 ! 694: 99999 CONTINUE 06910037 ! 695: WRITE (I02,90002) 06920037 ! 696: WRITE (I02,90006) 06930037 ! 697: WRITE (I02,90002) 06940037 ! 698: WRITE (I02,90002) 06950037 ! 699: WRITE (I02,90007) 06960037 ! 700: WRITE (I02,90002) 06970037 ! 701: WRITE (I02,90008) IVFAIL 06980037 ! 702: WRITE (I02,90009) IVPASS 06990037 ! 703: WRITE (I02,90010) IVDELE 07000037 ! 704: C 07010037 ! 705: C 07020037 ! 706: C TERMINATE ROUTINE EXECUTION 07030037 ! 707: STOP 07040037 ! 708: C 07050037 ! 709: C FORMAT STATEMENTS FOR PAGE HEADERS 07060037 ! 710: 90000 FORMAT (1H1) 07070037 ! 711: 90002 FORMAT (1H ) 07080037 ! 712: 90001 FORMAT (1H ,10X,34HFORTRAN COMPILER VALIDATION SYSTEM) 07090037 ! 713: 90003 FORMAT (1H ,21X,11HVERSION 1.0) 07100037 ! 714: 90004 FORMAT (1H ,10X,38HFOR OFFICIAL USE ONLY - COPYRIGHT 1978) 07110037 ! 715: 90005 FORMAT (1H ,5X,4HTEST,5X,9HPASS/FAIL, 5X,8HCOMPUTED,8X,7HCORRECT) 07120037 ! 716: 90006 FORMAT (1H ,5X,46H----------------------------------------------) 07130037 ! 717: 90011 FORMAT (1H ,18X,17HSUBSET LEVEL TEST) 07140037 ! 718: C 07150037 ! 719: C FORMAT STATEMENTS FOR RUN SUMMARIES 07160037 ! 720: 90008 FORMAT (1H ,15X,I5,19H ERRORS ENCOUNTERED) 07170037 ! 721: 90009 FORMAT (1H ,15X,I5,13H TESTS PASSED) 07180037 ! 722: 90010 FORMAT (1H ,15X,I5,14H TESTS DELETED) 07190037 ! 723: C 07200037 ! 724: C FORMAT STATEMENTS FOR TEST RESULTS 07210037 ! 725: 80001 FORMAT (1H ,4X,I5,7X,4HPASS) 07220037 ! 726: 80002 FORMAT (1H ,4X,I5,7X,4HFAIL) 07230037 ! 727: 80003 FORMAT (1H ,4X,I5,7X,7HDELETED) 07240037 ! 728: 80004 FORMAT (1H ,4X,I5,7X,4HFAIL,10X,I6,9X,I6) 07250037 ! 729: 80005 FORMAT (1H ,4X,I5,7X,4HFAIL,4X,E12.5,3X,E12.5) 07260037 ! 730: C 07270037 ! 731: 90007 FORMAT (1H ,20X,20HEND OF PROGRAM FM037) 07280037 ! 732: END 07290037
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.