|
|
1.1 ! root 1: c comment section. ! 2: c ! 3: c fm022 ! 4: c ! 5: c this routine tests arrays with fixed dimension and size limits ! 6: c set either in a blank common or dimension statement. the values ! 7: c of the array elements are set in various ways such as simple ! 8: c assignment statements, set to the values of other array elements ! 9: c (either positive or negative), set by integer to real or real to ! 10: c integer conversion, set by arithmetic expressions, or set by ! 11: c use of the equivalence statement. ! 12: c ! 13: c references ! 14: c american national standard programming language fortran, ! 15: c x3.9-1978 ! 16: c ! 17: c section 8, specification statements ! 18: c section 8.1, dimension statement ! 19: c section 8.2, equivalence statement ! 20: c section 8.3, common statement ! 21: c section 8.4, type-statements ! 22: c section 9, data statement ! 23: c ! 24: c ! 25: c ! 26: common iadn14(5), radn14(5), ladn13(2) ! 27: c ! 28: dimension iadn11(5), radn11(5), ladn11(2) ! 29: dimension iadn12(5), radn12(5), ladn12(2) ! 30: dimension iadn15(2), radn15(2) ! 31: dimension iadn16(4), iadn17(4) ! 32: c ! 33: integer radn13(5) ! 34: real iadn13(5) ! 35: logical ladn11, ladn12, ladn13, lctn01 ! 36: c ! 37: equivalence (iadn14(1), iadn15(1)), (radn14(2),radn15(2)) ! 38: equivalence (ladn13(1),lctn01), (iadn14(5), icon02) ! 39: equivalence (radn14(5), rcon01) ! 40: equivalence ( iadn16(3), iadn17(2) ) ! 41: c ! 42: data iadn12(1)/3/, radn12(1)/-512./, iadn13(1)/0.5/, radn13(1)/-3/ ! 43: c ! 44: c ! 45: c ! 46: c ********************************************************** ! 47: c ! 48: c a compiler validation system for the fortran language ! 49: c based on specifications as defined in american national standard ! 50: c programming language fortran x3.9-1978, has been developed by the ! 51: c federal cobol compiler testing service. the fortran compiler ! 52: c validation system (fcvs) consists of audit routines, their related ! 53: c data, and an executive system. each audit routine is a fortran ! 54: c program, subprogram or function which includes tests of specific ! 55: c language elements and supporting procedures indicating the result ! 56: c of executing these tests. ! 57: c ! 58: c this particular program/subprogram/function contains features ! 59: c found only in the subset as defined in x3.9-1978. ! 60: c ! 61: c suggestions and comments should be forwarded to - ! 62: c ! 63: c department of the navy ! 64: c federal cobol compiler testing service ! 65: c washington, d.c. 20376 ! 66: c ! 67: c ********************************************************** ! 68: c ! 69: c ! 70: c ! 71: c initialization section ! 72: c ! 73: c initialize constants ! 74: c ************** ! 75: c i01 contains the logical unit number for the card reader. ! 76: i01 = 5 ! 77: c i02 contains the logical unit number for the printer. ! 78: i02 = 6 ! 79: c system environment section ! 80: c ! 81: cx010 this card is replaced by contents of fexec x-010 control card. ! 82: c the cx010 card is for overriding the program default i01 = 5 ! 83: c (unit number for card reader). ! 84: cx011 this card is replaced by contents of fexec x-011 control card. ! 85: c the cx011 card is for systems which require additional ! 86: c fortran statements for files associated with cx010 above. ! 87: c ! 88: cx020 this card is replaced by contents of fexec x-020 control card. ! 89: c the cx020 card is for overriding the program default i02 = 6 ! 90: c (unit number for printer). ! 91: cx021 this card is replaced by contents of fexec x-021 control card. ! 92: c the cx021 card is for systems which require additional ! 93: c fortran statements for files associated with cx020 above. ! 94: c ! 95: ivpass=0 ! 96: ivfail=0 ! 97: ivdele=0 ! 98: iczero=0 ! 99: c ! 100: c write page headers ! 101: write (i02,90000) ! 102: write (i02,90001) ! 103: write (i02,90002) ! 104: write (i02, 90002) ! 105: write (i02,90003) ! 106: write (i02,90002) ! 107: write (i02,90004) ! 108: write (i02,90002) ! 109: write (i02,90011) ! 110: write (i02,90002) ! 111: write (i02,90002) ! 112: write (i02,90005) ! 113: write (i02,90006) ! 114: write (i02,90002) ! 115: ivtnum = 604 ! 116: c ! 117: c **** test 604 **** ! 118: c test 604 - this tests a simple assignment statement in setting ! 119: c an integer array element to a positive value of 32767. ! 120: c ! 121: if (iczero) 36040, 6040, 36040 ! 122: 6040 continue ! 123: iadn11(5) = 32767 ! 124: ivcomp = iadn11(5) ! 125: go to 46040 ! 126: 36040 ivdele = ivdele + 1 ! 127: write (i02,80003) ivtnum ! 128: if (iczero) 46040, 6051, 46040 ! 129: 46040 if ( ivcomp - 32767 ) 26040, 16040, 26040 ! 130: 16040 ivpass = ivpass + 1 ! 131: write (i02,80001) ivtnum ! 132: go to 6051 ! 133: 26040 ivfail = ivfail + 1 ! 134: ivcorr = 32767 ! 135: write (i02,80004) ivtnum, ivcomp ,ivcorr ! 136: 6051 continue ! 137: ivtnum = 605 ! 138: c ! 139: c **** test 605 **** ! 140: c test 605 - test of a simple assign with a negative value -32766 ! 141: c ! 142: if (iczero) 36050, 6050, 36050 ! 143: 6050 continue ! 144: iadn11(1) = -32766 ! 145: ivcomp = iadn11(1) ! 146: go to 46050 ! 147: 36050 ivdele = ivdele + 1 ! 148: write (i02,80003) ivtnum ! 149: if (iczero) 46050, 6061, 46050 ! 150: 46050 if ( ivcomp + 32766 ) 26050, 16050, 26050 ! 151: 16050 ivpass = ivpass + 1 ! 152: write (i02,80001) ivtnum ! 153: go to 6061 ! 154: 26050 ivfail = ivfail + 1 ! 155: ivcorr = -32766 ! 156: write (i02,80004) ivtnum, ivcomp ,ivcorr ! 157: 6061 continue ! 158: ivtnum = 606 ! 159: c ! 160: c **** test 606 **** ! 161: c test 606 - test of unsigned zero set to an array element ! 162: c by a simple assignment statement. ! 163: c ! 164: if (iczero) 36060, 6060, 36060 ! 165: 6060 continue ! 166: iadn11(3) = 0 ! 167: ivcomp = iadn11(3) ! 168: go to 46060 ! 169: 36060 ivdele = ivdele + 1 ! 170: write (i02,80003) ivtnum ! 171: if (iczero) 46060, 6071, 46060 ! 172: 46060 if ( ivcomp - 0 ) 26060, 16060, 26060 ! 173: 16060 ivpass = ivpass + 1 ! 174: write (i02,80001) ivtnum ! 175: go to 6071 ! 176: 26060 ivfail = ivfail + 1 ! 177: ivcorr = 0 ! 178: write (i02,80004) ivtnum, ivcomp ,ivcorr ! 179: 6071 continue ! 180: ivtnum = 607 ! 181: c ! 182: c **** test 607 **** ! 183: c test 607 - test of a negatively signed zero compared to a ! 184: c zero unsigned both values set as integer array elements. ! 185: c ! 186: if (iczero) 36070, 6070, 36070 ! 187: 6070 continue ! 188: iadn11(2) = -0 ! 189: iadn11(3) = 0 ! 190: icon01 = 0 ! 191: if ( iadn11(2) .eq. iadn11(3) ) icon01 = 1 ! 192: go to 46070 ! 193: 36070 ivdele = ivdele + 1 ! 194: write (i02,80003) ivtnum ! 195: if (iczero) 46070, 6081, 46070 ! 196: 46070 if ( icon01 - 1 ) 26070, 16070, 26070 ! 197: 16070 ivpass = ivpass + 1 ! 198: write (i02,80001) ivtnum ! 199: go to 6081 ! 200: 26070 ivfail = ivfail + 1 ! 201: ivcomp = icon01 ! 202: ivcorr = 1 ! 203: write (i02,80004) ivtnum, ivcomp ,ivcorr ! 204: 6081 continue ! 205: ivtnum = 608 ! 206: c ! 207: c **** test 608 **** ! 208: c test 608 - test of setting one integer array element equal to ! 209: c the value of another integer array element. the value is 32767. ! 210: c ! 211: if (iczero) 36080, 6080, 36080 ! 212: 6080 continue ! 213: iadn11(1) = 32767 ! 214: iadn12(5) = iadn11(1) ! 215: ivcomp = iadn12(5) ! 216: go to 46080 ! 217: 36080 ivdele = ivdele + 1 ! 218: write (i02,80003) ivtnum ! 219: if (iczero) 46080, 6091, 46080 ! 220: 46080 if ( ivcomp - 32767 ) 26080, 16080, 26080 ! 221: 16080 ivpass = ivpass + 1 ! 222: write (i02,80001) ivtnum ! 223: go to 6091 ! 224: 26080 ivfail = ivfail + 1 ! 225: ivcorr = 32767 ! 226: write (i02,80004) ivtnum, ivcomp ,ivcorr ! 227: 6091 continue ! 228: ivtnum = 609 ! 229: c ! 230: c **** test 609 **** ! 231: c test 609 - test of an array element set to another array element ! 232: c which had been set at compile time by a data initialization ! 233: c statement. an integer array is used with the value 3. ! 234: c ! 235: if (iczero) 36090, 6090, 36090 ! 236: 6090 continue ! 237: iadn11(4) = iadn12(1) ! 238: ivcomp = iadn11(4) ! 239: go to 46090 ! 240: 36090 ivdele = ivdele + 1 ! 241: write (i02,80003) ivtnum ! 242: if (iczero) 46090, 6101, 46090 ! 243: 46090 if ( ivcomp - 3 ) 26090, 16090, 26090 ! 244: 16090 ivpass = ivpass + 1 ! 245: write (i02,80001) ivtnum ! 246: go to 6101 ! 247: 26090 ivfail = ivfail + 1 ! 248: ivcorr = 3 ! 249: write (i02,80004) ivtnum, ivcomp ,ivcorr ! 250: 6101 continue ! 251: ivtnum = 610 ! 252: c ! 253: c **** test 610 **** ! 254: c test 610 - test of setting a real array element to a positive ! 255: c value in a simple assignment statement. value is 32767. ! 256: c ! 257: if (iczero) 36100, 6100, 36100 ! 258: 6100 continue ! 259: radn11(5) = 32767. ! 260: ivcomp = radn11(5) ! 261: go to 46100 ! 262: 36100 ivdele = ivdele + 1 ! 263: write (i02,80003) ivtnum ! 264: if (iczero) 46100, 6111, 46100 ! 265: 46100 if ( ivcomp - 32767 ) 26100, 16100, 26100 ! 266: 16100 ivpass = ivpass + 1 ! 267: write (i02,80001) ivtnum ! 268: go to 6111 ! 269: 26100 ivfail = ivfail + 1 ! 270: ivcorr = 32767 ! 271: write (i02,80004) ivtnum, ivcomp ,ivcorr ! 272: 6111 continue ! 273: ivtnum = 611 ! 274: c ! 275: c **** test 611 **** ! 276: c test 611 - test of setting a real array element to a negative ! 277: c value in a simple assignment statement. value is -32766. ! 278: c ! 279: if (iczero) 36110, 6110, 36110 ! 280: 6110 continue ! 281: radn11(1) = -32766. ! 282: ivcomp = radn11(1) ! 283: go to 46110 ! 284: 36110 ivdele = ivdele + 1 ! 285: write (i02,80003) ivtnum ! 286: if (iczero) 46110, 6121, 46110 ! 287: 46110 if ( ivcomp + 32766 ) 26110, 16110, 26110 ! 288: 16110 ivpass = ivpass + 1 ! 289: write (i02,80001) ivtnum ! 290: go to 6121 ! 291: 26110 ivfail = ivfail + 1 ! 292: ivcorr = -32766 ! 293: write (i02,80004) ivtnum, ivcomp ,ivcorr ! 294: 6121 continue ! 295: ivtnum = 612 ! 296: c ! 297: c **** test 612 **** ! 298: c test 612 - test of setting a real array element to unsigned zero ! 299: c in a simple assignment statement. ! 300: c ! 301: if (iczero) 36120, 6120, 36120 ! 302: 6120 continue ! 303: radn11(3) = 0. ! 304: ivcomp = radn11(3) ! 305: go to 46120 ! 306: 36120 ivdele = ivdele + 1 ! 307: write (i02,80003) ivtnum ! 308: if (iczero) 46120, 6131, 46120 ! 309: 46120 if ( ivcomp - 0 ) 26120, 16120, 26120 ! 310: 16120 ivpass = ivpass + 1 ! 311: write (i02,80001) ivtnum ! 312: go to 6131 ! 313: 26120 ivfail = ivfail + 1 ! 314: ivcorr = 0 ! 315: write (i02,80004) ivtnum, ivcomp ,ivcorr ! 316: 6131 continue ! 317: ivtnum = 613 ! 318: c ! 319: c **** test 613 **** ! 320: c test 613 - test of a negatively signed zero in a real array ! 321: c element compared to a real element set to an unsigned zero. ! 322: c ! 323: if (iczero) 36130, 6130, 36130 ! 324: 6130 continue ! 325: radn11(2) = -0.0 ! 326: radn11(3) = 0.0 ! 327: icon01 = 0 ! 328: if ( radn11(2) .eq. radn11(3) ) icon01 = 1 ! 329: go to 46130 ! 330: 36130 ivdele = ivdele + 1 ! 331: write (i02,80003) ivtnum ! 332: if (iczero) 46130, 6141, 46130 ! 333: 46130 if ( icon01 - 1 ) 26130, 16130, 26130 ! 334: 16130 ivpass = ivpass + 1 ! 335: write (i02,80001) ivtnum ! 336: go to 6141 ! 337: 26130 ivfail = ivfail + 1 ! 338: ivcomp = icon01 ! 339: ivcorr = 1 ! 340: write (i02,80004) ivtnum, ivcomp ,ivcorr ! 341: 6141 continue ! 342: ivtnum = 614 ! 343: c ! 344: c **** test 614 **** ! 345: c test 614 - test of setting one real array element equal to the ! 346: c value of another real array element. the value is 32767. ! 347: c ! 348: if (iczero) 36140, 6140, 36140 ! 349: 6140 continue ! 350: radn11(1) = 32767. ! 351: radn12(5) = radn11(1) ! 352: ivcomp = radn12(5) ! 353: go to 46140 ! 354: 36140 ivdele = ivdele + 1 ! 355: write (i02,80003) ivtnum ! 356: if (iczero) 46140, 6151, 46140 ! 357: 46140 if ( ivcomp - 32767 ) 26140, 16140, 26140 ! 358: 16140 ivpass = ivpass + 1 ! 359: write (i02,80001) ivtnum ! 360: go to 6151 ! 361: 26140 ivfail = ivfail + 1 ! 362: ivcorr = 32767 ! 363: write (i02,80004) ivtnum, ivcomp ,ivcorr ! 364: 6151 continue ! 365: ivtnum = 615 ! 366: c ! 367: c **** test 615 **** ! 368: c test 615 - test of a real array element set to another real ! 369: c array element which had been set at compile time by a data ! 370: c initialization statement. the value is -512. ! 371: c ! 372: if (iczero) 36150, 6150, 36150 ! 373: 6150 continue ! 374: radn11(4) = radn12(1) ! 375: ivcomp = radn11(4) ! 376: go to 46150 ! 377: 36150 ivdele = ivdele + 1 ! 378: write (i02,80003) ivtnum ! 379: if (iczero) 46150, 6161, 46150 ! 380: 46150 if ( ivcomp + 512 ) 26150, 16150, 26150 ! 381: 16150 ivpass = ivpass + 1 ! 382: write (i02,80001) ivtnum ! 383: go to 6161 ! 384: 26150 ivfail = ivfail + 1 ! 385: ivcorr = - 512 ! 386: write (i02,80004) ivtnum, ivcomp ,ivcorr ! 387: 6161 continue ! 388: ivtnum = 616 ! 389: c ! 390: c **** test 616 **** ! 391: c test 616 - test of setting the value of an integer array element ! 392: c by an arithmetic expression. ! 393: c ! 394: if (iczero) 36160, 6160, 36160 ! 395: 6160 continue ! 396: icon01 = 1 ! 397: iadn11(3) = icon01 + 1 ! 398: ivcomp = iadn11(3) ! 399: go to 46160 ! 400: 36160 ivdele = ivdele + 1 ! 401: write (i02,80003) ivtnum ! 402: if (iczero) 46160, 6171, 46160 ! 403: 46160 if ( ivcomp - 2 ) 26160, 16160, 26160 ! 404: 16160 ivpass = ivpass + 1 ! 405: write (i02,80001) ivtnum ! 406: go to 6171 ! 407: 26160 ivfail = ivfail + 1 ! 408: ivcorr = 2 ! 409: write (i02,80004) ivtnum, ivcomp ,ivcorr ! 410: 6171 continue ! 411: ivtnum = 617 ! 412: c ! 413: c **** test 617 **** ! 414: c test 617 - test of setting the value of a real array element ! 415: c by an arithmetic expression. ! 416: c ! 417: if (iczero) 36170, 6170, 36170 ! 418: 6170 continue ! 419: rcon01 = 1. ! 420: radn11(3) = rcon01 + 1. ! 421: ivcomp = radn11(3) ! 422: go to 46170 ! 423: 36170 ivdele = ivdele + 1 ! 424: write (i02,80003) ivtnum ! 425: if (iczero) 46170, 6181, 46170 ! 426: 46170 if ( ivcomp - 2 ) 26170, 16170, 26170 ! 427: 16170 ivpass = ivpass + 1 ! 428: write (i02,80001) ivtnum ! 429: go to 6181 ! 430: 26170 ivfail = ivfail + 1 ! 431: ivcorr = 2 ! 432: write (i02,80004) ivtnum, ivcomp ,ivcorr ! 433: 6181 continue ! 434: ivtnum = 618 ! 435: c ! 436: c **** test 618 **** ! 437: c test 618 - test of setting the value of an integer array element ! 438: c to another integer array element and changing the sign. ! 439: c ! 440: if (iczero) 36180, 6180, 36180 ! 441: 6180 continue ! 442: iadn11(2) = 32766 ! 443: iadn11(4) = - iadn11(2) ! 444: ivcomp = iadn11(4) ! 445: go to 46180 ! 446: 36180 ivdele = ivdele + 1 ! 447: write (i02,80003) ivtnum ! 448: if (iczero) 46180, 6191, 46180 ! 449: 46180 if ( ivcomp + 32766 ) 26180, 16180, 26180 ! 450: 16180 ivpass = ivpass + 1 ! 451: write (i02,80001) ivtnum ! 452: go to 6191 ! 453: 26180 ivfail = ivfail + 1 ! 454: ivcorr = -32766 ! 455: write (i02,80004) ivtnum, ivcomp ,ivcorr ! 456: 6191 continue ! 457: ivtnum = 619 ! 458: c ! 459: c **** test 619 **** ! 460: c test 619 - test of setting the value of a real array element ! 461: c to the value of another real array element and changing the sign. ! 462: c ! 463: if (iczero) 36190, 6190, 36190 ! 464: 6190 continue ! 465: radn11(2) = 32766. ! 466: radn11(4) = - radn11(2) ! 467: ivcomp = radn11(4) ! 468: go to 46190 ! 469: 36190 ivdele = ivdele + 1 ! 470: write (i02,80003) ivtnum ! 471: if (iczero) 46190, 6201, 46190 ! 472: 46190 if ( ivcomp + 32766 ) 26190, 16190, 26190 ! 473: 16190 ivpass = ivpass + 1 ! 474: write (i02,80001) ivtnum ! 475: go to 6201 ! 476: 26190 ivfail = ivfail + 1 ! 477: ivcorr = -32766 ! 478: write (i02,80004) ivtnum, ivcomp ,ivcorr ! 479: 6201 continue ! 480: ivtnum = 620 ! 481: c ! 482: c **** test 620 **** ! 483: c test 620 - test of setting the value of a logical array element ! 484: c to the value of another logical array element. ! 485: c ! 486: if (iczero) 36200, 6200, 36200 ! 487: 6200 continue ! 488: ladn11(1) = .true. ! 489: ladn12(1) = ladn11(1) ! 490: icon01 = 0 ! 491: if ( ladn12(1) ) icon01 = 1 ! 492: go to 46200 ! 493: 36200 ivdele = ivdele + 1 ! 494: write (i02,80003) ivtnum ! 495: if (iczero) 46200, 6211, 46200 ! 496: 46200 if ( icon01 - 1 ) 26200, 16200, 26200 ! 497: 16200 ivpass = ivpass + 1 ! 498: write (i02,80001) ivtnum ! 499: go to 6211 ! 500: 26200 ivfail = ivfail + 1 ! 501: ivcomp = icon01 ! 502: ivcorr = 1 ! 503: write (i02,80004) ivtnum, ivcomp ,ivcorr ! 504: 6211 continue ! 505: ivtnum = 621 ! 506: c ! 507: c **** test 621 **** ! 508: c test 621 - test of setting the value of a logical array element ! 509: c to the value of another logical array element and changing ! 510: c the value from .true. to .false. by using the .not. statement. ! 511: c ! 512: if (iczero) 36210, 6210, 36210 ! 513: 6210 continue ! 514: ladn11(2) = .true. ! 515: ladn12(2) = .not. ladn11(2) ! 516: icon01 = 1 ! 517: if ( ladn12(2) ) icon01 = 0 ! 518: go to 46210 ! 519: 36210 ivdele = ivdele + 1 ! 520: write (i02,80003) ivtnum ! 521: if (iczero) 46210, 6221, 46210 ! 522: 46210 if ( icon01 - 1 ) 26210, 16210, 26210 ! 523: 16210 ivpass = ivpass + 1 ! 524: write (i02,80001) ivtnum ! 525: go to 6221 ! 526: 26210 ivfail = ivfail + 1 ! 527: ivcomp = icon01 ! 528: ivcorr = 1 ! 529: write (i02,80004) ivtnum, ivcomp ,ivcorr ! 530: 6221 continue ! 531: ivtnum = 622 ! 532: c ! 533: c **** test 622 **** ! 534: c test 622 - test of the type statement and the data ! 535: c initialization statement. the explicitly real array element ! 536: c should have the value of .5 ! 537: c ! 538: if (iczero) 36220, 6220, 36220 ! 539: 6220 continue ! 540: ivcomp = 2. * iadn13(1) ! 541: go to 46220 ! 542: 36220 ivdele = ivdele + 1 ! 543: write (i02,80003) ivtnum ! 544: if (iczero) 46220, 6231, 46220 ! 545: 46220 if ( ivcomp - 1 ) 26220, 16220, 26220 ! 546: 16220 ivpass = ivpass + 1 ! 547: write (i02,80001) ivtnum ! 548: go to 6231 ! 549: 26220 ivfail = ivfail + 1 ! 550: ivcorr = 1 ! 551: write (i02,80004) ivtnum, ivcomp ,ivcorr ! 552: 6231 continue ! 553: ivtnum = 623 ! 554: c ! 555: c **** test 623 **** ! 556: c test 623 - test of real to integer conversion using arrays. ! 557: c the initialized value of 0.5 should be truncated to zero. ! 558: c ! 559: if (iczero) 36230, 6230, 36230 ! 560: 6230 continue ! 561: iadn11(1) = iadn13(1) ! 562: ivcomp = iadn11(1) ! 563: go to 46230 ! 564: 36230 ivdele = ivdele + 1 ! 565: write (i02,80003) ivtnum ! 566: if (iczero) 46230, 6241, 46230 ! 567: 46230 if ( ivcomp - 0 ) 26230, 16230, 26230 ! 568: 16230 ivpass = ivpass + 1 ! 569: write (i02,80001) ivtnum ! 570: go to 6241 ! 571: 26230 ivfail = ivfail + 1 ! 572: ivcorr = 0 ! 573: write (i02,80004) ivtnum, ivcomp ,ivcorr ! 574: 6241 continue ! 575: ivtnum = 624 ! 576: c ! 577: c **** test 624 **** ! 578: c test 624 - test of the common statement by setting the value of ! 579: c an integer array element in a dimensioned array to the value ! 580: c of a real array element in common. the element in common had its ! 581: c value set in a simple assignment statement to 9999. ! 582: c ! 583: if (iczero) 36240, 6240, 36240 ! 584: 6240 continue ! 585: radn14(1) = 9999. ! 586: iadn11(1) = radn14(1) ! 587: ivcomp = iadn11(1) ! 588: go to 46240 ! 589: 36240 ivdele = ivdele + 1 ! 590: write (i02,80003) ivtnum ! 591: if (iczero) 46240, 6251, 46240 ! 592: 46240 if ( ivcomp - 9999 ) 26240, 16240, 26240 ! 593: 16240 ivpass = ivpass + 1 ! 594: write (i02,80001) ivtnum ! 595: go to 6251 ! 596: 26240 ivfail = ivfail + 1 ! 597: ivcorr = 9999 ! 598: write (i02,80004) ivtnum, ivcomp ,ivcorr ! 599: 6251 continue ! 600: ivtnum = 625 ! 601: c ! 602: c **** test 625 **** ! 603: c test 625 - test of setting the value of an integer array element ! 604: c in common to the value of a real array element also in blank ! 605: c common and changing the sign. the value used is 9999. ! 606: c ! 607: if (iczero) 36250, 6250, 36250 ! 608: 6250 continue ! 609: radn14(1) = 9999. ! 610: iadn14(1) = - radn14(1) ! 611: ivcomp = iadn14(1) ! 612: go to 46250 ! 613: 36250 ivdele = ivdele + 1 ! 614: write (i02,80003) ivtnum ! 615: if (iczero) 46250, 6261, 46250 ! 616: 46250 if ( ivcomp + 9999 ) 26250, 16250, 26250 ! 617: 16250 ivpass = ivpass + 1 ! 618: write (i02,80001) ivtnum ! 619: go to 6261 ! 620: 26250 ivfail = ivfail + 1 ! 621: ivcorr = - 9999 ! 622: write (i02,80004) ivtnum, ivcomp ,ivcorr ! 623: 6261 continue ! 624: ivtnum = 626 ! 625: c ! 626: c **** test 626 **** ! 627: c test 626 - test of setting the value of a logical array element ! 628: c in blank common to .not. .true. ! 629: c the value of another logical array element also in common is then ! 630: c set to .not. of the value of the first. ! 631: c value of the first element should be .false. ! 632: c value of the second element should be .true. ! 633: c ! 634: if (iczero) 36260, 6260, 36260 ! 635: 6260 continue ! 636: ladn13(1) = .not. .true. ! 637: ladn13(2) = .not. ladn13(1) ! 638: icon01 = 0 ! 639: if ( ladn13(2) ) icon01 = 1 ! 640: go to 46260 ! 641: 36260 ivdele = ivdele + 1 ! 642: write (i02,80003) ivtnum ! 643: if (iczero) 46260, 6271, 46260 ! 644: 46260 if ( icon01 - 1 ) 26260, 16260, 26260 ! 645: 16260 ivpass = ivpass + 1 ! 646: write (i02,80001) ivtnum ! 647: go to 6271 ! 648: 26260 ivfail = ivfail + 1 ! 649: ivcomp = icon01 ! 650: ivcorr = 1 ! 651: write (i02,80004) ivtnum, ivcomp ,ivcorr ! 652: 6271 continue ! 653: ivtnum = 627 ! 654: c ! 655: c **** test 627 **** ! 656: c test 627 - test of equivalence on the first elements of integer ! 657: c arrays one of which is in common and the other one is dimensioned. ! 658: c ! 659: if (iczero) 36270, 6270, 36270 ! 660: 6270 continue ! 661: iadn14(2) = 32767 ! 662: ivcomp = iadn15(2) ! 663: go to 46270 ! 664: 36270 ivdele = ivdele + 1 ! 665: write (i02,80003) ivtnum ! 666: if (iczero) 46270, 6281, 46270 ! 667: 46270 if ( ivcomp - 32767 ) 26270, 16270, 26270 ! 668: 16270 ivpass = ivpass + 1 ! 669: write (i02,80001) ivtnum ! 670: go to 6281 ! 671: 26270 ivfail = ivfail + 1 ! 672: ivcorr = 32767 ! 673: write (i02,80004) ivtnum, ivcomp ,ivcorr ! 674: 6281 continue ! 675: ivtnum = 628 ! 676: c ! 677: c **** test 628 **** ! 678: c test 628 - test of equivalence on real arrays one of which is ! 679: c in common and the other one is dimensioned. the arrays were ! 680: c aligned on their second elements. ! 681: c ! 682: if (iczero) 36280, 6280, 36280 ! 683: 6280 continue ! 684: radn15(1) = -32766. ! 685: ivcomp = radn14(1) ! 686: go to 46280 ! 687: 36280 ivdele = ivdele + 1 ! 688: write (i02,80003) ivtnum ! 689: if (iczero) 46280, 6291, 46280 ! 690: 46280 if ( ivcomp + 32766 ) 26280, 16280, 26280 ! 691: 16280 ivpass = ivpass + 1 ! 692: write (i02,80001) ivtnum ! 693: go to 6291 ! 694: 26280 ivfail = ivfail + 1 ! 695: ivcorr = -32766 ! 696: write (i02,80004) ivtnum, ivcomp ,ivcorr ! 697: 6291 continue ! 698: ivtnum = 629 ! 699: c ! 700: c **** test 629 **** ! 701: c test 629 - test of equivalence with logical elements. an array ! 702: c element in common is equivalenced to a logical variable. ! 703: c ! 704: if (iczero) 36290, 6290, 36290 ! 705: 6290 continue ! 706: ladn13(2) = .true. ! 707: lctn01 = .not. ladn13(2) ! 708: icon01 = 1 ! 709: if ( ladn13(1) ) icon01 = 0 ! 710: go to 46290 ! 711: 36290 ivdele = ivdele + 1 ! 712: write (i02,80003) ivtnum ! 713: if (iczero) 46290, 6301, 46290 ! 714: 46290 if ( icon01 - 1 ) 26290, 16290, 26290 ! 715: 16290 ivpass = ivpass + 1 ! 716: write (i02,80001) ivtnum ! 717: go to 6301 ! 718: 26290 ivfail = ivfail + 1 ! 719: ivcomp = icon01 ! 720: ivcorr = 1 ! 721: write (i02,80004) ivtnum, ivcomp ,ivcorr ! 722: 6301 continue ! 723: ivtnum = 630 ! 724: c ! 725: c **** test 630 **** ! 726: c test 630 - test of equivalence with real and integer elements ! 727: c which are equivalenced to array elements in common. ! 728: c ! 729: if (iczero) 36300, 6300, 36300 ! 730: 6300 continue ! 731: rcon01 = 1. ! 732: icon02 = - radn14(5) ! 733: ivcomp = iadn14(5) ! 734: go to 46300 ! 735: 36300 ivdele = ivdele + 1 ! 736: write (i02,80003) ivtnum ! 737: if (iczero) 46300, 6311, 46300 ! 738: 46300 if ( ivcomp + 1 ) 26300, 16300, 26300 ! 739: 16300 ivpass = ivpass + 1 ! 740: write (i02,80001) ivtnum ! 741: go to 6311 ! 742: 26300 ivfail = ivfail + 1 ! 743: ivcorr = -1 ! 744: write (i02,80004) ivtnum, ivcomp ,ivcorr ! 745: 6311 continue ! 746: ivtnum = 631 ! 747: c ! 748: c **** test 631 **** ! 749: c test 631 - test of equivalence on integer array elements. ! 750: c both arrays are dimensioned. the fourth element ! 751: c of the first of the arrays should be equal to the third element of ! 752: c the second array. ! 753: c ! 754: if (iczero) 36310, 6310, 36310 ! 755: 6310 continue ! 756: iadn16(4) = 9999 ! 757: ivcomp = iadn17(3) ! 758: go to 46310 ! 759: 36310 ivdele = ivdele + 1 ! 760: write (i02,80003) ivtnum ! 761: if (iczero) 46310, 6321, 46310 ! 762: 46310 if ( ivcomp - 9999 ) 26310, 16310, 26310 ! 763: 16310 ivpass = ivpass + 1 ! 764: write (i02,80001) ivtnum ! 765: go to 6321 ! 766: 26310 ivfail = ivfail + 1 ! 767: ivcorr = 9999 ! 768: write (i02,80004) ivtnum, ivcomp ,ivcorr ! 769: 6321 continue ! 770: c ! 771: c write page footings and run summaries ! 772: 99999 continue ! 773: write (i02,90002) ! 774: write (i02,90006) ! 775: write (i02,90002) ! 776: write (i02,90002) ! 777: write (i02,90007) ! 778: write (i02,90002) ! 779: write (i02,90008) ivfail ! 780: write (i02,90009) ivpass ! 781: write (i02,90010) ivdele ! 782: c ! 783: c ! 784: c terminate routine execution ! 785: stop ! 786: c ! 787: c format statements for page headers ! 788: 90000 format (1h1) ! 789: 90002 format (1h ) ! 790: 90001 format (1h ,10x,34hfortran compiler validation system) ! 791: 90003 format (1h ,21x,11hversion 1.0) ! 792: 90004 format (1h ,10x,38hfor official use only - copyright 1978) ! 793: 90005 format (1h ,5x,4htest,5x,9hpass/fail, 5x,8hcomputed,8x,7hcorrect) ! 794: 90006 format (1h ,5x,46h----------------------------------------------) ! 795: 90011 format (1h ,18x,17hsubset level test) ! 796: c ! 797: c format statements for run summaries ! 798: 90008 format (1h ,15x,i5,19h errors encountered) ! 799: 90009 format (1h ,15x,i5,13h tests passed) ! 800: 90010 format (1h ,15x,i5,14h tests deleted) ! 801: c ! 802: c format statements for test results ! 803: 80001 format (1h ,4x,i5,7x,4hpass) ! 804: 80002 format (1h ,4x,i5,7x,4hfail) ! 805: 80003 format (1h ,4x,i5,7x,7hdeleted) ! 806: 80004 format (1h ,4x,i5,7x,4hfail,10x,i6,9x,i6) ! 807: 80005 format (1h ,4x,i5,7x,4hfail,4x,e12.5,3x,e12.5) ! 808: c ! 809: 90007 format (1h ,20x,20hend of program fm022) ! 810: end
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.