|
|
1.1 root 1: C COMMENT SECTION 00010042
2: C DATE***82/08/02*18.33.46
3: C OWNER PRE/850703/TC-85- -410/ /FSTC/278FCVS*F78UBP20/
4: C AUDIT FCVS78 V2.0
5: C 00020042
6: C FM042 00030042
7: C 00040042
8: C THIS ROUTINE TESTS ARITHMETIC ASSIGNMENTS OF THE 00050042
9: C FORM INTEGER VARIABLE = PRIMARY ** PRIMARY 00060042
10: C WHERE THE FIRST OF TWO PRIMARIES IS AN INTEGER VARIABLE OR AN 00070042
11: C INTEGER CONSTANT AND THE SECOND PRIMARY IS AN INTEGER VARIABLE. 00080042
12: C 00090042
13: C REFERENCES 00100042
14: C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, 00110042
15: C X3.9-1978 00120042
16: C 00130042
17: C SECTION 4.3, INTEGER TYPE 00140042
18: C SECTION 4.3.1, INTEGER CONSTANT 00150042
19: C SECTION 6.1, ARITHMETIC EXPRESSIONS 00160042
20: C SECTION 10.1, ARITHMETIC ASSIGNMENT STATEMENT 00170042
21: C 00180042
22: C 00190042
23: C ********************************************************** 00200042
24: C 00210042
25: C A COMPILER VALIDATION SYSTEM FOR THE FORTRAN LANGUAGE 00220042
26: C BASED ON SPECIFICATIONS AS DEFINED IN AMERICAN NATIONAL STANDARD 00230042
27: C PROGRAMMING LANGUAGE FORTRAN X3.9-1978, HAS BEEN DEVELOPED BY THE 00240042
28: C FEDERAL COBOL COMPILER TESTING SERVICE. THE FORTRAN COMPILER 00250042
29: C VALIDATION SYSTEM (FCVS) CONSISTS OF AUDIT ROUTINES, THEIR RELATED00260042
30: C DATA, AND AN EXECUTIVE SYSTEM. EACH AUDIT ROUTINE IS A FORTRAN 00270042
31: C PROGRAM, SUBPROGRAM OR FUNCTION WHICH INCLUDES TESTS OF SPECIFIC 00280042
32: C LANGUAGE ELEMENTS AND SUPPORTING PROCEDURES INDICATING THE RESULT 00290042
33: C OF EXECUTING THESE TESTS. 00300042
34: C 00310042
35: C THIS PARTICULAR PROGRAM/SUBPROGRAM/FUNCTION CONTAINS FEATURES 00320042
36: C FOUND ONLY IN THE SUBSET AS DEFINED IN X3.9-1978. 00330042
37: C 00340042
38: C SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO - 00350042
39: C 00360042
40: C DEPARTMENT OF THE NAVY 00370042
41: C FEDERAL COBOL COMPILER TESTING SERVICE 00380042
42: C WASHINGTON, D.C. 20376 00390042
43: C 00400042
44: C ********************************************************** 00410042
45: C 00420042
46: C 00430042
47: C 00440042
48: C INITIALIZATION SECTION 00450042
49: C 00460042
50: C INITIALIZE CONSTANTS 00470042
51: C ************** 00480042
52: C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. 00490042
53: I01 = 5 00500042
54: C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. 00510042
55: I02 = 6 00520042
56: C SYSTEM ENVIRONMENT SECTION 00530042
57: C 00540042
58: I01 = 5 00550042
59: C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 00560042
60: C (UNIT NUMBER FOR CARD READER). 00570042
61: CX011 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-011 CONTROL CARD. 00580042
62: C THE CX011 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL 00590042
63: C FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX010 ABOVE. 00600042
64: C 00610042
65: I02 = 6 00620042
66: C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02 = 6 00630042
67: C (UNIT NUMBER FOR PRINTER). 00640042
68: CX021 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-021 CONTROL CARD. 00650042
69: C THE CX021 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL 00660042
70: C FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX020 ABOVE. 00670042
71: C 00680042
72: IVPASS=0 00690042
73: IVFAIL=0 00700042
74: IVDELE=0 00710042
75: ICZERO=0 00720042
76: C 00730042
77: C WRITE PAGE HEADERS 00740042
78: WRITE (I02,90000) 00750042
79: WRITE (I02,90001) 00760042
80: WRITE (I02,90002) 00770042
81: WRITE (I02, 90002) 00780042
82: WRITE (I02,90003) 00790042
83: WRITE (I02,90002) 00800042
84: WRITE (I02,90004) 00810042
85: WRITE (I02,90002) 00820042
86: WRITE (I02,90011) 00830042
87: WRITE (I02,90002) 00840042
88: WRITE (I02,90002) 00850042
89: WRITE (I02,90005) 00860042
90: WRITE (I02,90006) 00870042
91: WRITE (I02,90002) 00880042
92: C 00890042
93: C TEST SECTION 00900042
94: C 00910042
95: C ARITHMETIC ASSIGNMENT STATEMENT 00920042
96: C 00930042
97: C TEST 649 THROUGH TEST 665 CONTAIN ARITHMETIC ASSIGNMENT STATEMENTS00940042
98: C OF THE FORM INTEGER VARIABLE = INTEGER CONST. ** INTEGER VAR. 00950042
99: C 00960042
100: C TEST 666 THROUGH TEST 682 CONTAIN ARITHMETIC ASSIGNMENT STATEMENTS00970042
101: C OF THE FORM INTEGER VARIABLE = INTEGER VAR. ** INTEGER VAR. 00980042
102: C 00990042
103: C 01000042
104: IVTNUM = 649 01010042
105: C 01020042
106: C **** TEST 649 **** 01030042
107: C TEST 649 - SMALL NUMBER BASE; ZERO EXPONENT 01040042
108: C 01050042
109: IF (ICZERO) 36490, 6490, 36490 01060042
110: 6490 CONTINUE 01070042
111: IVON01 = 0 01080042
112: IVCOMP = 1 ** IVON01 01090042
113: GO TO 46490 01100042
114: 36490 IVDELE = IVDELE + 1 01110042
115: WRITE (I02,80003) IVTNUM 01120042
116: IF (ICZERO) 46490, 6501, 46490 01130042
117: 46490 IF (IVCOMP - 1) 26490,16490,26490 01140042
118: 16490 IVPASS = IVPASS + 1 01150042
119: WRITE (I02,80001) IVTNUM 01160042
120: GO TO 6501 01170042
121: 26490 IVFAIL = IVFAIL + 1 01180042
122: IVCORR = 1 01190042
123: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 01200042
124: 6501 CONTINUE 01210042
125: IVTNUM = 650 01220042
126: C 01230042
127: C **** TEST 650 **** 01240042
128: C TEST 650 - ZERO BASE TO FIRST POWER 01250042
129: C 01260042
130: IF (ICZERO) 36500, 6500, 36500 01270042
131: 6500 CONTINUE 01280042
132: IVON01 = 1 01290042
133: IVCOMP = 0 ** IVON01 01300042
134: GO TO 46500 01310042
135: 36500 IVDELE = IVDELE + 1 01320042
136: WRITE (I02,80003) IVTNUM 01330042
137: IF (ICZERO) 46500, 6511, 46500 01340042
138: 46500 IF (IVCOMP) 26500,16500,26500 01350042
139: 16500 IVPASS = IVPASS + 1 01360042
140: WRITE (I02,80001) IVTNUM 01370042
141: GO TO 6511 01380042
142: 26500 IVFAIL = IVFAIL + 1 01390042
143: IVCORR = 0 01400042
144: WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 01410042
145: 6511 CONTINUE 01420042
146: IVTNUM = 651 01430042
147: C 01440042
148: C **** TEST 651 **** 01450042
149: C TEST 651 - BASE =1; EXPONENT = 1 01460042
150: C 01470042
151: IF (ICZERO) 36510, 6510, 36510 01480042
152: 6510 CONTINUE 01490042
153: IVON01 = 1 01500042
154: IVCOMP = 1 ** IVON01 01510042
155: GO TO 46510 01520042
156: 36510 IVDELE = IVDELE + 1 01530042
157: WRITE (I02,80003) IVTNUM 01540042
158: IF (ICZERO) 46510, 6521, 46510 01550042
159: 46510 IF (IVCOMP - 1) 26510,16510,26510 01560042
160: 16510 IVPASS = IVPASS + 1 01570042
161: WRITE (I02,80001) IVTNUM 01580042
162: GO TO 6521 01590042
163: 26510 IVFAIL = IVFAIL + 1 01600042
164: IVCORR = 1 01610042
165: WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 01620042
166: 6521 CONTINUE 01630042
167: IVTNUM = 652 01640042
168: C 01650042
169: C **** TEST 652 **** 01660042
170: C TEST 652 - LARGE EXPONENT 01670042
171: C 01680042
172: IF (ICZERO) 36520, 6520, 36520 01690042
173: 6520 CONTINUE 01700042
174: IVON01 = 32767 01710042
175: IVCOMP = 1 ** IVON01 01720042
176: GO TO 46520 01730042
177: 36520 IVDELE = IVDELE + 1 01740042
178: WRITE (I02,80003) IVTNUM 01750042
179: IF (ICZERO) 46520, 6531, 46520 01760042
180: 46520 IF (IVCOMP - 1) 26520,16520,26520 01770042
181: 16520 IVPASS = IVPASS + 1 01780042
182: WRITE (I02,80001) IVTNUM 01790042
183: GO TO 6531 01800042
184: 26520 IVFAIL = IVFAIL + 1 01810042
185: IVCORR = 1 01820042
186: WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 01830042
187: 6531 CONTINUE 01840042
188: IVTNUM = 653 01850042
189: C 01860042
190: C **** TEST 653 **** 01870042
191: C TEST 653 - LARGE NUMBER BASE; EXPONENT = 1 01880042
192: C 01890042
193: IF (ICZERO) 36530, 6530, 36530 01900042
194: 6530 CONTINUE 01910042
195: IVON01 = 1 01920042
196: IVCOMP = 32767 ** IVON01 01930042
197: GO TO 46530 01940042
198: 36530 IVDELE = IVDELE + 1 01950042
199: WRITE (I02,80003) IVTNUM 01960042
200: IF (ICZERO) 46530, 6541, 46530 01970042
201: 46530 IF (IVCOMP - 32767) 26530,16530,26530 01980042
202: 16530 IVPASS = IVPASS + 1 01990042
203: WRITE (I02,80001) IVTNUM 02000042
204: GO TO 6541 02010042
205: 26530 IVFAIL = IVFAIL + 1 02020042
206: IVCORR = 32767 02030042
207: WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 02040042
208: 6541 CONTINUE 02050042
209: IVTNUM = 654 02060042
210: C 02070042
211: C **** TEST 654 **** 02080042
212: C TEST 654 - ZERO BASE; LARGE NUMBER EXPONENT 02090042
213: C 02100042
214: IF (ICZERO) 36540, 6540, 36540 02110042
215: 6540 CONTINUE 02120042
216: IVON01 = 32767 02130042
217: IVCOMP = 0 ** IVON01 02140042
218: GO TO 46540 02150042
219: 36540 IVDELE = IVDELE + 1 02160042
220: WRITE (I02,80003) IVTNUM 02170042
221: IF (ICZERO) 46540, 6551, 46540 02180042
222: 46540 IF (IVCOMP) 26540,16540,26540 02190042
223: 16540 IVPASS = IVPASS + 1 02200042
224: WRITE (I02,80001) IVTNUM 02210042
225: GO TO 6551 02220042
226: 26540 IVFAIL = IVFAIL + 1 02230042
227: IVCORR = 0 02240042
228: WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 02250042
229: 6551 CONTINUE 02260042
230: IVTNUM = 655 02270042
231: C 02280042
232: C **** TEST 655 **** 02290042
233: C TEST 655 -LARGE NUMBER BASE; ZERO EXPONENT 02300042
234: C 02310042
235: IF (ICZERO) 36550, 6550, 36550 02320042
236: 6550 CONTINUE 02330042
237: IVON01 = 0 02340042
238: IVCOMP = 32767 ** IVON01 02350042
239: GO TO 46550 02360042
240: 36550 IVDELE = IVDELE + 1 02370042
241: WRITE (I02,80003) IVTNUM 02380042
242: IF (ICZERO) 46550, 6561, 46550 02390042
243: 46550 IF (IVCOMP -1) 26550,16550,26550 02400042
244: 16550 IVPASS = IVPASS + 1 02410042
245: WRITE (I02,80001) IVTNUM 02420042
246: GO TO 6561 02430042
247: 26550 IVFAIL = IVFAIL + 1 02440042
248: IVCORR = 1 02450042
249: WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 02460042
250: 6561 CONTINUE 02470042
251: IVTNUM = 656 02480042
252: C 02490042
253: C **** TEST 656 **** 02500042
254: C TEST 656 -EXPONENT IS POWER OF TWO 02510042
255: C 02520042
256: IF (ICZERO) 36560, 6560, 36560 02530042
257: 6560 CONTINUE 02540042
258: IVON01 = 2 02550042
259: IVCOMP = 181 ** IVON01 02560042
260: GO TO 46560 02570042
261: 36560 IVDELE = IVDELE + 1 02580042
262: WRITE (I02,80003) IVTNUM 02590042
263: IF (ICZERO) 46560, 6571, 46560 02600042
264: 46560 IF (IVCOMP - 32761) 26560,16560,26560 02610042
265: 16560 IVPASS = IVPASS + 1 02620042
266: WRITE (I02,80001) IVTNUM 02630042
267: GO TO 6571 02640042
268: 26560 IVFAIL = IVFAIL + 1 02650042
269: IVCORR = 32761 02660042
270: WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 02670042
271: 6571 CONTINUE 02680042
272: IVTNUM = 657 02690042
273: C 02700042
274: C **** TEST 657 **** 02710042
275: C TEST 657 - BASE AND EXPONENT ARE BOTH POWERS OF TWO 02720042
276: C 02730042
277: IF (ICZERO) 36570, 6570, 36570 02740042
278: 6570 CONTINUE 02750042
279: IVON01 = 8 02760042
280: IVCOMP = 2 ** IVON01 02770042
281: GO TO 46570 02780042
282: 36570 IVDELE = IVDELE + 1 02790042
283: WRITE (I02,80003) IVTNUM 02800042
284: IF (ICZERO) 46570, 6581, 46570 02810042
285: 46570 IF (IVCOMP - 256) 26570,16570,26560 02820042
286: 16570 IVPASS = IVPASS + 1 02830042
287: WRITE (I02,80001) IVTNUM 02840042
288: GO TO 6581 02850042
289: 26570 IVFAIL = IVFAIL + 1 02860042
290: IVCORR = 256 02870042
291: WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 02880042
292: 6581 CONTINUE 02890042
293: C 02900042
294: C TESTS 658 AND 659 TEST TO ENSURE EXPONENTIATION OPERATOR IS 02910042
295: C NOT COMMUTATIVE 02920042
296: C 02930042
297: IVTNUM = 658 02940042
298: C 02950042
299: C **** TEST 658 **** 02960042
300: C 02970042
301: IF (ICZERO) 36580, 6580, 36580 02980042
302: 6580 CONTINUE 02990042
303: IVON01 = 9 03000042
304: IVCOMP = 3 ** IVON01 03010042
305: GO TO 46580 03020042
306: 36580 IVDELE = IVDELE + 1 03030042
307: WRITE (I02,80003) IVTNUM 03040042
308: IF (ICZERO) 46580, 6591, 46580 03050042
309: 46580 IF (IVCOMP - 19683) 26580,16580,26580 03060042
310: 16580 IVPASS = IVPASS + 1 03070042
311: WRITE (I02,80001) IVTNUM 03080042
312: GO TO 6591 03090042
313: 26580 IVFAIL = IVFAIL + 1 03100042
314: IVCORR = 19683 03110042
315: WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 03120042
316: 6591 CONTINUE 03130042
317: IVTNUM = 659 03140042
318: C 03150042
319: C **** TEST 659 **** 03160042
320: C 03170042
321: IF (ICZERO) 36590, 6590, 36590 03180042
322: 6590 CONTINUE 03190042
323: IVON01 = 3 03200042
324: IVCOMP = 9 ** IVON01 03210042
325: GO TO 46590 03220042
326: 36590 IVDELE = IVDELE + 1 03230042
327: WRITE (I02,80003) IVTNUM 03240042
328: IF (ICZERO) 46590, 6601, 46590 03250042
329: 46590 IF (IVCOMP - 729) 26590,16590,26590 03260042
330: 16590 IVPASS = IVPASS + 1 03270042
331: WRITE (I02,80001) IVTNUM 03280042
332: GO TO 6601 03290042
333: 26590 IVFAIL = IVFAIL + 1 03300042
334: IVCORR = 729 03310042
335: WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 03320042
336: 6601 CONTINUE 03330042
337: C 03340042
338: C TESTS 660 THROUGH 665 TEST POSITIVE AND NEGATIVE BASES TO POSITIVE03350042
339: C ODD AND EVEN NUMBER POWERS CHECKING THE SIGN03360042
340: C OF THE RESULTS 03370042
341: C 03380042
342: IVTNUM = 660 03390042
343: C 03400042
344: C **** TEST 660 **** 03410042
345: C 03420042
346: IF (ICZERO) 36600, 6600, 36600 03430042
347: 6600 CONTINUE 03440042
348: IVON01 = 2 03450042
349: IVCOMP = 1 ** IVON01 03460042
350: GO TO 46600 03470042
351: 36600 IVDELE = IVDELE + 1 03480042
352: WRITE (I02,80003) IVTNUM 03490042
353: IF (ICZERO) 46600, 6611, 46600 03500042
354: 46600 IF (IVCOMP - 1) 26600,16600,26600 03510042
355: 16600 IVPASS = IVPASS + 1 03520042
356: WRITE (I02,80001) IVTNUM 03530042
357: GO TO 6611 03540042
358: 26600 IVFAIL = IVFAIL + 1 03550042
359: IVCORR = 1 03560042
360: WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 03570042
361: 6611 CONTINUE 03580042
362: IVTNUM = 661 03590042
363: C 03600042
364: C **** TEST 661 **** 03610042
365: C 03620042
366: IF (ICZERO) 36610, 6610, 36610 03630042
367: 6610 CONTINUE 03640042
368: IVON01 = 2 03650042
369: IVCOMP = ( -1) ** IVON01 03660042
370: GO TO 46610 03670042
371: 36610 IVDELE = IVDELE + 1 03680042
372: WRITE (I02,80003) IVTNUM 03690042
373: IF (ICZERO) 46610, 6621, 46610 03700042
374: 46610 IF (IVCOMP - 1) 26610,16610,26610 03710042
375: 16610 IVPASS = IVPASS + 1 03720042
376: WRITE (I02,80001) IVTNUM 03730042
377: GO TO 6621 03740042
378: 26610 IVFAIL = IVFAIL + 1 03750042
379: IVCORR = 1 03760042
380: WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 03770042
381: 6621 CONTINUE 03780042
382: IVTNUM = 662 03790042
383: C 03800042
384: C **** TEST 662 **** 03810042
385: C 03820042
386: IF (ICZERO) 36620, 6620, 36620 03830042
387: 6620 CONTINUE 03840042
388: IVON01 = 3 03850042
389: IVCOMP = 7 ** IVON01 03860042
390: GO TO 46620 03870042
391: 36620 IVDELE = IVDELE + 1 03880042
392: WRITE (I02,80003) IVTNUM 03890042
393: IF (ICZERO) 46620, 6631, 46620 03900042
394: 46620 IF (IVCOMP - 343) 26620,16620,26620 03910042
395: 16620 IVPASS = IVPASS + 1 03920042
396: WRITE (I02,80001) IVTNUM 03930042
397: GO TO 6631 03940042
398: 26620 IVFAIL = IVFAIL + 1 03950042
399: IVCORR = 343 03960042
400: WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 03970042
401: 6631 CONTINUE 03980042
402: IVTNUM = 663 03990042
403: C 04000042
404: C **** TEST 663 **** 04010042
405: C 04020042
406: IF (ICZERO) 36630, 6630, 36630 04030042
407: 6630 CONTINUE 04040042
408: IVON01 = 3 04050042
409: IVCOMP = (-7) **IVON01 04060042
410: GO TO 46630 04070042
411: 36630 IVDELE = IVDELE + 1 04080042
412: WRITE (I02,80003) IVTNUM 04090042
413: IF (ICZERO) 46630, 6641, 46630 04100042
414: 46630 IF (IVCOMP + 343) 26630,16630,26630 04110042
415: 16630 IVPASS = IVPASS + 1 04120042
416: WRITE (I02,80001) IVTNUM 04130042
417: GO TO 6641 04140042
418: 26630 IVFAIL = IVFAIL + 1 04150042
419: IVCORR = -343 04160042
420: WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 04170042
421: 6641 CONTINUE 04180042
422: IVTNUM = 664 04190042
423: C 04200042
424: C **** TEST 664 **** 04210042
425: C 04220042
426: IF (ICZERO) 36640, 6640, 36640 04230042
427: 6640 CONTINUE 04240042
428: IVON01 = 4 04250042
429: IVCOMP = 7 ** IVON01 04260042
430: GO TO 46640 04270042
431: 36640 IVDELE = IVDELE + 1 04280042
432: WRITE (I02,80003) IVTNUM 04290042
433: IF (ICZERO) 46640, 6651, 46640 04300042
434: 46640 IF (IVCOMP - 2401) 26640,16640,26640 04310042
435: 16640 IVPASS = IVPASS + 1 04320042
436: WRITE (I02,80001) IVTNUM 04330042
437: GO TO 6651 04340042
438: 26640 IVFAIL = IVFAIL + 1 04350042
439: IVCORR = 2401 04360042
440: WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 04370042
441: 6651 CONTINUE 04380042
442: IVTNUM = 665 04390042
443: C 04400042
444: C **** TEST 665 **** 04410042
445: C 04420042
446: IF (ICZERO) 36650, 6650, 36650 04430042
447: 6650 CONTINUE 04440042
448: IVON01 = 4 04450042
449: IVCOMP = (-7) ** IVON01 04460042
450: GO TO 46650 04470042
451: 36650 IVDELE = IVDELE + 1 04480042
452: WRITE (I02,80003) IVTNUM 04490042
453: IF (ICZERO) 46650, 6661, 46650 04500042
454: 46650 IF (IVCOMP - 2401) 26650,16650,26650 04510042
455: 16650 IVPASS = IVPASS + 1 04520042
456: WRITE (I02,80001) IVTNUM 04530042
457: GO TO 6661 04540042
458: 26650 IVFAIL = IVFAIL + 1 04550042
459: IVCORR = 2401 04560042
460: WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 04570042
461: 6661 CONTINUE 04580042
462: IVTNUM = 666 04590042
463: C 04600042
464: C **** TEST 666 **** 04610042
465: C TEST 666 - SMALL NUMBER BASE; ZERO EXPONENT 04620042
466: C 04630042
467: IF (ICZERO) 36660, 6660, 36660 04640042
468: 6660 CONTINUE 04650042
469: IVON01 = 1 04660042
470: IVON02 = 0 04670042
471: IVCOMP = IVON01 ** IVON02 04680042
472: GO TO 46660 04690042
473: 36660 IVDELE = IVDELE + 1 04700042
474: WRITE (I02,80003) IVTNUM 04710042
475: IF (ICZERO) 46660, 6671, 46660 04720042
476: 46660 IF (IVCOMP - 1) 26660,16660,26660 04730042
477: 16660 IVPASS = IVPASS + 1 04740042
478: WRITE (I02,80001) IVTNUM 04750042
479: GO TO 6671 04760042
480: 26660 IVFAIL = IVFAIL + 1 04770042
481: IVCORR = 1 04780042
482: WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 04790042
483: 6671 CONTINUE 04800042
484: IVTNUM = 667 04810042
485: C 04820042
486: C **** TEST 667 **** 04830042
487: C TEST 667 - ZERO BASE TO FIRST POWER 04840042
488: C 04850042
489: IF (ICZERO) 36670, 6670, 36670 04860042
490: 6670 CONTINUE 04870042
491: IVON01 = 0 04880042
492: IVON02 = 1 04890042
493: IVCOMP = IVON01 ** IVON02 04900042
494: GO TO 46670 04910042
495: 36670 IVDELE = IVDELE + 1 04920042
496: WRITE (I02,80003) IVTNUM 04930042
497: IF (ICZERO) 46670, 6681, 46670 04940042
498: 46670 IF (IVCOMP) 26670,16670,26670 04950042
499: 16670 IVPASS = IVPASS + 1 04960042
500: WRITE (I02,80001) IVTNUM 04970042
501: GO TO 6681 04980042
502: 26670 IVFAIL = IVFAIL + 1 04990042
503: IVCORR = 0 05000042
504: WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 05010042
505: 6681 CONTINUE 05020042
506: IVTNUM = 668 05030042
507: C 05040042
508: C **** TEST 668 **** 05050042
509: C TEST 668 - BASE =1; EXPONENT = 1 05060042
510: C 05070042
511: IF (ICZERO) 36680, 6680, 36680 05080042
512: 6680 CONTINUE 05090042
513: IVON01 = 1 05100042
514: IVON02 = 1 05110042
515: IVCOMP = IVON01 ** IVON02 05120042
516: GO TO 46680 05130042
517: 36680 IVDELE = IVDELE + 1 05140042
518: WRITE (I02,80003) IVTNUM 05150042
519: IF (ICZERO) 46680, 6691, 46680 05160042
520: 46680 IF (IVCOMP - 1) 26680,16680,26680 05170042
521: 16680 IVPASS = IVPASS + 1 05180042
522: WRITE (I02,80001) IVTNUM 05190042
523: GO TO 6691 05200042
524: 26680 IVFAIL = IVFAIL + 1 05210042
525: IVCORR = 1 05220042
526: WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 05230042
527: 6691 CONTINUE 05240042
528: IVTNUM = 669 05250042
529: C 05260042
530: C **** TEST 669 **** 05270042
531: C TEST 669 - LARGE EXPONENT 05280042
532: C 05290042
533: IF (ICZERO) 36690, 6690, 36690 05300042
534: 6690 CONTINUE 05310042
535: IVON01 = 1 05320042
536: IVON02 = 32767 05330042
537: IVCOMP = IVON01 ** IVON02 05340042
538: GO TO 46690 05350042
539: 36690 IVDELE = IVDELE + 1 05360042
540: WRITE (I02,80003) IVTNUM 05370042
541: IF (ICZERO) 46690, 6701, 46690 05380042
542: 46690 IF (IVCOMP - 1) 26690,16690,26690 05390042
543: 16690 IVPASS = IVPASS + 1 05400042
544: WRITE (I02,80001) IVTNUM 05410042
545: GO TO 6701 05420042
546: 26690 IVFAIL = IVFAIL + 1 05430042
547: IVCORR = 1 05440042
548: WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 05450042
549: 6701 CONTINUE 05460042
550: IVTNUM = 670 05470042
551: C 05480042
552: C **** TEST 670 **** 05490042
553: C TEST 670 - LARGE NUMBER BASE; EXPONENT = 1 05500042
554: C 05510042
555: IF (ICZERO) 36700, 6700, 36700 05520042
556: 6700 CONTINUE 05530042
557: IVON01 = 32767 05540042
558: IVON02 = 1 05550042
559: IVCOMP = IVON01 ** IVON02 05560042
560: GO TO 46700 05570042
561: 36700 IVDELE = IVDELE + 1 05580042
562: WRITE (I02,80003) IVTNUM 05590042
563: IF (ICZERO) 46700, 6711, 46700 05600042
564: 46700 IF (IVCOMP - 32767) 26700,16700,26700 05610042
565: 16700 IVPASS = IVPASS + 1 05620042
566: WRITE (I02,80001) IVTNUM 05630042
567: GO TO 6711 05640042
568: 26700 IVFAIL = IVFAIL + 1 05650042
569: IVCORR = 32767 05660042
570: WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 05670042
571: 6711 CONTINUE 05680042
572: IVTNUM = 671 05690042
573: C 05700042
574: C **** TEST 671 **** 05710042
575: C TEST 671 - ZERO BASE; LARGE NUMBER EXPONENT 05720042
576: C 05730042
577: IF (ICZERO) 36710, 6710, 36710 05740042
578: 6710 CONTINUE 05750042
579: IVON01 = 0 05760042
580: IVON02 = 32767 05770042
581: IVCOMP = IVON01 ** IVON02 05780042
582: GO TO 46710 05790042
583: 36710 IVDELE = IVDELE + 1 05800042
584: WRITE (I02,80003) IVTNUM 05810042
585: IF (ICZERO) 46710, 6721, 46710 05820042
586: 46710 IF (IVCOMP) 26710,16710,26710 05830042
587: 16710 IVPASS = IVPASS + 1 05840042
588: WRITE (I02,80001) IVTNUM 05850042
589: GO TO 6721 05860042
590: 26710 IVFAIL = IVFAIL + 1 05870042
591: IVCORR = 0 05880042
592: WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 05890042
593: 6721 CONTINUE 05900042
594: IVTNUM = 672 05910042
595: C 05920042
596: C **** TEST 672 **** 05930042
597: C TEST 672 -LARGE NUMBER BASE; ZERO EXPONENT 05940042
598: C 05950042
599: IF (ICZERO) 36720, 6720, 36720 05960042
600: 6720 CONTINUE 05970042
601: IVON01 = 32767 05980042
602: IVON02 = 0 05990042
603: IVCOMP = IVON01 ** IVON02 06000042
604: GO TO 46720 06010042
605: 36720 IVDELE = IVDELE + 1 06020042
606: WRITE (I02,80003) IVTNUM 06030042
607: IF (ICZERO) 46720, 6731, 46720 06040042
608: 46720 IF (IVCOMP -1) 26720,16720,26720 06050042
609: 16720 IVPASS = IVPASS + 1 06060042
610: WRITE (I02,80001) IVTNUM 06070042
611: GO TO 6731 06080042
612: 26720 IVFAIL = IVFAIL + 1 06090042
613: IVCORR = 1 06100042
614: WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 06110042
615: 6731 CONTINUE 06120042
616: IVTNUM = 673 06130042
617: C 06140042
618: C **** TEST 673 **** 06150042
619: C TEST 673 -EXPONENT IS POWER OF TWO 06160042
620: C 06170042
621: IF (ICZERO) 36730, 6730, 36730 06180042
622: 6730 CONTINUE 06190042
623: IVON01 = 181 06200042
624: IVON02 = 2 06210042
625: IVCOMP = IVON01 ** IVON02 06220042
626: GO TO 46730 06230042
627: 36730 IVDELE = IVDELE + 1 06240042
628: WRITE (I02,80003) IVTNUM 06250042
629: IF (ICZERO) 46730, 6741, 46730 06260042
630: 46730 IF (IVCOMP - 32761) 26730,16730,26730 06270042
631: 16730 IVPASS = IVPASS + 1 06280042
632: WRITE (I02,80001) IVTNUM 06290042
633: GO TO 6741 06300042
634: 26730 IVFAIL = IVFAIL + 1 06310042
635: IVCORR = 32761 06320042
636: WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 06330042
637: 6741 CONTINUE 06340042
638: IVTNUM = 674 06350042
639: C 06360042
640: C **** TEST 674 **** 06370042
641: C TEST 674 - BASE AND EXPONENT ARE BOTH POWERS OF TWO 06380042
642: C 06390042
643: IF (ICZERO) 36740, 6740, 36740 06400042
644: 6740 CONTINUE 06410042
645: IVON01 = 2 06420042
646: IVON02 = 8 06430042
647: IVCOMP = IVON01 ** IVON02 06440042
648: GO TO 46740 06450042
649: 36740 IVDELE = IVDELE + 1 06460042
650: WRITE (I02,80003) IVTNUM 06470042
651: IF (ICZERO) 46740, 6751, 46740 06480042
652: 46740 IF (IVCOMP - 256) 26740,16740,26740 06490042
653: 16740 IVPASS = IVPASS + 1 06500042
654: WRITE (I02,80001) IVTNUM 06510042
655: GO TO 6751 06520042
656: 26740 IVFAIL = IVFAIL + 1 06530042
657: IVCORR = 256 06540042
658: WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 06550042
659: 6751 CONTINUE 06560042
660: C 06570042
661: C TESTS 675 AND 676 TEST TO ENSURE EXPONENTIATION OPERATOR IS 06580042
662: C NOT COMMUTATIVE 06590042
663: C 06600042
664: IVTNUM = 675 06610042
665: C 06620042
666: C **** TEST 675 **** 06630042
667: C 06640042
668: IF (ICZERO) 36750, 6750, 36750 06650042
669: 6750 CONTINUE 06660042
670: IVON01 = 3 06670042
671: IVON02 = 9 06680042
672: IVCOMP = IVON01 ** IVON02 06690042
673: GO TO 46750 06700042
674: 36750 IVDELE = IVDELE + 1 06710042
675: WRITE (I02,80003) IVTNUM 06720042
676: IF (ICZERO) 46750, 6761, 46750 06730042
677: 46750 IF (IVCOMP - 19683) 26750,16750,26750 06740042
678: 16750 IVPASS = IVPASS + 1 06750042
679: WRITE (I02,80001) IVTNUM 06760042
680: GO TO 6761 06770042
681: 26750 IVFAIL = IVFAIL + 1 06780042
682: IVCORR = 19683 06790042
683: WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 06800042
684: 6761 CONTINUE 06810042
685: IVTNUM = 676 06820042
686: C 06830042
687: C **** TEST 676 **** 06840042
688: C 06850042
689: IF (ICZERO) 36760, 6760, 36760 06860042
690: 6760 CONTINUE 06870042
691: IVON01 = 9 06880042
692: IVON02 = 3 06890042
693: IVCOMP = IVON01 ** IVON02 06900042
694: GO TO 46760 06910042
695: 36760 IVDELE = IVDELE + 1 06920042
696: WRITE (I02,80003) IVTNUM 06930042
697: IF (ICZERO) 46760, 6771, 46760 06940042
698: 46760 IF (IVCOMP - 729) 26760,16760,26760 06950042
699: 16760 IVPASS = IVPASS + 1 06960042
700: WRITE (I02,80001) IVTNUM 06970042
701: GO TO 6771 06980042
702: 26760 IVFAIL = IVFAIL + 1 06990042
703: IVCORR = 729 07000042
704: WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 07010042
705: 6771 CONTINUE 07020042
706: C 07030042
707: C TESTS 677 THROUGH 682 TEST POSITIVE AND NEGATIVE BASES TO POSITIVE07040042
708: C ODD AND EVEN NUMBER POWERS CHECKING THE SIGN07050042
709: C OF THE RESULTS 07060042
710: C 07070042
711: IVTNUM = 677 07080042
712: C 07090042
713: C **** TEST 677 **** 07100042
714: C 07110042
715: IF (ICZERO) 36770, 6770, 36770 07120042
716: 6770 CONTINUE 07130042
717: IVON01 = 1 07140042
718: IVON02 = 2 07150042
719: IVCOMP = IVON01 ** IVON02 07160042
720: GO TO 46770 07170042
721: 36770 IVDELE = IVDELE + 1 07180042
722: WRITE (I02,80003) IVTNUM 07190042
723: IF (ICZERO) 46770, 6781, 46770 07200042
724: 46770 IF (IVCOMP - 1) 26770,16770,26770 07210042
725: 16770 IVPASS = IVPASS + 1 07220042
726: WRITE (I02,80001) IVTNUM 07230042
727: GO TO 6781 07240042
728: 26770 IVFAIL = IVFAIL + 1 07250042
729: IVCORR = 1 07260042
730: WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 07270042
731: 6781 CONTINUE 07280042
732: IVTNUM = 678 07290042
733: C 07300042
734: C **** TEST 678 **** 07310042
735: C 07320042
736: IF (ICZERO) 36780, 6780, 36780 07330042
737: 6780 CONTINUE 07340042
738: IVON01 = -1 07350042
739: IVON02 = 2 07360042
740: IVCOMP = IVON01 ** IVON02 07370042
741: GO TO 46780 07380042
742: 36780 IVDELE = IVDELE + 1 07390042
743: WRITE (I02,80003) IVTNUM 07400042
744: IF (ICZERO) 46780, 6791, 46780 07410042
745: 46780 IF (IVCOMP - 1) 26780,16780,26780 07420042
746: 16780 IVPASS = IVPASS + 1 07430042
747: WRITE (I02,80001) IVTNUM 07440042
748: GO TO 6791 07450042
749: 26780 IVFAIL = IVFAIL + 1 07460042
750: IVCORR = 1 07470042
751: WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 07480042
752: 6791 CONTINUE 07490042
753: IVTNUM = 679 07500042
754: C 07510042
755: C **** TEST 679 **** 07520042
756: C 07530042
757: IF (ICZERO) 36790, 6790, 36790 07540042
758: 6790 CONTINUE 07550042
759: IVON01 = 7 07560042
760: IVON02 = 3 07570042
761: IVCOMP = IVON01 ** IVON02 07580042
762: GO TO 46790 07590042
763: 36790 IVDELE = IVDELE + 1 07600042
764: WRITE (I02,80003) IVTNUM 07610042
765: IF (ICZERO) 46790, 6801, 46790 07620042
766: 46790 IF (IVCOMP - 343) 26790,16790,26790 07630042
767: 16790 IVPASS = IVPASS + 1 07640042
768: WRITE (I02,80001) IVTNUM 07650042
769: GO TO 6801 07660042
770: 26790 IVFAIL = IVFAIL + 1 07670042
771: IVCORR = 343 07680042
772: WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 07690042
773: 6801 CONTINUE 07700042
774: IVTNUM = 680 07710042
775: C 07720042
776: C **** TEST 680 **** 07730042
777: C 07740042
778: IF (ICZERO) 36800, 6800, 36800 07750042
779: 6800 CONTINUE 07760042
780: IVON01 = -7 07770042
781: IVON02 = 3 07780042
782: IVCOMP = IVON01 ** IVON02 07790042
783: GO TO 46800 07800042
784: 36800 IVDELE = IVDELE + 1 07810042
785: WRITE (I02,80003) IVTNUM 07820042
786: IF (ICZERO) 46800, 6811, 46800 07830042
787: 46800 IF (IVCOMP + 343) 26800,16800,26800 07840042
788: 16800 IVPASS = IVPASS + 1 07850042
789: WRITE (I02,80001) IVTNUM 07860042
790: GO TO 6811 07870042
791: 26800 IVFAIL = IVFAIL + 1 07880042
792: IVCORR = -343 07890042
793: WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 07900042
794: 6811 CONTINUE 07910042
795: IVTNUM = 681 07920042
796: C 07930042
797: C **** TEST 681 **** 07940042
798: C 07950042
799: IF (ICZERO) 36810, 6810, 36810 07960042
800: 6810 CONTINUE 07970042
801: IVON01 = 7 07980042
802: IVON02 = 4 07990042
803: IVCOMP = IVON01 ** IVON02 08000042
804: GO TO 46810 08010042
805: 36810 IVDELE = IVDELE + 1 08020042
806: WRITE (I02,80003) IVTNUM 08030042
807: IF (ICZERO) 46810, 6821, 46810 08040042
808: 46810 IF (IVCOMP - 2401) 26810,16810,26810 08050042
809: 16810 IVPASS = IVPASS + 1 08060042
810: WRITE (I02,80001) IVTNUM 08070042
811: GO TO 6821 08080042
812: 26810 IVFAIL = IVFAIL + 1 08090042
813: IVCORR = 2401 08100042
814: WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 08110042
815: 6821 CONTINUE 08120042
816: IVTNUM = 682 08130042
817: C 08140042
818: C **** TEST 682 **** 08150042
819: C 08160042
820: IF (ICZERO) 36820, 6820, 36820 08170042
821: 6820 CONTINUE 08180042
822: IVON01 = -7 08190042
823: IVON02 = 4 08200042
824: IVCOMP = IVON01 ** IVON02 08210042
825: GO TO 46820 08220042
826: 36820 IVDELE = IVDELE + 1 08230042
827: WRITE (I02,80003) IVTNUM 08240042
828: IF (ICZERO) 46820, 6831, 46820 08250042
829: 46820 IF (IVCOMP - 2401) 26820,16820,26820 08260042
830: 16820 IVPASS = IVPASS + 1 08270042
831: WRITE (I02,80001) IVTNUM 08280042
832: GO TO 6831 08290042
833: 26820 IVFAIL = IVFAIL + 1 08300042
834: IVCORR = 2401 08310042
835: WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 08320042
836: 6831 CONTINUE 08330042
837: C 08340042
838: C WRITE PAGE FOOTINGS AND RUN SUMMARIES 08350042
839: 99999 CONTINUE 08360042
840: WRITE (I02,90002) 08370042
841: WRITE (I02,90006) 08380042
842: WRITE (I02,90002) 08390042
843: WRITE (I02,90002) 08400042
844: WRITE (I02,90007) 08410042
845: WRITE (I02,90002) 08420042
846: WRITE (I02,90008) IVFAIL 08430042
847: WRITE (I02,90009) IVPASS 08440042
848: WRITE (I02,90010) IVDELE 08450042
849: C 08460042
850: C 08470042
851: C TERMINATE ROUTINE EXECUTION 08480042
852: STOP 08490042
853: C 08500042
854: C FORMAT STATEMENTS FOR PAGE HEADERS 08510042
855: 90000 FORMAT (1H1) 08520042
856: 90002 FORMAT (1H ) 08530042
857: 90001 FORMAT (1H ,10X,34HFORTRAN COMPILER VALIDATION SYSTEM) 08540042
858: 90003 FORMAT (1H ,21X,11HVERSION 1.0) 08550042
859: 90004 FORMAT (1H ,10X,38HFOR OFFICIAL USE ONLY - COPYRIGHT 1978) 08560042
860: 90005 FORMAT (1H ,5X,4HTEST,5X,9HPASS/FAIL, 5X,8HCOMPUTED,8X,7HCORRECT) 08570042
861: 90006 FORMAT (1H ,5X,46H----------------------------------------------) 08580042
862: 90011 FORMAT (1H ,18X,17HSUBSET LEVEL TEST) 08590042
863: C 08600042
864: C FORMAT STATEMENTS FOR RUN SUMMARIES 08610042
865: 90008 FORMAT (1H ,15X,I5,19H ERRORS ENCOUNTERED) 08620042
866: 90009 FORMAT (1H ,15X,I5,13H TESTS PASSED) 08630042
867: 90010 FORMAT (1H ,15X,I5,14H TESTS DELETED) 08640042
868: C 08650042
869: C FORMAT STATEMENTS FOR TEST RESULTS 08660042
870: 80001 FORMAT (1H ,4X,I5,7X,4HPASS) 08670042
871: 80002 FORMAT (1H ,4X,I5,7X,4HFAIL) 08680042
872: 80003 FORMAT (1H ,4X,I5,7X,7HDELETED) 08690042
873: 80004 FORMAT (1H ,4X,I5,7X,4HFAIL,10X,I6,9X,I6) 08700042
874: 80005 FORMAT (1H ,4X,I5,7X,4HFAIL,4X,E12.5,3X,E12.5) 08710042
875: C 08720042
876: 90007 FORMAT (1H ,20X,20HEND OF PROGRAM FM042) 08730042
877: END 08740042
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.