|
|
1.1 ! root 1: c ! 2: c comment section. ! 3: c ! 4: c fm013 ! 5: c ! 6: c this routine tests the fortran assigned go to statement ! 7: c as described in section 11.3 (assigned go to statement). first a ! 8: c statement label is assigned to an integer variable in the assign ! 9: c statement. secondly a branch is made in an assigned go to ! 10: c statement using the integer variable as the branch controller ! 11: c in a list of possible statement numbers to be branched to. ! 12: c ! 13: c references ! 14: c american national standard programming language fortran, ! 15: c x3.9-1978 ! 16: c ! 17: c section 10.3, statement label assignment (assign) statement ! 18: c section 11.3, assigned go to statement ! 19: c ! 20: c ! 21: c ********************************************************** ! 22: c ! 23: c a compiler validation system for the fortran language ! 24: c based on specifications as defined in american national standard ! 25: c programming language fortran x3.9-1978, has been developed by the ! 26: c federal cobol compiler testing service. the fortran compiler ! 27: c validation system (fcvs) consists of audit routines, their related ! 28: c data, and an executive system. each audit routine is a fortran ! 29: c program, subprogram or function which includes tests of specific ! 30: c language elements and supporting procedures indicating the result ! 31: c of executing these tests. ! 32: c ! 33: c this particular program/subprogram/function contains features ! 34: c found only in the subset as defined in x3.9-1978. ! 35: c ! 36: c suggestions and comments should be forwarded to - ! 37: c ! 38: c department of the navy ! 39: c federal cobol compiler testing service ! 40: c washington, d.c. 20376 ! 41: c ! 42: c ********************************************************** ! 43: c ! 44: c ! 45: c ! 46: c initialization section ! 47: c ! 48: c initialize constants ! 49: c ************** ! 50: c i01 contains the logical unit number for the card reader. ! 51: i01 = 5 ! 52: c i02 contains the logical unit number for the printer. ! 53: i02 = 6 ! 54: c system environment section ! 55: c ! 56: cx010 this card is replaced by contents of fexec x-010 control card. ! 57: c the cx010 card is for overriding the program default i01 = 5 ! 58: c (unit number for card reader). ! 59: cx011 this card is replaced by contents of fexec x-011 control card. ! 60: c the cx011 card is for systems which require additional ! 61: c fortran statements for files associated with cx010 above. ! 62: c ! 63: cx020 this card is replaced by contents of fexec x-020 control card. ! 64: c the cx020 card is for overriding the program default i02 = 6 ! 65: c (unit number for printer). ! 66: cx021 this card is replaced by contents of fexec x-021 control card. ! 67: c the cx021 card is for systems which require additional ! 68: c fortran statements for files associated with cx020 above. ! 69: c ! 70: ivpass=0 ! 71: ivfail=0 ! 72: ivdele=0 ! 73: iczero=0 ! 74: c ! 75: c write page headers ! 76: write (i02,90000) ! 77: write (i02,90001) ! 78: write (i02,90002) ! 79: write (i02, 90002) ! 80: write (i02,90003) ! 81: write (i02,90002) ! 82: write (i02,90004) ! 83: write (i02,90002) ! 84: write (i02,90011) ! 85: write (i02,90002) ! 86: write (i02,90002) ! 87: write (i02,90005) ! 88: write (i02,90006) ! 89: write (i02,90002) ! 90: ivtnum = 126 ! 91: c ! 92: c test 126 - this tests the simple assign statement in preparation ! 93: c for the assigned go to test to follow. ! 94: c the assigned go to is the simplist form of the statement. ! 95: c ! 96: c ! 97: if (iczero) 31260, 1260, 31260 ! 98: 1260 continue ! 99: assign 1263 to i ! 100: go to i, (1262,1263,1264) ! 101: 1262 icon01 = 1262 ! 102: go to 1265 ! 103: 1263 icon01 = 1263 ! 104: go to 1265 ! 105: 1264 icon01 = 1264 ! 106: 1265 continue ! 107: go to 41260 ! 108: 31260 ivdele = ivdele + 1 ! 109: write (i02,80003) ivtnum ! 110: if (iczero) 41260, 1271, 41260 ! 111: 41260 if ( icon01 - 1263 ) 21260, 11260, 21260 ! 112: 11260 ivpass = ivpass + 1 ! 113: write (i02,80001) ivtnum ! 114: go to 1271 ! 115: 21260 ivfail = ivfail + 1 ! 116: ivcomp=icon01 ! 117: ivcorr = 1263 ! 118: write (i02,80004) ivtnum, ivcomp ,ivcorr ! 119: 1271 continue ! 120: ivtnum = 127 ! 121: c ! 122: c test 127 - this is a test of more complex branching using ! 123: c the assign and assigned go to statements. this test is not ! 124: c intended to be an example of structured programming. ! 125: c ! 126: c ! 127: if (iczero) 31270, 1270, 31270 ! 128: 1270 continue ! 129: ivon01=0 ! 130: 1272 assign 1273 to j ! 131: ivon01=ivon01+1 ! 132: go to 1276 ! 133: 1273 assign 1274 to j ! 134: ivon01=ivon01 * 10 + 2 ! 135: go to 1276 ! 136: 1274 assign 1275 to j ! 137: ivon01=ivon01 * 100 + 3 ! 138: go to 1276 ! 139: 1275 go to 1277 ! 140: 1276 go to j, ( 1272, 1273, 1274, 1275 ) ! 141: 1277 continue ! 142: go to 41270 ! 143: 31270 ivdele = ivdele + 1 ! 144: write (i02,80003) ivtnum ! 145: if (iczero) 41270, 1281, 41270 ! 146: 41270 if ( ivon01 - 1203 ) 21270, 11270, 21270 ! 147: 11270 ivpass = ivpass + 1 ! 148: write (i02,80001) ivtnum ! 149: go to 1281 ! 150: 21270 ivfail = ivfail + 1 ! 151: ivcomp=ivon01 ! 152: ivcorr=1203 ! 153: write (i02,80004) ivtnum, ivcomp ,ivcorr ! 154: 1281 continue ! 155: ivtnum = 128 ! 156: c ! 157: c test 128 - test of the assigned go to with all of the ! 158: c statement numbers in the assigned go to list the same ! 159: c value except for one. ! 160: c ! 161: c ! 162: if (iczero) 31280, 1280, 31280 ! 163: 1280 continue ! 164: icon01=0 ! 165: assign 1283 to k ! 166: go to k, ( 1282, 1282, 1282, 1282, 1282, 1282, 1283 ) ! 167: 1282 icon01 = 0 ! 168: go to 1284 ! 169: 1283 icon01 = 1 ! 170: 1284 continue ! 171: go to 41280 ! 172: 31280 ivdele = ivdele + 1 ! 173: write (i02,80003) ivtnum ! 174: if (iczero) 41280, 1291, 41280 ! 175: 41280 if ( icon01 - 1 ) 21280, 11280, 21280 ! 176: 11280 ivpass = ivpass + 1 ! 177: write (i02,80001) ivtnum ! 178: go to 1291 ! 179: 21280 ivfail = ivfail + 1 ! 180: ivcomp=icon01 ! 181: ivcorr=1 ! 182: write (i02,80004) ivtnum, ivcomp ,ivcorr ! 183: 1291 continue ! 184: ivtnum = 129 ! 185: c ! 186: c test 129 - this tests the assign statement in conjunction ! 187: c with the normal arithmetic assign statement. the value ! 188: c of the index for the assigned go to statement is changed by ! 189: c the combination of statements. ! 190: c ! 191: c ! 192: if (iczero) 31290, 1290, 31290 ! 193: 1290 continue ! 194: icon01=0 ! 195: assign 1292 to l ! 196: l = 1293 ! 197: assign 1294 to l ! 198: go to l, ( 1294, 1293, 1292 ) ! 199: 1292 icon01 = 0 ! 200: go to 1295 ! 201: 1293 icon01 = 0 ! 202: go to 1295 ! 203: 1294 icon01 = 1 ! 204: 1295 continue ! 205: go to 41290 ! 206: 31290 ivdele = ivdele + 1 ! 207: write (i02,80003) ivtnum ! 208: if (iczero) 41290, 1301, 41290 ! 209: 41290 if ( icon01 - 1 ) 21290, 11290, 21290 ! 210: 11290 ivpass = ivpass + 1 ! 211: write (i02,80001) ivtnum ! 212: go to 1301 ! 213: 21290 ivfail = ivfail + 1 ! 214: ivcomp=icon01 ! 215: ivcorr=1 ! 216: write (i02,80004) ivtnum, ivcomp ,ivcorr ! 217: 1301 continue ! 218: ivtnum = 130 ! 219: c ! 220: c test 130 - this is a test of a loop using a combination of the ! 221: c assigned go to statement and the arithmetic if statement. ! 222: c the loop should be executed eleven (11) times then control ! 223: c should pass to the check of the value for ivon01. ! 224: c ! 225: c ! 226: if (iczero) 31300, 1300, 31300 ! 227: 1300 continue ! 228: ivon01=0 ! 229: 1302 assign 1302 to m ! 230: ivon01=ivon01+1 ! 231: if ( ivon01 - 10 ) 1303, 1303, 1304 ! 232: 1303 go to 1305 ! 233: 1304 assign 1306 to m ! 234: 1305 go to m, ( 1302, 1306 ) ! 235: 1306 continue ! 236: go to 41300 ! 237: 31300 ivdele = ivdele + 1 ! 238: write (i02,80003) ivtnum ! 239: if (iczero) 41300, 1311, 41300 ! 240: 41300 if ( ivon01 - 11 ) 21300, 11300, 21300 ! 241: 11300 ivpass = ivpass + 1 ! 242: write (i02,80001) ivtnum ! 243: go to 1311 ! 244: 21300 ivfail = ivfail + 1 ! 245: ivcomp=ivon01 ! 246: ivcorr=11 ! 247: write (i02,80004) ivtnum, ivcomp ,ivcorr ! 248: 1311 continue ! 249: c ! 250: c write page footings and run summaries ! 251: 99999 continue ! 252: write (i02,90002) ! 253: write (i02,90006) ! 254: write (i02,90002) ! 255: write (i02,90002) ! 256: write (i02,90007) ! 257: write (i02,90002) ! 258: write (i02,90008) ivfail ! 259: write (i02,90009) ivpass ! 260: write (i02,90010) ivdele ! 261: c ! 262: c ! 263: c terminate routine execution ! 264: stop ! 265: c ! 266: c format statements for page headers ! 267: 90000 format (1h1) ! 268: 90002 format (1h ) ! 269: 90001 format (1h ,10x,34hfortran compiler validation system) ! 270: 90003 format (1h ,21x,11hversion 1.0) ! 271: 90004 format (1h ,10x,38hfor official use only - copyright 1978) ! 272: 90005 format (1h ,5x,4htest,5x,9hpass/fail, 5x,8hcomputed,8x,7hcorrect) ! 273: 90006 format (1h ,5x,46h----------------------------------------------) ! 274: 90011 format (1h ,18x,17hsubset level test) ! 275: c ! 276: c format statements for run summaries ! 277: 90008 format (1h ,15x,i5,19h errors encountered) ! 278: 90009 format (1h ,15x,i5,13h tests passed) ! 279: 90010 format (1h ,15x,i5,14h tests deleted) ! 280: c ! 281: c format statements for test results ! 282: 80001 format (1h ,4x,i5,7x,4hpass) ! 283: 80002 format (1h ,4x,i5,7x,4hfail) ! 284: 80003 format (1h ,4x,i5,7x,7hdeleted) ! 285: 80004 format (1h ,4x,i5,7x,4hfail,10x,i6,9x,i6) ! 286: 80005 format (1h ,4x,i5,7x,4hfail,4x,e12.5,3x,e12.5) ! 287: c ! 288: 90007 format (1h ,20x,20hend of program fm013) ! 289: end
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.