|
|
1.1 ! root 1: c comment section ! 2: c ! 3: c fm004 ! 4: c ! 5: c this routine contains basic arithmetic if statement tests. ! 6: c the statement format is ! 7: c if (e) k1, k2, k3 ! 8: c where e is a simple integer expression of form ! 9: c variable - constant ! 10: c variable + constant ! 11: c and k1, k2 and k3 are statement labels. only the statements in ! 12: c the basic assumptions are included in these tests. ! 13: c execution of an if statement causes evaluation of the ! 14: c expression e following which the statement label k1, k2 or k3 ! 15: c is executed next as the value of e is less than zero, zero, or ! 16: c greater than zero, respectively. ! 17: c ! 18: c the basic unconditional go to statement is tested in this ! 19: c routine. the statement is of the form ! 20: c go to k ! 21: c where k is a statement label. ! 22: c execution of an unconditional go to statement causes the ! 23: c statement identified by statement label k to be executed next. ! 24: c ! 25: c references ! 26: c american national standard programming language fortran, ! 27: c x3.9-1978 ! 28: c ! 29: c section 3.6, normal execution sequence and transfer of control ! 30: c section 11.1, go to statement ! 31: c section 11.4, arithmetic if statement ! 32: c ! 33: c ********************************************************** ! 34: c ! 35: c a compiler validation system for the fortran language ! 36: c based on specifications as defined in american national standard ! 37: c programming language fortran x3.9-1978, has been developed by the ! 38: c federal cobol compiler testing service. the fortran compiler ! 39: c validation system (fcvs) consists of audit routines, their related ! 40: c data, and an executive system. each audit routine is a fortran ! 41: c program, subprogram or function which includes tests of specific ! 42: c language elements and supporting procedures indicating the result ! 43: c of executing these tests. ! 44: c ! 45: c this particular program/subprogram/function contains features ! 46: c found only in the subset as defined in x3.9-1978. ! 47: c ! 48: c suggestions and comments should be forwarded to - ! 49: c ! 50: c department of the navy ! 51: c federal cobol compiler testing service ! 52: c washington, d.c. 20376 ! 53: c ! 54: c ********************************************************** ! 55: c ! 56: c ! 57: c ! 58: c initialization section ! 59: c ! 60: c initialize constants ! 61: c ************** ! 62: c i01 contains the logical unit number for the card reader. ! 63: i01 = 5 ! 64: c i02 contains the logical unit number for the printer. ! 65: i02 = 6 ! 66: c system environment section ! 67: c ! 68: cx010 this card is replaced by contents of fexec x-010 control card. ! 69: c the cx010 card is for overriding the program default i01 = 5 ! 70: c (unit number for card reader). ! 71: cx011 this card is replaced by contents of fexec x-011 control card. ! 72: c the cx011 card is for systems which require additional ! 73: c fortran statements for files associated with cx010 above. ! 74: c ! 75: cx020 this card is replaced by contents of fexec x-020 control card. ! 76: c the cx020 card is for overriding the program default i02 = 6 ! 77: c (unit number for printer). ! 78: cx021 this card is replaced by contents of fexec x-021 control card. ! 79: c the cx021 card is for systems which require additional ! 80: c fortran statements for files associated with cx020 above. ! 81: c ! 82: ivpass=0 ! 83: ivfail=0 ! 84: ivdele=0 ! 85: iczero=0 ! 86: c ! 87: c write page headers ! 88: write (i02,90000) ! 89: write (i02,90001) ! 90: write (i02,90002) ! 91: write (i02, 90002) ! 92: write (i02,90003) ! 93: write (i02,90002) ! 94: write (i02,90004) ! 95: write (i02,90002) ! 96: write (i02,90011) ! 97: write (i02,90002) ! 98: write (i02,90002) ! 99: write (i02,90005) ! 100: write (i02,90006) ! 101: write (i02,90002) ! 102: c test section ! 103: c ! 104: c tests 21, 22, and 23 contain the same if statement but the ! 105: c expected branch is to the first, second or third statement label ! 106: c as the integer expression is less than zero, equal to zero, or ! 107: c greater than zero respectively. ! 108: c ! 109: 211 continue ! 110: ivtnum = 21 ! 111: c ! 112: c **** test 021 **** ! 113: c test 21 - arithmetic if statement test ! 114: c less than zero branch expected. ! 115: c ! 116: if (iczero) 30210, 210, 30210 ! 117: 210 continue ! 118: ivon01=2 ! 119: if (ivon01 - 3) 212,213,214 ! 120: 212 ivon02 = -1 ! 121: go to 40210 ! 122: 213 ivon02 = 0 ! 123: go to 40210 ! 124: 214 ivon02 = 1 ! 125: go to 40210 ! 126: 30210 ivdele = ivdele + 1 ! 127: write (i02,80003) ivtnum ! 128: if (iczero) 40210, 221, 40210 ! 129: 40210 if (ivon02) 10210, 20210, 20210 ! 130: 10210 ivpass = ivpass + 1 ! 131: write (i02,80001) ivtnum ! 132: go to 221 ! 133: 20210 ivfail = ivfail + 1 ! 134: ivcomp=ivon02 ! 135: ivcorr=-1 ! 136: write (i02,80004) ivtnum, ivcomp ,ivcorr ! 137: 221 continue ! 138: ivtnum = 22 ! 139: c ! 140: c **** test 022 **** ! 141: c test 22 - arithmetic if statement test ! 142: c equal to zero branch expected ! 143: c ! 144: if (iczero) 30220, 220, 30220 ! 145: 220 continue ! 146: ivon01 = 3 ! 147: if (ivon01 - 3) 222,223,224 ! 148: 222 ivon02 = -1 ! 149: go to 40220 ! 150: 223 ivon02 = 0 ! 151: go to 40220 ! 152: 224 ivon02 = 1 ! 153: go to 40220 ! 154: 30220 ivdele = ivdele + 1 ! 155: write (i02,80003) ivtnum ! 156: if (iczero) 40220, 231, 40220 ! 157: 40220 if (ivon02) 20220, 10220, 20220 ! 158: 10220 ivpass = ivpass + 1 ! 159: write (i02,80001) ivtnum ! 160: go to 231 ! 161: 20220 ivfail = ivfail + 1 ! 162: ivcomp=ivon02 ! 163: ivcorr= 0 ! 164: write (i02,80004) ivtnum, ivcomp ,ivcorr ! 165: 231 continue ! 166: ivtnum = 23 ! 167: c ! 168: c **** test 023 **** ! 169: c test 23 - arithmetic if statement test ! 170: c greater than zero branch expected ! 171: c ! 172: if (iczero) 30230, 230, 30230 ! 173: 230 continue ! 174: ivon01 = 4 ! 175: if (ivon01 - 3) 232,233,234 ! 176: 232 ivon02 = -1 ! 177: go to 40230 ! 178: 233 ivon02 = 0 ! 179: go to 40230 ! 180: 234 ivon02 = 1 ! 181: go to 40230 ! 182: 30230 ivdele = ivdele + 1 ! 183: write (i02,80003) ivtnum ! 184: if (iczero) 40230, 241, 40230 ! 185: 40230 if (ivon02) 20230, 20230, 10230 ! 186: 10230 ivpass = ivpass + 1 ! 187: write (i02,80001) ivtnum ! 188: go to 241 ! 189: 20230 ivfail = ivfail + 1 ! 190: ivcomp=ivon02 ! 191: ivcorr = 1 ! 192: write (i02,80004) ivtnum, ivcomp ,ivcorr ! 193: c ! 194: c tests 24 through 29 contain an if statement with two of the ! 195: c three branch statement labels equal. ! 196: c ! 197: 241 continue ! 198: ivtnum = 24 ! 199: c ! 200: c **** test 024 **** ! 201: c test 24 - arithmetic if statement test ! 202: c less than zero branch expected ! 203: c ! 204: if (iczero) 30240, 240, 30240 ! 205: 240 continue ! 206: ivon01=2 ! 207: if (ivon01 - 3) 242,243,242 ! 208: 242 ivon02=-1 ! 209: go to 40240 ! 210: 243 ivon02=0 ! 211: go to 40240 ! 212: 30240 ivdele = ivdele + 1 ! 213: write (i02,80003) ivtnum ! 214: if (iczero) 40240, 251, 40240 ! 215: 40240 if (ivon02) 10240, 20240, 20240 ! 216: 10240 ivpass = ivpass + 1 ! 217: write (i02,80001) ivtnum ! 218: go to 251 ! 219: 20240 ivfail = ivfail + 1 ! 220: ivcomp=ivon02 ! 221: ivcorr=-1 ! 222: write (i02,80004) ivtnum, ivcomp ,ivcorr ! 223: 251 continue ! 224: ivtnum = 25 ! 225: c ! 226: c **** test 025 **** ! 227: c test 25 - arithmetic if statement test ! 228: c equal to zero branch expected ! 229: c ! 230: if (iczero) 30250, 250, 30250 ! 231: 250 continue ! 232: ivon01=3 ! 233: if (ivon01 - 3) 252,253,252 ! 234: 252 ivon02= -1 ! 235: go to 40250 ! 236: 253 ivon02 = 0 ! 237: go to 40250 ! 238: 30250 ivdele = ivdele + 1 ! 239: write (i02,80003) ivtnum ! 240: if (iczero) 40250, 261, 40250 ! 241: 40250 if (ivon02) 20250,10250,20250 ! 242: 10250 ivpass = ivpass + 1 ! 243: write (i02,80001) ivtnum ! 244: go to 261 ! 245: 20250 ivfail = ivfail + 1 ! 246: ivcomp=ivon02 ! 247: ivcorr=0 ! 248: write (i02,80004) ivtnum, ivcomp ,ivcorr ! 249: 261 continue ! 250: ivtnum = 26 ! 251: c ! 252: c **** test 026 **** ! 253: c test 26 - arithmetic if statement test ! 254: c greater than zero branch expected ! 255: c ! 256: if (iczero) 30260, 260, 30260 ! 257: 260 continue ! 258: ivon01=4 ! 259: if (ivon01-3) 262, 263, 262 ! 260: 262 ivon02= 1 ! 261: go to 40260 ! 262: 263 ivon02 = 0 ! 263: go to 40260 ! 264: 30260 ivdele = ivdele + 1 ! 265: write (i02,80003) ivtnum ! 266: if (iczero) 40260, 271, 40260 ! 267: 40260 if (ivon02) 20260, 20260, 10260 ! 268: 10260 ivpass = ivpass + 1 ! 269: write (i02,80001) ivtnum ! 270: go to 271 ! 271: 20260 ivfail = ivfail + 1 ! 272: ivcomp=ivon02 ! 273: ivcorr = 1 ! 274: write (i02,80004) ivtnum, ivcomp ,ivcorr ! 275: 271 continue ! 276: ivtnum = 27 ! 277: c ! 278: c **** test 027 **** ! 279: c test 27 - arithmetic if statement test ! 280: c less than zero branch expected ! 281: c ! 282: if (iczero) 30270, 270, 30270 ! 283: 270 continue ! 284: ivon01 = -4 ! 285: if (ivon01 + 3) 272, 272, 273 ! 286: 272 ivon02= -1 ! 287: go to 40270 ! 288: 273 ivon02 = 1 ! 289: go to 40270 ! 290: 30270 ivdele = ivdele + 1 ! 291: write (i02,80003) ivtnum ! 292: if (iczero) 40270, 281, 40270 ! 293: 40270 if (ivon02) 10270, 20270, 20270 ! 294: 10270 ivpass = ivpass + 1 ! 295: write (i02,80001) ivtnum ! 296: go to 281 ! 297: 20270 ivfail = ivfail + 1 ! 298: ivcomp=ivon02 ! 299: ivcorr= -1 ! 300: write (i02,80004) ivtnum, ivcomp ,ivcorr ! 301: 281 continue ! 302: ivtnum = 28 ! 303: c ! 304: c **** test 028 **** ! 305: c test 28 - arithmetic if statement test ! 306: c equal to zero branch expected ! 307: c ! 308: if (iczero) 30280, 280, 30280 ! 309: 280 continue ! 310: ivon01 = -3 ! 311: if (ivon01 + 3) 282, 282, 283 ! 312: 282 ivon02 = 0 ! 313: go to 40280 ! 314: 283 ivon02 = 1 ! 315: go to 40280 ! 316: 30280 ivdele = ivdele + 1 ! 317: write (i02,80003) ivtnum ! 318: if (iczero) 40280, 291, 40280 ! 319: 40280 if (ivon02) 20280, 10280, 20280 ! 320: 10280 ivpass = ivpass + 1 ! 321: write (i02,80001) ivtnum ! 322: go to 291 ! 323: 20280 ivfail = ivfail + 1 ! 324: ivcomp=ivon02 ! 325: ivcorr= 0 ! 326: write (i02,80004) ivtnum, ivcomp ,ivcorr ! 327: 291 continue ! 328: ivtnum = 29 ! 329: c ! 330: c **** test 029 **** ! 331: c test 29 - arithmetic if statement test ! 332: c greater than zero branch expected ! 333: c ! 334: if (iczero) 30290, 290, 30290 ! 335: 290 continue ! 336: ivon01 = -2 ! 337: if (ivon01 + 3) 292,292,293 ! 338: 292 ivon02 = -1 ! 339: go to 40290 ! 340: 293 ivon02 = 1 ! 341: go to 40290 ! 342: 30290 ivdele = ivdele + 1 ! 343: write (i02,80003) ivtnum ! 344: if (iczero) 40290, 301, 40290 ! 345: 40290 if (ivon02) 20290, 20290, 10290 ! 346: 10290 ivpass = ivpass + 1 ! 347: write (i02,80001) ivtnum ! 348: go to 301 ! 349: 20290 ivfail = ivfail + 1 ! 350: ivcomp= ivon02 ! 351: ivcorr = 1 ! 352: write (i02,80004) ivtnum, ivcomp ,ivcorr ! 353: c ! 354: c tests 30 and 31 contain the basic go to statement tests. ! 355: c ! 356: 301 continue ! 357: ivtnum = 30 ! 358: c ! 359: c **** test 030 **** ! 360: c test 30 - unconditional go to statement test ! 361: c ! 362: if (iczero) 30300, 300, 30300 ! 363: 300 continue ! 364: ivon01 = 1 ! 365: go to 302 ! 366: 303 ivon01 = 2 ! 367: go to 304 ! 368: 302 ivon01 = 3 ! 369: go to 303 ! 370: 304 go to 40300 ! 371: 30300 ivdele = ivdele + 1 ! 372: write (i02,80003) ivtnum ! 373: if (iczero) 40300, 311, 40300 ! 374: 40300 if (ivon01 - 2) 20300,10300,20300 ! 375: 10300 ivpass = ivpass + 1 ! 376: write (i02,80001) ivtnum ! 377: go to 311 ! 378: 20300 ivfail = ivfail + 1 ! 379: ivcomp = ivon01 ! 380: ivcorr = 2 ! 381: write (i02,80004) ivtnum, ivcomp ,ivcorr ! 382: 311 continue ! 383: ivtnum = 31 ! 384: c ! 385: c **** test 031 **** ! 386: c test 31 - unconditional go to statement test ! 387: c ! 388: if (iczero) 30310, 310, 30310 ! 389: 310 continue ! 390: ivon01 = 1 ! 391: go to 316 ! 392: 313 go to 317 ! 393: 314 ivon01 = 3 ! 394: go to 40310 ! 395: 315 go to 313 ! 396: 316 go to 315 ! 397: 317 go to 314 ! 398: 30310 ivdele = ivdele + 1 ! 399: write (i02,80003) ivtnum ! 400: if (iczero) 40310, 321, 40310 ! 401: 40310 if (ivon01 - 3) 20310, 10310, 20310 ! 402: 10310 ivpass = ivpass + 1 ! 403: write (i02,80001) ivtnum ! 404: go to 321 ! 405: 20310 ivfail = ivfail + 1 ! 406: ivcomp=ivon01 ! 407: ivcorr = 3 ! 408: write (i02,80004) ivtnum, ivcomp ,ivcorr ! 409: 321 continue ! 410: ivtnum = 32 ! 411: c ! 412: c **** test 032 **** ! 413: c test 32 - arithmetic if statement and unconditional go to ! 414: c statement ! 415: c this test combines the basic arithmetic if statements and ! 416: c unconditional go to statements in one test. ! 417: c ! 418: if (iczero) 30320, 320, 30320 ! 419: 320 continue ! 420: ivon01 = 1 ! 421: go to 322 ! 422: 324 ivon01 = 2 ! 423: if (ivon01 -1) 323, 323, 325 ! 424: 327 ivon01 = 5 ! 425: go to 328 ! 426: 326 ivon01 = -4 ! 427: if (ivon01 + 4) 323, 327, 323 ! 428: 322 if (ivon01 - 1) 323, 324, 323 ! 429: 323 go to 20320 ! 430: 325 ivon01 = 3 ! 431: if (ivon01 -4) 326,323,323 ! 432: 328 go to 40320 ! 433: 30320 ivdele = ivdele + 1 ! 434: write (i02,80003) ivtnum ! 435: if (iczero) 40320, 331, 40320 ! 436: 40320 if (ivon01 - 5) 20320, 10320, 20320 ! 437: 10320 ivpass = ivpass + 1 ! 438: write (i02,80001) ivtnum ! 439: go to 331 ! 440: 20320 ivfail = ivfail + 1 ! 441: ivcomp=ivon01 ! 442: ivcorr=5 ! 443: write (i02,80004) ivtnum, ivcomp ,ivcorr ! 444: 331 continue ! 445: c ! 446: c write page footings and run summaries ! 447: 99999 continue ! 448: write (i02,90002) ! 449: write (i02,90006) ! 450: write (i02,90002) ! 451: write (i02,90002) ! 452: write (i02,90007) ! 453: write (i02,90002) ! 454: write (i02,90008) ivfail ! 455: write (i02,90009) ivpass ! 456: write (i02,90010) ivdele ! 457: c ! 458: c ! 459: c terminate routine execution ! 460: stop ! 461: c ! 462: c format statements for page headers ! 463: 90000 format (1h1) ! 464: 90002 format (1h ) ! 465: 90001 format (1h ,10x,34hfortran compiler validation system) ! 466: 90003 format (1h ,21x,11hversion 1.0) ! 467: 90004 format (1h ,10x,38hfor official use only - copyright 1978) ! 468: 90005 format (1h ,5x,4htest,5x,9hpass/fail, 5x,8hcomputed,8x,7hcorrect) ! 469: 90006 format (1h ,5x,46h----------------------------------------------) ! 470: 90011 format (1h ,18x,17hsubset level test) ! 471: c ! 472: c format statements for run summaries ! 473: 90008 format (1h ,15x,i5,19h errors encountered) ! 474: 90009 format (1h ,15x,i5,13h tests passed) ! 475: 90010 format (1h ,15x,i5,14h tests deleted) ! 476: c ! 477: c format statements for test results ! 478: 80001 format (1h ,4x,i5,7x,4hpass) ! 479: 80002 format (1h ,4x,i5,7x,4hfail) ! 480: 80003 format (1h ,4x,i5,7x,7hdeleted) ! 481: 80004 format (1h ,4x,i5,7x,4hfail,10x,i6,9x,i6) ! 482: 80005 format (1h ,4x,i5,7x,4hfail,4x,e12.5,3x,e12.5) ! 483: c ! 484: 90007 format (1h ,20x,20hend of program fm004) ! 485: end
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.