|
|
1.1 root 1: C COMMENT SECTION 00010041
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 00020041
6: C FM041 00030041
7: C 00040041
8: C THIS ROUTINE TESTS ARITHMETIC ASSIGNMENTS OF THE 00050041
9: C FORM INTEGER VARIABLE = PRIMARY ** PRIMARY 00060041
10: C WHERE THE FIRST OF TWO PRIMARIES IS AN INTEGER VARIABLE OR AN 00070041
11: C INTEGER CONSTANT AND THE SECOND PRIMARY IS AN INTEGER CONSTANT. 00080041
12: C 00090041
13: C REFERENCES 00100041
14: C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, 00110041
15: C X3.9-1978 00120041
16: C 00130041
17: C SECTION 4.3, INTEGER TYPE 00140041
18: C SECTION 4.3.1, INTEGER CONSTANT 00150041
19: C SECTION 6.1, ARITHMETIC EXPRESSIONS 00160041
20: C SECTION 10.1, ARITHMETIC ASSIGNMENT STATEMENT 00170041
21: C 00180041
22: C 00190041
23: C ********************************************************** 00200041
24: C 00210041
25: C A COMPILER VALIDATION SYSTEM FOR THE FORTRAN LANGUAGE 00220041
26: C BASED ON SPECIFICATIONS AS DEFINED IN AMERICAN NATIONAL STANDARD 00230041
27: C PROGRAMMING LANGUAGE FORTRAN X3.9-1978, HAS BEEN DEVELOPED BY THE 00240041
28: C FEDERAL COBOL COMPILER TESTING SERVICE. THE FORTRAN COMPILER 00250041
29: C VALIDATION SYSTEM (FCVS) CONSISTS OF AUDIT ROUTINES, THEIR RELATED00260041
30: C DATA, AND AN EXECUTIVE SYSTEM. EACH AUDIT ROUTINE IS A FORTRAN 00270041
31: C PROGRAM, SUBPROGRAM OR FUNCTION WHICH INCLUDES TESTS OF SPECIFIC 00280041
32: C LANGUAGE ELEMENTS AND SUPPORTING PROCEDURES INDICATING THE RESULT 00290041
33: C OF EXECUTING THESE TESTS. 00300041
34: C 00310041
35: C THIS PARTICULAR PROGRAM/SUBPROGRAM/FUNCTION CONTAINS FEATURES 00320041
36: C FOUND ONLY IN THE SUBSET AS DEFINED IN X3.9-1978. 00330041
37: C 00340041
38: C SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO - 00350041
39: C 00360041
40: C DEPARTMENT OF THE NAVY 00370041
41: C FEDERAL COBOL COMPILER TESTING SERVICE 00380041
42: C WASHINGTON, D.C. 20376 00390041
43: C 00400041
44: C ********************************************************** 00410041
45: C 00420041
46: C 00430041
47: C 00440041
48: C INITIALIZATION SECTION 00450041
49: C 00460041
50: C INITIALIZE CONSTANTS 00470041
51: C ************** 00480041
52: C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. 00490041
53: I01 = 5 00500041
54: C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. 00510041
55: I02 = 6 00520041
56: C SYSTEM ENVIRONMENT SECTION 00530041
57: C 00540041
58: I01 = 5 00550041
59: C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 00560041
60: C (UNIT NUMBER FOR CARD READER). 00570041
61: CX011 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-011 CONTROL CARD. 00580041
62: C THE CX011 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL 00590041
63: C FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX010 ABOVE. 00600041
64: C 00610041
65: I02 = 6 00620041
66: C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02 = 6 00630041
67: C (UNIT NUMBER FOR PRINTER). 00640041
68: CX021 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-021 CONTROL CARD. 00650041
69: C THE CX021 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL 00660041
70: C FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX020 ABOVE. 00670041
71: C 00680041
72: IVPASS=0 00690041
73: IVFAIL=0 00700041
74: IVDELE=0 00710041
75: ICZERO=0 00720041
76: C 00730041
77: C WRITE PAGE HEADERS 00740041
78: WRITE (I02,90000) 00750041
79: WRITE (I02,90001) 00760041
80: WRITE (I02,90002) 00770041
81: WRITE (I02, 90002) 00780041
82: WRITE (I02,90003) 00790041
83: WRITE (I02,90002) 00800041
84: WRITE (I02,90004) 00810041
85: WRITE (I02,90002) 00820041
86: WRITE (I02,90011) 00830041
87: WRITE (I02,90002) 00840041
88: WRITE (I02,90002) 00850041
89: WRITE (I02,90005) 00860041
90: WRITE (I02,90006) 00870041
91: WRITE (I02,90002) 00880041
92: C 00890041
93: C TEST SECTION 00900041
94: C 00910041
95: C ARITHMETIC ASSIGNMENT STATEMENT 00920041
96: C 00930041
97: C TEST 615 THROUGH TEST 631 CONTAIN ARITHMETIC ASSIGNMENT STATEMENTS00940041
98: C OF THE FORM INTEGER VARIABLE = INTEGER CONSTANT ** INTEGER CON.00950041
99: C 00960041
100: C TEST 632 THROUGH TEST 648 CONTAIN ARITHMETIC ASSIGNMENT STATEMENTS00970041
101: C OF THE FORM INTEGER VARIABLE = INTEGER VARIABLE ** INTEGER CON.00980041
102: C 00990041
103: C 01000041
104: IVTNUM = 615 01010041
105: C 01020041
106: C **** TEST 615 **** 01030041
107: C TEST 615 - SMALL NUMBER BASE; ZERO EXPONENT 01040041
108: C 01050041
109: IF (ICZERO) 36150, 6150, 36150 01060041
110: 6150 CONTINUE 01070041
111: IVCOMP = 1 ** 0 01080041
112: GO TO 46150 01090041
113: 36150 IVDELE = IVDELE + 1 01100041
114: WRITE (I02,80003) IVTNUM 01110041
115: IF (ICZERO) 46150, 6161, 46150 01120041
116: 46150 IF (IVCOMP - 1) 26150,16150,26150 01130041
117: 16150 IVPASS = IVPASS + 1 01140041
118: WRITE (I02,80001) IVTNUM 01150041
119: GO TO 6161 01160041
120: 26150 IVFAIL = IVFAIL + 1 01170041
121: IVCORR = 1 01180041
122: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 01190041
123: 6161 CONTINUE 01200041
124: IVTNUM = 616 01210041
125: C 01220041
126: C **** TEST 616 **** 01230041
127: C TEST 616 - ZERO BASE TO FIRST POWER 01240041
128: C 01250041
129: IF (ICZERO) 36160, 6160, 36160 01260041
130: 6160 CONTINUE 01270041
131: IVCOMP = 0 ** 1 01280041
132: GO TO 46160 01290041
133: 36160 IVDELE = IVDELE + 1 01300041
134: WRITE (I02,80003) IVTNUM 01310041
135: IF (ICZERO) 46160, 6171, 46160 01320041
136: 46160 IF (IVCOMP) 26160,16160,26160 01330041
137: 16160 IVPASS = IVPASS + 1 01340041
138: WRITE (I02,80001) IVTNUM 01350041
139: GO TO 6171 01360041
140: 26160 IVFAIL = IVFAIL + 1 01370041
141: IVCORR = 0 01380041
142: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 01390041
143: 6171 CONTINUE 01400041
144: IVTNUM = 617 01410041
145: C 01420041
146: C **** TEST 617 **** 01430041
147: C TEST 617 - BASE =1; EXPONENT = 1 01440041
148: C 01450041
149: IF (ICZERO) 36170, 6170, 36170 01460041
150: 6170 CONTINUE 01470041
151: IVCOMP = 1 ** 1 01480041
152: GO TO 46170 01490041
153: 36170 IVDELE = IVDELE + 1 01500041
154: WRITE (I02,80003) IVTNUM 01510041
155: IF (ICZERO) 46170, 6181, 46170 01520041
156: 46170 IF (IVCOMP - 1) 26170,16170,26170 01530041
157: 16170 IVPASS = IVPASS + 1 01540041
158: WRITE (I02,80001) IVTNUM 01550041
159: GO TO 6181 01560041
160: 26170 IVFAIL = IVFAIL + 1 01570041
161: IVCORR = 1 01580041
162: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 01590041
163: 6181 CONTINUE 01600041
164: IVTNUM = 618 01610041
165: C 01620041
166: C **** TEST 618 **** 01630041
167: C TEST 618 - LARGE NUMBER BASE; EXPONENT = 1 01640041
168: C 01650041
169: IF (ICZERO) 36180, 6180, 36180 01660041
170: 6180 CONTINUE 01670041
171: IVCOMP = 32767 ** 1 01680041
172: GO TO 46180 01690041
173: 36180 IVDELE = IVDELE + 1 01700041
174: WRITE (I02,80003) IVTNUM 01710041
175: IF (ICZERO) 46180, 6191, 46180 01720041
176: 46180 IF (IVCOMP - 32767) 26180,16180,26180 01730041
177: 16180 IVPASS = IVPASS + 1 01740041
178: WRITE (I02,80001) IVTNUM 01750041
179: GO TO 6191 01760041
180: 26180 IVFAIL = IVFAIL + 1 01770041
181: IVCORR = 32767 01780041
182: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 01790041
183: 6191 CONTINUE 01800041
184: IVTNUM = 619 01810041
185: C 01820041
186: C **** TEST 619 **** 01830041
187: C TEST 619 - LARGE EXPONENT 01840041
188: C 01850041
189: IF (ICZERO) 36190, 6190, 36190 01860041
190: 6190 CONTINUE 01870041
191: IVCOMP = 1 ** 32767 01880041
192: GO TO 46190 01890041
193: 36190 IVDELE = IVDELE + 1 01900041
194: WRITE (I02,80003) IVTNUM 01910041
195: IF (ICZERO) 46190, 6201, 46190 01920041
196: 46190 IF (IVCOMP - 1) 26190,16190,26190 01930041
197: 16190 IVPASS = IVPASS + 1 01940041
198: WRITE (I02,80001) IVTNUM 01950041
199: GO TO 6201 01960041
200: 26190 IVFAIL = IVFAIL + 1 01970041
201: IVCORR = 1 01980041
202: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 01990041
203: 6201 CONTINUE 02000041
204: IVTNUM = 620 02010041
205: C 02020041
206: C **** TEST 620 **** 02030041
207: C TEST 620 - ZERO BASE; LARGE NUMBER EXPONENT 02040041
208: C 02050041
209: IF (ICZERO) 36200, 6200, 36200 02060041
210: 6200 CONTINUE 02070041
211: IVCOMP = 0 ** 32767 02080041
212: GO TO 46200 02090041
213: 36200 IVDELE = IVDELE + 1 02100041
214: WRITE (I02,80003) IVTNUM 02110041
215: IF (ICZERO) 46200, 6211, 46200 02120041
216: 46200 IF (IVCOMP) 26200,16200,26200 02130041
217: 16200 IVPASS = IVPASS + 1 02140041
218: WRITE (I02,80001) IVTNUM 02150041
219: GO TO 6211 02160041
220: 26200 IVFAIL = IVFAIL + 1 02170041
221: IVCORR = 0 02180041
222: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 02190041
223: 6211 CONTINUE 02200041
224: IVTNUM = 621 02210041
225: C 02220041
226: C **** TEST 621 **** 02230041
227: C TEST 621 -LARGE NUMBER BASE; ZERO EXPONENT 02240041
228: C 02250041
229: IF (ICZERO) 36210, 6210, 36210 02260041
230: 6210 CONTINUE 02270041
231: IVCOMP = 32767 ** 0 02280041
232: GO TO 46210 02290041
233: 36210 IVDELE = IVDELE + 1 02300041
234: WRITE (I02,80003) IVTNUM 02310041
235: IF (ICZERO) 46210, 6221, 46210 02320041
236: 46210 IF (IVCOMP - 1) 26210,16210,26210 02330041
237: 16210 IVPASS = IVPASS + 1 02340041
238: WRITE (I02,80001) IVTNUM 02350041
239: GO TO 6221 02360041
240: 26210 IVFAIL = IVFAIL + 1 02370041
241: IVCORR = 1 02380041
242: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 02390041
243: 6221 CONTINUE 02400041
244: IVTNUM = 622 02410041
245: C 02420041
246: C **** TEST 622 **** 02430041
247: C TEST 622 -EXPONENT IS POWER OF TWO 02440041
248: C 02450041
249: IF (ICZERO) 36220, 6220, 36220 02460041
250: 6220 CONTINUE 02470041
251: IVCOMP = 181 ** 2 02480041
252: GO TO 46220 02490041
253: 36220 IVDELE = IVDELE + 1 02500041
254: WRITE (I02,80003) IVTNUM 02510041
255: IF (ICZERO) 46220, 6231, 46220 02520041
256: 46220 IF (IVCOMP - 32761) 26220,16220,26220 02530041
257: 16220 IVPASS = IVPASS + 1 02540041
258: WRITE (I02,80001) IVTNUM 02550041
259: GO TO 6231 02560041
260: 26220 IVFAIL = IVFAIL + 1 02570041
261: IVCORR = 32761 02580041
262: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 02590041
263: 6231 CONTINUE 02600041
264: IVTNUM = 623 02610041
265: C 02620041
266: C **** TEST 623 **** 02630041
267: C TEST 623 - BASE AND EXPONENT ARE BOTH POWERS OF TWO 02640041
268: C 02650041
269: IF (ICZERO) 36230, 6230, 36230 02660041
270: 6230 CONTINUE 02670041
271: IVCOMP = 2 ** 8 02680041
272: GO TO 46230 02690041
273: 36230 IVDELE = IVDELE + 1 02700041
274: WRITE (I02,80003) IVTNUM 02710041
275: IF (ICZERO) 46230, 6241, 46230 02720041
276: 46230 IF (IVCOMP - 256) 26230,16230,26230 02730041
277: 16230 IVPASS = IVPASS + 1 02740041
278: WRITE (I02,80001) IVTNUM 02750041
279: GO TO 6241 02760041
280: 26230 IVFAIL = IVFAIL + 1 02770041
281: IVCORR = 256 02780041
282: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 02790041
283: 6241 CONTINUE 02800041
284: C 02810041
285: C TESTS 624 AND 625 TEST TO ENSURE EXPONENTIATION OPERATOR IS 02820041
286: C NOT COMMUTATIVE 02830041
287: C 02840041
288: IVTNUM = 624 02850041
289: C 02860041
290: C **** TEST 624 **** 02870041
291: C 02880041
292: IF (ICZERO) 36240, 6240, 36240 02890041
293: 6240 CONTINUE 02900041
294: IVCOMP = 3 ** 9 02910041
295: GO TO 46240 02920041
296: 36240 IVDELE = IVDELE + 1 02930041
297: WRITE (I02,80003) IVTNUM 02940041
298: IF (ICZERO) 46240, 6251, 46240 02950041
299: 46240 IF (IVCOMP - 19683) 26240,16240,26240 02960041
300: 16240 IVPASS = IVPASS + 1 02970041
301: WRITE (I02,80001) IVTNUM 02980041
302: GO TO 6251 02990041
303: 26240 IVFAIL = IVFAIL + 1 03000041
304: IVCORR = 19683 03010041
305: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 03020041
306: 6251 CONTINUE 03030041
307: IVTNUM = 625 03040041
308: C 03050041
309: C **** TEST 625 **** 03060041
310: C 03070041
311: IF (ICZERO) 36250, 6250, 36250 03080041
312: 6250 CONTINUE 03090041
313: IVCOMP = 9 ** 3 03100041
314: GO TO 46250 03110041
315: 36250 IVDELE = IVDELE + 1 03120041
316: WRITE (I02,80003) IVTNUM 03130041
317: IF (ICZERO) 46250, 6261, 46250 03140041
318: 46250 IF (IVCOMP - 729) 26250,16250,26250 03150041
319: 16250 IVPASS = IVPASS + 1 03160041
320: WRITE (I02,80001) IVTNUM 03170041
321: GO TO 6261 03180041
322: 26250 IVFAIL = IVFAIL + 1 03190041
323: IVCORR = 729 03200041
324: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 03210041
325: 6261 CONTINUE 03220041
326: C 03230041
327: C TESTS 626 THROUGH 631 TEST POSITIVE AND NEGATIVE BASES TO POSITIVE03240041
328: C ODD AND EVEN NUMBER POWERS CHECKING THE SIGN03250041
329: C OF THE RESULTS 03260041
330: C 03270041
331: IVTNUM = 626 03280041
332: C 03290041
333: C **** TEST 626 **** 03300041
334: C 03310041
335: IF (ICZERO) 36260, 6260, 36260 03320041
336: 6260 CONTINUE 03330041
337: IVCOMP = 1 ** 2 03340041
338: GO TO 46260 03350041
339: 36260 IVDELE = IVDELE + 1 03360041
340: WRITE (I02,80003) IVTNUM 03370041
341: IF (ICZERO) 46260, 6271, 46260 03380041
342: 46260 IF (IVCOMP - 1) 26260,16260,26260 03390041
343: 16260 IVPASS = IVPASS + 1 03400041
344: WRITE (I02,80001) IVTNUM 03410041
345: GO TO 6271 03420041
346: 26260 IVFAIL = IVFAIL + 1 03430041
347: IVCORR = 1 03440041
348: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 03450041
349: 6271 CONTINUE 03460041
350: IVTNUM = 627 03470041
351: C 03480041
352: C **** TEST 627 **** 03490041
353: C 03500041
354: IF (ICZERO) 36270, 6270, 36270 03510041
355: 6270 CONTINUE 03520041
356: IVCOMP= (-1) ** 2 03530041
357: GO TO 46270 03540041
358: 36270 IVDELE = IVDELE + 1 03550041
359: WRITE (I02,80003) IVTNUM 03560041
360: IF (ICZERO) 46270, 6281, 46270 03570041
361: 46270 IF (IVCOMP - 1) 26270,16270,26270 03580041
362: 16270 IVPASS = IVPASS + 1 03590041
363: WRITE (I02,80001) IVTNUM 03600041
364: GO TO 6281 03610041
365: 26270 IVFAIL = IVFAIL + 1 03620041
366: IVCORR = 1 03630041
367: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 03640041
368: 6281 CONTINUE 03650041
369: IVTNUM = 628 03660041
370: C 03670041
371: C **** TEST 628 **** 03680041
372: C 03690041
373: IF (ICZERO) 36280, 6280, 36280 03700041
374: 6280 CONTINUE 03710041
375: IVCOMP = 7 ** 3 03720041
376: GO TO 46280 03730041
377: 36280 IVDELE = IVDELE + 1 03740041
378: WRITE (I02,80003) IVTNUM 03750041
379: IF (ICZERO) 46280, 6291, 46280 03760041
380: 46280 IF (IVCOMP - 343) 26280,16280,26280 03770041
381: 16280 IVPASS = IVPASS + 1 03780041
382: WRITE (I02,80001) IVTNUM 03790041
383: GO TO 6291 03800041
384: 26280 IVFAIL = IVFAIL + 1 03810041
385: IVCORR = 343 03820041
386: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 03830041
387: 6291 CONTINUE 03840041
388: IVTNUM = 629 03850041
389: C 03860041
390: C **** TEST 629 **** 03870041
391: C 03880041
392: IF (ICZERO) 36290, 6290, 36290 03890041
393: 6290 CONTINUE 03900041
394: IVCOMP = (-7) ** 3 03910041
395: GO TO 46290 03920041
396: 36290 IVDELE = IVDELE + 1 03930041
397: WRITE (I02,80003) IVTNUM 03940041
398: IF (ICZERO) 46290, 6301, 46290 03950041
399: 46290 IF (IVCOMP + 343) 26290,16290,26290 03960041
400: 16290 IVPASS = IVPASS + 1 03970041
401: WRITE (I02,80001) IVTNUM 03980041
402: GO TO 6301 03990041
403: 26290 IVFAIL = IVFAIL + 1 04000041
404: IVCORR = -343 04010041
405: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 04020041
406: 6301 CONTINUE 04030041
407: IVTNUM = 630 04040041
408: C 04050041
409: C **** TEST 630 **** 04060041
410: C 04070041
411: IF (ICZERO) 36300, 6300, 36300 04080041
412: 6300 CONTINUE 04090041
413: IVCOMP = 7 ** 4 04100041
414: GO TO 46300 04110041
415: 36300 IVDELE = IVDELE + 1 04120041
416: WRITE (I02,80003) IVTNUM 04130041
417: IF (ICZERO) 46300, 6311, 46300 04140041
418: 46300 IF (IVCOMP - 2401) 26300,16300,26300 04150041
419: 16300 IVPASS = IVPASS + 1 04160041
420: WRITE (I02,80001) IVTNUM 04170041
421: GO TO 6311 04180041
422: 26300 IVFAIL = IVFAIL + 1 04190041
423: IVCORR = 2401 04200041
424: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 04210041
425: 6311 CONTINUE 04220041
426: IVTNUM = 631 04230041
427: C 04240041
428: C **** TEST 631 **** 04250041
429: C 04260041
430: IF (ICZERO) 36310, 6310, 36310 04270041
431: 6310 CONTINUE 04280041
432: IVCOMP = (-7) ** 4 04290041
433: GO TO 46310 04300041
434: 36310 IVDELE = IVDELE + 1 04310041
435: WRITE (I02,80003) IVTNUM 04320041
436: IF (ICZERO) 46310, 6321, 46310 04330041
437: 46310 IF (IVCOMP - 2401) 26310,16310,26310 04340041
438: 16310 IVPASS = IVPASS + 1 04350041
439: WRITE (I02,80001) IVTNUM 04360041
440: GO TO 6321 04370041
441: 26310 IVFAIL = IVFAIL + 1 04380041
442: IVCORR = 2401 04390041
443: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 04400041
444: 6321 CONTINUE 04410041
445: IVTNUM = 632 04420041
446: C 04430041
447: C **** TEST 632 **** 04440041
448: C TEST 632 - SMALL NUMBER BASE; ZERO EXPONENT 04450041
449: C 04460041
450: IF (ICZERO) 36320, 6320, 36320 04470041
451: 6320 CONTINUE 04480041
452: IVON01 = 1 04490041
453: IVCOMP = IVON01 ** 1 04500041
454: GO TO 46320 04510041
455: 36320 IVDELE = IVDELE + 1 04520041
456: WRITE (I02,80003) IVTNUM 04530041
457: IF (ICZERO) 46320, 6331, 46320 04540041
458: 46320 IF (IVCOMP - 1) 26320,16320,26320 04550041
459: 16320 IVPASS = IVPASS + 1 04560041
460: WRITE (I02,80001) IVTNUM 04570041
461: GO TO 6331 04580041
462: 26320 IVFAIL = IVFAIL + 1 04590041
463: IVCORR = 1 04600041
464: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 04610041
465: 6331 CONTINUE 04620041
466: IVTNUM = 633 04630041
467: C 04640041
468: C **** TEST 633 **** 04650041
469: C TEST 633 - ZERO BASE TO FIRST POWER 04660041
470: C 04670041
471: IF (ICZERO) 36330, 6330, 36330 04680041
472: 6330 CONTINUE 04690041
473: IVON01 = 0 04700041
474: IVCOMP = IVON01 ** 1 04710041
475: GO TO 46330 04720041
476: 36330 IVDELE = IVDELE + 1 04730041
477: WRITE (I02,80003) IVTNUM 04740041
478: IF (ICZERO) 46330, 6341, 46330 04750041
479: 46330 IF (IVCOMP) 26330,16330,26330 04760041
480: 16330 IVPASS = IVPASS + 1 04770041
481: WRITE (I02,80001) IVTNUM 04780041
482: GO TO 6341 04790041
483: 26330 IVFAIL = IVFAIL + 1 04800041
484: IVCORR = 0 04810041
485: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 04820041
486: 6341 CONTINUE 04830041
487: IVTNUM = 634 04840041
488: C 04850041
489: C **** TEST 634 **** 04860041
490: C TEST 634 - BASE =1; EXPONENT = 1 04870041
491: C 04880041
492: IF (ICZERO) 36340, 6340, 36340 04890041
493: 6340 CONTINUE 04900041
494: IVON01 = 1 04910041
495: IVCOMP = IVON01 ** 1 04920041
496: GO TO 46340 04930041
497: 36340 IVDELE = IVDELE + 1 04940041
498: WRITE (I02,80003) IVTNUM 04950041
499: IF (ICZERO) 46340, 6351, 46340 04960041
500: 46340 IF (IVCOMP - 1) 26340,16340,26340 04970041
501: 16340 IVPASS = IVPASS + 1 04980041
502: WRITE (I02,80001) IVTNUM 04990041
503: GO TO 6351 05000041
504: 26340 IVFAIL = IVFAIL + 1 05010041
505: IVCORR = 1 05020041
506: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 05030041
507: 6351 CONTINUE 05040041
508: IVTNUM = 635 05050041
509: C 05060041
510: C **** TEST 635 **** 05070041
511: C TEST 635 - LARGE EXPONENT 05080041
512: C 05090041
513: IF (ICZERO) 36350, 6350, 36350 05100041
514: 6350 CONTINUE 05110041
515: IVON01 = 1 05120041
516: IVCOMP = IVON01 ** 32767 05130041
517: GO TO 46350 05140041
518: 36350 IVDELE = IVDELE + 1 05150041
519: WRITE (I02,80003) IVTNUM 05160041
520: IF (ICZERO) 46350, 6361, 46350 05170041
521: 46350 IF (IVCOMP - 1) 26350,16350,26350 05180041
522: 16350 IVPASS = IVPASS + 1 05190041
523: WRITE (I02,80001) IVTNUM 05200041
524: GO TO 6361 05210041
525: 26350 IVFAIL = IVFAIL + 1 05220041
526: IVCORR = 1 05230041
527: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 05240041
528: 6361 CONTINUE 05250041
529: IVTNUM = 636 05260041
530: C 05270041
531: C **** TEST 636 **** 05280041
532: C TEST 636 - LARGE NUMBER BASE; EXPONENT = 1 05290041
533: C 05300041
534: IF (ICZERO) 36360, 6360, 36360 05310041
535: 6360 CONTINUE 05320041
536: IVON01 = 32767 05330041
537: IVCOMP = IVON01 ** 1 05340041
538: GO TO 46360 05350041
539: 36360 IVDELE = IVDELE + 1 05360041
540: WRITE (I02,80003) IVTNUM 05370041
541: IF (ICZERO) 46360, 6371, 46360 05380041
542: 46360 IF (IVCOMP - 32767) 26360,16360,26360 05390041
543: 16360 IVPASS = IVPASS + 1 05400041
544: WRITE (I02,80001) IVTNUM 05410041
545: GO TO 6371 05420041
546: 26360 IVFAIL = IVFAIL + 1 05430041
547: IVCORR = 32767 05440041
548: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 05450041
549: 6371 CONTINUE 05460041
550: IVTNUM = 637 05470041
551: C 05480041
552: C **** TEST 637 **** 05490041
553: C TEST 637 - ZERO BASE; LARGE NUMBER EXPONENT 05500041
554: C 05510041
555: IF (ICZERO) 36370, 6370, 36370 05520041
556: 6370 CONTINUE 05530041
557: IVON01 = 0 05540041
558: IVCOMP = IVON01 ** 32767 05550041
559: GO TO 46370 05560041
560: 36370 IVDELE = IVDELE + 1 05570041
561: WRITE (I02,80003) IVTNUM 05580041
562: IF (ICZERO) 46370, 6381, 46370 05590041
563: 46370 IF (IVCOMP) 26370,16370,26370 05600041
564: 16370 IVPASS = IVPASS + 1 05610041
565: WRITE (I02,80001) IVTNUM 05620041
566: GO TO 6381 05630041
567: 26370 IVFAIL = IVFAIL +1 05640041
568: IVCORR = 0 05650041
569: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 05660041
570: 6381 CONTINUE 05670041
571: IVTNUM = 638 05680041
572: C 05690041
573: C **** TEST 638 **** 05700041
574: C TEST 638 -LARGE NUMBER BASE; ZERO EXPONENT 05710041
575: C 05720041
576: IF (ICZERO) 36380, 6380, 36380 05730041
577: 6380 CONTINUE 05740041
578: IVON01 = 32767 05750041
579: IVCOMP = IVON01 ** 0 05760041
580: GO TO 46380 05770041
581: 36380 IVDELE = IVDELE + 1 05780041
582: WRITE (I02,80003) IVTNUM 05790041
583: IF (ICZERO) 46380, 6391, 46380 05800041
584: 46380 IF (IVCOMP - 1) 26380,16380,26380 05810041
585: 16380 IVPASS = IVPASS + 1 05820041
586: WRITE (I02,80001) IVTNUM 05830041
587: GO TO 6391 05840041
588: 26380 IVFAIL = IVFAIL + 1 05850041
589: IVCORR = 1 05860041
590: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 05870041
591: 6391 CONTINUE 05880041
592: IVTNUM = 639 05890041
593: C 05900041
594: C **** TEST 639 **** 05910041
595: C TEST 639 -EXPONENT IS POWER OF TWO 05920041
596: C 05930041
597: IF (ICZERO) 36390, 6390, 36390 05940041
598: 6390 CONTINUE 05950041
599: IVON01 = 181 05960041
600: IVCOMP = IVON01 ** 2 05970041
601: GO TO 46390 05980041
602: 36390 IVDELE = IVDELE + 1 05990041
603: WRITE (I02,80003) IVTNUM 06000041
604: IF (ICZERO) 46390, 6401, 46390 06010041
605: 46390 IF (IVCOMP - 32761) 26390,16390,26390 06020041
606: 16390 IVPASS = IVPASS + 1 06030041
607: WRITE (I02,80001) IVTNUM 06040041
608: GO TO 6401 06050041
609: 26390 IVFAIL = IVFAIL + 1 06060041
610: IVCORR = 32761 06070041
611: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 06080041
612: 6401 CONTINUE 06090041
613: IVTNUM = 640 06100041
614: C 06110041
615: C **** TEST 640 **** 06120041
616: C TEST 640 - BASE AND EXPONENT ARE BOTH POWERS OF TWO 06130041
617: C 06140041
618: IF (ICZERO) 36400, 6400, 36400 06150041
619: 6400 CONTINUE 06160041
620: IVON01 = 2 06170041
621: IVCOMP = IVON01 ** 8 06180041
622: GO TO 46400 06190041
623: 36400 IVDELE = IVDELE + 1 06200041
624: WRITE (I02,80003) IVTNUM 06210041
625: IF (ICZERO) 46400, 6411, 46400 06220041
626: 46400 IF (IVCOMP - 256) 26400,16400,26400 06230041
627: 16400 IVPASS = IVPASS + 1 06240041
628: WRITE (I02,80001) IVTNUM 06250041
629: GO TO 6411 06260041
630: 26400 IVFAIL = IVFAIL + 1 06270041
631: IVCORR = 256 06280041
632: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 06290041
633: 6411 CONTINUE 06300041
634: C 06310041
635: C TESTS 641 AND 642 TEST TO ENSURE EXPONENTIATION OPERATOR IS 06320041
636: C NOT COMMUTATIVE 06330041
637: C 06340041
638: IVTNUM = 641 06350041
639: C 06360041
640: C **** TEST 641 **** 06370041
641: C 06380041
642: IF (ICZERO) 36410, 6410, 36410 06390041
643: 6410 CONTINUE 06400041
644: IVON01 = 3 06410041
645: IVCOMP = IVON01 ** 9 06420041
646: GO TO 46410 06430041
647: 36410 IVDELE = IVDELE + 1 06440041
648: WRITE (I02,80003) IVTNUM 06450041
649: IF (ICZERO) 46410, 6421, 46410 06460041
650: 46410 IF (IVCOMP - 19683) 26410,16410,26410 06470041
651: 16410 IVPASS = IVPASS + 1 06480041
652: WRITE (I02,80001) IVTNUM 06490041
653: GO TO 6421 06500041
654: 26410 IVFAIL = IVFAIL + 1 06510041
655: IVCORR = 19683 06520041
656: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 06530041
657: 6421 CONTINUE 06540041
658: IVTNUM = 642 06550041
659: C 06560041
660: C **** TEST 642 **** 06570041
661: C 06580041
662: IF (ICZERO) 36420, 6420, 36420 06590041
663: 6420 CONTINUE 06600041
664: IVON01 = 9 06610041
665: IVCOMP = IVON01 ** 3 06620041
666: GO TO 46420 06630041
667: 36420 IVDELE = IVDELE + 1 06640041
668: WRITE (I02,80003) IVTNUM 06650041
669: IF (ICZERO) 46420, 6431, 46420 06660041
670: 46420 IF (IVCOMP - 729) 26420,16420,26420 06670041
671: 16420 IVPASS = IVPASS + 1 06680041
672: WRITE (I02,80001) IVTNUM 06690041
673: GO TO 6431 06700041
674: 26420 IVFAIL = IVFAIL + 1 06710041
675: IVCORR = 729 06720041
676: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 06730041
677: 6431 CONTINUE 06740041
678: C 06750041
679: C TESTS 643 THROUGH 648 TEST POSITIVE AND NEGATIVE BASES TO POSITIVE06760041
680: C ODD AND EVEN NUMBER POWERS CHECKING THE SIGN06770041
681: C OF THE RESULTS 06780041
682: C 06790041
683: IVTNUM = 643 06800041
684: C 06810041
685: C **** TEST 643 **** 06820041
686: C 06830041
687: IF (ICZERO) 36430, 6430, 36430 06840041
688: 6430 CONTINUE 06850041
689: IVON01 = 1 06860041
690: IVCOMP = IVON01 ** 2 06870041
691: GO TO 46430 06880041
692: 36430 IVDELE = IVDELE + 1 06890041
693: WRITE (I02,80003) IVTNUM 06900041
694: IF (ICZERO) 46430, 6441, 46430 06910041
695: 46430 IF (IVCOMP - 1) 26430,16430,26430 06920041
696: 16430 IVPASS = IVPASS + 1 06930041
697: WRITE (I02,80001) IVTNUM 06940041
698: GO TO 6441 06950041
699: 26430 IVFAIL = IVFAIL + 1 06960041
700: IVCORR = 1 06970041
701: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 06980041
702: 6441 CONTINUE 06990041
703: IVTNUM = 644 07000041
704: C 07010041
705: C **** TEST 644 **** 07020041
706: C 07030041
707: IF (ICZERO) 36440, 6440, 36440 07040041
708: 6440 CONTINUE 07050041
709: IVON01 = -1 07060041
710: IVCOMP = IVON01 ** 2 07070041
711: GO TO 46440 07080041
712: 36440 IVDELE = IVDELE + 1 07090041
713: WRITE (I02,80003) IVTNUM 07100041
714: IF (ICZERO) 46440, 6451, 46440 07110041
715: 46440 IF (IVCOMP - 1) 26440,16440,26440 07120041
716: 16440 IVPASS = IVPASS + 1 07130041
717: WRITE (I02,80001) IVTNUM 07140041
718: GO TO 6451 07150041
719: 26440 IVFAIL = IVFAIL + 1 07160041
720: IVCORR = 1 07170041
721: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 07180041
722: 6451 CONTINUE 07190041
723: IVTNUM = 645 07200041
724: C 07210041
725: C **** TEST 645 **** 07220041
726: C 07230041
727: IF (ICZERO) 36450, 6450, 36450 07240041
728: 6450 CONTINUE 07250041
729: IVON01 = 7 07260041
730: IVCOMP = IVON01 ** 3 07270041
731: GO TO 46450 07280041
732: 36450 IVDELE = IVDELE + 1 07290041
733: WRITE (I02,80003) IVTNUM 07300041
734: IF (ICZERO) 46450, 6461, 46450 07310041
735: 46450 IF (IVCOMP - 343) 26450,16450,26450 07320041
736: 16450 IVPASS = IVPASS + 1 07330041
737: WRITE (I02,80001) IVTNUM 07340041
738: GO TO 6461 07350041
739: 26450 IVFAIL = IVFAIL + 1 07360041
740: IVCORR = 343 07370041
741: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 07380041
742: 6461 CONTINUE 07390041
743: IVTNUM = 646 07400041
744: C 07410041
745: C **** TEST 646 **** 07420041
746: C 07430041
747: IF (ICZERO) 36460, 6460, 36460 07440041
748: 6460 CONTINUE 07450041
749: IVON01 = -7 07460041
750: IVCOMP = IVON01 ** 3 07470041
751: GO TO 46460 07480041
752: 36460 IVDELE = IVDELE + 1 07490041
753: WRITE (I02,80003) IVTNUM 07500041
754: IF (ICZERO) 46460, 6471, 46460 07510041
755: 46460 IF (IVCOMP + 343) 26460,16460,26460 07520041
756: 16460 IVPASS = IVPASS + 1 07530041
757: WRITE (I02,80001) IVTNUM 07540041
758: GO TO 6471 07550041
759: 26460 IVFAIL = IVFAIL + 1 07560041
760: IVCORR = -343 07570041
761: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 07580041
762: 6471 CONTINUE 07590041
763: IVTNUM = 647 07600041
764: C 07610041
765: C **** TEST 647 **** 07620041
766: C 07630041
767: IF (ICZERO) 36470, 6470, 36470 07640041
768: 6470 CONTINUE 07650041
769: IVON01 = 7 07660041
770: IVCOMP = IVON01 ** 4 07670041
771: GO TO 46470 07680041
772: 36470 IVDELE = IVDELE + 1 07690041
773: WRITE (I02,80003) IVTNUM 07700041
774: IF (ICZERO) 46470, 6481, 46470 07710041
775: 46470 IF (IVCOMP - 2401) 26470,16470,26470 07720041
776: 16470 IVPASS = IVPASS + 1 07730041
777: WRITE (I02,80001) IVTNUM 07740041
778: GO TO 6481 07750041
779: 26470 IVFAIL = IVFAIL + 1 07760041
780: IVCORR = 2401 07770041
781: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 07780041
782: 6481 CONTINUE 07790041
783: IVTNUM = 648 07800041
784: C 07810041
785: C **** TEST 648 **** 07820041
786: C 07830041
787: IF (ICZERO) 36480, 6480, 36480 07840041
788: 6480 CONTINUE 07850041
789: IVON01 = -7 07860041
790: IVCOMP = IVON01 ** 4 07870041
791: GO TO 46480 07880041
792: 36480 IVDELE = IVDELE + 1 07890041
793: WRITE (I02,80003) IVTNUM 07900041
794: IF (ICZERO) 46480, 6491, 46480 07910041
795: 46480 IF (IVCOMP - 2401) 26480,16480,26480 07920041
796: 16480 IVPASS = IVPASS + 1 07930041
797: WRITE (I02,80001) IVTNUM 07940041
798: GO TO 6491 07950041
799: 26480 IVFAIL = IVFAIL + 1 07960041
800: IVCORR = 2401 07970041
801: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 07980041
802: 6491 CONTINUE 07990041
803: C *** END OF TESTS *** 08000041
804: C 08010041
805: C WRITE PAGE FOOTINGS AND RUN SUMMARIES 08020041
806: 99999 CONTINUE 08030041
807: WRITE (I02,90002) 08040041
808: WRITE (I02,90006) 08050041
809: WRITE (I02,90002) 08060041
810: WRITE (I02,90002) 08070041
811: WRITE (I02,90007) 08080041
812: WRITE (I02,90002) 08090041
813: WRITE (I02,90008) IVFAIL 08100041
814: WRITE (I02,90009) IVPASS 08110041
815: WRITE (I02,90010) IVDELE 08120041
816: C 08130041
817: C 08140041
818: C TERMINATE ROUTINE EXECUTION 08150041
819: STOP 08160041
820: C 08170041
821: C FORMAT STATEMENTS FOR PAGE HEADERS 08180041
822: 90000 FORMAT (1H1) 08190041
823: 90002 FORMAT (1H ) 08200041
824: 90001 FORMAT (1H ,10X,34HFORTRAN COMPILER VALIDATION SYSTEM) 08210041
825: 90003 FORMAT (1H ,21X,11HVERSION 1.0) 08220041
826: 90004 FORMAT (1H ,10X,38HFOR OFFICIAL USE ONLY - COPYRIGHT 1978) 08230041
827: 90005 FORMAT (1H ,5X,4HTEST,5X,9HPASS/FAIL, 5X,8HCOMPUTED,8X,7HCORRECT) 08240041
828: 90006 FORMAT (1H ,5X,46H----------------------------------------------) 08250041
829: 90011 FORMAT (1H ,18X,17HSUBSET LEVEL TEST) 08260041
830: C 08270041
831: C FORMAT STATEMENTS FOR RUN SUMMARIES 08280041
832: 90008 FORMAT (1H ,15X,I5,19H ERRORS ENCOUNTERED) 08290041
833: 90009 FORMAT (1H ,15X,I5,13H TESTS PASSED) 08300041
834: 90010 FORMAT (1H ,15X,I5,14H TESTS DELETED) 08310041
835: C 08320041
836: C FORMAT STATEMENTS FOR TEST RESULTS 08330041
837: 80001 FORMAT (1H ,4X,I5,7X,4HPASS) 08340041
838: 80002 FORMAT (1H ,4X,I5,7X,4HFAIL) 08350041
839: 80003 FORMAT (1H ,4X,I5,7X,7HDELETED) 08360041
840: 80004 FORMAT (1H ,4X,I5,7X,4HFAIL,10X,I6,9X,I6) 08370041
841: 80005 FORMAT (1H ,4X,I5,7X,4HFAIL,4X,E12.5,3X,E12.5) 08380041
842: C 08390041
843: 90007 FORMAT (1H ,20X,20HEND OF PROGRAM FM041) 08400041
844: END 08410041
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.