|
|
1.1 ! root 1: c ! 2: c comment section. ! 3: c ! 4: c fm019 ! 5: c ! 6: c this routine continues tests of the fortran logical if state ! 7: c by testing various forms of relational expressions with arithmetic ! 8: c expressions . positive and negative signs are used in conjunction ! 9: c with parentheses. combinations of logical .and. .or. ! 10: c .not. are used to test the more complex expressions. ! 11: c ! 12: c references ! 13: c american national standard programming language fortran, ! 14: c x3.9-1978 ! 15: c ! 16: c section 4.7.1, logical constant ! 17: c section 6, expressions ! 18: c section 11.5, logical if statement ! 19: c ! 20: logical lctnt1, lctnt2 ! 21: c ! 22: c ********************************************************** ! 23: c ! 24: c a compiler validation system for the fortran language ! 25: c based on specifications as defined in american national standard ! 26: c programming language fortran x3.9-1978, has been developed by the ! 27: c federal cobol compiler testing service. the fortran compiler ! 28: c validation system (fcvs) consists of audit routines, their related ! 29: c data, and an executive system. each audit routine is a fortran ! 30: c program, subprogram or function which includes tests of specific ! 31: c language elements and supporting procedures indicating the result ! 32: c of executing these tests. ! 33: c ! 34: c this particular program/subprogram/function contains features ! 35: c found only in the subset as defined in x3.9-1978. ! 36: c ! 37: c suggestions and comments should be forwarded to - ! 38: c ! 39: c department of the navy ! 40: c federal cobol compiler testing service ! 41: c washington, d.c. 20376 ! 42: c ! 43: c ********************************************************** ! 44: c ! 45: c ! 46: c ! 47: c initialization section ! 48: c ! 49: c initialize constants ! 50: c ************** ! 51: c i01 contains the logical unit number for the card reader. ! 52: i01 = 5 ! 53: c i02 contains the logical unit number for the printer. ! 54: i02 = 6 ! 55: c system environment section ! 56: c ! 57: cx010 this card is replaced by contents of fexec x-010 control card. ! 58: c the cx010 card is for overriding the program default i01 = 5 ! 59: c (unit number for card reader). ! 60: cx011 this card is replaced by contents of fexec x-011 control card. ! 61: c the cx011 card is for systems which require additional ! 62: c fortran statements for files associated with cx010 above. ! 63: c ! 64: cx020 this card is replaced by contents of fexec x-020 control card. ! 65: c the cx020 card is for overriding the program default i02 = 6 ! 66: c (unit number for printer). ! 67: cx021 this card is replaced by contents of fexec x-021 control card. ! 68: c the cx021 card is for systems which require additional ! 69: c fortran statements for files associated with cx020 above. ! 70: c ! 71: ivpass=0 ! 72: ivfail=0 ! 73: ivdele=0 ! 74: iczero=0 ! 75: c ! 76: c write page headers ! 77: write (i02,90000) ! 78: write (i02,90001) ! 79: write (i02,90002) ! 80: write (i02, 90002) ! 81: write (i02,90003) ! 82: write (i02,90002) ! 83: write (i02,90004) ! 84: write (i02,90002) ! 85: write (i02,90011) ! 86: write (i02,90002) ! 87: write (i02,90002) ! 88: write (i02,90005) ! 89: write (i02,90006) ! 90: write (i02,90002) ! 91: ivtnum = 530 ! 92: c ! 93: c **** test 530 **** ! 94: c test 530 - test of positively signed term +(ic) (ro) -(ic) ! 95: c .lt. false path ! 96: c ! 97: if (iczero) 35300, 5300, 35300 ! 98: 5300 continue ! 99: ivon01 = 1 ! 100: if ( +3 .lt. -3) ivon01 = 0 ! 101: go to 45300 ! 102: 35300 ivdele = ivdele + 1 ! 103: write (i02,80003) ivtnum ! 104: if (iczero) 45300, 5311, 45300 ! 105: 45300 if ( ivon01 - 1 ) 25300, 15300, 25300 ! 106: 15300 ivpass = ivpass + 1 ! 107: write (i02,80001) ivtnum ! 108: go to 5311 ! 109: 25300 ivfail = ivfail + 1 ! 110: ivcomp = ivon01 ! 111: ivcorr = 1 ! 112: write (i02,80004) ivtnum, ivcomp ,ivcorr ! 113: 5311 continue ! 114: ivtnum = 531 ! 115: c ! 116: c **** test 531 **** ! 117: c test 531 - test of signed zero .lt. false path ! 118: c ! 119: c ! 120: if (iczero) 35310, 5310, 35310 ! 121: 5310 continue ! 122: ivon01 = 1 ! 123: if ( +0 .lt. -0 ) ivon01 = 0 ! 124: go to 45310 ! 125: 35310 ivdele = ivdele + 1 ! 126: write (i02,80003) ivtnum ! 127: if (iczero) 45310, 5321, 45310 ! 128: 45310 if ( ivon01 - 1 ) 25310, 15310, 25310 ! 129: 15310 ivpass = ivpass + 1 ! 130: write (i02,80001) ivtnum ! 131: go to 5321 ! 132: 25310 ivfail = ivfail + 1 ! 133: ivcomp = ivon01 ! 134: ivcorr = 1 ! 135: write (i02,80004) ivtnum, ivcomp ,ivcorr ! 136: 5321 continue ! 137: ivtnum = 532 ! 138: c ! 139: c **** test 532 **** ! 140: c test 532 - test of signed zero .le. true path ! 141: c ! 142: c ! 143: if (iczero) 35320, 5320, 35320 ! 144: 5320 continue ! 145: ivon01 = 0 ! 146: if ( +0 .le. -0 ) ivon01 = 1 ! 147: go to 45320 ! 148: 35320 ivdele = ivdele + 1 ! 149: write (i02,80003) ivtnum ! 150: if (iczero) 45320, 5331, 45320 ! 151: 45320 if ( ivon01 - 1 ) 25320, 15320, 25320 ! 152: 15320 ivpass = ivpass + 1 ! 153: write (i02,80001) ivtnum ! 154: go to 5331 ! 155: 25320 ivfail = ivfail + 1 ! 156: ivcomp = ivon01 ! 157: ivcorr = 1 ! 158: write (i02,80004) ivtnum, ivcomp ,ivcorr ! 159: 5331 continue ! 160: ivtnum = 533 ! 161: c ! 162: c **** test 533 **** ! 163: c test 533 - test of signed zero .eq. true path ! 164: c ! 165: c ! 166: if (iczero) 35330, 5330, 35330 ! 167: 5330 continue ! 168: ivon01 = 0 ! 169: if ( +0 .eq. -0 ) ivon01 = 1 ! 170: go to 45330 ! 171: 35330 ivdele = ivdele + 1 ! 172: write (i02,80003) ivtnum ! 173: if (iczero) 45330, 5341, 45330 ! 174: 45330 if ( ivon01 - 1 ) 25330, 15330, 25330 ! 175: 15330 ivpass = ivpass + 1 ! 176: write (i02,80001) ivtnum ! 177: go to 5341 ! 178: 25330 ivfail = ivfail + 1 ! 179: ivcomp = ivon01 ! 180: ivcorr = 1 ! 181: write (i02,80004) ivtnum, ivcomp ,ivcorr ! 182: 5341 continue ! 183: ivtnum = 534 ! 184: c ! 185: c **** test 534 **** ! 186: c test 534 - test of signed zero .ne. false path ! 187: c ! 188: c ! 189: if (iczero) 35340, 5340, 35340 ! 190: 5340 continue ! 191: ivon01 = 1 ! 192: if ( +0 .ne. -0 ) ivon01 = 0 ! 193: go to 45340 ! 194: 35340 ivdele = ivdele + 1 ! 195: write (i02,80003) ivtnum ! 196: if (iczero) 45340, 5351, 45340 ! 197: 45340 if ( ivon01 - 1 ) 25340, 15340, 25340 ! 198: 15340 ivpass = ivpass + 1 ! 199: write (i02,80001) ivtnum ! 200: go to 5351 ! 201: 25340 ivfail = ivfail + 1 ! 202: ivcomp = ivon01 ! 203: ivcorr = 1 ! 204: write (i02,80004) ivtnum, ivcomp ,ivcorr ! 205: 5351 continue ! 206: ivtnum = 535 ! 207: c ! 208: c **** test 535 **** ! 209: c test 535 - test of signed zero .ge. true path ! 210: c ! 211: c ! 212: if (iczero) 35350, 5350, 35350 ! 213: 5350 continue ! 214: ivon01 = 0 ! 215: if ( +0 .ge. -0 ) ivon01 = 1 ! 216: go to 45350 ! 217: 35350 ivdele = ivdele + 1 ! 218: write (i02,80003) ivtnum ! 219: if (iczero) 45350, 5361, 45350 ! 220: 45350 if ( ivon01 - 1 ) 25350, 15350, 25350 ! 221: 15350 ivpass = ivpass + 1 ! 222: write (i02,80001) ivtnum ! 223: go to 5361 ! 224: 25350 ivfail = ivfail + 1 ! 225: ivcomp = ivon01 ! 226: ivcorr = 1 ! 227: write (i02,80004) ivtnum, ivcomp ,ivcorr ! 228: 5361 continue ! 229: ivtnum = 536 ! 230: c ! 231: c **** test 536 **** ! 232: c test 536 - test of signed zero .gt. false path ! 233: c ! 234: c ! 235: if (iczero) 35360, 5360, 35360 ! 236: 5360 continue ! 237: ivon01 = 1 ! 238: if ( +0 .gt. -0 ) ivon01 = 0 ! 239: go to 45360 ! 240: 35360 ivdele = ivdele + 1 ! 241: write (i02,80003) ivtnum ! 242: if (iczero) 45360, 5371, 45360 ! 243: 45360 if ( ivon01 - 1 ) 25360, 15360, 25360 ! 244: 15360 ivpass = ivpass + 1 ! 245: write (i02,80001) ivtnum ! 246: go to 5371 ! 247: 25360 ivfail = ivfail + 1 ! 248: ivcomp = ivon01 ! 249: ivcorr = 1 ! 250: write (i02,80004) ivtnum, ivcomp ,ivcorr ! 251: 5371 continue ! 252: ivtnum = 537 ! 253: c ! 254: c **** test 537 **** ! 255: c test 537 - test of +32767 .eq. -32766 false path ! 256: c ! 257: c ! 258: if (iczero) 35370, 5370, 35370 ! 259: 5370 continue ! 260: ivon01 = 1 ! 261: if ( +32767 .eq. -32766 ) ivon01 = 0 ! 262: go to 45370 ! 263: 35370 ivdele = ivdele + 1 ! 264: write (i02,80003) ivtnum ! 265: if (iczero) 45370, 5381, 45370 ! 266: 45370 if ( ivon01 - 1 ) 25370, 15370, 25370 ! 267: 15370 ivpass = ivpass + 1 ! 268: write (i02,80001) ivtnum ! 269: go to 5381 ! 270: 25370 ivfail = ivfail + 1 ! 271: ivcomp = ivon01 ! 272: ivcorr = 1 ! 273: write (i02,80004) ivtnum, ivcomp ,ivcorr ! 274: 5381 continue ! 275: ivtnum = 538 ! 276: c ! 277: c **** test 538 **** ! 278: c test 538 - tests minus sign with integer variables ! 279: c relational expression uses .le. true path ! 280: c ! 281: c ! 282: if (iczero) 35380, 5380, 35380 ! 283: 5380 continue ! 284: ivon01 = 0 ! 285: ivon02 = 3 ! 286: if ( -ivon02 .le. -ivon02 ) ivon01 = 1 ! 287: go to 45380 ! 288: 35380 ivdele = ivdele + 1 ! 289: write (i02,80003) ivtnum ! 290: if (iczero) 45380, 5391, 45380 ! 291: 45380 if ( ivon01 - 1 ) 25380, 15380, 25380 ! 292: 15380 ivpass = ivpass + 1 ! 293: write (i02,80001) ivtnum ! 294: go to 5391 ! 295: 25380 ivfail = ivfail + 1 ! 296: ivcomp = ivon01 ! 297: ivcorr = 1 ! 298: write (i02,80004) ivtnum, ivcomp ,ivcorr ! 299: 5391 continue ! 300: ivtnum = 539 ! 301: c ! 302: c **** test 539 **** ! 303: c test 539 - test is like test 538 uses .ge. true path ! 304: c ! 305: c ! 306: if (iczero) 35390, 5390, 35390 ! 307: 5390 continue ! 308: ivon01 = 0 ! 309: ivon02 = 32766 ! 310: if ( -ivon02 .ge. -ivon02 ) ivon01 = 1 ! 311: go to 45390 ! 312: 35390 ivdele = ivdele + 1 ! 313: write (i02,80003) ivtnum ! 314: if (iczero) 45390, 5401, 45390 ! 315: 45390 if ( ivon01 - 1 ) 25390, 15390, 25390 ! 316: 15390 ivpass = ivpass + 1 ! 317: write (i02,80001) ivtnum ! 318: go to 5401 ! 319: 25390 ivfail = ivfail + 1 ! 320: ivcomp = ivon01 ! 321: ivcorr = 1 ! 322: write (i02,80004) ivtnum, ivcomp ,ivcorr ! 323: 5401 continue ! 324: ivtnum = 540 ! 325: c ! 326: c **** test 540 **** ! 327: c test 540 - integer exponientiation and minus sign uses .ne. ! 328: c false path ! 329: c ! 330: c ! 331: if (iczero) 35400, 5400, 35400 ! 332: 5400 continue ! 333: ivon01 = 1 ! 334: ivon02 = 3 ! 335: if ( -ivon02 ** 3 .ne. -27 ) ivon01 = 0 ! 336: go to 45400 ! 337: 35400 ivdele = ivdele + 1 ! 338: write (i02,80003) ivtnum ! 339: if (iczero) 45400, 5411, 45400 ! 340: 45400 if ( ivon01 - 1 ) 25400, 15400, 25400 ! 341: 15400 ivpass = ivpass + 1 ! 342: write (i02,80001) ivtnum ! 343: go to 5411 ! 344: 25400 ivfail = ivfail + 1 ! 345: ivcomp = ivon01 ! 346: ivcorr = 1 ! 347: write (i02,80004) ivtnum, ivcomp ,ivcorr ! 348: 5411 continue ! 349: ivtnum = 541 ! 350: c ! 351: c **** test 541 **** ! 352: c test 541 - like test 540 uses .le. true path ! 353: c ! 354: c ! 355: if (iczero) 35410, 5410, 35410 ! 356: 5410 continue ! 357: ivon01 = 0 ! 358: ivon02 = 3 ! 359: if ( -3 ** ivon02 .le. -27 ) ivon01 = 1 ! 360: go to 45410 ! 361: 35410 ivdele = ivdele + 1 ! 362: write (i02,80003) ivtnum ! 363: if (iczero) 45410, 5421, 45410 ! 364: 45410 if ( ivon01 - 1 ) 25410, 15410, 25410 ! 365: 15410 ivpass = ivpass + 1 ! 366: write (i02,80001) ivtnum ! 367: go to 5421 ! 368: 25410 ivfail = ivfail + 1 ! 369: ivcomp = ivon01 ! 370: ivcorr = 1 ! 371: write (i02,80004) ivtnum, ivcomp ,ivcorr ! 372: 5421 continue ! 373: ivtnum = 542 ! 374: c ! 375: c **** test 542 **** ! 376: c test 542 - integer exponientiation and multiplication ! 377: c uses .eq. true path ! 378: c ! 379: c ! 380: if (iczero) 35420, 5420, 35420 ! 381: 5420 continue ! 382: ivon01 = 0 ! 383: ivon02 = 3 ! 384: ivon03 = 27 ! 385: if ( -ivon02 ** 2 * ivon02 .eq. -ivon03 ) ivon01 = 1 ! 386: go to 45420 ! 387: 35420 ivdele = ivdele + 1 ! 388: write (i02,80003) ivtnum ! 389: if (iczero) 45420, 5431, 45420 ! 390: 45420 if ( ivon01 - 1 ) 25420, 15420, 25420 ! 391: 15420 ivpass = ivpass + 1 ! 392: write (i02,80001) ivtnum ! 393: go to 5431 ! 394: 25420 ivfail = ivfail + 1 ! 395: ivcomp = ivon01 ! 396: ivcorr = 1 ! 397: write (i02,80004) ivtnum, ivcomp ,ivcorr ! 398: 5431 continue ! 399: ivtnum = 543 ! 400: c ! 401: c **** test 543 **** ! 402: c test 543 - integer exponientiation and division ! 403: c uses .lt. true path ! 404: c ! 405: c ! 406: if (iczero) 35430, 5430, 35430 ! 407: 5430 continue ! 408: ivon01 = 0 ! 409: ivon02 = 587 ! 410: ivon03 = 3 ! 411: ivon04 = 3 ! 412: if ( -ivon02/ivon04 ** 3 .lt. -3 ** ivon03/ivon02 ) ivon01 = 1 ! 413: go to 45430 ! 414: 35430 ivdele = ivdele + 1 ! 415: write (i02,80003) ivtnum ! 416: if (iczero) 45430, 5441, 45430 ! 417: 45430 if ( ivon01 - 1 ) 25430, 15430, 25430 ! 418: 15430 ivpass = ivpass + 1 ! 419: write (i02,80001) ivtnum ! 420: go to 5441 ! 421: 25430 ivfail = ivfail + 1 ! 422: ivcomp = ivon01 ! 423: ivcorr = 1 ! 424: write (i02,80004) ivtnum, ivcomp ,ivcorr ! 425: 5441 continue ! 426: ivtnum = 544 ! 427: c ! 428: c **** test 544 **** ! 429: c test 544 - integer addition and subtraction ! 430: c uses .eq. true path ! 431: c ! 432: c ! 433: if (iczero) 35440, 5440, 35440 ! 434: 5440 continue ! 435: ivon01 = 0 ! 436: ivon02 = 3 ! 437: ivon03 = 587 ! 438: if ( ivon02 - ivon03 .eq. -ivon03 + ivon02 ) ivon01 = 1 ! 439: go to 45440 ! 440: 35440 ivdele = ivdele + 1 ! 441: write (i02,80003) ivtnum ! 442: if (iczero) 45440, 5451, 45440 ! 443: 45440 if ( ivon01 - 1 ) 25440, 15440, 25440 ! 444: 15440 ivpass = ivpass + 1 ! 445: write (i02,80001) ivtnum ! 446: go to 5451 ! 447: 25440 ivfail = ivfail + 1 ! 448: ivcomp = ivon01 ! 449: ivcorr = 1 ! 450: write (i02,80004) ivtnum, ivcomp ,ivcorr ! 451: 5451 continue ! 452: ivtnum = 545 ! 453: c ! 454: c **** test 545 **** ! 455: c test 545 - integer addition and subtraction with parentheses ! 456: c uses .eq. true path like test 544 ! 457: c ! 458: c ! 459: if (iczero) 35450, 5450, 35450 ! 460: 5450 continue ! 461: ivon01 = 0 ! 462: ivon02 = 3 ! 463: ivon03 = 587 ! 464: if ( (ivon02 - ivon03) .eq. (-ivon03 + ivon02) ) ivon01 = 1 ! 465: go to 45450 ! 466: 35450 ivdele = ivdele + 1 ! 467: write (i02,80003) ivtnum ! 468: if (iczero) 45450, 5461, 45450 ! 469: 45450 if ( ivon01 - 1 ) 25450, 15450, 25450 ! 470: 15450 ivpass = ivpass + 1 ! 471: write (i02,80001) ivtnum ! 472: go to 5461 ! 473: 25450 ivfail = ivfail + 1 ! 474: ivcomp = ivon01 ! 475: ivcorr = 1 ! 476: write (i02,80004) ivtnum, ivcomp ,ivcorr ! 477: 5461 continue ! 478: ivtnum = 546 ! 479: c ! 480: c **** test 546 **** ! 481: c test 546 - integer exponientiation and division with parens ! 482: c uses .lt. true path ! 483: c ! 484: c ! 485: if (iczero) 35460, 5460, 35460 ! 486: 5460 continue ! 487: ivon01 = 0 ! 488: ivon02 = 587 ! 489: ivon03 = 3 ! 490: ivon04 = 3 ! 491: if ((-ivon02/(ivon04**3)).lt.((-3**ivon03)/ivon02))ivon01=1 ! 492: go to 45460 ! 493: 35460 ivdele = ivdele + 1 ! 494: write (i02,80003) ivtnum ! 495: if (iczero) 45460, 5471, 45460 ! 496: 45460 if ( ivon01 - 1 ) 25460, 15460, 25460 ! 497: 15460 ivpass = ivpass + 1 ! 498: write (i02,80001) ivtnum ! 499: go to 5471 ! 500: 25460 ivfail = ivfail + 1 ! 501: ivcomp = ivon01 ! 502: ivcorr = 1 ! 503: write (i02,80004) ivtnum, ivcomp ,ivcorr ! 504: 5471 continue ! 505: ivtnum = 547 ! 506: c ! 507: c **** test 547 **** ! 508: c test 547 - integer multiplication with parentheses .lt. false ! 509: c ! 510: c ! 511: if (iczero) 35470, 5470, 35470 ! 512: 5470 continue ! 513: ivon01 = 1 ! 514: ivon02 = 587 ! 515: if ((-3)*(-3).lt.(-ivon02))ivon01=0 ! 516: go to 45470 ! 517: 35470 ivdele = ivdele + 1 ! 518: write (i02,80003) ivtnum ! 519: if (iczero) 45470, 5481, 45470 ! 520: 45470 if ( ivon01 - 1 ) 25470, 15470, 25470 ! 521: 15470 ivpass = ivpass + 1 ! 522: write (i02,80001) ivtnum ! 523: go to 5481 ! 524: 25470 ivfail = ivfail + 1 ! 525: ivcomp = ivon01 ! 526: ivcorr = 1 ! 527: write (i02,80004) ivtnum, ivcomp ,ivcorr ! 528: 5481 continue ! 529: ivtnum = 548 ! 530: c ! 531: c **** test 548 **** ! 532: c test 548 - integer exponientiation, minus signs, and parentheses ! 533: c uses .le. true path ! 534: c ! 535: c ! 536: if (iczero) 35480, 5480, 35480 ! 537: 5480 continue ! 538: ivon01 = 0 ! 539: ivon02 = 3 ! 540: ivon03 = 27 ! 541: if ( ((-ivon02) ** ivon02 .le. (-ivon03))) ivon01 = 1 ! 542: go to 45480 ! 543: 35480 ivdele = ivdele + 1 ! 544: write (i02,80003) ivtnum ! 545: if (iczero) 45480, 5491, 45480 ! 546: 45480 if ( ivon01 - 1 ) 25480, 15480, 25480 ! 547: 15480 ivpass = ivpass + 1 ! 548: write (i02,80001) ivtnum ! 549: go to 5491 ! 550: 25480 ivfail = ivfail + 1 ! 551: ivcomp = ivon01 ! 552: ivcorr = 1 ! 553: write (i02,80004) ivtnum, ivcomp ,ivcorr ! 554: 5491 continue ! 555: ivtnum = 549 ! 556: c ! 557: c **** test 549 **** ! 558: c test 549 - test the order of integer arithmetic operations ! 559: c uses integer exponientiation, addition, multiplication, ! 560: c and parentheses. also uses .eq. true path ! 561: c see section 6.1, arithmetic expressions. ! 562: c ! 563: c ! 564: if (iczero) 35490, 5490, 35490 ! 565: 5490 continue ! 566: ivon01 = 0 ! 567: ivon02 = 3 ! 568: if(ivon02 * ivon02/(ivon02+ivon02)**ivon02+ivon02 .eq. 3) ivon01=1 ! 569: go to 45490 ! 570: 35490 ivdele = ivdele + 1 ! 571: write (i02,80003) ivtnum ! 572: if (iczero) 45490, 5501, 45490 ! 573: 45490 if ( ivon01 - 1 ) 25490, 15490, 25490 ! 574: 15490 ivpass = ivpass + 1 ! 575: write (i02,80001) ivtnum ! 576: go to 5501 ! 577: 25490 ivfail = ivfail + 1 ! 578: ivcomp = ivon01 ! 579: ivcorr = 1 ! 580: write (i02,80004) ivtnum, ivcomp ,ivcorr ! 581: 5501 continue ! 582: ivtnum = 550 ! 583: c ! 584: c **** test 550 **** ! 585: c test 550 - combination of logical .not. and .and. ! 586: c .not. (lp) .and. .not. (lp) ! 587: c true path ! 588: c ! 589: c ! 590: if (iczero) 35500, 5500, 35500 ! 591: 5500 continue ! 592: ivon01 = 0 ! 593: lctnt1 = .false. ! 594: if ( .not. .false. .and. .not. lctnt1 ) ivon01 = 1 ! 595: go to 45500 ! 596: 35500 ivdele = ivdele + 1 ! 597: write (i02,80003) ivtnum ! 598: if (iczero) 45500, 5511, 45500 ! 599: 45500 if ( ivon01 - 1 ) 25500, 15500, 25500 ! 600: 15500 ivpass = ivpass + 1 ! 601: write (i02,80001) ivtnum ! 602: go to 5511 ! 603: 25500 ivfail = ivfail + 1 ! 604: ivcomp = ivon01 ! 605: ivcorr = 1 ! 606: write (i02,80004) ivtnum, ivcomp ,ivcorr ! 607: 5511 continue ! 608: ivtnum = 551 ! 609: c ! 610: c **** test 551 **** ! 611: c test 551 - combination of logical .or. and .not. ! 612: c .not. (lp) .or. .not. (lp) ! 613: c true path ! 614: c ! 615: c ! 616: if (iczero) 35510, 5510, 35510 ! 617: 5510 continue ! 618: ivon01 = 0 ! 619: lctnt1 = .true. ! 620: lctnt2 = .false. ! 621: if ( .not. lctnt1 .or. .not. lctnt2 ) ivon01 = 1 ! 622: go to 45510 ! 623: 35510 ivdele = ivdele + 1 ! 624: write (i02,80003) ivtnum ! 625: if (iczero) 45510, 5521, 45510 ! 626: 45510 if ( ivon01 - 1 ) 25510, 15510, 25510 ! 627: 15510 ivpass = ivpass + 1 ! 628: write (i02,80001) ivtnum ! 629: go to 5521 ! 630: 25510 ivfail = ivfail + 1 ! 631: ivcomp = ivon01 ! 632: ivcorr = 1 ! 633: write (i02,80004) ivtnum, ivcomp ,ivcorr ! 634: 5521 continue ! 635: ivtnum = 552 ! 636: c ! 637: c **** test 552 **** ! 638: c test 552 - combination of logical .and. .or. and .not. ! 639: c .not. ( (le) .or. (lt) ) .and. .not. ( (lt) .and. (lf) ) ! 640: c .not. is applied to a logical expression inclosed in parens ! 641: c false path ! 642: c ! 643: if (iczero) 35520, 5520, 35520 ! 644: 5520 continue ! 645: ivon01 = 1 ! 646: lctnt1 = .false. ! 647: lctnt2 = .true. ! 648: if(.not.(lctnt1.or.lctnt2).and..not.(lctnt1.and.lctnt2))ivon01 = 0 ! 649: go to 45520 ! 650: 35520 ivdele = ivdele + 1 ! 651: write (i02,80003) ivtnum ! 652: if (iczero) 45520, 5531, 45520 ! 653: 45520 if ( ivon01 - 1 ) 25520, 15520, 25520 ! 654: 15520 ivpass = ivpass + 1 ! 655: write (i02,80001) ivtnum ! 656: go to 5531 ! 657: 25520 ivfail = ivfail + 1 ! 658: ivcomp = ivon01 ! 659: ivcorr = 1 ! 660: write (i02,80004) ivtnum, ivcomp ,ivcorr ! 661: 5531 continue ! 662: c ! 663: c write page footings and run summaries ! 664: 99999 continue ! 665: write (i02,90002) ! 666: write (i02,90006) ! 667: write (i02,90002) ! 668: write (i02,90002) ! 669: write (i02,90007) ! 670: write (i02,90002) ! 671: write (i02,90008) ivfail ! 672: write (i02,90009) ivpass ! 673: write (i02,90010) ivdele ! 674: c ! 675: c ! 676: c terminate routine execution ! 677: stop ! 678: c ! 679: c format statements for page headers ! 680: 90000 format (1h1) ! 681: 90002 format (1h ) ! 682: 90001 format (1h ,10x,34hfortran compiler validation system) ! 683: 90003 format (1h ,21x,11hversion 1.0) ! 684: 90004 format (1h ,10x,38hfor official use only - copyright 1978) ! 685: 90005 format (1h ,5x,4htest,5x,9hpass/fail, 5x,8hcomputed,8x,7hcorrect) ! 686: 90006 format (1h ,5x,46h----------------------------------------------) ! 687: 90011 format (1h ,18x,17hsubset level test) ! 688: c ! 689: c format statements for run summaries ! 690: 90008 format (1h ,15x,i5,19h errors encountered) ! 691: 90009 format (1h ,15x,i5,13h tests passed) ! 692: 90010 format (1h ,15x,i5,14h tests deleted) ! 693: c ! 694: c format statements for test results ! 695: 80001 format (1h ,4x,i5,7x,4hpass) ! 696: 80002 format (1h ,4x,i5,7x,4hfail) ! 697: 80003 format (1h ,4x,i5,7x,7hdeleted) ! 698: 80004 format (1h ,4x,i5,7x,4hfail,10x,i6,9x,i6) ! 699: 80005 format (1h ,4x,i5,7x,4hfail,4x,e12.5,3x,e12.5) ! 700: c ! 701: 90007 format (1h ,20x,20hend of program fm019) ! 702: end
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.