1c 2c comment section. 3c 4c fm016 5c 6c this routine begins a series of tests of the fortran 7c logical if statement in all of the various forms. the 8c following logical operands are used for this routine - logical 9c constants, logical variables, logical array elements, and 10c arithmetic expressions with various relational operators. both 11c the true and false branches are tested in the series of tests. 12c 13c references 14c american national standard programming language fortran, 15c x3.9-1978 16c 17c section 4.7.1, logical constant 18c section 6, expressions 19c section 6.1, arithmetic expressions 20c section 6.3, relational expressions 21c section 6.4, logical expressions 22c section 6.6, evaluation of expressions 23c section 10, assignment statements 24c section 10.2, logical assignment statement 25c section 11.5, logical if statement 26c 27 logical lctnt1, lctnf1, lvtntf, lvtnft, latn1a(2) 28 logical ladn1d, ladn1b 29 dimension ladn1d(2), ladn1b(2) 30 data ladn1d/.true., .false./ 31c 32c ********************************************************** 33c 34c a compiler validation system for the fortran language 35c based on specifications as defined in american national standard 36c programming language fortran x3.9-1978, has been developed by the 37c federal cobol compiler testing service. the fortran compiler 38c validation system (fcvs) consists of audit routines, their related 39c data, and an executive system. each audit routine is a fortran 40c program, subprogram or function which includes tests of specific 41c language elements and supporting procedures indicating the result 42c of executing these tests. 43c 44c this particular program/subprogram/function contains features 45c found only in the subset as defined in x3.9-1978. 46c 47c suggestions and comments should be forwarded to - 48c 49c department of the navy 50c federal cobol compiler testing service 51c washington, d.c. 20376 52c 53c ********************************************************** 54c 55c 56c 57c initialization section 58c 59c initialize constants 60c ************** 61c i01 contains the logical unit number for the card reader. 62 i01 = 5 63c i02 contains the logical unit number for the printer. 64 i02 = 6 65c system environment section 66c 67cx010 this card is replaced by contents of fexec x-010 control card. 68c the cx010 card is for overriding the program default i01 = 5 69c (unit number for card reader). 70cx011 this card is replaced by contents of fexec x-011 control card. 71c the cx011 card is for systems which require additional 72c fortran statements for files associated with cx010 above. 73c 74cx020 this card is replaced by contents of fexec x-020 control card. 75c the cx020 card is for overriding the program default i02 = 6 76c (unit number for printer). 77cx021 this card is replaced by contents of fexec x-021 control card. 78c the cx021 card is for systems which require additional 79c fortran statements for files associated with cx020 above. 80c 81 ivpass=0 82 ivfail=0 83 ivdele=0 84 iczero=0 85c 86c write page headers 87 write (i02,90000) 88 write (i02,90001) 89 write (i02,90002) 90 write (i02, 90002) 91 write (i02,90003) 92 write (i02,90002) 93 write (i02,90004) 94 write (i02,90002) 95 write (i02,90011) 96 write (i02,90002) 97 write (i02,90002) 98 write (i02,90005) 99 write (i02,90006) 100 write (i02,90002) 101 ivtnum = 139 102c test 139 - this tests the logical constant .true. 103c 104 if (iczero) 31390, 1390, 31390 105 1390 continue 106 ivon01=0 107 if ( .true. ) ivon01 = 1 108 go to 41390 10931390 ivdele = ivdele + 1 110 write (i02,80003) ivtnum 111 if (iczero) 41390, 1401, 41390 11241390 if ( ivon01 - 1 ) 21390, 11390, 21390 11311390 ivpass = ivpass + 1 114 write (i02,80001) ivtnum 115 go to 1401 11621390 ivfail = ivfail + 1 117 ivcomp=ivon01 118 ivcorr=1 119 write (i02,80004) ivtnum, ivcomp ,ivcorr 120 1401 continue 121 ivtnum = 140 122c test 140 - this tests the logical constant .false. 123c 124 if (iczero) 31400, 1400, 31400 125 1400 continue 126 ivon01=1 127 if ( .false. ) ivon01=0 128 go to 41400 12931400 ivdele = ivdele + 1 130 write (i02,80003) ivtnum 131 if (iczero) 41400, 1411, 41400 13241400 if ( ivon01 - 1 ) 21400, 11400, 21400 13311400 ivpass = ivpass + 1 134 write (i02,80001) ivtnum 135 go to 1411 13621400 ivfail = ivfail + 1 137 ivcomp=ivon01 138 ivcorr=1 139 write (i02,80004) ivtnum, ivcomp ,ivcorr 140 1411 continue 141 ivtnum = 141 142c test 141 - this tests the logical variable = .true. 143c 144 if (iczero) 31410, 1410, 31410 145 1410 continue 146 lctnt1=.true. 147 ivon01 = 0 148 if ( lctnt1 ) ivon01 = 1 149 go to 41410 15031410 ivdele = ivdele + 1 151 write (i02,80003) ivtnum 152 if (iczero) 41410, 1421, 41410 15341410 if ( ivon01 - 1 ) 21410, 11410, 21410 15411410 ivpass = ivpass + 1 155 write (i02,80001) ivtnum 156 go to 1421 15721410 ivfail = ivfail + 1 158 ivcomp=ivon01 159 ivcorr=1 160 write (i02,80004) ivtnum, ivcomp ,ivcorr 161 1421 continue 162 ivtnum = 142 163c test 142 - this tests the logical variable = .false. 164c 165 if (iczero) 31420, 1420, 31420 166 1420 continue 167 ivon01=1 168 lctnf1=.false. 169 if ( lctnf1 ) ivon01=0 170 go to 41420 17131420 ivdele = ivdele + 1 172 write (i02,80003) ivtnum 173 if (iczero) 41420, 1431, 41420 17441420 if ( ivon01 - 1 ) 21420, 11420, 21420 17511420 ivpass = ivpass + 1 176 write (i02,80001) ivtnum 177 go to 1431 17821420 ivfail = ivfail + 1 179 ivcomp=ivon01 180 ivcorr=1 181 write (i02,80004) ivtnum, ivcomp ,ivcorr 182 1431 continue 183 ivtnum = 143 184c test 143 - this tests changing the value of a logical variable 185c from .true. to .false. 186c 187 if (iczero) 31430, 1430, 31430 188 1430 continue 189 lvtntf=.true. 190 lvtntf=.false. 191 ivon01 = 1 192 if ( lvtntf ) ivon01 = 0 193 go to 41430 19431430 ivdele = ivdele + 1 195 write (i02,80003) ivtnum 196 if (iczero) 41430, 1441, 41430 19741430 if ( ivon01 - 1 ) 21430, 11430, 21430 19811430 ivpass = ivpass + 1 199 write (i02,80001) ivtnum 200 go to 1441 20121430 ivfail = ivfail + 1 202 ivcomp=ivon01 203 ivcorr=1 204 write (i02,80004) ivtnum, ivcomp ,ivcorr 205 1441 continue 206 ivtnum = 144 207c test 144 - this tests changing the value of a logical variable 208c from .false. to .true. 209c 210 if (iczero) 31440, 1440, 31440 211 1440 continue 212 lvtnft=.false. 213 lvtnft=.true. 214 ivon01=0 215 if ( lvtnft ) ivon01=1 216 go to 41440 21731440 ivdele = ivdele + 1 218 write (i02,80003) ivtnum 219 if (iczero) 41440, 1451, 41440 22041440 if ( ivon01 - 1 ) 21440, 11440, 21440 22111440 ivpass = ivpass + 1 222 write (i02,80001) ivtnum 223 go to 1451 22421440 ivfail = ivfail + 1 225 ivcomp=ivon01 226 ivcorr=1 227 write (i02,80004) ivtnum, ivcomp ,ivcorr 228 1451 continue 229 ivtnum = 145 230c test 145 - test of a logical array element set to .true. 231c 232 if (iczero) 31450, 1450, 31450 233 1450 continue 234 latn1a(1)=.true. 235 ivon01=0 236 if ( latn1a(1) ) ivon01=1 237 go to 41450 23831450 ivdele = ivdele + 1 239 write (i02,80003) ivtnum 240 if (iczero) 41450, 1461, 41450 24141450 if ( ivon01 - 1 ) 21450, 11450, 21450 24211450 ivpass = ivpass + 1 243 write (i02,80001) ivtnum 244 go to 1461 24521450 ivfail = ivfail + 1 246 ivcomp=ivon01 247 ivcorr=1 248 write (i02,80004) ivtnum, ivcomp ,ivcorr 249 1461 continue 250 ivtnum = 146 251c test 146 - test of a logical array element set to .false. 252c 253 if (iczero) 31460, 1460, 31460 254 1460 continue 255 latn1a(2) = .false. 256 ivon01=1 257 if ( latn1a(2) ) ivon01=0 258 go to 41460 25931460 ivdele = ivdele + 1 260 write (i02,80003) ivtnum 261 if (iczero) 41460, 1471, 41460 26241460 if ( ivon01 - 1 ) 21460, 11460, 21460 26311460 ivpass = ivpass + 1 264 write (i02,80001) ivtnum 265 go to 1471 26621460 ivfail = ivfail + 1 267 ivcomp=ivon01 268 ivcorr=1 269 write (i02,80004) ivtnum, ivcomp ,ivcorr 270 1471 continue 271 ivtnum = 147 272c test 147 - test of a logical array element set .true. 273c in a data initialization statement. 274c 275 if (iczero) 31470, 1470, 31470 276 1470 continue 277 ivon01=0 278 if ( ladn1d(1) ) ivon01=1 279 go to 41470 28031470 ivdele = ivdele + 1 281 write (i02,80003) ivtnum 282 if (iczero) 41470, 1481, 41470 28341470 if ( ivon01 - 1 ) 21470, 11470, 21470 28411470 ivpass = ivpass + 1 285 write (i02,80001) ivtnum 286 go to 1481 28721470 ivfail = ivfail + 1 288 ivcomp=ivon01 289 ivcorr=1 290 write (i02,80004) ivtnum, ivcomp ,ivcorr 291 1481 continue 292 ivtnum = 148 293c test 148 - test of a logical array element set .false. 294c in a data initialization statement. 295c 296 if (iczero) 31480, 1480, 31480 297 1480 continue 298 ivon01=1 299 if ( ladn1d(2) ) ivon01=0 300 go to 41480 30131480 ivdele = ivdele + 1 302 write (i02,80003) ivtnum 303 if (iczero) 41480, 1491, 41480 30441480 if ( ivon01 - 1 ) 21480, 11480, 21480 30511480 ivpass = ivpass + 1 306 write (i02,80001) ivtnum 307 go to 1491 30821480 ivfail = ivfail + 1 309 ivcomp=ivon01 310 ivcorr=1 311 write (i02,80004) ivtnum, ivcomp ,ivcorr 312 1491 continue 313 ivtnum = 149 314c test 149 - like test 145 except that the array declaration was 315c in a dimension statement rather than in the type statement. 316c 317 if (iczero) 31490, 1490, 31490 318 1490 continue 319 ladn1b(1)=.true. 320 ivon01=0 321 if ( ladn1b(1) ) ivon01=1 322 go to 41490 32331490 ivdele = ivdele + 1 324 write (i02,80003) ivtnum 325 if (iczero) 41490, 1501, 41490 32641490 if ( ivon01 - 1 ) 21490, 11490, 21490 32711490 ivpass = ivpass + 1 328 write (i02,80001) ivtnum 329 go to 1501 33021490 ivfail = ivfail + 1 331 ivcomp=ivon01 332 ivcorr=1 333 write (i02,80004) ivtnum, ivcomp ,ivcorr 334c 335c for tests 150 thru 156 the true path is used.. 336c 337 1501 continue 338 ivtnum = 150 339c test 150 - relational expression with integer constants .lt. 340c 341 if (iczero) 31500, 1500, 31500 342 1500 continue 343 ivon01=0 344 if ( 3 .lt. 76 ) ivon01=1 345 go to 41500 34631500 ivdele = ivdele + 1 347 write (i02,80003) ivtnum 348 if (iczero) 41500, 1511, 41500 34941500 if ( ivon01 - 1 ) 21500, 11500, 21500 35011500 ivpass = ivpass + 1 351 write (i02,80001) ivtnum 352 go to 1511 35321500 ivfail = ivfail + 1 354 ivcomp=ivon01 355 ivcorr=1 356 write (i02,80004) ivtnum, ivcomp ,ivcorr 357 1511 continue 358 ivtnum = 151 359c test 151 - test with relational expression .le. 360c 361 if (iczero) 31510, 1510, 31510 362 1510 continue 363 ivon01=0 364 if ( 587 .le. 587 ) ivon01=1 365 go to 41510 36631510 ivdele = ivdele + 1 367 write (i02,80003) ivtnum 368 if (iczero) 41510, 1521, 41510 36941510 if ( ivon01 - 1 ) 21510, 11510, 21510 37011510 ivpass = ivpass + 1 371 write (i02,80001) ivtnum 372 go to 1521 37321510 ivfail = ivfail + 1 374 ivcomp=ivon01 375 ivcorr=1 376 write (i02,80004) ivtnum, ivcomp ,ivcorr 377 1521 continue 378 ivtnum = 152 379c test 152 - test of relational expression with integer constants 380c relational operator is .eq. 381c 382 if (iczero) 31520, 1520, 31520 383 1520 continue 384 ivon01=0 385 if ( 9999 .eq. 9999 ) ivon01=1 386 go to 41520 38731520 ivdele = ivdele + 1 388 write (i02,80003) ivtnum 389 if (iczero) 41520, 1531, 41520 39041520 if ( ivon01 - 1 ) 21520, 11520, 21520 39111520 ivpass = ivpass + 1 392 write (i02,80001) ivtnum 393 go to 1531 39421520 ivfail = ivfail + 1 395 ivcomp=ivon01 396 ivcorr=1 397 write (i02,80004) ivtnum, ivcomp ,ivcorr 398 1531 continue 399 ivtnum = 153 400c test 153 - test of relational expression with integer constants 401c relational operator is .ne. 402c 403 if (iczero) 31530, 1530, 31530 404 1530 continue 405 ivon01=0 406 if ( 0 .ne. 32767 ) ivon01=1 407 go to 41530 40831530 ivdele = ivdele + 1 409 write (i02,80003) ivtnum 410 if (iczero) 41530, 1541, 41530 41141530 if ( ivon01 - 1 ) 21530, 11530, 21530 41211530 ivpass = ivpass + 1 413 write (i02,80001) ivtnum 414 go to 1541 41521530 ivfail = ivfail + 1 416 ivcomp=ivon01 417 ivcorr=1 418 write (i02,80004) ivtnum, ivcomp ,ivcorr 419 1541 continue 420 ivtnum = 154 421c test 154 - test of relational expression with integer constants 422c relational operator is .gt. 423c 424 if (iczero) 31540, 1540, 31540 425 1540 continue 426 ivon01=0 427 if ( 32767 .gt. 76 ) ivon01=1 428 go to 41540 42931540 ivdele = ivdele + 1 430 write (i02,80003) ivtnum 431 if (iczero) 41540, 1551, 41540 43241540 if ( ivon01 - 1 ) 21540, 11540, 21540 43311540 ivpass = ivpass + 1 434 write (i02,80001) ivtnum 435 go to 1551 43621540 ivfail = ivfail + 1 437 ivcomp=ivon01 438 ivcorr=1 439 write (i02,80004) ivtnum, ivcomp ,ivcorr 440 1551 continue 441 ivtnum = 155 442c test 155 - test of relational expression with integer constants 443c relational operator is .ge. 444c 445 if (iczero) 31550, 1550, 31550 446 1550 continue 447 ivon01=0 448 if ( 32767 .ge. 76 ) ivon01=1 449 go to 41550 45031550 ivdele = ivdele + 1 451 write (i02,80003) ivtnum 452 if (iczero) 41550, 1561, 41550 45341550 if ( ivon01 - 1 ) 21550, 11550, 21550 45411550 ivpass = ivpass + 1 455 write (i02,80001) ivtnum 456 go to 1561 45721550 ivfail = ivfail + 1 458 ivcomp=ivon01 459 ivcorr=1 460 write (i02,80004) ivtnum, ivcomp ,ivcorr 461 1561 continue 462 ivtnum = 156 463c test 156 - test of relational expression with integer constants 464c relational operator is .ge. 465c 466 if (iczero) 31560, 1560, 31560 467 1560 continue 468 ivon01=0 469 if ( 32767 .ge. 32767 ) ivon01=1 470 go to 41560 47131560 ivdele = ivdele + 1 472 write (i02,80003) ivtnum 473 if (iczero) 41560, 1571, 41560 47441560 if ( ivon01 - 1 ) 21560, 11560, 21560 47511560 ivpass = ivpass + 1 476 write (i02,80001) ivtnum 477 go to 1571 47821560 ivfail = ivfail + 1 479 ivcomp=ivon01 480 ivcorr=1 481 write (i02,80004) ivtnum, ivcomp ,ivcorr 482c 483c for tests 157 thru 162 the false path is used.. 484c 485 1571 continue 486 ivtnum = 157 487c test 157 - relational expression integer constants false path 488c relational operator is .lt. 489c 490 if (iczero) 31570, 1570, 31570 491 1570 continue 492 ivon01=1 493 if ( 76 .lt. 3 ) ivon01=0 494 go to 41570 49531570 ivdele = ivdele + 1 496 write (i02,80003) ivtnum 497 if (iczero) 41570, 1581, 41570 49841570 if ( ivon01 - 1 ) 21570, 11570, 21570 49911570 ivpass = ivpass + 1 500 write (i02,80001) ivtnum 501 go to 1581 50221570 ivfail = ivfail + 1 503 ivcomp=ivon01 504 ivcorr=1 505 write (i02,80004) ivtnum, ivcomp ,ivcorr 506 1581 continue 507 ivtnum = 158 508c test 158 - relational expression integer constants false path 509c relational operator is .le. 510c 511 if (iczero) 31580, 1580, 31580 512 1580 continue 513 ivon01=1 514 if ( 76 .le. 3 ) ivon01=0 515 go to 41580 51631580 ivdele = ivdele + 1 517 write (i02,80003) ivtnum 518 if (iczero) 41580, 1591, 41580 51941580 if ( ivon01 - 1 ) 21580, 11580, 21580 52011580 ivpass = ivpass + 1 521 write (i02,80001) ivtnum 522 go to 1591 52321580 ivfail = ivfail + 1 524 ivcomp=ivon01 525 ivcorr=1 526 write (i02,80004) ivtnum, ivcomp ,ivcorr 527 1591 continue 528 ivtnum = 159 529c test 159 - relational expression integer constants false path 530c relational operator is .eq. 531c 532 if (iczero) 31590, 1590, 31590 533 1590 continue 534 ivon01=1 535 if ( 9999 .eq. 587 ) ivon01=0 536 go to 41590 53731590 ivdele = ivdele + 1 538 write (i02,80003) ivtnum 539 if (iczero) 41590, 1601, 41590 54041590 if ( ivon01 - 1 ) 21590, 11590, 21590 54111590 ivpass = ivpass + 1 542 write (i02,80001) ivtnum 543 go to 1601 54421590 ivfail = ivfail + 1 545 ivcomp=ivon01 546 ivcorr=1 547 write (i02,80004) ivtnum, ivcomp ,ivcorr 548 1601 continue 549 ivtnum = 160 550c test 160 - relational expression integer constants false path 551c relational operator is .ne. 552c 553 if (iczero) 31600, 1600, 31600 554 1600 continue 555 ivon01=1 556 if ( 3 .ne. 3 ) ivon01=0 557 go to 41600 55831600 ivdele = ivdele + 1 559 write (i02,80003) ivtnum 560 if (iczero) 41600, 1611, 41600 56141600 if ( ivon01 - 1 ) 21600, 11600, 21600 56211600 ivpass = ivpass + 1 563 write (i02,80001) ivtnum 564 go to 1611 56521600 ivfail = ivfail + 1 566 ivcomp=ivon01 567 ivcorr=1 568 write (i02,80004) ivtnum, ivcomp ,ivcorr 569 1611 continue 570 ivtnum=161 571c 572c test 161 - relational expression integer constants false path 573c relational operator is .gt. 574c 575 if ( iczero ) 31610, 1610, 31610 576 1610 continue 577 ivon01=1 578 if ( 76 .gt. 32767 ) ivon01=0 579 go to 41610 58031610 ivdele = ivdele + 1 581 write (i02,80003) ivtnum 582 if ( iczero ) 41610, 1621, 41610 58341610 if ( ivon01 - 1 ) 21610, 11610, 21610 58411610 ivpass = ivpass+ 1 585 write (i02,80001) ivtnum 586 go to 1621 58721610 ivfail = ivfail + 1 588 ivcomp=ivon01 589 ivcorr=1 590 write (i02,80004) ivtnum, ivcomp, ivcorr 591 1621 continue 592 ivtnum = 162 593c 594c 595c **** test 162 **** 596c 597c test 162 - relational expression integer constants false path 598c relational operator is .ge. 599c 600 if (iczero) 31620, 1620, 31620 601 1620 continue 602 ivon01=1 603 if ( 76 .ge. 32767 ) ivon01 = 0 604 go to 41620 60531620 ivdele = ivdele + 1 606 write (i02,80003) ivtnum 607 if (iczero) 41620, 1631, 41620 60841620 if ( ivon01 - 1 ) 21620, 11620, 21620 60911620 ivpass = ivpass + 1 610 write (i02,80001) ivtnum 611 go to 1631 61221620 ivfail = ivfail + 1 613 ivcomp=ivon01 614 ivcorr=1 615 write (i02,80004) ivtnum, ivcomp ,ivcorr 616 1631 continue 617 ivtnum = 163 618c 619c **** test 163 **** 620c test 163 - relational expression with integer variable 621c references (ic) (ro) (ivr). true path. use .lt. 622c 623c 624 if (iczero) 31630, 1630, 31630 625 1630 continue 626 ivon01 = 76 627 ivon02 = 0 628 if ( 3 .lt. ivon01 ) ivon02 = 1 629 go to 41630 63031630 ivdele = ivdele + 1 631 write (i02,80003) ivtnum 632 if (iczero) 41630, 1641, 41630 63341630 if ( ivon02 - 1 ) 21630, 11630, 21630 63411630 ivpass = ivpass + 1 635 write (i02,80001) ivtnum 636 go to 1641 63721630 ivfail = ivfail + 1 638 ivcomp = ivon02 639 ivcorr = 1 640 write (i02,80004) ivtnum, ivcomp ,ivcorr 641 1641 continue 642 ivtnum = 164 643c 644c **** test 164 **** 645c test 164 - relational expression. integer variable references. 646c true path. .le. 647c 648c 649 if (iczero) 31640, 1640, 31640 650 1640 continue 651 ivon01 = 587 652 ivon02 = 0 653 if ( 587 .le. ivon01 ) ivon02 = 1 654 go to 41640 65531640 ivdele = ivdele + 1 656 write (i02,80003) ivtnum 657 if (iczero) 41640, 1651, 41640 65841640 if ( ivon02 - 1 ) 21640, 11640, 21640 65911640 ivpass = ivpass + 1 660 write (i02,80001) ivtnum 661 go to 1651 66221640 ivfail = ivfail + 1 663 ivcomp = ivon02 664 ivcorr = 1 665 write (i02,80004) ivtnum, ivcomp ,ivcorr 666 1651 continue 667 ivtnum = 165 668c 669c **** test 165 **** 670c test 165 - relational expression. integer variable reference. 671c true path. .eq. 672c 673c 674 if (iczero) 31650, 1650, 31650 675 1650 continue 676 ivon01 = 9999 677 ivon02 = 0 678 if ( 9999 .eq. ivon01 ) ivon02 = 1 679 go to 41650 68031650 ivdele = ivdele + 1 681 write (i02,80003) ivtnum 682 if (iczero) 41650, 1661, 41650 68341650 if ( ivon02 - 1 ) 21650, 11650, 21650 68411650 ivpass = ivpass + 1 685 write (i02,80001) ivtnum 686 go to 1661 68721650 ivfail = ivfail + 1 688 ivcomp = ivon02 689 ivcorr = 1 690 write (i02,80004) ivtnum, ivcomp ,ivcorr 691 1661 continue 692 ivtnum = 166 693c 694c **** test 166 **** 695c test 166 - relational expression. integer variable reference. 696c true path. .ne. 697c 698c 699 if (iczero) 31660, 1660, 31660 700 1660 continue 701 ivon01 = 32767 702 ivon02 = 0 703 if ( 0 .ne. ivon01 ) ivon02 = 1 704 go to 41660 70531660 ivdele = ivdele + 1 706 write (i02,80003) ivtnum 707 if (iczero) 41660, 1671, 41660 70841660 if ( ivon02 - 1 ) 21660, 11660, 21660 70911660 ivpass = ivpass + 1 710 write (i02,80001) ivtnum 711 go to 1671 71221660 ivfail = ivfail + 1 713 ivcomp = ivon02 714 ivcorr = 1 715 write (i02,80004) ivtnum, ivcomp ,ivcorr 716 1671 continue 717 ivtnum = 167 718c 719c **** test 167 **** 720c test 167 - relational expression. integer variable reference. 721c true path. .gt. 722c 723c 724 if (iczero) 31670, 1670, 31670 725 1670 continue 726 ivon01 = 76 727 ivon02 = 0 728 if ( 32767 .gt. ivon01 ) ivon02 = 1 729 go to 41670 73031670 ivdele = ivdele + 1 731 write (i02,80003) ivtnum 732 if (iczero) 41670, 1681, 41670 73341670 if ( ivon02 - 1 ) 21670, 11670, 21670 73411670 ivpass = ivpass + 1 735 write (i02,80001) ivtnum 736 go to 1681 73721670 ivfail = ivfail + 1 738 ivcomp = ivon02 739 ivcorr = 1 740 write (i02,80004) ivtnum, ivcomp ,ivcorr 741 1681 continue 742 ivtnum = 168 743c 744c **** test 168 **** 745c test 168 - relational expression. integer variable reference. 746c true path. .ge. 747c 748c 749 if (iczero) 31680, 1680, 31680 750 1680 continue 751 ivon01 = 76 752 ivon02 = 0 753 if ( 32767 .ge. ivon01 ) ivon02 = 1 754 go to 41680 75531680 ivdele = ivdele + 1 756 write (i02,80003) ivtnum 757 if (iczero) 41680, 1691, 41680 75841680 if ( ivon02 - 1 ) 21680, 11680, 21680 75911680 ivpass = ivpass + 1 760 write (i02,80001) ivtnum 761 go to 1691 76221680 ivfail = ivfail + 1 763 ivcomp = ivon02 764 ivcorr = 1 765 write (i02,80004) ivtnum, ivcomp ,ivcorr 766 1691 continue 767 ivtnum = 169 768c 769c **** test 169 **** 770c test 169 - relational expression. integer variable reference. 771c true path. .eq. 772c 773c 774 if (iczero) 31690, 1690, 31690 775 1690 continue 776 ivon01 = 32767 777 ivon02 = 0 778 if ( 32767 .eq. ivon01 ) ivon02 = 1 779 go to 41690 78031690 ivdele = ivdele + 1 781 write (i02,80003) ivtnum 782 if (iczero) 41690, 1701, 41690 78341690 if ( ivon02 - 1 ) 21690, 11690, 21690 78411690 ivpass = ivpass + 1 785 write (i02,80001) ivtnum 786 go to 1701 78721690 ivfail = ivfail + 1 788 ivcomp = ivon02 789 ivcorr = 1 790 write (i02,80004) ivtnum, ivcomp ,ivcorr 791 1701 continue 792c 793c write page footings and run summaries 79499999 continue 795 write (i02,90002) 796 write (i02,90006) 797 write (i02,90002) 798 write (i02,90002) 799 write (i02,90007) 800 write (i02,90002) 801 write (i02,90008) ivfail 802 write (i02,90009) ivpass 803 write (i02,90010) ivdele 804c 805c 806c terminate routine execution 807 stop 808c 809c format statements for page headers 81090000 format (1h1) 81190002 format (1h ) 81290001 format (1h ,10x,34hfortran compiler validation system) 81390003 format (1h ,21x,11hversion 1.0) 81490004 format (1h ,10x,38hfor official use only - copyright 1978) 81590005 format (1h ,5x,4htest,5x,9hpass/fail, 5x,8hcomputed,8x,7hcorrect) 81690006 format (1h ,5x,46h----------------------------------------------) 81790011 format (1h ,18x,17hsubset level test) 818c 819c format statements for run summaries 82090008 format (1h ,15x,i5,19h errors encountered) 82190009 format (1h ,15x,i5,13h tests passed) 82290010 format (1h ,15x,i5,14h tests deleted) 823c 824c format statements for test results 82580001 format (1h ,4x,i5,7x,4hpass) 82680002 format (1h ,4x,i5,7x,4hfail) 82780003 format (1h ,4x,i5,7x,7hdeleted) 82880004 format (1h ,4x,i5,7x,4hfail,10x,i6,9x,i6) 82980005 format (1h ,4x,i5,7x,4hfail,4x,e12.5,3x,e12.5) 830c 83190007 format (1h ,20x,20hend of program fm016) 832 end 833