1c 2c comment section. 3c 4c fm018 5c 6c this routine continues 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, lctnt2, latn1a(2) 28 dimension iadn11(2) 29c 30c ********************************************************** 31c 32c a compiler validation system for the fortran language 33c based on specifications as defined in american national standard 34c programming language fortran x3.9-1978, has been developed by the 35c federal cobol compiler testing service. the fortran compiler 36c validation system (fcvs) consists of audit routines, their related 37c data, and an executive system. each audit routine is a fortran 38c program, subprogram or function which includes tests of specific 39c language elements and supporting procedures indicating the result 40c of executing these tests. 41c 42c this particular program/subprogram/function contains features 43c found only in the subset as defined in x3.9-1978. 44c 45c suggestions and comments should be forwarded to - 46c 47c department of the navy 48c federal cobol compiler testing service 49c washington, d.c. 20376 50c 51c ********************************************************** 52c 53c 54c 55c initialization section 56c 57c initialize constants 58c ************** 59c i01 contains the logical unit number for the card reader. 60 i01 = 5 61c i02 contains the logical unit number for the printer. 62 i02 = 6 63c system environment section 64c 65cx010 this card is replaced by contents of fexec x-010 control card. 66c the cx010 card is for overriding the program default i01 = 5 67c (unit number for card reader). 68cx011 this card is replaced by contents of fexec x-011 control card. 69c the cx011 card is for systems which require additional 70c fortran statements for files associated with cx010 above. 71c 72cx020 this card is replaced by contents of fexec x-020 control card. 73c the cx020 card is for overriding the program default i02 = 6 74c (unit number for printer). 75cx021 this card is replaced by contents of fexec x-021 control card. 76c the cx021 card is for systems which require additional 77c fortran statements for files associated with cx020 above. 78c 79 ivpass=0 80 ivfail=0 81 ivdele=0 82 iczero=0 83c 84c write page headers 85 write (i02,90000) 86 write (i02,90001) 87 write (i02,90002) 88 write (i02, 90002) 89 write (i02,90003) 90 write (i02,90002) 91 write (i02,90004) 92 write (i02,90002) 93 write (i02,90011) 94 write (i02,90002) 95 write (i02,90002) 96 write (i02,90005) 97 write (i02,90006) 98 write (i02,90002) 99 ivtnum = 500 100c 101c **** test 500 **** 102c test 500 - like test 197. true .or. true true path 103c test of the fortran inclusive or (le) .or. (lt) 104c 105c 106 if (iczero) 35000, 5000, 35000 107 5000 continue 108 ivon01 = 0 109 lctnt1 = .true. 110 lctnt2 = .true. 111 if ( lctnt1 .or. lctnt2 ) ivon01 = 1 112 go to 45000 11335000 ivdele = ivdele + 1 114 write (i02,80003) ivtnum 115 if (iczero) 45000, 5011, 45000 11645000 if ( ivon01 - 1 ) 25000, 15000, 25000 11715000 ivpass = ivpass + 1 118 write (i02,80001) ivtnum 119 go to 5011 12025000 ivfail = ivfail + 1 121 ivcomp = ivon01 122 ivcorr = 1 123 write (i02,80004) ivtnum, ivcomp ,ivcorr 124 5011 continue 125 ivtnum = 501 126c 127c **** test 501 **** 128c test 501 - test of parentheses around a logical expression 129c ( (le) ) .or. (lt) 130c uses logical variables set in logical assignment statements 131c ( false ) .or. false false path 132c 133c 134 if (iczero) 35010, 5010, 35010 135 5010 continue 136 ivon01 = 1 137 lctnt1 = .false. 138 lctnt2 = .false. 139 if ( (lctnt1) .or. lctnt2 ) ivon01 = 0 140 go to 45010 14135010 ivdele = ivdele + 1 142 write (i02,80003) ivtnum 143 if (iczero) 45010, 5021, 45010 14445010 if ( ivon01 - 1 ) 25010, 15010, 25010 14515010 ivpass = ivpass + 1 146 write (i02,80001) ivtnum 147 go to 5021 14825010 ivfail = ivfail + 1 149 ivcomp = ivon01 150 ivcorr = 1 151 write (i02,80004) ivtnum, ivcomp ,ivcorr 152 5021 continue 153 ivtnum = 502 154c 155c **** test 502 **** 156c test 502 - like test 501 except that it it is of the form 157c (le) .or. ( (lt) ) true .or. (true) 158c true path 159c 160c 161 if (iczero) 35020, 5020, 35020 162 5020 continue 163 ivon01 = 0 164 lctnt1 = .true. 165 lctnt2 = .true. 166 if ( lctnt1 .or. ( lctnt2 ) ) ivon01 = 1 167 go to 45020 16835020 ivdele = ivdele + 1 169 write (i02,80003) ivtnum 170 if (iczero) 45020, 5031, 45020 17145020 if ( ivon01 - 1 ) 25020, 15020, 25020 17215020 ivpass = ivpass + 1 173 write (i02,80001) ivtnum 174 go to 5031 17525020 ivfail = ivfail + 1 176 ivcomp = ivon01 177 ivcorr = 1 178 write (i02,80004) ivtnum, ivcomp ,ivcorr 179 5031 continue 180 ivtnum = 503 181c 182c **** test 503 **** 183c test 503 - test of parentheses in logical expressions 184c ( (le) ) .or. ( (lt) ) 185c (false) .or. (true) true path 186c 187c 188 if (iczero) 35030, 5030, 35030 189 5030 continue 190 ivon01 = 0 191 lctnt1 = .false. 192 lctnt2 = .true. 193 if ( (lctnt1) .or. (lctnt2) ) ivon01 = 1 194 go to 45030 19535030 ivdele = ivdele + 1 196 write (i02,80003) ivtnum 197 if (iczero) 45030, 5041, 45030 19845030 if ( ivon01 - 1 ) 25030, 15030, 25030 19915030 ivpass = ivpass + 1 200 write (i02,80001) ivtnum 201 go to 5041 20225030 ivfail = ivfail + 1 203 ivcomp = ivon01 204 ivcorr = 1 205 write (i02,80004) ivtnum, ivcomp ,ivcorr 206 5041 continue 207 ivtnum = 504 208c 209c **** test 504 **** 210c test 504 - like test 503 only more parentheses true path 211c 212c 213 if (iczero) 35040, 5040, 35040 214 5040 continue 215 ivon01 = 0 216 lctnt1 = .true. 217 lctnt2 = .false. 218 if ( ( (lctnt1) .or. (lctnt2) ) ) ivon01 = 1 219 go to 45040 22035040 ivdele = ivdele + 1 221 write (i02,80003) ivtnum 222 if (iczero) 45040, 5051, 45040 22345040 if ( ivon01 - 1 ) 25040, 15040, 25040 22415040 ivpass = ivpass + 1 225 write (i02,80001) ivtnum 226 go to 5051 22725040 ivfail = ivfail + 1 228 ivcomp = ivon01 229 ivcorr = 1 230 write (i02,80004) ivtnum, ivcomp ,ivcorr 231 5051 continue 232 ivtnum = 505 233c 234c **** test 505 **** 235c test 505 - test of parentheses with .and. false path 236c 237c 238 if (iczero) 35050, 5050, 35050 239 5050 continue 240 ivon01 = 1 241 lctnt1 = .false. 242 lctnt2 = .false. 243 if ( (lctnt1) .and. lctnt2 ) ivon01 = 0 244 go to 45050 24535050 ivdele = ivdele + 1 246 write (i02,80003) ivtnum 247 if (iczero) 45050, 5061, 45050 24845050 if ( ivon01 - 1 ) 25050, 15050, 25050 24915050 ivpass = ivpass + 1 250 write (i02,80001) ivtnum 251 go to 5061 25225050 ivfail = ivfail + 1 253 ivcomp = ivon01 254 ivcorr = 1 255 write (i02,80004) ivtnum, ivcomp ,ivcorr 256 5061 continue 257 ivtnum = 506 258c 259c **** test 506 **** 260c test 506 - like test 505 false path 261c 262c 263 if (iczero) 35060, 5060, 35060 264 5060 continue 265 ivon01 = 1 266 lctnt1 = .false. 267 lctnt2 = .true. 268 if ( lctnt1 .and. (lctnt2) ) ivon01 = 0 269 go to 45060 27035060 ivdele = ivdele + 1 271 write (i02,80003) ivtnum 272 if (iczero) 45060, 5071, 45060 27345060 if ( ivon01 - 1 ) 25060, 15060, 25060 27415060 ivpass = ivpass + 1 275 write (i02,80001) ivtnum 276 go to 5071 27725060 ivfail = ivfail + 1 278 ivcomp = ivon01 279 ivcorr = 1 280 write (i02,80004) ivtnum, ivcomp ,ivcorr 281 5071 continue 282 ivtnum = 507 283c 284c **** test 507 **** 285c test 507 - more parentheses with logical .and. false path 286c 287c 288 if (iczero) 35070, 5070, 35070 289 5070 continue 290 ivon01 = 1 291 lctnt1 = .true. 292 lctnt2 = .false. 293 if ( (lctnt1) .and. (lctnt2) ) ivon01 = 0 294 go to 45070 29535070 ivdele = ivdele + 1 296 write (i02,80003) ivtnum 297 if (iczero) 45070, 5081, 45070 29845070 if ( ivon01 - 1 ) 25070, 15070, 25070 29915070 ivpass = ivpass + 1 300 write (i02,80001) ivtnum 301 go to 5081 30225070 ivfail = ivfail + 1 303 ivcomp = ivon01 304 ivcorr = 1 305 write (i02,80004) ivtnum, ivcomp ,ivcorr 306 5081 continue 307 ivtnum = 508 308c 309c **** test 508 **** 310c test 508 - test of logical .not. with parentheses around a logic 311c primary. for this test a logical array element is used as 312c the logical primary. .not. (false) true path. 313c 314c 315 if (iczero) 35080, 5080, 35080 316 5080 continue 317 ivon01 = 0 318 latn1a(1) = .false. 319 if ( .not. (latn1a(1)) ) ivon01 = 1 320 go to 45080 32135080 ivdele = ivdele + 1 322 write (i02,80003) ivtnum 323 if (iczero) 45080, 5091, 45080 32445080 if ( ivon01 - 1 ) 25080, 15080, 25080 32515080 ivpass = ivpass + 1 326 write (i02,80001) ivtnum 327 go to 5091 32825080 ivfail = ivfail + 1 329 ivcomp = ivon01 330 ivcorr = 1 331 write (i02,80004) ivtnum, ivcomp ,ivcorr 332 5091 continue 333 ivtnum = 509 334c 335c **** test 509 **** 336c test 509 - like test 508 except that the whole expression 337c is in parentheses. false path 338c 339c 340 if (iczero) 35090, 5090, 35090 341 5090 continue 342 ivon01 = 1 343 latn1a(2) = .true. 344 if ( ( .not. (latn1a(2)) ) ) ivon01 = 0 345 go to 45090 34635090 ivdele = ivdele + 1 347 write (i02,80003) ivtnum 348 if (iczero) 45090, 5101, 45090 34945090 if ( ivon01 - 1 ) 25090, 15090, 25090 35015090 ivpass = ivpass + 1 351 write (i02,80001) ivtnum 352 go to 5101 35325090 ivfail = ivfail + 1 354 ivcomp = ivon01 355 ivcorr = 1 356 write (i02,80004) ivtnum, ivcomp ,ivcorr 357 5101 continue 358 ivtnum = 510 359c 360c **** test 510 **** 361c test 510 - integer constant exponientation 362c relational expression using .eq. true path 363c 364c 365 if (iczero) 35100, 5100, 35100 366 5100 continue 367 ivon01 = 0 368 if ( 3 ** 3 .eq. 27 ) ivon01 = 1 369 go to 45100 37035100 ivdele = ivdele + 1 371 write (i02,80003) ivtnum 372 if (iczero) 45100, 5111, 45100 37345100 if ( ivon01 - 1 ) 25100, 15100, 25100 37415100 ivpass = ivpass + 1 375 write (i02,80001) ivtnum 376 go to 5111 37725100 ivfail = ivfail + 1 378 ivcomp = ivon01 379 ivcorr = 1 380 write (i02,80004) ivtnum, ivcomp ,ivcorr 381 5111 continue 382 ivtnum = 511 383c 384c **** test 511 **** 385c test 511 - exponientiation using an integer variable 386c relational expression using .ne. false path 387c 388c 389 if (iczero) 35110, 5110, 35110 390 5110 continue 391 ivon01 = 1 392 ivon02 = 3 393 if ( ivon02 ** 3 .ne. 27 ) ivon01 = 0 394 go to 45110 39535110 ivdele = ivdele + 1 396 write (i02,80003) ivtnum 397 if (iczero) 45110, 5121, 45110 39845110 if ( ivon01 - 1 ) 25110, 15110, 25110 39915110 ivpass = ivpass + 1 400 write (i02,80001) ivtnum 401 go to 5121 40225110 ivfail = ivfail + 1 403 ivcomp = ivon01 404 ivcorr = 1 405 write (i02,80004) ivtnum, ivcomp ,ivcorr 406 5121 continue 407 ivtnum = 512 408c 409c **** test 512 **** 410c test 512 - like test 511 uses .le. true path 411c 412c 413 if (iczero) 35120, 5120, 35120 414 5120 continue 415 ivon01 = 0 416 ivon02 = 3 417 if ( 3 ** ivon02 .le. 27 ) ivon01 = 1 418 go to 45120 41935120 ivdele = ivdele + 1 420 write (i02,80003) ivtnum 421 if (iczero) 45120, 5131, 45120 42245120 if ( ivon01 - 1 ) 25120, 15120, 25120 42315120 ivpass = ivpass + 1 424 write (i02,80001) ivtnum 425 go to 5131 42625120 ivfail = ivfail + 1 427 ivcomp = ivon01 428 ivcorr = 1 429 write (i02,80004) ivtnum, ivcomp ,ivcorr 430 5131 continue 431 ivtnum = 513 432c 433c **** test 513 **** 434c test 513 - like test 511 but uses all integer variables 435c relational expression uses .lt. false path 436c 437c 438 if (iczero) 35130, 5130, 35130 439 5130 continue 440 ivon01 = 1 441 ivon02 = 3 442 ivon03 = 27 443 if ( ivon02 ** ivon02 .lt. ivon03 ) ivon01 = 0 444 go to 45130 44535130 ivdele = ivdele + 1 446 write (i02,80003) ivtnum 447 if (iczero) 45130, 5141, 45130 44845130 if ( ivon01 - 1 ) 25130, 15130, 25130 44915130 ivpass = ivpass + 1 450 write (i02,80001) ivtnum 451 go to 5141 45225130 ivfail = ivfail + 1 453 ivcomp = ivon01 454 ivcorr = 1 455 write (i02,80004) ivtnum, ivcomp ,ivcorr 456 5141 continue 457 ivtnum = 514 458c 459c **** test 514 **** 460c test 514 - like test 511 but uses integer array elements 461c relational expression uses .ge. true path 462c 463c 464 if (iczero) 35140, 5140, 35140 465 5140 continue 466 ivon01 = 0 467 ivon02 = 3 468 iadn11(1) = 3 469 iadn11(2) = 27 470 if ( iadn11(1) ** ivon02 .ge. iadn11(2) ) ivon01 = 1 471 go to 45140 47235140 ivdele = ivdele + 1 473 write (i02,80003) ivtnum 474 if (iczero) 45140, 5151, 45140 47545140 if ( ivon01 - 1 ) 25140, 15140, 25140 47615140 ivpass = ivpass + 1 477 write (i02,80001) ivtnum 478 go to 5151 47925140 ivfail = ivfail + 1 480 ivcomp = ivon01 481 ivcorr = 1 482 write (i02,80004) ivtnum, ivcomp ,ivcorr 483 5151 continue 484 ivtnum = 515 485c 486c **** test 515 **** 487c test 515 - like test 514 but uses all integer array elements 488c relational expression uses .gt. false path 489c 490c 491 if (iczero) 35150, 5150, 35150 492 5150 continue 493 ivon01 = 1 494 iadn11(1) = 3 495 iadn11(2) = 27 496 if ( iadn11(1) ** iadn11(1) .gt. iadn11(2) ) ivon01 = 0 497 go to 45150 49835150 ivdele = ivdele + 1 499 write (i02,80003) ivtnum 500 if (iczero) 45150, 5161, 45150 50145150 if ( ivon01 - 1 ) 25150, 15150, 25150 50215150 ivpass = ivpass + 1 503 write (i02,80001) ivtnum 504 go to 5161 50525150 ivfail = ivfail + 1 506 ivcomp = ivon01 507 ivcorr = 1 508 write (i02,80004) ivtnum, ivcomp ,ivcorr 509 5161 continue 510 ivtnum = 516 511c 512c **** test 516 **** 513c test 516 - test of integer multiplication using integer 514c constants. relational expression uses .lt. true path 515c 516c 517 if (iczero) 35160, 5160, 35160 518 5160 continue 519 ivon01 = 0 520 ivon02 = 587 521 if ( 3 * 3 .lt. ivon02 ) ivon01 = 1 522 go to 45160 52335160 ivdele = ivdele + 1 524 write (i02,80003) ivtnum 525 if (iczero) 45160, 5171, 45160 52645160 if ( ivon01 - 1 ) 25160, 15160, 25160 52715160 ivpass = ivpass + 1 528 write (i02,80001) ivtnum 529 go to 5171 53025160 ivfail = ivfail + 1 531 ivcomp = ivon01 532 ivcorr = 1 533 write (i02,80004) ivtnum, ivcomp ,ivcorr 534 5171 continue 535 ivtnum = 517 536c 537c **** test 517 **** 538c test 517 - integer multiplication with integer constants, 539c variables, and array elements. relational expression uses 540c .gt. false path 541c 542c 543 if (iczero) 35170, 5170, 35170 544 5170 continue 545 ivon01 = 1 546 ivon02 = 32767 547 iadn11(1) = 3 548 if ( iadn11(1) * 587 .gt. ivon02 ) ivon01 = 0 549 go to 45170 55035170 ivdele = ivdele + 1 551 write (i02,80003) ivtnum 552 if (iczero) 45170, 5181, 45170 55345170 if ( ivon01 - 1 ) 25170, 15170, 25170 55415170 ivpass = ivpass + 1 555 write (i02,80001) ivtnum 556 go to 5181 55725170 ivfail = ivfail + 1 558 ivcomp = ivon01 559 ivcorr = 1 560 write (i02,80004) ivtnum, ivcomp ,ivcorr 561 5181 continue 562 ivtnum = 518 563c 564c **** test 518 **** 565c test 518 - integer multiplication and exponientation 566c relational expression uses .eq. true path 567c 568c 569 if (iczero) 35180, 5180, 35180 570 5180 continue 571 ivon01 = 0 572 ivon02 = 3 573 ivon03 = 27 574 iadn11(2) = 3 575 if ( iadn11(2) ** 2 * ivon02 .eq. ivon03 ) ivon01 = 1 576 go to 45180 57735180 ivdele = ivdele + 1 578 write (i02,80003) ivtnum 579 if (iczero) 45180, 5191, 45180 58045180 if ( ivon01 - 1 ) 25180, 15180, 25180 58115180 ivpass = ivpass + 1 582 write (i02,80001) ivtnum 583 go to 5191 58425180 ivfail = ivfail + 1 585 ivcomp = ivon01 586 ivcorr = 1 587 write (i02,80004) ivtnum, ivcomp ,ivcorr 588 5191 continue 589 ivtnum = 519 590c 591c **** test 519 **** 592c test 519 - integer division. relational expression .ne. 593c false path 594c 595c 596 if (iczero) 35190, 5190, 35190 597 5190 continue 598 ivon01 = 1 599 ivon02 = 27 600 iadn11(1) = 3 601 if ( ivon02 / 9 .ne. iadn11(1) ) ivon01 = 0 602 go to 45190 60335190 ivdele = ivdele + 1 604 write (i02,80003) ivtnum 605 if (iczero) 45190, 5201, 45190 60645190 if ( ivon01 - 1 ) 25190, 15190, 25190 60715190 ivpass = ivpass + 1 608 write (i02,80001) ivtnum 609 go to 5201 61025190 ivfail = ivfail + 1 611 ivcomp = ivon01 612 ivcorr = 1 613 write (i02,80004) ivtnum, ivcomp ,ivcorr 614 5201 continue 615 ivtnum = 520 616c 617c **** test 520 **** 618c test 520 - integer variable division. relational expression 619c uses .ge. true path 620c 621c 622 if (iczero) 35200, 5200, 35200 623 5200 continue 624 ivon01 = 0 625 ivon02 = 32767 626 ivon03 = 3 627 ivon04 = 9999 628 ivon05 = 587 629 if ( ivon02 / ivon03 .ge. ivon04 / ivon05 ) ivon01 = 1 630 go to 45200 63135200 ivdele = ivdele + 1 632 write (i02,80003) ivtnum 633 if (iczero) 45200, 5211, 45200 63445200 if ( ivon01 - 1 ) 25200, 15200, 25200 63515200 ivpass = ivpass + 1 636 write (i02,80001) ivtnum 637 go to 5211 63825200 ivfail = ivfail + 1 639 ivcomp = ivon01 640 ivcorr = 1 641 write (i02,80004) ivtnum, ivcomp ,ivcorr 642 5211 continue 643 ivtnum = 521 644c 645c **** test 521 **** 646c test 521 - integer division and exponientation 647c relational expression uses .lt. false path 648c 649c 650 if (iczero) 35210, 5210, 35210 651 5210 continue 652 ivon01 = 1 653 ivon02 = 587 654 ivon03 = 3 655 iadn11(2) = 3 656 if ( ivon02 / iadn11(2) ** 3 .lt. 3 ** ivon03 / ivon02 ) ivon01 =0 657 if ( ivon02 / iadn11(2) ** 3 .lt. 3 ** ivon03 / ivon02 ) ivon01=0 658 go to 45210 65935210 ivdele = ivdele + 1 660 write (i02,80003) ivtnum 661 if (iczero) 45210, 5221, 45210 66245210 if ( ivon01 - 1 ) 25210, 15210, 25210 66315210 ivpass = ivpass + 1 664 write (i02,80001) ivtnum 665 go to 5221 66625210 ivfail = ivfail + 1 667 ivcomp = ivon01 668 ivcorr = 1 669 write (i02,80004) ivtnum, ivcomp ,ivcorr 670 5221 continue 671 ivtnum = 522 672c 673c **** test 522 **** 674c test 522 - tests 522 thru 535 are tests of signed terms 675c +(t) also -(t) 676c relational expression uses .gt. true path 677c 678c 679 if (iczero) 35220, 5220, 35220 680 5220 continue 681 ivon01 = 0 682 if ( 3 .gt. -3 ) ivon01 = 1 683 go to 45220 68435220 ivdele = ivdele + 1 685 write (i02,80003) ivtnum 686 if (iczero) 45220, 5231, 45220 68745220 if ( ivon01 - 1 ) 25220, 15220, 25220 68815220 ivpass = ivpass + 1 689 write (i02,80001) ivtnum 690 go to 5231 69125220 ivfail = ivfail + 1 692 ivcomp = ivon01 693 ivcorr = 1 694 write (i02,80004) ivtnum, ivcomp ,ivcorr 695 5231 continue 696 ivtnum = 523 697c 698c **** test 523 **** 699c test 523 - test of signed zero .lt. false path 700c 701c 702 if (iczero) 35230, 5230, 35230 703 5230 continue 704 ivon01 = 1 705 if ( 0 .lt. -0 ) ivon01 = 0 706 go to 45230 70735230 ivdele = ivdele + 1 708 write (i02,80003) ivtnum 709 if (iczero) 45230, 5241, 45230 71045230 if ( ivon01 - 1 ) 25230, 15230, 25230 71115230 ivpass = ivpass + 1 712 write (i02,80001) ivtnum 713 go to 5241 71425230 ivfail = ivfail + 1 715 ivcomp = ivon01 716 ivcorr = 1 717 write (i02,80004) ivtnum, ivcomp ,ivcorr 718 5241 continue 719 ivtnum = 524 720c 721c **** test 524 **** 722c test 524 - test of signed zero .le. true path 723c 724c 725 if (iczero) 35240, 5240, 35240 726 5240 continue 727 ivon01 = 0 728 if ( 0 .le. -0 ) ivon01 = 1 729 go to 45240 73035240 ivdele = ivdele + 1 731 write (i02,80003) ivtnum 732 if (iczero) 45240, 5251, 45240 73345240 if ( ivon01 - 1 ) 25240, 15240, 25240 73415240 ivpass = ivpass + 1 735 write (i02,80001) ivtnum 736 go to 5251 73725240 ivfail = ivfail + 1 738 ivcomp = ivon01 739 ivcorr = 1 740 write (i02,80004) ivtnum, ivcomp ,ivcorr 741 5251 continue 742 ivtnum = 525 743c 744c **** test 525 **** 745c test 525 - test of signed zero .eq. true path 746c 747c 748 if (iczero) 35250, 5250, 35250 749 5250 continue 750 ivon01 = 0 751 if ( 0 .eq. -0 ) ivon01 = 1 752 go to 45250 75335250 ivdele = ivdele + 1 754 write (i02,80003) ivtnum 755 if (iczero) 45250, 5261, 45250 75645250 if ( ivon01 - 1 ) 25250, 15250, 25250 75715250 ivpass = ivpass + 1 758 write (i02,80001) ivtnum 759 go to 5261 76025250 ivfail = ivfail + 1 761 ivcomp = ivon01 762 ivcorr = 1 763 write (i02,80004) ivtnum, ivcomp ,ivcorr 764 5261 continue 765 ivtnum = 526 766c 767c **** test 526 **** 768c test 526 - test of signed zero .ne. false path 769c 770c 771 if (iczero) 35260, 5260, 35260 772 5260 continue 773 ivon01 = 1 774 if ( 0 .ne. -0 ) ivon01 = 0 775 go to 45260 77635260 ivdele = ivdele + 1 777 write (i02,80003) ivtnum 778 if (iczero) 45260, 5271, 45260 77945260 if ( ivon01 - 1 ) 25260, 15260, 25260 78015260 ivpass = ivpass + 1 781 write (i02,80001) ivtnum 782 go to 5271 78325260 ivfail = ivfail + 1 784 ivcomp = ivon01 785 ivcorr = 1 786 write (i02,80004) ivtnum, ivcomp ,ivcorr 787 5271 continue 788 ivtnum = 527 789c 790c **** test 527 **** 791c test 527 - test of signed zero .ge. true path 792c 793c 794 if (iczero) 35270, 5270, 35270 795 5270 continue 796 ivon01 = 0 797 if ( 0 .ge. -0 ) ivon01 = 1 798 go to 45270 79935270 ivdele = ivdele + 1 800 write (i02,80003) ivtnum 801 if (iczero) 45270, 5281, 45270 80245270 if ( ivon01 - 1 ) 25270, 15270, 25270 80315270 ivpass = ivpass + 1 804 write (i02,80001) ivtnum 805 go to 5281 80625270 ivfail = ivfail + 1 807 ivcomp = ivon01 808 ivcorr = 1 809 write (i02,80004) ivtnum, ivcomp ,ivcorr 810 5281 continue 811 ivtnum = 528 812c 813c **** test 528 **** 814c test 528 - test of signed zero .gt. false path 815c 816c 817 if (iczero) 35280, 5280, 35280 818 5280 continue 819 ivon01 = 1 820 if ( 0 .gt. -0 ) ivon01 = 0 821 go to 45280 82235280 ivdele = ivdele + 1 823 write (i02,80003) ivtnum 824 if (iczero) 45280, 5291, 45280 82545280 if ( ivon01 - 1 ) 25280, 15280, 25280 82615280 ivpass = ivpass + 1 827 write (i02,80001) ivtnum 828 go to 5291 82925280 ivfail = ivfail + 1 830 ivcomp = ivon01 831 ivcorr = 1 832 write (i02,80004) ivtnum, ivcomp ,ivcorr 833 5291 continue 834 ivtnum = 529 835c 836c **** test 529 **** 837c test 529 - test of 32767 and -32766 .gt. true path 838c 839c 840 if (iczero) 35290, 5290, 35290 841 5290 continue 842 ivon01 = 0 843 if ( 32767 .gt. -32766 ) ivon01 = 1 844 go to 45290 84535290 ivdele = ivdele + 1 846 write (i02,80003) ivtnum 847 if (iczero) 45290, 5301, 45290 84845290 if ( ivon01 - 1 ) 25290, 15290, 25290 84915290 ivpass = ivpass + 1 850 write (i02,80001) ivtnum 851 go to 5301 85225290 ivfail = ivfail + 1 853 ivcomp = ivon01 854 ivcorr = 1 855 write (i02,80004) ivtnum, ivcomp ,ivcorr 856 5301 continue 857c 858c write page footings and run summaries 85999999 continue 860 write (i02,90002) 861 write (i02,90006) 862 write (i02,90002) 863 write (i02,90002) 864 write (i02,90007) 865 write (i02,90002) 866 write (i02,90008) ivfail 867 write (i02,90009) ivpass 868 write (i02,90010) ivdele 869c 870c 871c terminate routine execution 872 stop 873c 874c format statements for page headers 87590000 format (1h1) 87690002 format (1h ) 87790001 format (1h ,10x,34hfortran compiler validation system) 87890003 format (1h ,21x,11hversion 1.0) 87990004 format (1h ,10x,38hfor official use only - copyright 1978) 88090005 format (1h ,5x,4htest,5x,9hpass/fail, 5x,8hcomputed,8x,7hcorrect) 88190006 format (1h ,5x,46h----------------------------------------------) 88290011 format (1h ,18x,17hsubset level test) 883c 884c format statements for run summaries 88590008 format (1h ,15x,i5,19h errors encountered) 88690009 format (1h ,15x,i5,13h tests passed) 88790010 format (1h ,15x,i5,14h tests deleted) 888c 889c format statements for test results 89080001 format (1h ,4x,i5,7x,4hpass) 89180002 format (1h ,4x,i5,7x,4hfail) 89280003 format (1h ,4x,i5,7x,7hdeleted) 89380004 format (1h ,4x,i5,7x,4hfail,10x,i6,9x,i6) 89480005 format (1h ,4x,i5,7x,4hfail,4x,e12.5,3x,e12.5) 895c 89690007 format (1h ,20x,20hend of program fm018) 897 end 898