|
|
1.1 ! root 1: c comment section ! 2: c ! 3: c fm060 ! 4: c ! 5: c this routine contains basic arithmetic if statement tests for ! 6: c the format ! 7: c ! 8: c if (e) k1,k2,k3 ! 9: c ! 10: c where e is a simple real expression of the form ! 11: c ! 12: c real variable ! 13: c real variable - real constant ! 14: c real variable + real constant ! 15: c ! 16: c and k1, k2 and k3 are statement labels. ! 17: c ! 18: c this routine also tests arithmetic assignment statements of ! 19: c the form ! 20: c real variable = real constant ! 21: c real variable = real variable ! 22: c real variable = -real variable ! 23: c ! 24: c the real constants and real variables contain both positive and ! 25: c negative values. ! 26: c ! 27: c a real datum is a processor approximation to the value of a ! 28: c real number. it may assume positive, negative and zero values. ! 29: c ! 30: c a basic real constant is written as an integer part, a decimal ! 31: c point, and a decimal fraction part in that order. both the ! 32: c integer part and the decimal part are strings of digits; either ! 33: c one of these strings may be empty but not both. the constant is ! 34: c an approximation to the digit string interpreted as a decimal ! 35: c numeral. ! 36: c ! 37: c a decimal exponent is written as the letter e, followed by an ! 38: c optionally signed integer constant. ! 39: c ! 40: c a real constant is indicated by writing a basic real constant, ! 41: c a basic real constant followed by a decimal exponent, or an ! 42: c integer constant followed by a decimal exponent. ! 43: c ! 44: c references ! 45: c american national standard programming language fortran, ! 46: c x3.9-1978 ! 47: c ! 48: c section 4.4, real type ! 49: c section 4.4.1, real constant ! 50: c section 6.1, arithmetic expressions ! 51: c section 10.1, arithmetic assignment statement ! 52: c section 11.4, arithmetic if statement ! 53: c ! 54: c ********************************************************** ! 55: c ! 56: c a compiler validation system for the fortran language ! 57: c based on specifications as defined in american national standard ! 58: c programming language fortran x3.9-1978, has been developed by the ! 59: c federal cobol compiler testing service. the fortran compiler ! 60: c validation system (fcvs) consists of audit routines, their related ! 61: c data, and an executive system. each audit routine is a fortran ! 62: c program, subprogram or function which includes tests of specific ! 63: c language elements and supporting procedures indicating the result ! 64: c of executing these tests. ! 65: c ! 66: c this particular program/subprogram/function contains features ! 67: c found only in the subset as defined in x3.9-1978. ! 68: c ! 69: c suggestions and comments should be forwarded to - ! 70: c ! 71: c department of the navy ! 72: c federal cobol compiler testing service ! 73: c washington, d.c. 20376 ! 74: c ! 75: c ********************************************************** ! 76: c ! 77: c ! 78: c ! 79: c initialization section ! 80: c ! 81: c initialize constants ! 82: c ************** ! 83: c i01 contains the logical unit number for the card reader. ! 84: i01 = 5 ! 85: c i02 contains the logical unit number for the printer. ! 86: i02 = 6 ! 87: c system environment section ! 88: c ! 89: cx010 this card is replaced by contents of fexec x-010 control card. ! 90: c the cx010 card is for overriding the program default i01 = 5 ! 91: c (unit number for card reader). ! 92: cx011 this card is replaced by contents of fexec x-011 control card. ! 93: c the cx011 card is for systems which require additional ! 94: c fortran statements for files associated with cx010 above. ! 95: c ! 96: cx020 this card is replaced by contents of fexec x-020 control card. ! 97: c the cx020 card is for overriding the program default i02 = 6 ! 98: c (unit number for printer). ! 99: cx021 this card is replaced by contents of fexec x-021 control card. ! 100: c the cx021 card is for systems which require additional ! 101: c fortran statements for files associated with cx020 above. ! 102: c ! 103: ivpass=0 ! 104: ivfail=0 ! 105: ivdele=0 ! 106: iczero=0 ! 107: c ! 108: c write page headers ! 109: write (i02,90000) ! 110: write (i02,90001) ! 111: write (i02,90002) ! 112: write (i02, 90002) ! 113: write (i02,90003) ! 114: write (i02,90002) ! 115: write (i02,90004) ! 116: write (i02,90002) ! 117: write (i02,90011) ! 118: write (i02,90002) ! 119: write (i02,90002) ! 120: write (i02,90005) ! 121: write (i02,90006) ! 122: write (i02,90002) ! 123: c ! 124: c test section ! 125: c ! 126: c arithmetic if statement ! 127: c ! 128: c test 1 through test 3 contain basic arithmetic if statement tests ! 129: c with a real variable as arithmetic expression. ! 130: c ! 131: 11 continue ! 132: ivtnum = 1 ! 133: c ! 134: c **** test 1 **** ! 135: c test 001 - less than zero branch expected ! 136: c ! 137: if (iczero) 30010, 10, 30010 ! 138: 10 continue ! 139: rvcomp = 0.0 ! 140: rvon01 = -1.0 ! 141: if (rvon01) 12,40010, 40010 ! 142: 12 rvcomp = rvon01 ! 143: go to 40010 ! 144: 30010 ivdele = ivdele + 1 ! 145: write (i02,80003) ivtnum ! 146: if (iczero) 40010, 21, 40010 ! 147: 40010 if (rvcomp) 10010,20010,20010 ! 148: 10010 ivpass = ivpass + 1 ! 149: write (i02,80001) ivtnum ! 150: go to 21 ! 151: 20010 ivfail = ivfail + 1 ! 152: rvcorr = -1.0 ! 153: write (i02,80005) ivtnum, rvcomp, rvcorr ! 154: 21 continue ! 155: ivtnum = 2 ! 156: c ! 157: c **** test 2 **** ! 158: c test 002 - equal to zero branch expected ! 159: c ! 160: if (iczero) 30020, 20, 30020 ! 161: 20 continue ! 162: rvcomp = 1.0 ! 163: rvon01 = 0.0 ! 164: if (rvon01) 40020,22,40020 ! 165: 22 rvcomp = rvon01 ! 166: go to 40020 ! 167: 30020 ivdele = ivdele + 1 ! 168: write (i02,80003) ivtnum ! 169: if (iczero) 40020, 31, 40020 ! 170: 40020 if (rvcomp) 20020,10020,20020 ! 171: 10020 ivpass = ivpass + 1 ! 172: write (i02,80001) ivtnum ! 173: go to 31 ! 174: 20020 ivfail = ivfail + 1 ! 175: rvcorr = 0.0 ! 176: write (i02,80005) ivtnum, rvcomp, rvcorr ! 177: 31 continue ! 178: ivtnum = 3 ! 179: c ! 180: c **** test 3 **** ! 181: c test 003 - greater than zero branch expected ! 182: c ! 183: if (iczero) 30030, 30, 30030 ! 184: 30 continue ! 185: rvcomp = 0.0 ! 186: rvon01 = 1.0 ! 187: if (rvon01) 40030,40030,32 ! 188: 32 rvcomp = rvon01 ! 189: go to 40030 ! 190: 30030 ivdele = ivdele + 1 ! 191: write (i02,80003) ivtnum ! 192: if (iczero) 40030, 41, 40030 ! 193: 40030 if (rvcomp) 20030,20030,10030 ! 194: 10030 ivpass = ivpass + 1 ! 195: write (i02,80001) ivtnum ! 196: go to 41 ! 197: 20030 ivfail = ivfail + 1 ! 198: rvcorr = 1.0 ! 199: write (i02,80005) ivtnum, rvcomp, rvcorr ! 200: 41 continue ! 201: ivtnum = 4 ! 202: c ! 203: c **** test 4 **** ! 204: c test 004 - basic if statements test ! 205: c these if statements are used in real variable test ! 206: c verification. the arithmetic expressions are of the form ! 207: c real variable - real constant ! 208: c ! 209: if (iczero) 30040, 40, 30040 ! 210: 40 continue ! 211: rvcomp = 4.0 ! 212: rvon01 = 1.0 ! 213: if (rvon01 - .99995) 40040,42,42 ! 214: 42 if (rvon01 - 1.0005) 43,43,40040 ! 215: 43 rvcomp = 0.0 ! 216: go to 40040 ! 217: 30040 ivdele = ivdele + 1 ! 218: write (i02,80003) ivtnum ! 219: if (iczero) 40040, 51, 40040 ! 220: 40040 if (rvcomp) 20040,10040,20040 ! 221: 10040 ivpass = ivpass + 1 ! 222: write (i02,80001) ivtnum ! 223: go to 51 ! 224: 20040 ivfail = ivfail + 1 ! 225: rvcorr = 0.0 ! 226: write (i02,80005) ivtnum, rvcomp, rvcorr ! 227: 51 continue ! 228: ivtnum = 5 ! 229: c ! 230: c **** test 5 **** ! 231: c test 005 - basic if statements test ! 232: c these if statements are used in real variable test ! 233: c verification. the arithmetic expressions are of the form ! 234: c real variable + real constant ! 235: c ! 236: if (iczero) 30050, 50, 30050 ! 237: 50 continue ! 238: rvcomp = -1.0 ! 239: rvon01 = -1.0 ! 240: if (rvon01 + 1.0005) 40050,52,52 ! 241: 52 if (rvon01 + .99995) 53,53,40050 ! 242: 53 rvcomp = 0.0 ! 243: go to 40050 ! 244: 30050 ivdele = ivdele + 1 ! 245: write (i02,80003) ivtnum ! 246: if (iczero) 40050, 61, 40050 ! 247: 40050 if (rvcomp) 20050,10050,20050 ! 248: 10050 ivpass = ivpass + 1 ! 249: write (i02,80001) ivtnum ! 250: go to 61 ! 251: 20050 ivfail = ivfail + 1 ! 252: rvcorr = 0.0 ! 253: write (i02,80005) ivtnum, rvcomp, rvcorr ! 254: c ! 255: c arithmetic assignment statement ! 256: c ! 257: c ! 258: c test 006 through test 025 contain arithmetic assignment ! 259: c statements of the form ! 260: c real variable = real constant ! 261: c ! 262: c the three types of real constants are tested with positive ! 263: c and negative values for the constants, and positive and negative ! 264: c exponents. ! 265: c ! 266: c test 006 through test 011 - constant is basic real constant ! 267: c ! 268: 61 continue ! 269: ivtnum = 6 ! 270: c ! 271: c **** test 6 **** ! 272: c ! 273: if (iczero) 30060, 60, 30060 ! 274: 60 continue ! 275: rvcomp = 2.0 ! 276: go to 40060 ! 277: 30060 ivdele = ivdele + 1 ! 278: write (i02,80003) ivtnum ! 279: if (iczero) 40060, 71, 40060 ! 280: 40060 if (rvcomp - 1.9995) 20060,10060,40061 ! 281: 40061 if (rvcomp - 2.0005) 10060,10060,20060 ! 282: 10060 ivpass = ivpass + 1 ! 283: write (i02,80001) ivtnum ! 284: go to 71 ! 285: 20060 ivfail = ivfail + 1 ! 286: rvcorr = 2.0 ! 287: write (i02,80005) ivtnum, rvcomp, rvcorr ! 288: 71 continue ! 289: ivtnum = 7 ! 290: c ! 291: c **** test 7 **** ! 292: c ! 293: if (iczero) 30070, 70, 30070 ! 294: 70 continue ! 295: rvcomp = 44.5 ! 296: go to 40070 ! 297: 30070 ivdele = ivdele + 1 ! 298: write (i02,80003) ivtnum ! 299: if (iczero) 40070, 81, 40070 ! 300: 40070 if (rvcomp - 44.495) 20070,10070,40071 ! 301: 40071 if (rvcomp - 45.505) 10070,10070,20070 ! 302: 10070 ivpass = ivpass + 1 ! 303: write (i02,80001) ivtnum ! 304: go to 81 ! 305: 20070 ivfail = ivfail + 1 ! 306: rvcorr = 44.5 ! 307: write (i02,80005) ivtnum, rvcomp, rvcorr ! 308: 81 continue ! 309: ivtnum = 8 ! 310: c ! 311: c **** test 8 **** ! 312: c ! 313: if (iczero) 30080, 80, 30080 ! 314: 80 continue ! 315: rvcomp = -2.0 ! 316: go to 40080 ! 317: 30080 ivdele = ivdele + 1 ! 318: write (i02,80003) ivtnum ! 319: if (iczero) 40080, 91, 40080 ! 320: 40080 if (rvcomp + 2.0005) 20080,10080,40081 ! 321: 40081 if (rvcomp + 1.9995) 10080,10080,20080 ! 322: 10080 ivpass = ivpass + 1 ! 323: write (i02,80001) ivtnum ! 324: go to 91 ! 325: 20080 ivfail = ivfail + 1 ! 326: rvcorr = -2.0 ! 327: write (i02,80005) ivtnum, rvcomp, rvcorr ! 328: 91 continue ! 329: ivtnum = 9 ! 330: c ! 331: c **** test 9 **** ! 332: c ! 333: if (iczero) 30090, 90, 30090 ! 334: 90 continue ! 335: rvcomp = 65001. ! 336: go to 40090 ! 337: 30090 ivdele = ivdele + 1 ! 338: write (i02,80003) ivtnum ! 339: if (iczero) 40090, 101, 40090 ! 340: 40090 if (rvcomp - 64996.) 20090,10090,40091 ! 341: 40091 if (rvcomp - 65006.) 10090,10090,20090 ! 342: 10090 ivpass = ivpass + 1 ! 343: write (i02,80001) ivtnum ! 344: go to 101 ! 345: 20090 ivfail = ivfail + 1 ! 346: rvcorr = 65001. ! 347: write (i02,80005) ivtnum, rvcomp, rvcorr ! 348: 101 continue ! 349: ivtnum = 10 ! 350: c ! 351: c **** test 10 **** ! 352: c ! 353: if (iczero) 30100, 100, 30100 ! 354: 100 continue ! 355: rvcomp = .65001 ! 356: go to 40100 ! 357: 30100 ivdele = ivdele + 1 ! 358: write (i02,80003) ivtnum ! 359: if (iczero) 40100, 111, 40100 ! 360: 40100 if (rvcomp - .64996) 20100,10100,40101 ! 361: 40101 if (rvcomp - .65006) 10100,10100,20100 ! 362: 10100 ivpass = ivpass + 1 ! 363: write (i02,80001) ivtnum ! 364: go to 111 ! 365: 20100 ivfail = ivfail + 1 ! 366: rvcorr = .65001 ! 367: write (i02,80005) ivtnum, rvcomp, rvcorr ! 368: 111 continue ! 369: ivtnum = 11 ! 370: c ! 371: c **** test 11 **** ! 372: c ! 373: if (iczero) 30110, 110, 30110 ! 374: 110 continue ! 375: rvcomp = -.33333 ! 376: go to 40110 ! 377: 30110 ivdele = ivdele + 1 ! 378: write (i02,80003) ivtnum ! 379: if (iczero) 40110, 121, 40110 ! 380: 40110 if (rvcomp + .33338) 20110,10110,40111 ! 381: 40111 if (rvcomp + .33328) 10110,10110,20110 ! 382: 10110 ivpass = ivpass + 1 ! 383: write (i02,80001) ivtnum ! 384: go to 121 ! 385: 20110 ivfail = ivfail + 1 ! 386: rvcorr = -.33333 ! 387: write (i02,80005) ivtnum, rvcomp, rvcorr ! 388: c ! 389: c test 012 through test 19 - real constant is basic real constant ! 390: c - followed by decimal exponent ! 391: c ! 392: 121 continue ! 393: ivtnum = 12 ! 394: c ! 395: c **** test 12 **** ! 396: c ! 397: if (iczero) 30120, 120, 30120 ! 398: 120 continue ! 399: rvcomp = .2e+1 ! 400: go to 40120 ! 401: 30120 ivdele = ivdele + 1 ! 402: write (i02,80003) ivtnum ! 403: if (iczero) 40120, 131, 40120 ! 404: 40120 if (rvcomp - 1.9995) 20120,10120,40121 ! 405: 40121 if (rvcomp - 2.0005) 10120,10120,20120 ! 406: 10120 ivpass = ivpass + 1 ! 407: write (i02,80001) ivtnum ! 408: go to 131 ! 409: 20120 ivfail = ivfail + 1 ! 410: rvcorr = 2.0 ! 411: write (i02,80005) ivtnum, rvcomp, rvcorr ! 412: 131 continue ! 413: ivtnum = 13 ! 414: c ! 415: c **** test 13 **** ! 416: c ! 417: if (iczero) 30130, 130, 30130 ! 418: 130 continue ! 419: rvcomp = 2.0e+0 ! 420: go to 40130 ! 421: 30130 ivdele = ivdele + 1 ! 422: write (i02,80003) ivtnum ! 423: if (iczero) 40130, 141, 40130 ! 424: 40130 if (rvcomp - 1.9995) 20130,10130,40131 ! 425: 40131 if (rvcomp - 2.0005) 10130,10130,20130 ! 426: 10130 ivpass = ivpass + 1 ! 427: write (i02,80001) ivtnum ! 428: go to 141 ! 429: 20130 ivfail = ivfail + 1 ! 430: rvcorr = 2.0 ! 431: write (i02,80005) ivtnum, rvcomp, rvcorr ! 432: 141 continue ! 433: ivtnum = 14 ! 434: c ! 435: c **** test 14 **** ! 436: c ! 437: if (iczero) 30140, 140, 30140 ! 438: 140 continue ! 439: rvcomp = 445.0e-01 ! 440: go to 40140 ! 441: 30140 ivdele = ivdele + 1 ! 442: write (i02,80003) ivtnum ! 443: if (iczero) 40140, 151, 40140 ! 444: 40140 if (rvcomp - 44.495) 20140,10140,40141 ! 445: 40141 if (rvcomp - 44.505) 10140,10140,20140 ! 446: 10140 ivpass = ivpass + 1 ! 447: write (i02,80001) ivtnum ! 448: go to 151 ! 449: 20140 ivfail = ivfail + 1 ! 450: rvcorr = 44.5 ! 451: write (i02,80005) ivtnum, rvcomp, rvcorr ! 452: 151 continue ! 453: ivtnum = 15 ! 454: c ! 455: c **** test 15 **** ! 456: c ! 457: if (iczero) 30150, 150, 30150 ! 458: 150 continue ! 459: rvcomp = 4.450e1 ! 460: go to 40150 ! 461: 30150 ivdele = ivdele + 1 ! 462: write (i02,80003) ivtnum ! 463: if (iczero) 40150, 161, 40150 ! 464: 40150 if (rvcomp - 44.495) 20150,10150,40151 ! 465: 40151 if (rvcomp - 44.505) 10150,10150,20150 ! 466: 10150 ivpass = ivpass + 1 ! 467: write (i02,80001) ivtnum ! 468: go to 161 ! 469: 20150 ivfail = ivfail + 1 ! 470: rvcorr = 44.5 ! 471: write (i02,80005) ivtnum, rvcomp, rvcorr ! 472: 161 continue ! 473: ivtnum = 16 ! 474: c ! 475: c **** test 16 **** ! 476: c ! 477: if (iczero) 30160, 160, 30160 ! 478: 160 continue ! 479: rvcomp = 2.e+15 ! 480: go to 40160 ! 481: 30160 ivdele = ivdele + 1 ! 482: write (i02,80003) ivtnum ! 483: if (iczero) 40160, 171, 40160 ! 484: 40160 if (rvcomp - 1.9995e+15) 20160,10160,40161 ! 485: 40161 if (rvcomp - 2.0005e+15) 10160,10160,20160 ! 486: 10160 ivpass = ivpass + 1 ! 487: write (i02,80001) ivtnum ! 488: go to 171 ! 489: 20160 ivfail = ivfail + 1 ! 490: rvcorr = 2.0e+15 ! 491: write (i02,80005) ivtnum, rvcomp, rvcorr ! 492: 171 continue ! 493: ivtnum = 17 ! 494: c ! 495: c **** test 17 **** ! 496: c ! 497: if (iczero) 30170, 170, 30170 ! 498: 170 continue ! 499: rvcomp = 44.5e-15 ! 500: go to 40170 ! 501: 30170 ivdele = ivdele + 1 ! 502: write (i02,80003) ivtnum ! 503: if (iczero) 40170, 181, 40170 ! 504: 40170 if (rvcomp - 44.495e-15) 20170,10170,40171 ! 505: 40171 if (rvcomp - 44.505e-15) 10170,10170,20170 ! 506: 10170 ivpass = ivpass + 1 ! 507: write (i02,80001) ivtnum ! 508: go to 181 ! 509: 20170 ivfail = ivfail + 1 ! 510: rvcorr = 44.5e-15 ! 511: write (i02,80005) ivtnum, rvcomp, rvcorr ! 512: 181 continue ! 513: ivtnum = 18 ! 514: c ! 515: c **** test 18 **** ! 516: c ! 517: if (iczero) 30180, 180, 30180 ! 518: 180 continue ! 519: rvcomp = -4.45e0 ! 520: go to 40180 ! 521: 30180 ivdele = ivdele + 1 ! 522: write (i02,80003) ivtnum ! 523: if (iczero) 40180, 191, 40180 ! 524: 40180 if (rvcomp + 4.4505) 20180,10180,40181 ! 525: 40181 if (rvcomp + 4.4495) 10180,10180,20180 ! 526: 10180 ivpass = ivpass + 1 ! 527: write (i02,80001) ivtnum ! 528: go to 191 ! 529: 20180 ivfail = ivfail + 1 ! 530: rvcorr = -4.45 ! 531: write (i02,80005) ivtnum, rvcomp, rvcorr ! 532: 191 continue ! 533: ivtnum = 19 ! 534: c ! 535: c **** test 19 **** ! 536: c ! 537: if (iczero) 30190, 190, 30190 ! 538: 190 continue ! 539: rvcomp = -6511.8e-0 ! 540: go to 40190 ! 541: 30190 ivdele = ivdele + 1 ! 542: write (i02,80003) ivtnum ! 543: if (iczero) 40190, 201, 40190 ! 544: 40190 if (rvcomp + 6512.3) 20190,10190,40191 ! 545: 40191 if (rvcomp + 6511.3) 10190,10190,20190 ! 546: 10190 ivpass = ivpass + 1 ! 547: write (i02,80001) ivtnum ! 548: go to 201 ! 549: 20190 ivfail = ivfail + 1 ! 550: rvcorr = -6511.8 ! 551: write (i02,80005) ivtnum, rvcomp, rvcorr ! 552: c ! 553: c test 020 through test 025 - integer constant followed ! 554: c - by a decimal exponent ! 555: c ! 556: 201 continue ! 557: ivtnum = 20 ! 558: c ! 559: c **** test 20 **** ! 560: c ! 561: if (iczero) 30200, 200, 30200 ! 562: 200 continue ! 563: rvcomp = 2e+1 ! 564: go to 40200 ! 565: 30200 ivdele = ivdele + 1 ! 566: write (i02,80003) ivtnum ! 567: if (iczero) 40200, 211, 40200 ! 568: 40200 if (rvcomp - 19.995) 20200,10200,40201 ! 569: 40201 if (rvcomp - 20.005) 10200,10200,20200 ! 570: 10200 ivpass = ivpass + 1 ! 571: write (i02,80001) ivtnum ! 572: go to 211 ! 573: 20200 ivfail = ivfail + 1 ! 574: rvcorr = 20.0 ! 575: write (i02,80005) ivtnum, rvcomp, rvcorr ! 576: 211 continue ! 577: ivtnum = 21 ! 578: c ! 579: c **** test 21 **** ! 580: c ! 581: if (iczero) 30210, 210, 30210 ! 582: 210 continue ! 583: rvcomp = 445e-02 ! 584: go to 40210 ! 585: 30210 ivdele = ivdele + 1 ! 586: write (i02,80003) ivtnum ! 587: if (iczero) 40210, 221, 40210 ! 588: 40210 if (rvcomp - 4.4495) 20210,10210,40211 ! 589: 40211 if (rvcomp - 4.4505) 10210,10210,20210 ! 590: 10210 ivpass = ivpass + 1 ! 591: write (i02,80001) ivtnum ! 592: go to 221 ! 593: 20210 ivfail = ivfail + 1 ! 594: rvcorr = 4.45 ! 595: write (i02,80005) ivtnum, rvcomp, rvcorr ! 596: 221 continue ! 597: ivtnum = 22 ! 598: c ! 599: c **** test 22 **** ! 600: c ! 601: if (iczero) 30220, 220, 30220 ! 602: 220 continue ! 603: rvcomp = 7e3 ! 604: go to 40220 ! 605: 30220 ivdele = ivdele + 1 ! 606: write (i02,80003) ivtnum ! 607: if (iczero) 40220, 231, 40220 ! 608: 40220 if (rvcomp - 6999.0) 20220,10220,40221 ! 609: 40221 if (rvcomp - 7001.0) 10220,10220,20220 ! 610: 10220 ivpass = ivpass + 1 ! 611: write (i02,80001) ivtnum ! 612: go to 231 ! 613: 20220 ivfail = ivfail + 1 ! 614: rvcorr = 7000.0 ! 615: write (i02,80005) ivtnum, rvcomp, rvcorr ! 616: 231 continue ! 617: ivtnum = 23 ! 618: c ! 619: c **** test 23 **** ! 620: c ! 621: if (iczero) 30230, 230, 30230 ! 622: 230 continue ! 623: rvcomp = 214 e 0 ! 624: go to 40230 ! 625: 30230 ivdele = ivdele + 1 ! 626: write (i02,80003) ivtnum ! 627: if (iczero) 40230, 241, 40230 ! 628: 40230 if (rvcomp - 213.95) 20230,10230,40231 ! 629: 40231 if (rvcomp - 214.05) 10230,10230,20230 ! 630: 10230 ivpass = ivpass + 1 ! 631: write (i02,80001) ivtnum ! 632: go to 241 ! 633: 20230 ivfail = ivfail + 1 ! 634: rvcorr = 214.0 ! 635: write (i02,80005) ivtnum, rvcomp, rvcorr ! 636: 241 continue ! 637: ivtnum = 24 ! 638: c ! 639: c **** test 24 **** ! 640: c ! 641: if (iczero) 30240, 240, 30240 ! 642: 240 continue ! 643: rvcomp = -3276e+6 ! 644: go to 40240 ! 645: 30240 ivdele = ivdele + 1 ! 646: write (i02,80003) ivtnum ! 647: if (iczero) 40240, 251, 40240 ! 648: 40240 if (rvcomp + .32765e+10) 20240,10240,40241 ! 649: 40241 if (rvcomp + .32755e+10) 10240,10240,20240 ! 650: 10240 ivpass = ivpass + 1 ! 651: write (i02,80001) ivtnum ! 652: go to 251 ! 653: 20240 ivfail = ivfail + 1 ! 654: rvcorr = -3276e+6 ! 655: write (i02,80005) ivtnum, rvcomp, rvcorr ! 656: 251 continue ! 657: ivtnum = 25 ! 658: c ! 659: c **** test 25 **** ! 660: c ! 661: if (iczero) 30250, 250, 30250 ! 662: 250 continue ! 663: rvcomp = -7e3 ! 664: go to 40250 ! 665: 30250 ivdele = ivdele + 1 ! 666: write (i02,80003) ivtnum ! 667: if (iczero) 40250, 261, 40250 ! 668: 40250 if (rvcomp + 7001.) 20250,10250,40251 ! 669: 40251 if (rvcomp + 6999.) 10250,10250,20250 ! 670: 10250 ivpass = ivpass + 1 ! 671: write (i02,80001) ivtnum ! 672: go to 261 ! 673: 20250 ivfail = ivfail + 1 ! 674: rvcorr = -7000.0 ! 675: write (i02,80005) ivtnum, rvcomp, rvcorr ! 676: c ! 677: c test 026 through test 028 contain arithmetic assignment statement ! 678: c of the form real variable = real variable ! 679: c ! 680: 261 continue ! 681: ivtnum = 26 ! 682: c ! 683: c **** test 26 **** ! 684: c ! 685: if (iczero) 30260, 260, 30260 ! 686: 260 continue ! 687: rvon01 = .2e+1 ! 688: rvcomp = rvon01 ! 689: go to 40260 ! 690: 30260 ivdele = ivdele + 1 ! 691: write (i02,80003) ivtnum ! 692: if (iczero) 40260, 271, 40260 ! 693: 40260 if (rvcomp - 1.9995) 20260,10260,40261 ! 694: 40261 if (rvcomp - 2.0005) 10260,10260,20260 ! 695: 10260 ivpass = ivpass + 1 ! 696: write (i02,80001) ivtnum ! 697: go to 271 ! 698: 20260 ivfail = ivfail + 1 ! 699: rvcorr = 20.0 ! 700: write (i02,80005) ivtnum, rvcomp, rvcorr ! 701: 271 continue ! 702: ivtnum = 27 ! 703: c ! 704: c **** test 27 **** ! 705: c ! 706: if (iczero) 30270, 270, 30270 ! 707: 270 continue ! 708: rvon01 = -445.e-01 ! 709: rvcomp = rvon01 ! 710: go to 40270 ! 711: 30270 ivdele = ivdele + 1 ! 712: write (i02,80003) ivtnum ! 713: if (iczero) 40270, 281, 40270 ! 714: 40270 if (rvcomp + 44.505) 20270,10270,40271 ! 715: 40271 if (rvcomp + 44.495) 10270,10270,20270 ! 716: 10270 ivpass = ivpass + 1 ! 717: write (i02,80001) ivtnum ! 718: go to 281 ! 719: 20270 ivfail = ivfail + 1 ! 720: rvcorr = -44.5 ! 721: write (i02,80005) ivtnum, rvcomp, rvcorr ! 722: 281 continue ! 723: ivtnum = 28 ! 724: c ! 725: c **** test 28 **** ! 726: c ! 727: if (iczero) 30280, 280, 30280 ! 728: 280 continue ! 729: rvon01 = 7e3 ! 730: rvcomp = rvon01 ! 731: go to 40280 ! 732: 30280 ivdele = ivdele + 1 ! 733: write (i02,80003) ivtnum ! 734: if (iczero) 40280, 291, 40280 ! 735: 40280 if (rvcomp - 6999.0) 20280,10280,40281 ! 736: 40281 if (rvcomp-7001.0) 10280,10280,20280 ! 737: 10280 ivpass = ivpass + 1 ! 738: write (i02,80001) ivtnum ! 739: go to 291 ! 740: 20280 ivfail = ivfail + 1 ! 741: rvcorr = 7000.0 ! 742: c ! 743: c test 029 through test 031 contain arithmetic assignment statement ! 744: c of the form real variable = - real variable ! 745: c ! 746: write (i02,80005) ivtnum, rvcomp, rvcorr ! 747: 291 continue ! 748: ivtnum = 29 ! 749: c ! 750: c **** test 29 **** ! 751: c ! 752: if (iczero) 30290, 290, 30290 ! 753: 290 continue ! 754: rvon01 = .2e+1 ! 755: rvcomp = -rvon01 ! 756: go to 40290 ! 757: 30290 ivdele = ivdele + 1 ! 758: write (i02,80003) ivtnum ! 759: if (iczero) 40290, 301, 40290 ! 760: 40290 if (rvcomp + 2.0005) 20290,10290,40291 ! 761: 40291 if (rvcomp + 1.9995) 10290,10290,20290 ! 762: 10290 ivpass = ivpass + 1 ! 763: write (i02,80001) ivtnum ! 764: go to 301 ! 765: 20290 ivfail = ivfail + 1 ! 766: rvcorr = -2.0 ! 767: write (i02,80005) ivtnum, rvcomp, rvcorr ! 768: 301 continue ! 769: ivtnum = 30 ! 770: c ! 771: c **** test 30 **** ! 772: c ! 773: if (iczero) 30300, 300, 30300 ! 774: 300 continue ! 775: rvon01 = -445.e-01 ! 776: rvcomp = -rvon01 ! 777: go to 40300 ! 778: 30300 ivdele = ivdele + 1 ! 779: write (i02,80003) ivtnum ! 780: if (iczero) 40300, 311, 40300 ! 781: 40300 if (rvcomp - 44.495) 20300,10300,40301 ! 782: 40301 if (rvcomp - 44.505) 10300,10300,20300 ! 783: 10300 ivpass = ivpass + 1 ! 784: write (i02,80001) ivtnum ! 785: go to 311 ! 786: 20300 ivfail = ivfail + 1 ! 787: rvcorr = 44.5 ! 788: write (i02,80005) ivtnum, rvcomp, rvcorr ! 789: 311 continue ! 790: ivtnum = 31 ! 791: c ! 792: c **** test 31 **** ! 793: c ! 794: if (iczero) 30310, 310, 30310 ! 795: 310 continue ! 796: rvon01 = -.44559e1 ! 797: rvcomp = -rvon01 ! 798: go to 40310 ! 799: 30310 ivdele = ivdele + 1 ! 800: write (i02,80003) ivtnum ! 801: if (iczero) 40310, 321, 40310 ! 802: 40310 if (rvcomp - 4.4554) 20310,10310,40311 ! 803: 40311 if (rvcomp - 4.4564) 10310,10310,20310 ! 804: 10310 ivpass = ivpass + 1 ! 805: write (i02,80001) ivtnum ! 806: go to 321 ! 807: 20310 ivfail = ivfail + 1 ! 808: rvcorr = 4.4559 ! 809: write (i02,80005) ivtnum, rvcomp, rvcorr ! 810: c **** end of tests **** ! 811: 321 continue ! 812: c ! 813: c write page footings and run summaries ! 814: 99999 continue ! 815: write (i02,90002) ! 816: write (i02,90006) ! 817: write (i02,90002) ! 818: write (i02,90002) ! 819: write (i02,90007) ! 820: write (i02,90002) ! 821: write (i02,90008) ivfail ! 822: write (i02,90009) ivpass ! 823: write (i02,90010) ivdele ! 824: c ! 825: c ! 826: c terminate routine execution ! 827: stop ! 828: c ! 829: c format statements for page headers ! 830: 90000 format (1h1) ! 831: 90002 format (1h ) ! 832: 90001 format (1h ,10x,34hfortran compiler validation system) ! 833: 90003 format (1h ,21x,11hversion 1.0) ! 834: 90004 format (1h ,10x,38hfor official use only - copyright 1978) ! 835: 90005 format (1h ,5x,4htest,5x,9hpass/fail, 5x,8hcomputed,8x,7hcorrect) ! 836: 90006 format (1h ,5x,46h----------------------------------------------) ! 837: 90011 format (1h ,18x,17hsubset level test) ! 838: c ! 839: c format statements for run summaries ! 840: 90008 format (1h ,15x,i5,19h errors encountered) ! 841: 90009 format (1h ,15x,i5,13h tests passed) ! 842: 90010 format (1h ,15x,i5,14h tests deleted) ! 843: c ! 844: c format statements for test results ! 845: 80001 format (1h ,4x,i5,7x,4hpass) ! 846: 80002 format (1h ,4x,i5,7x,4hfail) ! 847: 80003 format (1h ,4x,i5,7x,7hdeleted) ! 848: 80004 format (1h ,4x,i5,7x,4hfail,10x,i6,9x,i6) ! 849: 80005 format (1h ,4x,i5,7x,4hfail,4x,e12.5,3x,e12.5) ! 850: c ! 851: 90007 format (1h ,20x,20hend of program fm060) ! 852: end
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.