1c 2c comment section. 3c 4c fm017 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 dimension iadn11(3) 28 logical latn1a(2), lctnt1, lctnt2 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 = 170 100c 101c **** test 170 **** 102c test 170 - relational expression. integer variable reference. 103c false path. .lt. 104c 105c 106 if (iczero) 31700, 1700, 31700 107 1700 continue 108 ivon01 = 3 109 ivon02 = 1 110 if ( 76 .lt. ivon01 ) ivon02 = 0 111 go to 41700 11231700 ivdele = ivdele + 1 113 write (i02,80003) ivtnum 114 if (iczero) 41700, 1711, 41700 11541700 if ( ivon02 - 1 ) 21700, 11700, 21700 11611700 ivpass = ivpass + 1 117 write (i02,80001) ivtnum 118 go to 1711 11921700 ivfail = ivfail + 1 120 ivcomp = ivon02 121 ivcorr = 1 122 write (i02,80004) ivtnum, ivcomp ,ivcorr 123 1711 continue 124 ivtnum = 171 125c 126c **** test 171 **** 127c test 171 - relational expression. integer variable reference. 128c false path. .le. 129c 130c 131 if (iczero) 31710, 1710, 31710 132 1710 continue 133 ivon01 = 3 134 ivon02 = 1 135 if ( 76 .le. ivon01 ) ivon02 = 0 136 go to 41710 13731710 ivdele = ivdele + 1 138 write (i02,80003) ivtnum 139 if (iczero) 41710, 1721, 41710 14041710 if ( ivon02 - 1 ) 21710, 11710, 21710 14111710 ivpass = ivpass + 1 142 write (i02,80001) ivtnum 143 go to 1721 14421710 ivfail = ivfail + 1 145 ivcomp = ivon02 146 ivcorr = 1 147 write (i02,80004) ivtnum, ivcomp ,ivcorr 148 1721 continue 149 ivtnum = 172 150c 151c **** test 172 **** 152c test 172 - relational expressional. integer variable reference. 153c false path. .eq. 154c 155c 156 if (iczero) 31720, 1720, 31720 157 1720 continue 158 ivon01 = 587 159 ivon02 = 1 160 if ( 9999 .eq. ivon01 ) ivon02 = 0 161 go to 41720 16231720 ivdele = ivdele + 1 163 write (i02,80003) ivtnum 164 if (iczero) 41720, 1731, 41720 16541720 if ( ivon02 - 1 ) 21720, 11720, 21720 16611720 ivpass = ivpass + 1 167 write (i02,80001) ivtnum 168 go to 1731 16921720 ivfail = ivfail + 1 170 ivcomp = ivon02 171 ivcorr = 1 172 write (i02,80004) ivtnum, ivcomp ,ivcorr 173 1731 continue 174 ivtnum = 173 175c 176c **** test 173 **** 177c test 173 - relational expression. integer variable reference. 178c false path. .ne. 179c 180c 181 if (iczero) 31730, 1730, 31730 182 1730 continue 183 ivon01 = 3 184 ivon02 = 1 185 if ( 3 .ne. ivon01 ) ivon02 = 0 186 go to 41730 18731730 ivdele = ivdele + 1 188 write (i02,80003) ivtnum 189 if (iczero) 41730, 1741, 41730 19041730 if ( ivon02 - 1 ) 21730, 11730, 21730 19111730 ivpass = ivpass + 1 192 write (i02,80001) ivtnum 193 go to 1741 19421730 ivfail = ivfail + 1 195 ivcomp = ivon02 196 ivcorr = 1 197 write (i02,80004) ivtnum, ivcomp ,ivcorr 198 1741 continue 199 ivtnum = 174 200c 201c **** test 174 **** 202c test 174 - relational expression. integer variable reference. 203c false path. .gt. 204c 205c 206 if (iczero) 31740, 1740, 31740 207 1740 continue 208 ivon01 = 32767 209 ivon02 = 1 210 if ( 76 .gt. ivon01 ) ivon02 = 0 211 go to 41740 21231740 ivdele = ivdele + 1 213 write (i02,80003) ivtnum 214 if (iczero) 41740, 1751, 41740 21541740 if ( ivon02 - 1 ) 21740, 11740, 21740 21611740 ivpass = ivpass + 1 217 write (i02,80001) ivtnum 218 go to 1751 21921740 ivfail = ivfail + 1 220 ivcomp = ivon02 221 ivcorr = 1 222 write (i02,80004) ivtnum, ivcomp ,ivcorr 223 1751 continue 224 ivtnum = 175 225c 226c **** test 175 **** 227c test 175 - relational expression. integer variable reference. 228c false path. .ge. 229c 230c 231 if (iczero) 31750, 1750, 31750 232 1750 continue 233 ivon01 = 32767 234 ivon02 = 1 235 if ( 76 .ge. ivon01 ) ivon02 = 0 236 go to 41750 23731750 ivdele = ivdele + 1 238 write (i02,80003) ivtnum 239 if (iczero) 41750, 1761, 41750 24041750 if ( ivon02 - 1 ) 21750, 11750, 21750 24111750 ivpass = ivpass + 1 242 write (i02,80001) ivtnum 243 go to 1761 24421750 ivfail = ivfail + 1 245 ivcomp = ivon02 246 ivcorr = 1 247 write (i02,80004) ivtnum, ivcomp ,ivcorr 248 1761 continue 249 ivtnum = 176 250c 251c **** test 176 **** 252c test 176 - relational expression. (ivr) (ro) (ic) 253c integer variable reference with integer constant 254c true path. .lt. 255c 256c 257 if (iczero) 31760, 1760, 31760 258 1760 continue 259 ivon01 = 3 260 ivon02 = 0 261 if ( ivon01 .lt. 76 ) ivon02 = 1 262 go to 41760 26331760 ivdele = ivdele + 1 264 write (i02,80003) ivtnum 265 if (iczero) 41760, 1771, 41760 26641760 if ( ivon02 - 1 ) 21760, 11760, 21760 26711760 ivpass = ivpass + 1 268 write (i02,80001) ivtnum 269 go to 1771 27021760 ivfail = ivfail + 1 271 ivcomp = ivon02 272 ivcorr = 1 273 write (i02,80004) ivtnum, ivcomp ,ivcorr 274 1771 continue 275 ivtnum = 177 276c 277c **** test 177 **** 278c test 177 - like test 176. false path. .eq. 279c 280c 281 if (iczero) 31770, 1770, 31770 282 1770 continue 283 ivon01 = 587 284 ivon02 = 1 285 if ( ivon01 .eq. 9999 ) ivon02=0 286 go to 41770 28731770 ivdele = ivdele + 1 288 write (i02,80003) ivtnum 289 if (iczero) 41770, 1781, 41770 29041770 if ( ivon02 - 1 ) 21770, 11770, 21770 29111770 ivpass = ivpass + 1 292 write (i02,80001) ivtnum 293 go to 1781 29421770 ivfail = ivfail + 1 295 ivcomp = ivon02 296 ivcorr = 1 297 write (i02,80004) ivtnum, ivcomp ,ivcorr 298 1781 continue 299 ivtnum = 178 300c 301c **** test 178 **** 302c test 178 - like test 176. true path. .ge. 303c 304c 305 if (iczero) 31780, 1780, 31780 306 1780 continue 307 ivon01 = 32767 308 ivon02 = 0 309 if ( ivon01 .ge. 32767 ) ivon02 = 1 310 go to 41780 31131780 ivdele = ivdele + 1 312 write (i02,80003) ivtnum 313 if (iczero) 41780, 1791, 41780 31441780 if ( ivon02 - 1 ) 21780, 11780, 21780 31511780 ivpass = ivpass + 1 316 write (i02,80001) ivtnum 317 go to 1791 31821780 ivfail = ivfail + 1 319 ivcomp = ivon02 320 ivcorr = 1 321 write (i02,80004) ivtnum, ivcomp ,ivcorr 322 1791 continue 323 ivtnum = 179 324c 325c **** test 179 **** 326c test 179 - relational expression. integer array element 327c reference. (ic) (ro) (iaer) false path. .lt. 328c 329c 330 if (iczero) 31790, 1790, 31790 331 1790 continue 332 ivon01 = 1 333 iadn11(1) = 3 334 if ( 76 .lt. iadn11(1) ) ivon01 = 0 335 go to 41790 33631790 ivdele = ivdele + 1 337 write (i02,80003) ivtnum 338 if (iczero) 41790, 1801, 41790 33941790 if ( ivon01 - 1 ) 21790, 11790, 21790 34011790 ivpass = ivpass + 1 341 write (i02,80001) ivtnum 342 go to 1801 34321790 ivfail = ivfail + 1 344 ivcomp = ivon01 345 ivcorr = 1 346 write (i02,80004) ivtnum, ivcomp ,ivcorr 347 1801 continue 348 ivtnum = 180 349c 350c **** test 180 **** 351c test 180 - like test 179. true path. .le. 352c 353c 354 if (iczero) 31800, 1800, 31800 355 1800 continue 356 ivon01 = 0 357 iadn11(2) = 587 358 if ( 587 .le. iadn11(2) ) ivon01 = 1 359 go to 41800 36031800 ivdele = ivdele + 1 361 write (i02,80003) ivtnum 362 if (iczero) 41800, 1811, 41800 36341800 if ( ivon01 - 1 ) 21800, 11800, 21800 36411800 ivpass = ivpass + 1 365 write (i02,80001) ivtnum 366 go to 1811 36721800 ivfail = ivfail + 1 368 ivcomp = ivon01 369 ivcorr = 1 370 write (i02,80004) ivtnum, ivcomp ,ivcorr 371 1811 continue 372 ivtnum = 181 373c 374c **** test 181 **** 375c test 181 - like test 179. false path. .ge. 376c 377c 378 if (iczero) 31810, 1810, 31810 379 1810 continue 380 ivon01 = 1 381 iadn11(3) = 32767 382 if ( 76 .ge. iadn11(3) ) ivon01 = 0 383 go to 41810 38431810 ivdele = ivdele + 1 385 write (i02,80003) ivtnum 386 if (iczero) 41810, 1821, 41810 38741810 if ( ivon01 - 1 ) 21810, 11810, 21810 38811810 ivpass = ivpass + 1 389 write (i02,80001) ivtnum 390 go to 1821 39121810 ivfail = ivfail + 1 392 ivcomp = ivon01 393 ivcorr = 1 394 write (i02,80004) ivtnum, ivcomp ,ivcorr 395 1821 continue 396 ivtnum = 182 397c 398c **** test 182 **** 399c test 182 - relational expression (iaer) (ro) (ic). true 400c path. .eq. 401c 402c 403 if (iczero) 31820, 1820, 31820 404 1820 continue 405 ivon01 = 0 406 iadn11(2) = 32767 407 if ( iadn11(2) .eq. 32767 ) ivon01 = 1 408 go to 41820 40931820 ivdele = ivdele + 1 410 write (i02,80003) ivtnum 411 if (iczero) 41820, 1831, 41820 41241820 if ( ivon01 - 1 ) 21820, 11820, 21820 41311820 ivpass = ivpass + 1 414 write (i02,80001) ivtnum 415 go to 1831 41621820 ivfail = ivfail + 1 417 ivcomp = ivon01 418 ivcorr = 1 419 write (i02,80004) ivtnum, ivcomp ,ivcorr 420 1831 continue 421 ivtnum = 183 422c 423c **** test 183 **** 424c test 183 - relational expression (ivr) (ro) (iaer) 425c false path. .ne. 426c 427c 428 if (iczero) 31830, 1830, 31830 429 1830 continue 430 ivon01 = 1 431 ivon02 = 587 432 iadn11(1) = 587 433 if ( ivon02 .ne. iadn11(1) ) ivon01 = 0 434 go to 41830 43531830 ivdele = ivdele + 1 436 write (i02,80003) ivtnum 437 if (iczero) 41830, 1841, 41830 43841830 if ( ivon01 - 1 ) 21830, 11830, 21830 43911830 ivpass = ivpass + 1 440 write (i02,80001) ivtnum 441 go to 1841 44221830 ivfail = ivfail + 1 443 ivcomp = ivon01 444 ivcorr = 1 445 write (i02,80004) ivtnum, ivcomp ,ivcorr 446 1841 continue 447 ivtnum = 184 448c 449c **** test 184 **** 450c test 184 - relational expression (iaer) (ro) (ivr) 451c true path .ne. 452c 453c 454 if (iczero) 31840, 1840, 31840 455 1840 continue 456 ivon01 = 0 457 iadn11(3) = 3 458 ivon02 = 32767 459 if ( iadn11(3) .ne. ivon02 ) ivon01 = 1 460 go to 41840 46131840 ivdele = ivdele + 1 462 write (i02,80003) ivtnum 463 if (iczero) 41840, 1851, 41840 46441840 if ( ivon01 - 1 ) 21840, 11840, 21840 46511840 ivpass = ivpass + 1 466 write (i02,80001) ivtnum 467 go to 1851 46821840 ivfail = ivfail + 1 469 ivcomp = ivon01 470 ivcorr = 1 471 write (i02,80004) ivtnum, ivcomp ,ivcorr 472 1851 continue 473 ivtnum = 185 474c 475c **** test 185 **** 476c test 185 - test of parentheses ( (le) ) 477c true path logical constant .true. 478c 479c 480 if (iczero) 31850, 1850, 31850 481 1850 continue 482 ivon01 = 0 483 if ( ( .true. ) ) ivon01 = 1 484 go to 41850 48531850 ivdele = ivdele + 1 486 write (i02,80003) ivtnum 487 if (iczero) 41850, 1861, 41850 48841850 if ( ivon01 - 1 ) 21850, 11850, 21850 48911850 ivpass = ivpass + 1 490 write (i02,80001) ivtnum 491 go to 1861 49221850 ivfail = ivfail + 1 493 ivcomp = ivon01 494 ivcorr = 1 495 write (i02,80004) ivtnum, ivcomp ,ivcorr 496 1861 continue 497 ivtnum = 186 498c 499c **** test 186 **** 500c test 186 - like test 185 501c false path logical constant .false. 502c 503c 504 if (iczero) 31860, 1860, 31860 505 1860 continue 506 ivon01 = 1 507 if ((( .false. ))) ivon01 = 0 508 go to 41860 50931860 ivdele = ivdele + 1 510 write (i02,80003) ivtnum 511 if (iczero) 41860, 1871, 41860 51241860 if ( ivon01 - 1 ) 21860, 11860, 21860 51311860 ivpass = ivpass + 1 514 write (i02,80001) ivtnum 515 go to 1871 51621860 ivfail = ivfail + 1 517 ivcomp = ivon01 518 ivcorr = 1 519 write (i02,80004) ivtnum, ivcomp ,ivcorr 520 1871 continue 521 ivtnum = 187 522c 523c **** test 187 **** 524c test 187 - parens around logical variable reference ( (lvr) ) 525c true path 526c 527c 528 if (iczero) 31870, 1870, 31870 529 1870 continue 530 ivon01 = 0 531 lctnt1 = .true. 532 if ( ( lctnt1 ) ) ivon01 = 1 533 go to 41870 53431870 ivdele = ivdele + 1 535 write (i02,80003) ivtnum 536 if (iczero) 41870, 1881, 41870 53741870 if ( ivon01 - 1 ) 21870, 11870, 21870 53811870 ivpass = ivpass + 1 539 write (i02,80001) ivtnum 540 go to 1881 54121870 ivfail = ivfail + 1 542 ivcomp = ivon01 543 ivcorr = 1 544 write (i02,80004) ivtnum, ivcomp ,ivcorr 545 1881 continue 546 ivtnum = 188 547c 548c **** test 188 **** 549c test 188 - parens around logical array reference ( ( laer ) ) 550c false path 551c 552 if (iczero) 31880, 1880, 31880 553 1880 continue 554 ivon01 = 1 555 latn1a(1) = .false. 556 if ( ( latn1a(1) ) ) ivon01 = 0 557 go to 41880 55831880 ivdele = ivdele + 1 559 write (i02,80003) ivtnum 560 if (iczero) 41880, 1891, 41880 56141880 if ( ivon01 - 1 ) 21880, 11880, 21880 56211880 ivpass = ivpass + 1 563 write (i02,80001) ivtnum 564 go to 1891 56521880 ivfail = ivfail + 1 566 ivcomp = ivon01 567 ivcorr = 1 568 write (i02,80004) ivtnum, ivcomp ,ivcorr 569 1891 continue 570 ivtnum = 189 571c 572c **** test 189 **** 573c test 189 - use of .not. with a logical primary .not. (lp) 574c false path .not. .true. 575c 576c 577 if (iczero) 31890, 1890, 31890 578 1890 continue 579 ivon01 = 1 580 if ( .not. .true. ) ivon01 = 0 581 go to 41890 58231890 ivdele = ivdele + 1 583 write (i02,80003) ivtnum 584 if (iczero) 41890, 1901, 41890 58541890 if ( ivon01 - 1 ) 21890, 11890, 21890 58611890 ivpass = ivpass + 1 587 write (i02,80001) ivtnum 588 go to 1901 58921890 ivfail = ivfail + 1 590 ivcomp = ivon01 591 ivcorr = 1 592 write (i02,80004) ivtnum, ivcomp ,ivcorr 593 1901 continue 594 ivtnum = 190 595c 596c **** test 190 **** 597c test 190 - like test 189 true path .not. .false. 598c 599c 600 if (iczero) 31900, 1900, 31900 601 1900 continue 602 ivon01 = 0 603 if ( .not. .false. ) ivon01 = 1 604 go to 41900 60531900 ivdele = ivdele + 1 606 write (i02,80003) ivtnum 607 if (iczero) 41900, 1911, 41900 60841900 if ( ivon01 - 1 ) 21900, 11900, 21900 60911900 ivpass = ivpass + 1 610 write (i02,80001) ivtnum 611 go to 1911 61221900 ivfail = ivfail + 1 613 ivcomp = ivon01 614 ivcorr = 1 615 write (i02,80004) ivtnum, ivcomp ,ivcorr 616 1911 continue 617 ivtnum = 191 618c 619c **** test 191 **** 620c test 191 - tests .not. with a logical variable set to .false. 621c in a logical assignment statement true path 622c 623c 624 if (iczero) 31910, 1910, 31910 625 1910 continue 626 ivon01 = 0 627 lctnt1 = .false. 628 if ( .not. lctnt1 ) ivon01 = 1 629 go to 41910 63031910 ivdele = ivdele + 1 631 write (i02,80003) ivtnum 632 if (iczero) 41910, 1921, 41910 63341910 if ( ivon01 - 1 ) 21910, 11910, 21910 63411910 ivpass = ivpass + 1 635 write (i02,80001) ivtnum 636 go to 1921 63721910 ivfail = ivfail + 1 638 ivcomp = ivon01 639 ivcorr = 1 640 write (i02,80004) ivtnum, ivcomp ,ivcorr 641 1921 continue 642 ivtnum = 192 643c 644c **** test 192 **** 645c test 192 - like test 191 only uses a logical array element 646c set to .false. in a logical assignment statement true 647c 648c 649 if (iczero) 31920, 1920, 31920 650 1920 continue 651 ivon01 = 0 652 latn1a(2) = .false. 653 if ( .not. latn1a(2) ) ivon01 = 1 654 go to 41920 65531920 ivdele = ivdele + 1 656 write (i02,80003) ivtnum 657 if (iczero) 41920, 1931, 41920 65841920 if ( ivon01 - 1 ) 21920, 11920, 21920 65911920 ivpass = ivpass + 1 660 write (i02,80001) ivtnum 661 go to 1931 66221920 ivfail = ivfail + 1 663 ivcomp = ivon01 664 ivcorr = 1 665 write (i02,80004) ivtnum, ivcomp ,ivcorr 666 1931 continue 667 ivtnum = 193 668c 669c **** test 193 **** 670c test 193 - use of logical .and. (lt) .and. (lf) 671c uses two logical variables each set to .false. 672c false .and. false false path 673c 674c 675 if (iczero) 31930, 1930, 31930 676 1930 continue 677 ivon01 = 1 678 lctnt1 = .false. 679 lctnt2 = .false. 680 if ( lctnt1 .and. lctnt2 ) ivon01 = 0 681 go to 41930 68231930 ivdele = ivdele + 1 683 write (i02,80003) ivtnum 684 if (iczero) 41930, 1941, 41930 68541930 if ( ivon01 - 1 ) 21930, 11930, 21930 68611930 ivpass = ivpass + 1 687 write (i02,80001) ivtnum 688 go to 1941 68921930 ivfail = ivfail + 1 690 ivcomp = ivon01 691 ivcorr = 1 692 write (i02,80004) ivtnum, ivcomp ,ivcorr 693 1941 continue 694 ivtnum = 194 695c 696c **** test 194 **** 697c test 194 - like test 193 false .and. true false path 698c 699c 700 if (iczero) 31940, 1940, 31940 701 1940 continue 702 ivon01 = 1 703 lctnt1 = .false. 704 lctnt2 = .true. 705 if ( lctnt1 .and. lctnt2 ) ivon01 = 0 706 go to 41940 70731940 ivdele = ivdele + 1 708 write (i02,80003) ivtnum 709 if (iczero) 41940, 1951, 41940 71041940 if ( ivon01 - 1 ) 21940, 11940, 21940 71111940 ivpass = ivpass + 1 712 write (i02,80001) ivtnum 713 go to 1951 71421940 ivfail = ivfail + 1 715 ivcomp = ivon01 716 ivcorr = 1 717 write (i02,80004) ivtnum, ivcomp ,ivcorr 718 1951 continue 719 ivtnum = 195 720c 721c **** test 195 **** 722c test 195 - like test 193 true .and. false false path 723c 724c 725 if (iczero) 31950, 1950, 31950 726 1950 continue 727 ivon01 = 1 728 lctnt1 = .true. 729 lctnt2 = .false. 730 if ( lctnt1 .and. lctnt2 ) ivon01 = 0 731 go to 41950 73231950 ivdele = ivdele + 1 733 write (i02,80003) ivtnum 734 if (iczero) 41950, 1961, 41950 73541950 if ( ivon01 - 1 ) 21950, 11950, 21950 73611950 ivpass = ivpass + 1 737 write (i02,80001) ivtnum 738 go to 1961 73921950 ivfail = ivfail + 1 740 ivcomp = ivon01 741 ivcorr = 1 742 write (i02,80004) ivtnum, ivcomp ,ivcorr 743 1961 continue 744 ivtnum = 196 745c 746c **** test 196 **** 747c test 196 - like test 193 true .and. true true path 748c 749c 750 if (iczero) 31960, 1960, 31960 751 1960 continue 752 ivon01 = 0 753 lctnt1 = .true. 754 lctnt2 = .true. 755 if ( lctnt1 .and. lctnt2 ) ivon01 = 1 756 go to 41960 75731960 ivdele = ivdele + 1 758 write (i02,80003) ivtnum 759 if (iczero) 41960, 1971, 41960 76041960 if ( ivon01 - 1 ) 21960, 11960, 21960 76111960 ivpass = ivpass + 1 762 write (i02,80001) ivtnum 763 go to 1971 76421960 ivfail = ivfail + 1 765 ivcomp = ivon01 766 ivcorr = 1 767 write (i02,80004) ivtnum, ivcomp ,ivcorr 768 1971 continue 769 ivtnum = 197 770c 771c **** test 197 **** 772c test 197 - test of the inclusive .or. . (le) .or. (lt) 773c uses logical variables set in logical assignment statements 774c false .or. false false path 775c 776c 777 if (iczero) 31970, 1970, 31970 778 1970 continue 779 ivon01 = 1 780 lctnt1 = .false. 781 lctnt2 = .false. 782 if ( lctnt1 .or. lctnt2 ) ivon01 = 0 783 go to 41970 78431970 ivdele = ivdele + 1 785 write (i02,80003) ivtnum 786 if (iczero) 41970, 1981, 41970 78741970 if ( ivon01 - 1 ) 21970, 11970, 21970 78811970 ivpass = ivpass + 1 789 write (i02,80001) ivtnum 790 go to 1981 79121970 ivfail = ivfail + 1 792 ivcomp = ivon01 793 ivcorr = 1 794 write (i02,80004) ivtnum, ivcomp ,ivcorr 795 1981 continue 796 ivtnum = 198 797c 798c **** test 198 **** 799c test 198 - like test 197 false .or. true true path 800c 801c 802 if (iczero) 31980, 1980, 31980 803 1980 continue 804 ivon01 = 0 805 lctnt1 = .false. 806 lctnt2 = .true. 807 if ( lctnt1 .or. lctnt2 ) ivon01 = 1 808 go to 41980 80931980 ivdele = ivdele + 1 810 write (i02,80003) ivtnum 811 if (iczero) 41980, 1991, 41980 81241980 if ( ivon01 - 1 ) 21980, 11980, 21980 81311980 ivpass = ivpass + 1 814 write (i02,80001) ivtnum 815 go to 1991 81621980 ivfail = ivfail + 1 817 ivcomp = ivon01 818 ivcorr = 1 819 write (i02,80004) ivtnum, ivcomp ,ivcorr 820 1991 continue 821 ivtnum = 199 822c 823c **** test 199 **** 824c test 199 - like test 197. true .or. false true path. 825c 826c 827 if (iczero) 31990, 1990, 31990 828 1990 continue 829 ivon01 = 0 830 lctnt1 = .true. 831 lctnt2 = .false. 832 if ( lctnt1 .or. lctnt2 ) ivon01 = 1 833 go to 41990 83431990 ivdele = ivdele + 1 835 write (i02,80003) ivtnum 836 if (iczero) 41990, 5001, 41990 83741990 if ( ivon01 - 1 ) 21990, 11990, 21990 83811990 ivpass = ivpass + 1 839 write (i02,80001) ivtnum 840 go to 5001 84121990 ivfail = ivfail + 1 842 ivcomp = ivon01 843 ivcorr = 1 844 write (i02,80004) ivtnum, ivcomp ,ivcorr 845 5001 continue 846c 847c write page footings and run summaries 84899999 continue 849 write (i02,90002) 850 write (i02,90006) 851 write (i02,90002) 852 write (i02,90002) 853 write (i02,90007) 854 write (i02,90002) 855 write (i02,90008) ivfail 856 write (i02,90009) ivpass 857 write (i02,90010) ivdele 858c 859c 860c terminate routine execution 861 stop 862c 863c format statements for page headers 86490000 format (1h1) 86590002 format (1h ) 86690001 format (1h ,10x,34hfortran compiler validation system) 86790003 format (1h ,21x,11hversion 1.0) 86890004 format (1h ,10x,38hfor official use only - copyright 1978) 86990005 format (1h ,5x,4htest,5x,9hpass/fail, 5x,8hcomputed,8x,7hcorrect) 87090006 format (1h ,5x,46h----------------------------------------------) 87190011 format (1h ,18x,17hsubset level test) 872c 873c format statements for run summaries 87490008 format (1h ,15x,i5,19h errors encountered) 87590009 format (1h ,15x,i5,13h tests passed) 87690010 format (1h ,15x,i5,14h tests deleted) 877c 878c format statements for test results 87980001 format (1h ,4x,i5,7x,4hpass) 88080002 format (1h ,4x,i5,7x,4hfail) 88180003 format (1h ,4x,i5,7x,7hdeleted) 88280004 format (1h ,4x,i5,7x,4hfail,10x,i6,9x,i6) 88380005 format (1h ,4x,i5,7x,4hfail,4x,e12.5,3x,e12.5) 884c 88590007 format (1h ,20x,20hend of program fm017) 886 end 887