|
|
1.1 ! root 1: PROGRAM FM253 00010253 ! 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 00020253 ! 6: C 00030253 ! 7: C 00040253 ! 8: C THIS ROUTINE IS A TEST OF THE IF-BLOCK. TESTS WITHIN THIS 00050253 ! 9: C ROUTINE ARE FOR THE SYNTAX OF THE BASIC IF ( ) THEN THROUGH 00060253 ! 10: C END IF BLOCK STRUCTURE. 00070253 ! 11: C 00080253 ! 12: C THERE IS ALSO A SERIES OF TESTS TO CHECK THE HIERARCHY AND 00090253 ! 13: C ORDER OF EVALUATION IN EXPRESSIONS THAT CONTAIN A COMBINATION OF 00100253 ! 14: C ARITHMETIC, RELATIONAL, AND LOGICAL OPERATORS. 00110253 ! 15: C 00120253 ! 16: C REFERENCES 00130253 ! 17: C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, 00140253 ! 18: C X3.9-1978 00150253 ! 19: C SECTION 11.6, BLOCK IF STATEMENT 00160253 ! 20: C SECTION 11.6.1, IF-LEVEL 00170253 ! 21: C SECTION 11.6.2, IF-BLOCK 00180253 ! 22: C SECTION 11.6.3, EXECUTION OF A BLOCK IF STATEMENT 00190253 ! 23: C 00200253 ! 24: C 00210253 ! 25: C 00220253 ! 26: C 00230253 ! 27: C ******************************************************************00240253 ! 28: C A COMPILER VALIDATION SYSTEM FOR THE FORTRAN LANGUAGE 00250253 ! 29: C BASED ON SPECIFICATIONS AS DEFINED IN AMERICAN STANDARD FORTRAN 00260253 ! 30: C X3.9-1978, HAS BEEN DEVELOPED BY THE DEPARTMENT OF THE NAVY. THE 00270253 ! 31: C FORTRAN COMPILER VALIDATION SYSTEM (FCVS) CONSISTS OF AUDIT 00280253 ! 32: C ROUTINES, THEIR RELATED DATA, AND AN EXECUTIVE SYSTEM. EACH AUDIT00290253 ! 33: C ROUTINE IS A FORTRAN PROGRAM OR SUBPROGRAM WHICH INCLUDES TESTS 00300253 ! 34: C OF SPECIFIC LANGUAGE ELEMENTS AND SUPPORTING PROCEDURES INDICATING00310253 ! 35: C THE RESULT OF EXECUTING THESE TESTS. 00320253 ! 36: C 00330253 ! 37: C THIS PARTICULAR PROGRAM OR SUBPROGRAM CONTAINS ONLY FEATURES 00340253 ! 38: C FOUND IN THE SUBSET LEVEL OF THE STANDARD. 00350253 ! 39: C 00360253 ! 40: C SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO 00370253 ! 41: C DEPARTMENT OF THE NAVY 00380253 ! 42: C FEDERAL COBOL COMPILER TESTING SERVICE 00390253 ! 43: C WASHINGTON, D.C. 20376 00400253 ! 44: C 00410253 ! 45: C ******************************************************************00420253 ! 46: C 00430253 ! 47: C 00440253 ! 48: IMPLICIT LOGICAL (L) 00450253 ! 49: IMPLICIT CHARACTER*14 (C) 00460253 ! 50: C 00470253 ! 51: DIMENSION LADN11(2) 00480253 ! 52: LOGICAL LVTN01, LVTN02, LATN11(2), LADN11 00490253 ! 53: DATA LADN11/.TRUE., .FALSE./ 00500253 ! 54: C 00510253 ! 55: C 00520253 ! 56: C **** LOGICAL STATEMENT FUNCTION REFERENCED IN TEST 20 **** 00530253 ! 57: C 00540253 ! 58: LFIS01 ( L ) = .NOT. L 00550253 ! 59: C 00560253 ! 60: C 00570253 ! 61: C 00580253 ! 62: C 00590253 ! 63: C 00600253 ! 64: C INITIALIZATION SECTION. 00610253 ! 65: C 00620253 ! 66: C INITIALIZE CONSTANTS 00630253 ! 67: C ******************** 00640253 ! 68: C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER 00650253 ! 69: I01 = 5 00660253 ! 70: C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER 00670253 ! 71: I02 = 6 00680253 ! 72: C SYSTEM ENVIRONMENT SECTION 00690253 ! 73: C 00700253 ! 74: I01 = 5 00710253 ! 75: C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 00720253 ! 76: C (UNIT NUMBER FOR CARD READER). 00730253 ! 77: CX011 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-011 CONTROL CARD00740253 ! 78: C THE CX011 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL 00750253 ! 79: C FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX010 ABOVE. 00760253 ! 80: C 00770253 ! 81: I02 = 6 00780253 ! 82: C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02 = 6 00790253 ! 83: C (UNIT NUMBER FOR PRINTER). 00800253 ! 84: CX021 THIS CARD IS PEPLACED BY CONTENTS OF FEXEC X-021 CONTROL CARD.00810253 ! 85: C THE CX021 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL 00820253 ! 86: C FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX020 ABOVE. 00830253 ! 87: C 00840253 ! 88: IVPASS = 0 00850253 ! 89: IVFAIL = 0 00860253 ! 90: IVDELE = 0 00870253 ! 91: ICZERO = 0 00880253 ! 92: C 00890253 ! 93: C WRITE OUT PAGE HEADERS 00900253 ! 94: C 00910253 ! 95: WRITE (I02,90002) 00920253 ! 96: WRITE (I02,90006) 00930253 ! 97: WRITE (I02,90008) 00940253 ! 98: WRITE (I02,90004) 00950253 ! 99: WRITE (I02,90010) 00960253 ! 100: WRITE (I02,90004) 00970253 ! 101: WRITE (I02,90016) 00980253 ! 102: WRITE (I02,90001) 00990253 ! 103: WRITE (I02,90004) 01000253 ! 104: WRITE (I02,90012) 01010253 ! 105: WRITE (I02,90014) 01020253 ! 106: WRITE (I02,90004) 01030253 ! 107: C 01040253 ! 108: C 01050253 ! 109: C **** FCVS PROGRAM 253 - TEST 001 **** 01060253 ! 110: C 01070253 ! 111: C TEST 001 USES A VERY SIMPLE BLOCK IF STATEMENT. THE EXPRESSION01080253 ! 112: C WITHIN THE PARENTHESES IS THE LOGICAL CONSTANT .TRUE. AND THE 01090253 ! 113: C EXECUTABLE STATEMENT WITHIN THE IF-BLOCK OF LEVEL ONE IS AN 01100253 ! 114: C INTEGER ARITHMETIC ASSIGNMENT STATEMENT. SINCE THE LOGICAL 01110253 ! 115: C EXPRESSION IS TRUE, THEN THE INTEGER ASSIGNMENT STATEMENT ( TRUE 01120253 ! 116: C PATH ) SHOULD BE EXECUTED. 01130253 ! 117: C 01140253 ! 118: C THIS IS A SYNTAX CHECK FOR THE BLOCK IF STATEMENT. SHOULD A 01150253 ! 119: C COMPILER NOT BE ABLE TO ACCEPT THE SYNTAX OF THIS BASIC TEST, 01160253 ! 120: C THEN ROUTINES FM253, THRU FMXXX NEED NOT BE RUN. 01170253 ! 121: C 01180253 ! 122: C 01190253 ! 123: IVTNUM = 1 01200253 ! 124: IF (ICZERO) 30010, 0010, 30010 01210253 ! 125: 0010 CONTINUE 01220253 ! 126: IVCOMP = 0 01230253 ! 127: IF ( .TRUE. ) THEN 01240253 ! 128: IVCOMP = 1 01250253 ! 129: END IF 01260253 ! 130: IVCORR = 1 01270253 ! 131: 40010 IF ( IVCOMP - 1 ) 20010, 10010, 20010 01280253 ! 132: 30010 IVDELE = IVDELE + 1 01290253 ! 133: WRITE (I02,80000) IVTNUM 01300253 ! 134: IF (ICZERO) 10010, 0021, 20010 01310253 ! 135: 10010 IVPASS = IVPASS + 1 01320253 ! 136: WRITE (I02,80002) IVTNUM 01330253 ! 137: GO TO 0021 01340253 ! 138: 20010 IVFAIL = IVFAIL + 1 01350253 ! 139: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 01360253 ! 140: 0021 CONTINUE 01370253 ! 141: C 01380253 ! 142: C **** FCVS PROGRAM 253 - TEST 002 **** 01390253 ! 143: C 01400253 ! 144: C TEST 002 USES A LOGICAL VARIABLE SET .FALSE. AS THE LOGICAL 01410253 ! 145: C EXPRESSION IN THE BLOCK IF STATEMENT. BECAUSE THE EXPRESSION 01420253 ! 146: C IS FALSE, THE IF-BLOCK (WHICH IS AN INTEGER ARITHMETIC ASSIGNMENT 01430253 ! 147: C STATEMENT AND A LOGICAL ASSIGNMENT STATEMENT) SHOULD NOT BE 01440253 ! 148: C EXECUTED. 01450253 ! 149: C 01460253 ! 150: C 01470253 ! 151: IVTNUM = 2 01480253 ! 152: IF (ICZERO) 30020, 0020, 30020 01490253 ! 153: 0020 CONTINUE 01500253 ! 154: IVCOMP = 0 01510253 ! 155: IVON01 = 1 01520253 ! 156: LVON01 = .FALSE. 01530253 ! 157: LVTN01 = .FALSE. 01540253 ! 158: IF ( LVON01 ) THEN 01550253 ! 159: IVON01 = 0 01560253 ! 160: LVTN01 = .TRUE. 01570253 ! 161: END IF 01580253 ! 162: IVCORR = 1 01590253 ! 163: 40020 IF ( IVON01 .EQ. 1 ) IVCOMP = 1 01600253 ! 164: 40021 IF ( IVCOMP - 1 ) 20020, 10020, 20020 01610253 ! 165: 30020 IVDELE = IVDELE + 1 01620253 ! 166: WRITE (I02,80000) IVTNUM 01630253 ! 167: IF (ICZERO) 10020, 0031, 20020 01640253 ! 168: 10020 IVPASS = IVPASS + 1 01650253 ! 169: WRITE (I02,80002) IVTNUM 01660253 ! 170: GO TO 0031 01670253 ! 171: 20020 IVFAIL = IVFAIL + 1 01680253 ! 172: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 01690253 ! 173: 0031 CONTINUE 01700253 ! 174: C 01710253 ! 175: C **** FCVS PROGRAM 253 - TEST 003 **** 01720253 ! 176: C 01730253 ! 177: C TEST 003 IS A BLOCK IF STATEMENT WITH AN EMPTY IF-BLOCK. THE 01740253 ! 178: C LOGICAL EXPRESSION IS A LOGICAL ARRAY ELEMENT REFERENCE SET TO 01750253 ! 179: C .TRUE. SECTION 11.6.2 STATES THAT, AN IF-BLOCK MAY BE EMPTY. 01760253 ! 180: C BECAUSE THE LOGICAL EXPRESSION IS TRUE, THE IF-BLOCK SHOULD BE 01770253 ! 181: C EXECUTED. IF THE VALUE OF THE EXPRESSION IS TRUE AND THE IF-BLOCK01780253 ! 182: C IS EMPTY, CONTROL IS TRANSFERRED TO THE NEXT END IF STATEMENT 01790253 ! 183: C THAT HAS THE SAME IF-LEVEL AS THE BLOCK IF STATEMENT ACCORDING 01800253 ! 184: C TO SECTION 11.6.3. IN THIS TEST THE EMPTY IF-BLOCK IS OF LEVEL ONE01810253 ! 185: C 01820253 ! 186: C 01830253 ! 187: IVTNUM = 3 01840253 ! 188: IF (ICZERO) 30030, 0030, 30030 01850253 ! 189: 0030 CONTINUE 01860253 ! 190: IVCOMP = 0 01870253 ! 191: LATN11(1) = .TRUE. 01880253 ! 192: IF ( LATN11(1) ) THEN 01890253 ! 193: END IF 01900253 ! 194: IVCOMP = 1 01910253 ! 195: IVCORR = 1 01920253 ! 196: 40030 IF ( IVCOMP - 1 ) 20030, 10030, 20030 01930253 ! 197: 30030 IVDELE = IVDELE + 1 01940253 ! 198: WRITE (I02,80000) IVTNUM 01950253 ! 199: IF (ICZERO) 10030, 0041, 20030 01960253 ! 200: 10030 IVPASS = IVPASS + 1 01970253 ! 201: WRITE (I02,80002) IVTNUM 01980253 ! 202: GO TO 0041 01990253 ! 203: 20030 IVFAIL = IVFAIL + 1 02000253 ! 204: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 02010253 ! 205: 0041 CONTINUE 02020253 ! 206: C 02030253 ! 207: C **** FCVS PROGRAM 253 - TEST 004 **** 02040253 ! 208: C 02050253 ! 209: C TEST 004 IS LIKE THE PREVIOUS TEST USING A LOGICAL ARRAY 02060253 ! 210: C ELEMENT REFERENCE AS THE LOGICAL EXPRESSION OF THE BLOCK IF 02070253 ! 211: C STATEMENT THAT HAS AN EMPTY IF-BLOCK STRUCTURE OF LEVEL ONE. 02080253 ! 212: C IN THIS TEST THE LOGICAL EXPRESSION IS FALSE SO CONTROL SHOULD 02090253 ! 213: C BE TRANSFERRED TO THE END IF STATEMENT THAT HAS THE SAME IF-LEVEL 02100253 ! 214: C AS THE BLOCK IF STATEMENT ACCORDING TO SECTION 11.6.3. 02110253 ! 215: C 02120253 ! 216: C THE LOGICAL ARRAY ELEMENT REFERENCE LADN11(2) IS SET TO .FALSE. 02130253 ! 217: C IN THE DATA STATEMENT AS FOLLOWS 02140253 ! 218: C 02150253 ! 219: C DATA LADN11/.TRUE., .FALSE./ 02160253 ! 220: C 02170253 ! 221: C 02180253 ! 222: IVTNUM = 4 02190253 ! 223: IF (ICZERO) 30040, 0040, 30040 02200253 ! 224: 0040 CONTINUE 02210253 ! 225: IVCOMP = 0 02220253 ! 226: IF ( LADN11(2) ) THEN 02230253 ! 227: END IF 02240253 ! 228: IVCOMP = 1 02250253 ! 229: IVCORR = 1 02260253 ! 230: 40040 IF ( IVCOMP - 1 ) 20040, 10040, 20040 02270253 ! 231: 30040 IVDELE = IVDELE + 1 02280253 ! 232: WRITE (I02,80000) IVTNUM 02290253 ! 233: IF (ICZERO) 10040, 0051, 20040 02300253 ! 234: 10040 IVPASS = IVPASS + 1 02310253 ! 235: WRITE (I02,80002) IVTNUM 02320253 ! 236: GO TO 0051 02330253 ! 237: 20040 IVFAIL = IVFAIL + 1 02340253 ! 238: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 02350253 ! 239: 0051 CONTINUE 02360253 ! 240: C 02370253 ! 241: C 02380253 ! 242: C THE NEXT FOUR TESTS ARE FOR A BLOCK IF STRUCTURE OF LEVEL 02390253 ! 243: C TWO IN THE INNERMOST IF-BLOCK. THIS STRUCTURE IS SHOWN BELOW - 02400253 ! 244: C 02410253 ! 245: C IF ( E1 ) THEN 02420253 ! 246: C IF-BLOCK 1 02430253 ! 247: C IF ( E2 ) THEN 02440253 ! 248: C IF-BLOCK 2 02450253 ! 249: C END IF 02460253 ! 250: C END IF 02470253 ! 251: C TESTS WILL USE THE FOUR COMBINATIONS OF TRUE AND FALSE FOR E1 AND 02480253 ! 252: C E2 RESPECTIVELY TO TEST THE TRANSFER OF CONTROL AS DESCRIBED 02490253 ! 253: C IN SECTION 11.6.3. 02500253 ! 254: C 02510253 ! 255: C 02520253 ! 256: C 02530253 ! 257: C **** FCVS PROGRAM 253 - TEST 005 **** 02540253 ! 258: C 02550253 ! 259: C TEST 005 USES A FALSE VALUE FOR E1 AND A FALSE VALUE FOR E2. 02560253 ! 260: C CONTROL SHOULD BE TRANSFERRED TO THE END IF STATEMENT OF LEVEL 1 02570253 ! 261: C WHICH MEANS IF-BLOCK 1 AND IF-BLOCK 2 SHOULD NOT BE EXECUTED. 02580253 ! 262: C 02590253 ! 263: C 02600253 ! 264: IVTNUM = 5 02610253 ! 265: IF (ICZERO) 30050, 0050, 30050 02620253 ! 266: 0050 CONTINUE 02630253 ! 267: IVCOMP = 1 02640253 ! 268: LADN11(2) = .FALSE. 02650253 ! 269: IF ( 76 .LT. 3 ) THEN 02660253 ! 270: IVCOMP = IVCOMP * 2 02670253 ! 271: IF ( ( LADN11(2) ) ) THEN 02680253 ! 272: IVCOMP = IVCOMP * 3 02690253 ! 273: END IF 02700253 ! 274: END IF 02710253 ! 275: IVCORR = 1 02720253 ! 276: 40051 IF ( IVCOMP - 1 ) 20050, 10050, 20050 02730253 ! 277: 30050 IVDELE = IVDELE + 1 02740253 ! 278: WRITE (I02,80000) IVTNUM 02750253 ! 279: IF (ICZERO) 10050, 0061, 20050 02760253 ! 280: 10050 IVPASS = IVPASS + 1 02770253 ! 281: WRITE (I02,80002) IVTNUM 02780253 ! 282: GO TO 0061 02790253 ! 283: 20050 IVFAIL = IVFAIL + 1 02800253 ! 284: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 02810253 ! 285: 0061 CONTINUE 02820253 ! 286: C 02830253 ! 287: C **** FCVS PROGRAM 253 - TEST 006 **** 02840253 ! 288: C 02850253 ! 289: C TEST 006 USES A FALSE VALUE FOR E1 AND A TRUE VALUE FOR E2. 02860253 ! 290: C CONTROL SHOULD BE TRANSFERRED TO THE END IF STATEMENT OF LEVEL 1 02870253 ! 291: C WHICH MEANS IF-BLOCK 1 AND IF-BLOCK 2 SHOULD NOT BE EXECUTED. 02880253 ! 292: C 02890253 ! 293: C 02900253 ! 294: IVTNUM = 6 02910253 ! 295: IF (ICZERO) 30060, 0060, 30060 02920253 ! 296: 0060 CONTINUE 02930253 ! 297: IVCOMP = 1 02940253 ! 298: IVON03 = 32767 02950253 ! 299: LVTN01 = .TRUE. 02960253 ! 300: LVON01 = .TRUE. 02970253 ! 301: IF ( .NOT. LVTN01 ) THEN 02980253 ! 302: IVCOMP = IVCOMP * 2 02990253 ! 303: IF ( LVON01 .AND. IVON03 .GE. 587 ) THEN 03000253 ! 304: IVCOMP = IVCOMP * 3 03010253 ! 305: END IF 03020253 ! 306: END IF 03030253 ! 307: IVCORR = 1 03040253 ! 308: 40061 IF ( IVCOMP - 1 ) 20060, 10060, 20060 03050253 ! 309: 30060 IVDELE = IVDELE + 1 03060253 ! 310: WRITE (I02,80000) IVTNUM 03070253 ! 311: IF (ICZERO) 10060, 0071, 20060 03080253 ! 312: 10060 IVPASS = IVPASS + 1 03090253 ! 313: WRITE (I02,80002) IVTNUM 03100253 ! 314: GO TO 0071 03110253 ! 315: 20060 IVFAIL = IVFAIL + 1 03120253 ! 316: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 03130253 ! 317: 0071 CONTINUE 03140253 ! 318: C 03150253 ! 319: C **** FCVS PROGRAM 253 - TEST 007 **** 03160253 ! 320: C 03170253 ! 321: C TEST 007 USES A TRUE VALUE FOR E1 AND A FALSE VALUE FOR E2. 03180253 ! 322: C IF-BLOCK 1 SHOULD BE EXECUTED, BUT IF-BLOCK 2 SHOULD NOT BE 03190253 ! 323: C EXECUTED. 03200253 ! 324: C 03210253 ! 325: C IF-BLOCK 1 ALSO CONTAINS AN UNCONDITIONAL GO TO AND A CONTINUE 03220253 ! 326: C STATEMENT WHICH SHOULD BOTH BE EXECUTED. 03230253 ! 327: C 03240253 ! 328: C 03250253 ! 329: IVTNUM = 7 03260253 ! 330: IF (ICZERO) 30070, 0070, 30070 03270253 ! 331: 0070 CONTINUE 03280253 ! 332: IVCOMP = 1 03290253 ! 333: IVON03 = 587 03300253 ! 334: IVON04 = 3 03310253 ! 335: LATN11(1) = .TRUE. 03320253 ! 336: LATN11(2) = .FALSE. 03330253 ! 337: IF ( (LATN11(1)) .OR. ((7 * IVON04) .EQ. 21) ) THEN 03340253 ! 338: IVCOMP = IVCOMP * 2 03350253 ! 339: GO TO 0072 03360253 ! 340: 0072 CONTINUE 03370253 ! 341: IF ( 7 .GT. IVON03 .OR. LATN11(2) ) THEN 03380253 ! 342: IVCOMP = IVCOMP * 3 03390253 ! 343: END IF 03400253 ! 344: END IF 03410253 ! 345: C 03420253 ! 346: C **** IVCOMP IS DETERMINED BY IVCOMP = 2 = 1 * 2 **** 03430253 ! 347: C 03440253 ! 348: IVCORR = 2 03450253 ! 349: 40070 IF ( IVCOMP - 2 ) 20070, 10070, 20070 03460253 ! 350: 30070 IVDELE = IVDELE + 1 03470253 ! 351: WRITE (I02,80000) IVTNUM 03480253 ! 352: IF (ICZERO) 10070, 0081, 20070 03490253 ! 353: 10070 IVPASS = IVPASS + 1 03500253 ! 354: WRITE (I02,80002) IVTNUM 03510253 ! 355: GO TO 0081 03520253 ! 356: 20070 IVFAIL = IVFAIL + 1 03530253 ! 357: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 03540253 ! 358: 0081 CONTINUE 03550253 ! 359: C 03560253 ! 360: C **** FCVS PROGRAM 253 - TEST 008 **** 03570253 ! 361: C 03580253 ! 362: C TEST 008 USES A TRUE VALUE FOR E1 AND A TRUE VALUE FOR E2. 03590253 ! 363: C BOTH IF-BLOCK 1 AND IF-BLOCK 2 SHOULD BE EXECUTED. 03600253 ! 364: C 03610253 ! 365: C IF-BLOCK 1 CONTAINS AN ASSIGN STATEMENT PLUS AN ASSIGNED GO TO 03620253 ! 366: C STATEMENT WHICH SHOULD BOTH BE EXECUTED. 03630253 ! 367: C 03640253 ! 368: C 03650253 ! 369: IVTNUM = 8 03660253 ! 370: IF (ICZERO) 30080, 0080, 30080 03670253 ! 371: 0080 CONTINUE 03680253 ! 372: IVCOMP = 1 03690253 ! 373: IVON04 = 4 03700253 ! 374: IVON05 = 2 03710253 ! 375: LVON01 = .FALSE. 03720253 ! 376: LVTN01 = LVON01 03730253 ! 377: C 03740253 ! 378: IF ( IVON04 - 1 .LE. 6 .AND. 7 .GE. 5 / IVON05 ) THEN 03750253 ! 379: IVCOMP = IVCOMP * 2 03760253 ! 380: ASSIGN 0083 TO I 03770253 ! 381: GO TO 0084 03780253 ! 382: 0082 IVCOMP = IVCOMP * 3 03790253 ! 383: GO TO 0085 03800253 ! 384: 0083 IVCOMP = IVCOMP * 5 03810253 ! 385: GO TO 0085 03820253 ! 386: 0084 GO TO I, ( 0082, 0083 ) 03830253 ! 387: 0085 IF ( .NOT. ( LVTN01 ) ) THEN 03840253 ! 388: IVCOMP = IVCOMP * 7 03850253 ! 389: END IF 03860253 ! 390: END IF 03870253 ! 391: C 03880253 ! 392: C **** IVCOMP IS DETERMINED BY IVCOMP = 70 = 1 * 2 * 5 * 7 ****03890253 ! 393: C 03900253 ! 394: IVCORR = 70 03910253 ! 395: 40080 IF ( IVCOMP - 70 ) 20080, 10080, 20080 03920253 ! 396: 30080 IVDELE = IVDELE + 1 03930253 ! 397: WRITE (I02,80000) IVTNUM 03940253 ! 398: IF (ICZERO) 10080, 0091, 20080 03950253 ! 399: 10080 IVPASS = IVPASS + 1 03960253 ! 400: WRITE (I02,80002) IVTNUM 03970253 ! 401: GO TO 0091 03980253 ! 402: 20080 IVFAIL = IVFAIL + 1 03990253 ! 403: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 04000253 ! 404: 0091 CONTINUE 04010253 ! 405: C 04020253 ! 406: C THE NEXT FIVE TESTS ARE FOR A BLOCK IF STRUCTURE OF LEVEL 04030253 ! 407: C THREE IN THE INNERMOST IF-BLOCK. THIS STRUCTURE IS SHOWN BELOW - 04040253 ! 408: C 04050253 ! 409: C IF ( E1 ) THEN 04060253 ! 410: C IF-BLOCK 1 04070253 ! 411: C IF ( E2 ) THEN 04080253 ! 412: C IF-BLOCK 2 04090253 ! 413: C IF ( E3 ) THEN 04100253 ! 414: C IF-BLOCK 3 04110253 ! 415: C END IF 04120253 ! 416: C END IF 04130253 ! 417: C END IF 04140253 ! 418: C 04150253 ! 419: C THE FIVE TESTS WILL USE THE FOLLOWING COMBINATIONS OF TRUE AND 04160253 ! 420: C FALSE FOR E1, E2, AND E3 AS SHOWN BELOW - 04170253 ! 421: C TEST NUMBER 9 10 11 12 13 04180253 ! 422: C E1 T T T T F 04190253 ! 423: C E2 T T F F T 04200253 ! 424: C E3 T F T F T 04210253 ! 425: C 04220253 ! 426: C CONTROL SHOULD BE AS DESCRIBED IN SECTION 11.6.3. 04230253 ! 427: C 04240253 ! 428: C 04250253 ! 429: C 04260253 ! 430: C **** FCVS PROGRAM 253 - TEST 009 **** 04270253 ! 431: C 04280253 ! 432: C TEST 009 HAS E1, E2, AND E3 AS TRUE. IF-BLOCK 1, 2, AND 3 04290253 ! 433: C SHOULD BE EXECUTED. IF-BLOCK 1 HAS A COMPUTED GO TO STATEMENT 04300253 ! 434: C WHICH SHOULD BE EXECUTED. 04310253 ! 435: C 04320253 ! 436: C 04330253 ! 437: IVTNUM = 9 04340253 ! 438: IF (ICZERO) 30090, 0090, 30090 04350253 ! 439: 0090 CONTINUE 04360253 ! 440: IVCOMP = 1 04370253 ! 441: IVON01 = 4 04380253 ! 442: IVON02 = 3 04390253 ! 443: C 04400253 ! 444: IF ( .NOT. IVON01 .EQ. 3 .OR. .NOT. IVON02 .EQ. 4 ) THEN 04410253 ! 445: IVCOMP = IVCOMP * 2 04420253 ! 446: J = 2 04430253 ! 447: GO TO 0095 04440253 ! 448: 0092 IVCOMP = IVCOMP * 3 04450253 ! 449: GO TO 0096 04460253 ! 450: 0093 IVCOMP = IVCOMP * 5 04470253 ! 451: GO TO 0096 04480253 ! 452: 0094 IVCOMP = IVCOMP * 7 04490253 ! 453: GO TO 0096 04500253 ! 454: 0095 GO TO ( 0092, 0093, 0094 ), J 04510253 ! 455: 0096 IF ( IVON01 .EQ. 4 .AND. IVON02 .NE. 2 ) THEN 04520253 ! 456: IVCOMP = IVCOMP * 11 04530253 ! 457: IF ( IVON01 .EQ. 4 .AND. .NOT. IVON02 .EQ. 2 ) THEN 04540253 ! 458: IVCOMP = IVCOMP * 13 04550253 ! 459: END IF 04560253 ! 460: END IF 04570253 ! 461: END IF 04580253 ! 462: C 04590253 ! 463: C **** IVCOMP IS DETERMINED BY IVCOMP = 1430 = 1*2*5*11*13 ****04600253 ! 464: C 04610253 ! 465: IVCORR = 1430 04620253 ! 466: 40090 IF ( IVCOMP - 1430 ) 20090, 10090, 20090 04630253 ! 467: 30090 IVDELE = IVDELE + 1 04640253 ! 468: WRITE (I02,80000) IVTNUM 04650253 ! 469: IF (ICZERO) 10090, 0101, 20090 04660253 ! 470: 10090 IVPASS = IVPASS + 1 04670253 ! 471: WRITE (I02,80002) IVTNUM 04680253 ! 472: GO TO 0101 04690253 ! 473: 20090 IVFAIL = IVFAIL + 1 04700253 ! 474: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 04710253 ! 475: 0101 CONTINUE 04720253 ! 476: C 04730253 ! 477: C **** FCVS PROGRAM 253 - TEST 010 **** 04740253 ! 478: C 04750253 ! 479: C 04760253 ! 480: C TEST 010 HAS E1 AND E2 AS TRUE. E3 IS FALSE. IF-BLOCK 1 HAS 04770253 ! 481: C A LOGICAL IF STATEMENT WHICH SHOULD BE EXECUTED BY TAKING THE 04780253 ! 482: C TRUE PATH. IF-BLOCK 2 HAS AN ARITHMETIC IF STATEMENT WITH THE 04790253 ! 483: C VALUE INSIDE THE PARENTHESIS EQUAL TO ZERO. IF-BLOCK 3 SHOULD NOT04800253 ! 484: C BE EXECUTED. 04810253 ! 485: C 04820253 ! 486: C 04830253 ! 487: IVTNUM = 10 04840253 ! 488: IF (ICZERO) 30100, 0100, 30100 04850253 ! 489: 0100 CONTINUE 04860253 ! 490: IVCOMP = 1 04870253 ! 491: IVON01 = +3 04880253 ! 492: LVON01 = .FALSE. 04890253 ! 493: C 04900253 ! 494: IF ( .NOT. LVON01 .AND. .TRUE. .OR. .TRUE. .AND. .NOT. LVON01 ) 04910253 ! 495: 1THEN 04920253 ! 496: IVCOMP = IVCOMP * 2 04930253 ! 497: IF ( 3 .LE. IVON01 ) IVCOMP = IVCOMP * 3 04940253 ! 498: IF ( .NOT.(LVON01.AND..TRUE.).OR.(.TRUE..AND..NOT.LVON01) ) 04950253 ! 499: 1 THEN 04960253 ! 500: IF ( 3 - IVON01 ) 0103, 0102, 0103 04970253 ! 501: 0102 IVCOMP = IVCOMP * 5 04980253 ! 502: GO TO 0104 04990253 ! 503: 0103 IVCOMP = IVCOMP * 7 05000253 ! 504: 0104 CONTINUE 05010253 ! 505: IF ( .NOT.(.NOT.(LVON01.AND..TRUE.)).OR..FALSE..AND. 05020253 ! 506: 1 .NOT.LVON01 ) THEN 05030253 ! 507: IVCOMP = IVCOMP * 11 05040253 ! 508: END IF 05050253 ! 509: END IF 05060253 ! 510: END IF 05070253 ! 511: C 05080253 ! 512: C **** IVCOMP IS DETERMINED BY IVCOMP = 30 = 1 * 2 * 3 * 5 ****05090253 ! 513: C 05100253 ! 514: IVCORR = 30 05110253 ! 515: 40100 IF ( IVCOMP - 30 ) 20100, 10100, 20100 05120253 ! 516: 30100 IVDELE = IVDELE + 1 05130253 ! 517: WRITE (I02,80000) IVTNUM 05140253 ! 518: IF (ICZERO) 10100, 0111, 20100 05150253 ! 519: 10100 IVPASS = IVPASS + 1 05160253 ! 520: WRITE (I02,80002) IVTNUM 05170253 ! 521: GO TO 0111 05180253 ! 522: 20100 IVFAIL = IVFAIL + 1 05190253 ! 523: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 05200253 ! 524: 0111 CONTINUE 05210253 ! 525: C 05220253 ! 526: C **** FCVS PROGRAM 253 - TEST 011 **** 05230253 ! 527: C 05240253 ! 528: C 05250253 ! 529: C TEST 011 HAS E1 AND E3 AS TRUE. E2 IS FALSE. ONLY IF-BLOCK 1 05260253 ! 530: C SHOULD BE EXECUTED. THIS SET OF BLOCK IF STATEMENTS HAS INTEGER 05270253 ! 531: C ASSIGNMENT STATEMENTS BETWEEN THE END IF STATEMENTS. A CHECK IS 05280253 ! 532: C MADE TO DETERMINE IF THESE STATEMENTS HAVE BEEN EXECUTED. 05290253 ! 533: C 05300253 ! 534: C 05310253 ! 535: IVTNUM = 11 05320253 ! 536: IF (ICZERO) 30110, 0110, 30110 05330253 ! 537: 0110 CONTINUE 05340253 ! 538: IVCOMP = 1 05350253 ! 539: LVON01 = .TRUE. 05360253 ! 540: LVON02 = .FALSE. 05370253 ! 541: LVON03 = .TRUE. 05380253 ! 542: C 05390253 ! 543: IF ( LVON01 ) THEN 05400253 ! 544: IVCOMP = IVCOMP * 2 05410253 ! 545: IF ( LVON02 ) THEN 05420253 ! 546: IVCOMP = IVCOMP * 3 05430253 ! 547: IF ( LVON03 ) THEN 05440253 ! 548: IVCOMP = IVCOMP * 5 05450253 ! 549: END IF 05460253 ! 550: IVCOMP = IVCOMP * 7 05470253 ! 551: END IF 05480253 ! 552: IVCOMP = IVCOMP * 11 05490253 ! 553: END IF 05500253 ! 554: IVCOMP = IVCOMP * 13 05510253 ! 555: C 05520253 ! 556: C **** IVCOMP IS DETERMINED BY IVCOMP = 286 = 1*2*11*13 ****05530253 ! 557: C 05540253 ! 558: IVCORR = 286 05550253 ! 559: 40110 IF ( IVCOMP - 286 ) 20110, 10110, 20110 05560253 ! 560: 30110 IVDELE = IVDELE + 1 05570253 ! 561: WRITE (I02,80000) IVTNUM 05580253 ! 562: IF (ICZERO) 10110, 0121, 20110 05590253 ! 563: 10110 IVPASS = IVPASS + 1 05600253 ! 564: WRITE (I02,80002) IVTNUM 05610253 ! 565: GO TO 0121 05620253 ! 566: 20110 IVFAIL = IVFAIL + 1 05630253 ! 567: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 05640253 ! 568: 0121 CONTINUE 05650253 ! 569: C 05660253 ! 570: C **** FCVS PROGRAM 253 - TEST 012 **** 05670253 ! 571: C 05680253 ! 572: C 05690253 ! 573: C TEST 012 HAS E1 AS TRUE. E2 AND E3 ARE FALSE. ONLY IF-BLOCK 105700253 ! 574: C SHOULD BE EXECUTED. INTEGER ASSIGNMENT STATEMENTS ARE USED TO 05710253 ! 575: C DETERMINE THE FLOW OF LOGIC THROUGH THE BLOCK IF STRUCTURE. 05720253 ! 576: C 05730253 ! 577: C 05740253 ! 578: IVTNUM = 12 05750253 ! 579: IF (ICZERO) 30120, 0120, 30120 05760253 ! 580: 0120 CONTINUE 05770253 ! 581: IVCOMP = 1 05780253 ! 582: LVON01 = .TRUE. 05790253 ! 583: LVON02 = .FALSE. 05800253 ! 584: LVON03 = .FALSE. 05810253 ! 585: C 05820253 ! 586: IF ( LVON01 ) THEN 05830253 ! 587: IVCOMP = IVCOMP * 2 05840253 ! 588: IF ( LVON02 ) THEN 05850253 ! 589: IVCOMP = IVCOMP * 3 05860253 ! 590: IF ( LVON03 ) THEN 05870253 ! 591: IVCOMP = IVCOMP * 5 05880253 ! 592: END IF 05890253 ! 593: IVCOMP = IVCOMP * 7 05900253 ! 594: END IF 05910253 ! 595: IVCOMP = IVCOMP * 11 05920253 ! 596: END IF 05930253 ! 597: IVCOMP = IVCOMP * 13 05940253 ! 598: C 05950253 ! 599: C **** IVCOMP IS DETERMINED BY IVCOMP = 286 = 1*2*11*13 ****05960253 ! 600: C 05970253 ! 601: IVCORR = 286 05980253 ! 602: 40120 IF ( IVCOMP - 286 ) 20120, 10120, 20120 05990253 ! 603: 30120 IVDELE = IVDELE + 1 06000253 ! 604: WRITE (I02,80000) IVTNUM 06010253 ! 605: IF (ICZERO) 10120, 0131, 20120 06020253 ! 606: 10120 IVPASS = IVPASS + 1 06030253 ! 607: WRITE (I02,80002) IVTNUM 06040253 ! 608: GO TO 0131 06050253 ! 609: 20120 IVFAIL = IVFAIL + 1 06060253 ! 610: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 06070253 ! 611: 0131 CONTINUE 06080253 ! 612: C 06090253 ! 613: C **** FCVS PROGRAM 253 - TEST 013 **** 06100253 ! 614: C 06110253 ! 615: C 06120253 ! 616: C TEST 013 HAS E1 FALSE. E2 AND E3 ARE TRUE. NONE OF THE IF- 06130253 ! 617: C BLOCKS SHOULD BE EXECUTED. INTEGER ASSIGNMENT STATEMENTS ARE 06140253 ! 618: C USED TO TRACE THE FLOW OF LOGIC THROUGH THE BLOCK IF STRUCTURE. 06150253 ! 619: C 06160253 ! 620: C 06170253 ! 621: IVTNUM = 13 06180253 ! 622: IF (ICZERO) 30130, 0130, 30130 06190253 ! 623: 0130 CONTINUE 06200253 ! 624: IVCOMP = 1 06210253 ! 625: LVON01 = .FALSE. 06220253 ! 626: LVON02 = .TRUE. 06230253 ! 627: LVON03 = .TRUE. 06240253 ! 628: C 06250253 ! 629: IF ( LVON01 ) THEN 06260253 ! 630: IVCOMP = IVCOMP * 2 06270253 ! 631: IF ( LVON02 ) THEN 06280253 ! 632: IVCOMP = IVCOMP * 3 06290253 ! 633: IF ( LVON03 ) THEN 06300253 ! 634: IVCOMP = IVCOMP * 5 06310253 ! 635: END IF 06320253 ! 636: IVCOMP = IVCOMP * 7 06330253 ! 637: END IF 06340253 ! 638: IVCOMP = IVCOMP * 11 06350253 ! 639: END IF 06360253 ! 640: IVCOMP = IVCOMP * 13 06370253 ! 641: C 06380253 ! 642: C **** IVCOMP IS DETERMINED BY IVCOMP = 13 = 1 * 13 ****06390253 ! 643: C 06400253 ! 644: IVCORR = 13 06410253 ! 645: 40130 IF ( IVCOMP - 13 ) 20130, 10130, 20130 06420253 ! 646: 30130 IVDELE = IVDELE + 1 06430253 ! 647: WRITE (I02,80000) IVTNUM 06440253 ! 648: IF (ICZERO) 10130, 0141, 20130 06450253 ! 649: 10130 IVPASS = IVPASS + 1 06460253 ! 650: WRITE (I02,80002) IVTNUM 06470253 ! 651: GO TO 0141 06480253 ! 652: 20130 IVFAIL = IVFAIL + 1 06490253 ! 653: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 06500253 ! 654: 0141 CONTINUE 06510253 ! 655: C 06520253 ! 656: C **** FCVS PROGRAM 253 - TEST 014 **** 06530253 ! 657: C 06540253 ! 658: C TEST 014 IS TO CHECK FOR PROPER TRANSFER OF CONTROL USING 06550253 ! 659: C LOGICAL IF STATEMENTS WITHIN IF-BLOCKS AND BRANCHING TO THE 06560253 ! 660: C OUTERMOST IF-LEVEL FROM THE INNERMOST IF-LEVEL IN A CONTROLLED 06570253 ! 661: C LOOP. THE INNERMOST IF-LEVEL SHOULD BE EXECUTED 10 TIMES. A 06580253 ! 662: C LOGICAL IF STATEMENT IS USED IN EACH OF THE IF-LEVELS IN CASE 06590253 ! 663: C THE EXECUTION LOGIC BRANCHES INCORRECTLY. THIS SHOULD PREVENT 06600253 ! 664: C AN INFINITE LOOP DURING THE EXECUTION OF THIS ROUTINE. 06610253 ! 665: C 06620253 ! 666: C 06630253 ! 667: IVTNUM = 14 06640253 ! 668: IF (ICZERO) 30140, 0140, 30140 06650253 ! 669: 0140 CONTINUE 06660253 ! 670: IVCOMP = 0 06670253 ! 671: IVON01 = 0 06680253 ! 672: IVON02 = 0 06690253 ! 673: IVON03 = 0 06700253 ! 674: 0142 IF ( IVON03 .LT. 10 ) THEN 06710253 ! 675: IVON01 = IVON01 + 1 06720253 ! 676: IF ( IVON01 .GT. 11 ) GO TO 0143 06730253 ! 677: IF ( IVON03 .LT. 10 ) THEN 06740253 ! 678: IVON02 = IVON02 + 1 06750253 ! 679: IF ( IVON02 .GT. 11 ) GO TO 0143 06760253 ! 680: IF ( IVON03 .LT. 10 ) THEN 06770253 ! 681: IVON03 = IVON03 + 1 06780253 ! 682: IF ( IVON03 .GT. 11 ) GO TO 0143 06790253 ! 683: IF ( IVON03 .LE. 10 ) GO TO 0142 06800253 ! 684: END IF 06810253 ! 685: END IF 06820253 ! 686: END IF 06830253 ! 687: 0143 CONTINUE 06840253 ! 688: IVCOMP = IVON01 06850253 ! 689: IVCORR = 10 06860253 ! 690: 40140 IF ( IVCOMP - 10 ) 20140, 10140, 20140 06870253 ! 691: 30140 IVDELE = IVDELE + 1 06880253 ! 692: WRITE (I02,80000) IVTNUM 06890253 ! 693: IF (ICZERO) 10140, 0151, 20140 06900253 ! 694: 10140 IVPASS = IVPASS + 1 06910253 ! 695: WRITE (I02,80002) IVTNUM 06920253 ! 696: GO TO 0151 06930253 ! 697: 20140 IVFAIL = IVFAIL + 1 06940253 ! 698: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 06950253 ! 699: 0151 CONTINUE 06960253 ! 700: C 06970253 ! 701: C THE NEXT TWO TESTS ARE TO CHECK THE COUNTERS IN IF-LEVEL 2 AND 06980253 ! 702: C IF-LEVEL 3 RESPECTIVELY IN THE PREVIOUS TEST. 06990253 ! 703: C 07000253 ! 704: C 07010253 ! 705: C 07020253 ! 706: C **** FCVS PROGRAM 253 - TEST 015 **** 07030253 ! 707: C 07040253 ! 708: C TEST 015 CHECKS THAT THE INTEGER COUNTER IN IF-LEVEL 2 IN THE 07050253 ! 709: C PREVIOUS TEST IS EQUAL TO TEN (10). 07060253 ! 710: C 07070253 ! 711: C 07080253 ! 712: IVTNUM = 15 07090253 ! 713: IF (ICZERO) 30150, 0150, 30150 07100253 ! 714: 0150 CONTINUE 07110253 ! 715: IVCOMP = IVON02 07120253 ! 716: IVCORR = 10 07130253 ! 717: 40150 IF ( IVCOMP - 10 ) 20150, 10150, 20150 07140253 ! 718: 30150 IVDELE = IVDELE + 1 07150253 ! 719: WRITE (I02,80000) IVTNUM 07160253 ! 720: IF (ICZERO) 10150, 0161, 20150 07170253 ! 721: 10150 IVPASS = IVPASS + 1 07180253 ! 722: WRITE (I02,80002) IVTNUM 07190253 ! 723: GO TO 0161 07200253 ! 724: 20150 IVFAIL = IVFAIL + 1 07210253 ! 725: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 07220253 ! 726: 0161 CONTINUE 07230253 ! 727: C 07240253 ! 728: C **** FCVS PROGRAM 253 - TEST 016 **** 07250253 ! 729: C 07260253 ! 730: C TEST 016 CHECKS THAT THE INTEGER COUNTER IN IF-LEVEL 3 IN THE 07270253 ! 731: C PREVIOUS TEST IS EQUAL TO TEN (10). 07280253 ! 732: C 07290253 ! 733: C 07300253 ! 734: IVTNUM = 16 07310253 ! 735: IF (ICZERO) 30160, 0160, 30160 07320253 ! 736: 0160 CONTINUE 07330253 ! 737: IVCOMP = IVON03 07340253 ! 738: IVCORR = 10 07350253 ! 739: 40160 IF ( IVCOMP - 10 ) 20160, 10160, 20160 07360253 ! 740: 30160 IVDELE = IVDELE + 1 07370253 ! 741: WRITE (I02,80000) IVTNUM 07380253 ! 742: IF (ICZERO) 10160, 0171, 20160 07390253 ! 743: 10160 IVPASS = IVPASS + 1 07400253 ! 744: WRITE (I02,80002) IVTNUM 07410253 ! 745: GO TO 0171 07420253 ! 746: 20160 IVFAIL = IVFAIL + 1 07430253 ! 747: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 07440253 ! 748: 0171 CONTINUE 07450253 ! 749: C 07460253 ! 750: C THE NEXT THREE TESTS ARE SIMILAR TO THE PREVIOUS THREE TESTS 07470253 ! 751: C IN THAT THEY TEST THE TRANSFER OF CONTROL WITHIN A THREE LEVEL 07480253 ! 752: C BLOCK IF STRUCTURE. EACH OF THE IF-LEVELS ARE EXECUTED AS IF THEY07490253 ! 753: C WERE A LOOP USING LOGICAL IF STATEMENTS WITHIN EACH IF-LEVEL. 07500253 ! 754: C 07510253 ! 755: C 07520253 ! 756: C 07530253 ! 757: C **** FCVS PROGRAM 253 - TEST 017 **** 07540253 ! 758: C 07550253 ! 759: C TEST 017 CHECKS THAT THE VALUE OF THE INTEGER COUNTER IVON04 IN07560253 ! 760: C IF-LEVEL 1 IN THIS TEST EQUALS 10. 07570253 ! 761: C 07580253 ! 762: C 07590253 ! 763: IVTNUM = 17 07600253 ! 764: IF (ICZERO) 30170, 0170, 30170 07610253 ! 765: 0170 CONTINUE 07620253 ! 766: IVCOMP = 0 07630253 ! 767: IVON01 = 0 07640253 ! 768: IVON02 = 0 07650253 ! 769: IVON03 = 0 07660253 ! 770: IVON04 = 0 07670253 ! 771: IVON05 = 0 07680253 ! 772: IVON06 = 0 07690253 ! 773: C 07700253 ! 774: 0172 IF ( IVON01 .LT. 10 ) THEN 07710253 ! 775: IVON01 = IVON01 + 1 07720253 ! 776: IVON04 = IVON04 + 1 07730253 ! 777: IF ( IVON01 .GT. 11 ) GO TO 0175 07740253 ! 778: 0173 IF ( IVON02 .LT. 10 ) THEN 07750253 ! 779: IVON02 = IVON02 + 1 07760253 ! 780: IVON05 = IVON05 + 1 07770253 ! 781: IF ( IVON02 .GT. 11 ) GO TO 0175 07780253 ! 782: 0174 IF ( IVON03 .LT. 10 ) THEN 07790253 ! 783: IVON03 = IVON03 + 1 07800253 ! 784: IVON06 = IVON06 + 1 07810253 ! 785: IF ( IVON03 .GT. 11 ) GO TO 0175 07820253 ! 786: IF ( IVON03 .LE. 10 ) GO TO 0174 07830253 ! 787: END IF 07840253 ! 788: IVON03 = 0 07850253 ! 789: IF ( IVON02 .LE. 10 ) GO TO 0173 07860253 ! 790: END IF 07870253 ! 791: IVON02 = 0 07880253 ! 792: IF ( IVON01 .LE. 10 ) GO TO 0172 07890253 ! 793: END IF 07900253 ! 794: 0175 CONTINUE 07910253 ! 795: IVCOMP = IVON04 07920253 ! 796: IVCORR = 10 07930253 ! 797: 40170 IF ( IVCOMP - 10 ) 20170, 10170, 20170 07940253 ! 798: 30170 IVDELE = IVDELE + 1 07950253 ! 799: WRITE (I02,80000) IVTNUM 07960253 ! 800: IF (ICZERO) 10170, 0181, 20170 07970253 ! 801: 10170 IVPASS = IVPASS + 1 07980253 ! 802: WRITE (I02,80002) IVTNUM 07990253 ! 803: GO TO 0181 08000253 ! 804: 20170 IVFAIL = IVFAIL + 1 08010253 ! 805: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 08020253 ! 806: 0181 CONTINUE 08030253 ! 807: C 08040253 ! 808: C **** FCVS PROGRAM 253 - TEST 018 **** 08050253 ! 809: C 08060253 ! 810: C TEST 018 CHECKS THAT THE VALUE OF THE INTEGER COUNTER IVON05 IN08070253 ! 811: C IF-LEVEL 2 OF THE PREVIOUS TEST EQUALS 100. 08080253 ! 812: C 08090253 ! 813: C 08100253 ! 814: IVTNUM = 18 08110253 ! 815: IF (ICZERO) 30180, 0180, 30180 08120253 ! 816: 0180 CONTINUE 08130253 ! 817: IVCOMP = IVON05 08140253 ! 818: IVCORR = 100 08150253 ! 819: 40180 IF ( IVCOMP - 100 ) 20180, 10180, 20180 08160253 ! 820: 30180 IVDELE = IVDELE + 1 08170253 ! 821: WRITE (I02,80000) IVTNUM 08180253 ! 822: IF (ICZERO) 10180, 0191, 20180 08190253 ! 823: 10180 IVPASS = IVPASS + 1 08200253 ! 824: WRITE (I02,80002) IVTNUM 08210253 ! 825: GO TO 0191 08220253 ! 826: 20180 IVFAIL = IVFAIL + 1 08230253 ! 827: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 08240253 ! 828: 0191 CONTINUE 08250253 ! 829: C 08260253 ! 830: C **** FCVS PROGRAM 253 - TEST 019 **** 08270253 ! 831: C 08280253 ! 832: C TEST 019 CHECKS THAT THE VALUE OF THE INTEGER COUNTER IVON06 IN08290253 ! 833: C IF-LEVEL 3 OF THE PREVIOUS TEST EQUALS 1000. 08300253 ! 834: C 08310253 ! 835: C 08320253 ! 836: IVTNUM = 19 08330253 ! 837: IF (ICZERO) 30190, 0190, 30190 08340253 ! 838: 0190 CONTINUE 08350253 ! 839: IVCOMP = IVON06 08360253 ! 840: IVCORR = 1000 08370253 ! 841: 40190 IF ( IVCOMP - 1000 ) 20190, 10190, 20190 08380253 ! 842: 30190 IVDELE = IVDELE + 1 08390253 ! 843: WRITE (I02,80000) IVTNUM 08400253 ! 844: IF (ICZERO) 10190, 0201, 20190 08410253 ! 845: 10190 IVPASS = IVPASS + 1 08420253 ! 846: WRITE (I02,80002) IVTNUM 08430253 ! 847: GO TO 0201 08440253 ! 848: 20190 IVFAIL = IVFAIL + 1 08450253 ! 849: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 08460253 ! 850: 0201 CONTINUE 08470253 ! 851: C 08480253 ! 852: C **** FCVS PROGRAM 253 - TEST 020 **** 08490253 ! 853: C 08500253 ! 854: C TEST 020 USES A LOGICAL STATEMENT FUNCTION LFIS01(L) AS 08510253 ! 855: C THE LOGICAL EXPRESSION IN A BLOCK IF STRUCTURE. THE LOGICAL 08520253 ! 856: C STATEMENT FUNCTION TAKES THE LOGICAL COMPLEMENT OF THE LOGICAL 08530253 ! 857: C VALUE SUPPLIED. THE VALUE OF .FALSE. IS SUPPLIED AND THE LOGICAL 08540253 ! 858: C VALUE OF .TRUE. SHOULD BE RETURNED AS THE LOGICAL FUNCTION 08550253 ! 859: C REFERENCE. THE IF-BLOCK OF LEVEL ONE SHOULD BE EXECUTED. 08560253 ! 860: C 08570253 ! 861: C 08580253 ! 862: IVTNUM = 20 08590253 ! 863: IF (ICZERO) 30200, 0200, 30200 08600253 ! 864: 0200 CONTINUE 08610253 ! 865: IVCOMP = 0 08620253 ! 866: LVON01 = .FALSE. 08630253 ! 867: IF ( LFIS01( LVON01 ) ) THEN 08640253 ! 868: IVCOMP = 1 08650253 ! 869: END IF 08660253 ! 870: IVCORR = 1 08670253 ! 871: 40200 IF ( IVCOMP - 1 ) 20200, 10200, 20200 08680253 ! 872: 30200 IVDELE = IVDELE + 1 08690253 ! 873: WRITE (I02,80000) IVTNUM 08700253 ! 874: IF (ICZERO) 10200, 0211, 20200 08710253 ! 875: 10200 IVPASS = IVPASS + 1 08720253 ! 876: WRITE (I02,80002) IVTNUM 08730253 ! 877: GO TO 0211 08740253 ! 878: 20200 IVFAIL = IVFAIL + 1 08750253 ! 879: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 08760253 ! 880: 0211 CONTINUE 08770253 ! 881: C 08780253 ! 882: C 08790253 ! 883: C THE FOLLOWING SERIES OF TESTS ARE TO CHECK THE PRECEDENCE OF 08800253 ! 884: C OPERATORS. THESE INCLUDE ARITHMETIC, RELATIONAL, AND LOGICAL 08810253 ! 885: C OPERATORS. ARITHMETIC OPERATORS ARE CHECKED FIRST FROM THE 08820253 ! 886: C EVALUATION OF CERTAIN ARITHMETIC EXPRESSIONS THAT USE ONLY INTEGER08830253 ! 887: C VALUES IN THE COMPUTATIONS. ALL INTERMEDIATE AND FINAL VALUES ARE08840253 ! 888: C LESS THAN 32767. AFTER EACH OF THE STATEMENTS IS TESTED BY ITSELF08850253 ! 889: C THEN THE RELATIONAL OPERATORS ARE TESTED USING THE INTEGER VALUES 08860253 ! 890: C OBTAINED IN EACH OF THE ARITHMETIC EXPRESSIONS. IN THIS TEST THE 08870253 ! 891: C RELATIONAL EXPRESSIONS ARE COMBINED WITH LOGICAL OPERATORS TO 08880253 ! 892: C PRODUCE A LOGICAL EXPRESSION. FINALLY THE ENTIRE SET OF SIX (6) 08890253 ! 893: C ARITHMETIC , RELATIONAL, AND LOGICAL EXPRESSIONS IS COMBINED INTO 08900253 ! 894: C ONE LOGICAL IF STATEMENT. 08910253 ! 895: C 08920253 ! 896: C 08930253 ! 897: C 08940253 ! 898: C **** FCVS PROGRAM 253 - TEST 021 **** 08950253 ! 899: C 08960253 ! 900: C TEST 021 CHECKS THE ORDER OF EVALUATION WHEN AN ARITHMETIC 08970253 ! 901: C EXPRESSION HAS PARENTHESES AND A SERIES OF EXPONENTIATION. THE 08980253 ! 902: C ORDER OF EVALUATION IS SHOWN BELOW - 08990253 ! 903: C 09000253 ! 904: C 1 + 2 * ( 4 - 2 ) ** 2 ** 3 - 4 / 2 09010253 ! 905: C 1 + 2 * ( 2 ) ** 2 ** 3 - 4 / 2 09020253 ! 906: C 1 + 2 * 2 ** 8 - 4 / 2 09030253 ! 907: C 1 + 2 * 256 - 4 / 2 09040253 ! 908: C 1 + 512 - 2 09050253 ! 909: C 513 - 2 09060253 ! 910: C 511 09070253 ! 911: C 09080253 ! 912: IVTNUM = 21 09090253 ! 913: IF (ICZERO) 30210, 0210, 30210 09100253 ! 914: 0210 CONTINUE 09110253 ! 915: IVON01 = 1 09120253 ! 916: IVON02 = 2 09130253 ! 917: IVON03 = 4 09140253 ! 918: IVON04 = 2 09150253 ! 919: IVON05 = 4 09160253 ! 920: IVON06 = 2 09170253 ! 921: IVCOMP = IVON01 + IVON02 * ( IVON03 - IVON04 ) ** 2 ** 3 - IVON05 09180253 ! 922: 1 / IVON06 09190253 ! 923: IVCORR = 511 09200253 ! 924: 40210 IF ( IVCOMP - 511 ) 20210, 10210, 20210 09210253 ! 925: 30210 IVDELE = IVDELE + 1 09220253 ! 926: WRITE (I02,80000) IVTNUM 09230253 ! 927: IF (ICZERO) 10210, 0221, 20210 09240253 ! 928: 10210 IVPASS = IVPASS + 1 09250253 ! 929: WRITE (I02,80002) IVTNUM 09260253 ! 930: GO TO 0221 09270253 ! 931: 20210 IVFAIL = IVFAIL + 1 09280253 ! 932: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 09290253 ! 933: 0221 CONTINUE 09300253 ! 934: C 09310253 ! 935: C **** FCVS PROGRAM 253 - TEST 022 **** 09320253 ! 936: C 09330253 ! 937: C TEST 022 IS A SERIES OF DIVISIONS FOLLOWED BY A SERIES OF 09340253 ! 938: C MULTIPLICATIONS ALL WITHOUT ANY PARENTHESES. 09350253 ! 939: C 09360253 ! 940: C 16 / 2 / 2 / 2 * 4 * 8 09370253 ! 941: C 8 / 2 / 2 * 4 * 8 09380253 ! 942: C 4 / 2 * 4 * 8 09390253 ! 943: C 2 * 4 * 8 09400253 ! 944: C 8 * 8 09410253 ! 945: C 64 09420253 ! 946: C 09430253 ! 947: C 09440253 ! 948: IVTNUM = 22 09450253 ! 949: IF (ICZERO) 30220, 0220, 30220 09460253 ! 950: 0220 CONTINUE 09470253 ! 951: IVON07 = 16 09480253 ! 952: IVON08 = 2 09490253 ! 953: IVON09 = 2 09500253 ! 954: IVON10 = 2 09510253 ! 955: IVON11 = 4 09520253 ! 956: IVON12 = 8 09530253 ! 957: IVCOMP = IVON07 / IVON08 / IVON09 / IVON10 * IVON11 * IVON12 09540253 ! 958: IVCORR = 64 09550253 ! 959: 40220 IF ( IVCOMP - 64 ) 20220, 10220, 20220 09560253 ! 960: 30220 IVDELE = IVDELE + 1 09570253 ! 961: WRITE (I02,80000) IVTNUM 09580253 ! 962: IF (ICZERO) 10220, 0231, 20220 09590253 ! 963: 10220 IVPASS = IVPASS + 1 09600253 ! 964: WRITE (I02,80002) IVTNUM 09610253 ! 965: GO TO 0231 09620253 ! 966: 20220 IVFAIL = IVFAIL + 1 09630253 ! 967: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 09640253 ! 968: 0231 CONTINUE 09650253 ! 969: C 09660253 ! 970: C **** FCVS PROGRAM 253 - TEST 023 **** 09670253 ! 971: C 09680253 ! 972: C TEST 023 HAS ONE SUBTRACTION IMBEDDED IN A SERIES OF ADDITIONS 09690253 ! 973: C WITHOUT ANY PARENTHESES. 09700253 ! 974: C 09710253 ! 975: C 3 + 4 - 1 + 5 09720253 ! 976: C 7 - 1 + 5 09730253 ! 977: C 6 + 5 09740253 ! 978: C 11 09750253 ! 979: C 09760253 ! 980: C 09770253 ! 981: IVTNUM = 23 09780253 ! 982: IF (ICZERO) 30230, 0230, 30230 09790253 ! 983: 0230 CONTINUE 09800253 ! 984: IVON13 = 3 09810253 ! 985: IVON14 = 4 09820253 ! 986: IVON15 = 1 09830253 ! 987: IVON16 = 5 09840253 ! 988: IVCOMP = IVON13 + IVON14 - IVON15 + IVON16 09850253 ! 989: IVCORR = 11 09860253 ! 990: 40230 IF ( IVCOMP - 11 ) 20230, 10230, 20230 09870253 ! 991: 30230 IVDELE = IVDELE + 1 09880253 ! 992: WRITE (I02,80000) IVTNUM 09890253 ! 993: IF (ICZERO) 10230, 0241, 20230 09900253 ! 994: 10230 IVPASS = IVPASS + 1 09910253 ! 995: WRITE (I02,80002) IVTNUM 09920253 ! 996: GO TO 0241 09930253 ! 997: 20230 IVFAIL = IVFAIL + 1 09940253 ! 998: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 09950253 ! 999: 0241 CONTINUE 09960253 ! 1000: C 09970253 ! 1001: C **** FCVS PROGRAM 253 - TEST 024 **** 09980253 ! 1002: C 09990253 ! 1003: C TEST 024 HAS ADDITION, SUBTRACTION, MULTIPLICATION, DIVISION, 10000253 ! 1004: C AND EXPONENTIATION WITHOUT PARENTHESES. 10010253 ! 1005: C 10020253 ! 1006: C 4 + 4 - 6 * 3 / 3 ** 2 10030253 ! 1007: C 4 + 4 - 6 * 3 / 9 10040253 ! 1008: C 4 + 4 - 18 / 9 10050253 ! 1009: C 4 + 4 - 2 10060253 ! 1010: C 8 - 2 10070253 ! 1011: C 6 10080253 ! 1012: C 10090253 ! 1013: C 10100253 ! 1014: IVTNUM = 24 10110253 ! 1015: IF (ICZERO) 30240, 0240, 30240 10120253 ! 1016: 0240 CONTINUE 10130253 ! 1017: IVON17 = 4 10140253 ! 1018: IVON18 = 4 10150253 ! 1019: IVON19 = 6 10160253 ! 1020: IVON20 = 3 10170253 ! 1021: IVON21 = 3 10180253 ! 1022: IVON22 = 2 10190253 ! 1023: IVCOMP = IVON17 + IVON18 - IVON19 * IVON20 / IVON21 ** IVON22 10200253 ! 1024: IVCORR = 6 10210253 ! 1025: 40240 IF ( IVCOMP - 6 ) 20240, 10240, 20240 10220253 ! 1026: 30240 IVDELE = IVDELE + 1 10230253 ! 1027: WRITE (I02,80000) IVTNUM 10240253 ! 1028: IF (ICZERO) 10240, 0251, 20240 10250253 ! 1029: 10240 IVPASS = IVPASS + 1 10260253 ! 1030: WRITE (I02,80002) IVTNUM 10270253 ! 1031: GO TO 0251 10280253 ! 1032: 20240 IVFAIL = IVFAIL + 1 10290253 ! 1033: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 10300253 ! 1034: 0251 CONTINUE 10310253 ! 1035: C 10320253 ! 1036: C **** FCVS PROGRAM 253 - TEST 025 **** 10330253 ! 1037: C 10340253 ! 1038: C TEST 025 IS LIKE TEST NUMBER 021 EXCEPT THAT THE PARENTHESES 10350253 ! 1039: C HAVE BEEN REMOVED. THE INTEGER VALUES USED AS INPUT ARE THE SAME.10360253 ! 1040: C REMOVAL OF THE PARENTHESES CHANGES THE ORDER OF EVALUATION SO THE 10370253 ! 1041: C FINAL INTEGER RESULT IS DIFFERENT. 10380253 ! 1042: C 10390253 ! 1043: C 1 + 2 * 4 - 2 ** 2 ** 3 - 4 / 2 10400253 ! 1044: C 1 + 2 * 4 - 2 ** 8 - 4 / 2 10410253 ! 1045: C 1 + 2 * 4 - 256 - 4 / 2 10420253 ! 1046: C 1 + 8 - 256 - 2 10430253 ! 1047: C 9 - 256 - 2 10440253 ! 1048: C -247 - 2 10450253 ! 1049: C -249 10460253 ! 1050: C 10470253 ! 1051: IVTNUM = 25 10480253 ! 1052: IF (ICZERO) 30250, 0250, 30250 10490253 ! 1053: 0250 CONTINUE 10500253 ! 1054: IVON23 = 1 10510253 ! 1055: IVON24 = 2 10520253 ! 1056: IVON25 = 4 10530253 ! 1057: IVON26 = 2 10540253 ! 1058: IVON27 = 4 10550253 ! 1059: IVON28 = 2 10560253 ! 1060: IVCOMP = IVON23 + IVON24 * IVON25 - IVON26 ** 2 ** 3 - IVON27 10570253 ! 1061: 1 / IVON28 10580253 ! 1062: IVCORR = -249 10590253 ! 1063: 40250 IF ( IVCOMP + 249 ) 20250, 10250, 20250 10600253 ! 1064: 30250 IVDELE = IVDELE + 1 10610253 ! 1065: WRITE (I02,80000) IVTNUM 10620253 ! 1066: IF (ICZERO) 10250, 0261, 20250 10630253 ! 1067: 10250 IVPASS = IVPASS + 1 10640253 ! 1068: WRITE (I02,80002) IVTNUM 10650253 ! 1069: GO TO 0261 10660253 ! 1070: 20250 IVFAIL = IVFAIL + 1 10670253 ! 1071: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 10680253 ! 1072: 0261 CONTINUE 10690253 ! 1073: C 10700253 ! 1074: C **** FCVS PROGRAM 253 - TEST 026 **** 10710253 ! 1075: C 10720253 ! 1076: C TEST 026 IS JUST LIKE TEST NUMBER 022 EXCEPT THAT PARENTHESES 10730253 ! 1077: C HAVE BEEN ADDED. ALTHOUGH THE INTEGER VALUES ARE THE SAME, THE 10740253 ! 1078: C PARENTHESES CHANGE THE ORDER OF EVALUATION SO THAT THE FINAL 10750253 ! 1079: C INTEGER RESULT IS DIFFERENT. 10760253 ! 1080: C 10770253 ! 1081: C 16 / ( 2 / 2 ) / 2 * ( 4 * 8 ) 10780253 ! 1082: C 16 / ( 1 ) / 2 * ( 32 ) 10790253 ! 1083: C 16 / 2 * 32 10800253 ! 1084: C 8 * 32 10810253 ! 1085: C 256 10820253 ! 1086: C 10830253 ! 1087: IVTNUM = 26 10840253 ! 1088: IF (ICZERO) 30260, 0260, 30260 10850253 ! 1089: 0260 CONTINUE 10860253 ! 1090: IVON29 = 16 10870253 ! 1091: IVON30 = 2 10880253 ! 1092: IVON31 = 2 10890253 ! 1093: IVON32 = 2 10900253 ! 1094: IVON33 = 4 10910253 ! 1095: IVON34 = 8 10920253 ! 1096: IVCOMP = IVON29 / ( IVON30 / IVON31 ) / IVON32 * ( IVON33 * 10930253 ! 1097: 1 IVON34 ) 10940253 ! 1098: IVCORR = 256 10950253 ! 1099: 40260 IF ( IVCOMP - 256 ) 20260, 10260, 20260 10960253 ! 1100: 30260 IVDELE = IVDELE + 1 10970253 ! 1101: WRITE (I02,80000) IVTNUM 10980253 ! 1102: IF (ICZERO) 10260, 0271, 20260 10990253 ! 1103: 10260 IVPASS = IVPASS + 1 11000253 ! 1104: WRITE (I02,80002) IVTNUM 11010253 ! 1105: GO TO 0271 11020253 ! 1106: 20260 IVFAIL = IVFAIL + 1 11030253 ! 1107: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 11040253 ! 1108: 0271 CONTINUE 11050253 ! 1109: C 11060253 ! 1110: C **** FCVS PROGRAM 253 - TEST 027 **** 11070253 ! 1111: C 11080253 ! 1112: C TEST 027 COMBINES THE INTEGER RESULTS OBTAINED IN THE PREVIOUS 11090253 ! 1113: C SIX TESTS AND USES RELATIONAL AND LOGICAL OPERATORS IN ONE 11100253 ! 1114: C LOGICAL EXPRESSION. RELATIONAL EXPRESSIONS ARE EVALUATED FIRST 11110253 ! 1115: C FOLLOWED BY THE LOGICAL OPERATORS .NOT. , .AND., AND .OR. IN THAT 11120253 ! 1116: C ORDER. 11130253 ! 1117: C 11140253 ! 1118: C 511 .LT. 64 .OR. .NOT. 11 .LE. 6 .AND. -249 .LE. 256 11150253 ! 1119: C F .OR. .NOT. F .AND. T 11160253 ! 1120: C F .OR. T .AND. T 11170253 ! 1121: C F .OR. T 11180253 ! 1122: C T 11190253 ! 1123: C 11200253 ! 1124: C 11210253 ! 1125: IVTNUM = 27 11220253 ! 1126: IF (ICZERO) 30270, 0270, 30270 11230253 ! 1127: 0270 CONTINUE 11240253 ! 1128: IVON35 = 511 11250253 ! 1129: IVON36 = 64 11260253 ! 1130: IVON37 = 11 11270253 ! 1131: IVON38 = 6 11280253 ! 1132: IVON39 = -249 11290253 ! 1133: IVON40 = 256 11300253 ! 1134: IVCOMP = 0 11310253 ! 1135: LVON01 = IVON35 .LT. IVON36 .OR. .NOT. IVON37 .LE. IVON38 .AND. 11320253 ! 1136: 1 IVON39 .LE. IVON40 11330253 ! 1137: IF ( LVON01 ) IVCOMP = 1 11340253 ! 1138: IVCORR = 1 11350253 ! 1139: 40270 IF ( IVCOMP - 1 ) 20270, 10270, 20270 11360253 ! 1140: 30270 IVDELE = IVDELE + 1 11370253 ! 1141: WRITE (I02,80000) IVTNUM 11380253 ! 1142: IF (ICZERO) 10270, 0281, 20270 11390253 ! 1143: 10270 IVPASS = IVPASS + 1 11400253 ! 1144: WRITE (I02,80002) IVTNUM 11410253 ! 1145: GO TO 0281 11420253 ! 1146: 20270 IVFAIL = IVFAIL + 1 11430253 ! 1147: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 11440253 ! 1148: 0281 CONTINUE 11450253 ! 1149: C 11460253 ! 1150: C **** FCVS PROGRAM 253 - TEST 028 **** 11470253 ! 1151: C 11480253 ! 1152: C TEST 028 IS THE BIGGIE. IT COMBINES ALL OF THE INTEGER VALUES 11490253 ! 1153: C AND RESULTS IN THE PREVIOUS SEVEN (7) TESTS. IF THERE WERE ANY 11500253 ! 1154: C ERRORS IN ANY OF THE PREVIOUS SEVEN TESTS, THEN THIS TEST SHOULD 11510253 ! 1155: C ALSO FAIL. 11520253 ! 1156: C 11530253 ! 1157: C 11540253 ! 1158: IVTNUM = 28 11550253 ! 1159: IF (ICZERO) 30280, 0280, 30280 11560253 ! 1160: 0280 CONTINUE 11570253 ! 1161: IVCOMP = 0 11580253 ! 1162: IF ( IVON01 + IVON02 * ( IVON03 - IVON04 ) ** 2 ** 3 - IVON05 / 11590253 ! 1163: 1IVON06 .LT. IVON07 / IVON08 / IVON09 / IVON10 * IVON11 * IVON12 11600253 ! 1164: 2.OR. .NOT. IVON13 + IVON14 - IVON15 + IVON16 .LE. IVON17 + IVON18 11610253 ! 1165: 3- IVON19 * IVON20 / IVON21 ** IVON22 .AND. IVON23 + IVON24 * 11620253 ! 1166: 4IVON25 - IVON26 ** 2 ** 3 - IVON27 / IVON28 .LE. IVON29 / ( IVON3011630253 ! 1167: 5 / IVON31 ) / IVON32 * ( IVON33 * IVON34 ) ) IVCOMP = 1 11640253 ! 1168: IVCORR = 1 11650253 ! 1169: 40280 IF ( IVCOMP - 1 ) 20280, 10280, 20280 11660253 ! 1170: 30280 IVDELE = IVDELE + 1 11670253 ! 1171: WRITE (I02,80000) IVTNUM 11680253 ! 1172: IF (ICZERO) 10280, 0291, 20280 11690253 ! 1173: 10280 IVPASS = IVPASS + 1 11700253 ! 1174: WRITE (I02,80002) IVTNUM 11710253 ! 1175: GO TO 0291 11720253 ! 1176: 20280 IVFAIL = IVFAIL + 1 11730253 ! 1177: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 11740253 ! 1178: 0291 CONTINUE 11750253 ! 1179: C 11760253 ! 1180: C 11770253 ! 1181: C WRITE OUT TEST SUMMARY 11780253 ! 1182: C 11790253 ! 1183: WRITE (I02,90004) 11800253 ! 1184: WRITE (I02,90014) 11810253 ! 1185: WRITE (I02,90004) 11820253 ! 1186: WRITE (I02,90000) 11830253 ! 1187: WRITE (I02,90004) 11840253 ! 1188: WRITE (I02,90020) IVFAIL 11850253 ! 1189: WRITE (I02,90022) IVPASS 11860253 ! 1190: WRITE (I02,90024) IVDELE 11870253 ! 1191: STOP 11880253 ! 1192: 90001 FORMAT (1H ,24X,5HFM253) 11890253 ! 1193: 90000 FORMAT (1H ,20X,20HEND OF PROGRAM FM253) 11900253 ! 1194: C 11910253 ! 1195: C FORMATS FOR TEST DETAIL LINES 11920253 ! 1196: C 11930253 ! 1197: 80000 FORMAT (1H ,4X,I5,6X,7HDELETED) 11940253 ! 1198: 80002 FORMAT (1H ,4X,I5,7X,4HPASS) 11950253 ! 1199: 80010 FORMAT (1H ,4X,I5,7X,4HFAIL,10X,I6,9X,I6) 11960253 ! 1200: 80012 FORMAT (1H ,4X,I5,7X,4HFAIL,4X,E12.5,3X,E12.5) 11970253 ! 1201: 80018 FORMAT (1H ,4X,I5,7X,4HFAIL,2X,A14,1X,A14) 11980253 ! 1202: C 11990253 ! 1203: C FORMAT STATEMENTS FOR PAGE HEADERS 12000253 ! 1204: C 12010253 ! 1205: 90002 FORMAT (1H1) 12020253 ! 1206: 90004 FORMAT (1H ) 12030253 ! 1207: 90006 FORMAT (1H ,10X,34HFORTRAN COMPILER VALIDATION SYSTEM) 12040253 ! 1208: 90008 FORMAT (1H ,21X,11HVERSION 1.0) 12050253 ! 1209: 90010 FORMAT (1H ,8X,38HFOR OFFICIAL USE ONLY - COPYRIGHT 1978) 12060253 ! 1210: 90012 FORMAT (1H ,5X,4HTEST,5X,9HPASS/FAIL,5X,8HCOMPUTED,8X,7HCORRECT) 12070253 ! 1211: 90014 FORMAT (1H ,5X,46H----------------------------------------------) 12080253 ! 1212: 90016 FORMAT (1H ,18X,17HSUBSET LEVEL TEST) 12090253 ! 1213: C 12100253 ! 1214: C FORMAT STATEMENTS FOR RUN SUMMARY 12110253 ! 1215: C 12120253 ! 1216: 90020 FORMAT (1H ,19X,I5,13H TESTS FAILED) 12130253 ! 1217: 90022 FORMAT (1H ,19X,I5,13H TESTS PASSED) 12140253 ! 1218: 90024 FORMAT (1H ,19X,I5,14H TESTS DELETED) 12150253 ! 1219: END 12160253
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.