|
|
1.1 root 1: C COMMENT SECTION 00010006
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 00020006
6: C FM006 00030006
7: C 00040006
8: C THIS ROUTINE TESTS ARITHMETIC ASSIGNMENT STATEMENTS OF 00050006
9: C THE FORM 00060006
10: C INTEGER VARIABLE = INTEGER CONSTANT 00070006
11: C INTEGER VARIABLE = INTEGER VARIABLE 00080006
12: C THE INTEGER CONSTANT MAY BE UNSIGNED, POSITIVE OR NEGATIVE. 00090006
13: C 00100006
14: C AN INTEGER DATUM IS ALWAYS AN EXACT REPRESENTATION OF AN 00110006
15: C INTEGER VALUE. IT MAY ASSUME POSITIVE, NEGATIVE AND ZERO VALUES. 00120006
16: C IT MAY ONLY ASSUME INTEGRAL VALUES. 00130006
17: C 00140006
18: C AN INTEGER CONSTANT IS WRITTEN AS A NONEMPTY STRING OF DIGITS.00150006
19: C THE CONSTANT IS THE DIGIT STRING INTERPRETED AS A DECIMAL NUMBER. 00160006
20: C 00170006
21: C THIS ROUTINE ALSO CONTAINS TESTS WHICH CHECK ON THE USE OF 00180006
22: C AT LEAST 16 BITS FOR REPRESENTING INTEGER DATA VALUES. THE 00190006
23: C CONSTANT VALUES 32767 AND -32766 ARE USED IN THESE TESTS. 00200006
24: C 00210006
25: C REFERENCES 00220006
26: C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, 00230006
27: C X3.9-1978 00240006
28: C 00250006
29: C SECTION 4.3, INTEGER TYPE 00260006
30: C SECTION 4.3.1, INTEGER CONSTANT 00270006
31: C SECTION 10.1, ARITHMETIC ASSIGNMENT STATEMENTS 00280006
32: C 00290006
33: C 00300006
34: C ********************************************************** 00310006
35: C 00320006
36: C A COMPILER VALIDATION SYSTEM FOR THE FORTRAN LANGUAGE 00330006
37: C BASED ON SPECIFICATIONS AS DEFINED IN AMERICAN NATIONAL STANDARD 00340006
38: C PROGRAMMING LANGUAGE FORTRAN X3.9-1978, HAS BEEN DEVELOPED BY THE 00350006
39: C FEDERAL COBOL COMPILER TESTING SERVICE. THE FORTRAN COMPILER 00360006
40: C VALIDATION SYSTEM (FCVS) CONSISTS OF AUDIT ROUTINES, THEIR RELATED00370006
41: C DATA, AND AN EXECUTIVE SYSTEM. EACH AUDIT ROUTINE IS A FORTRAN 00380006
42: C PROGRAM, SUBPROGRAM OR FUNCTION WHICH INCLUDES TESTS OF SPECIFIC 00390006
43: C LANGUAGE ELEMENTS AND SUPPORTING PROCEDURES INDICATING THE RESULT 00400006
44: C OF EXECUTING THESE TESTS. 00410006
45: C 00420006
46: C THIS PARTICULAR PROGRAM/SUBPROGRAM/FUNCTION CONTAINS FEATURES 00430006
47: C FOUND ONLY IN THE SUBSET AS DEFINED IN X3.9-1978. 00440006
48: C 00450006
49: C SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO - 00460006
50: C 00470006
51: C DEPARTMENT OF THE NAVY 00480006
52: C FEDERAL COBOL COMPILER TESTING SERVICE 00490006
53: C WASHINGTON, D.C. 20376 00500006
54: C 00510006
55: C ********************************************************** 00520006
56: C 00530006
57: C 00540006
58: C 00550006
59: C INITIALIZATION SECTION 00560006
60: C 00570006
61: C INITIALIZE CONSTANTS 00580006
62: C ************** 00590006
63: C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. 00600006
64: I01 = 5 00610006
65: C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. 00620006
66: I02 = 6 00630006
67: C SYSTEM ENVIRONMENT SECTION 00640006
68: C 00650006
69: I01 = 5 00660006
70: C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 00670006
71: C (UNIT NUMBER FOR CARD READER). 00680006
72: CX011 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-011 CONTROL CARD. 00690006
73: C THE CX011 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL 00700006
74: C FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX010 ABOVE. 00710006
75: C 00720006
76: I02 = 6 00730006
77: C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02 = 6 00740006
78: C (UNIT NUMBER FOR PRINTER). 00750006
79: CX021 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-021 CONTROL CARD. 00760006
80: C THE CX021 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL 00770006
81: C FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX020 ABOVE. 00780006
82: C 00790006
83: IVPASS=0 00800006
84: IVFAIL=0 00810006
85: IVDELE=0 00820006
86: ICZERO=0 00830006
87: C 00840006
88: C WRITE PAGE HEADERS 00850006
89: WRITE (I02,90000) 00860006
90: WRITE (I02,90001) 00870006
91: WRITE (I02,90002) 00880006
92: WRITE (I02, 90002) 00890006
93: WRITE (I02,90003) 00900006
94: WRITE (I02,90002) 00910006
95: WRITE (I02,90004) 00920006
96: WRITE (I02,90002) 00930006
97: WRITE (I02,90011) 00940006
98: WRITE (I02,90002) 00950006
99: WRITE (I02,90002) 00960006
100: WRITE (I02,90005) 00970006
101: WRITE (I02,90006) 00980006
102: WRITE (I02,90002) 00990006
103: C TEST SECTION 01000006
104: C 01010006
105: C ARITHMETIC ASSIGNMENT STATEMENT 01020006
106: C 01030006
107: C TEST 50 THROUGH TEST 61 CONTAIN STATEMENT OF FORM 01040006
108: C INTEGER VARIABLE = INTEGER CONSTANT 01050006
109: C 01060006
110: C TESTS 50 THROUGH 53 CONTAIN UNSIGNED INTEGER CONSTANT. 01070006
111: C 01080006
112: 501 CONTINUE 01090006
113: IVTNUM = 50 01100006
114: C 01110006
115: C **** TEST 50 **** 01120006
116: C 01130006
117: IF (ICZERO) 30500, 500, 30500 01140006
118: 500 CONTINUE 01150006
119: IVCOMP=3 01160006
120: GO TO 40500 01170006
121: 30500 IVDELE = IVDELE + 1 01180006
122: WRITE (I02,80003) IVTNUM 01190006
123: IF (ICZERO) 40500, 511, 40500 01200006
124: 40500 IF (IVCOMP - 3) 20500, 10500, 20500 01210006
125: 10500 IVPASS = IVPASS + 1 01220006
126: WRITE (I02,80001) IVTNUM 01230006
127: GO TO 511 01240006
128: 20500 IVFAIL = IVFAIL + 1 01250006
129: IVCORR = 3 01260006
130: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 01270006
131: 511 CONTINUE 01280006
132: IVTNUM = 51 01290006
133: C 01300006
134: C **** TEST 51 **** 01310006
135: C 01320006
136: IF (ICZERO) 30510, 510, 30510 01330006
137: 510 CONTINUE 01340006
138: IVCOMP = 76 01350006
139: GO TO 40510 01360006
140: 30510 IVDELE = IVDELE + 1 01370006
141: WRITE (I02,80003) IVTNUM 01380006
142: IF (ICZERO) 40510, 521, 40510 01390006
143: 40510 IF (IVCOMP - 76) 20510, 10510, 20510 01400006
144: 10510 IVPASS = IVPASS + 1 01410006
145: WRITE (I02,80001) IVTNUM 01420006
146: GO TO 521 01430006
147: 20510 IVFAIL = IVFAIL + 1 01440006
148: IVCORR = 76 01450006
149: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 01460006
150: 521 CONTINUE 01470006
151: IVTNUM = 52 01480006
152: C 01490006
153: C **** TEST 52 **** 01500006
154: C 01510006
155: IF (ICZERO) 30520, 520, 30520 01520006
156: 520 CONTINUE 01530006
157: IVCOMP = 587 01540006
158: GO TO 40520 01550006
159: 30520 IVDELE = IVDELE + 1 01560006
160: WRITE (I02,80003) IVTNUM 01570006
161: IF (ICZERO) 40520, 531, 40520 01580006
162: 40520 IF (IVCOMP - 587) 20520, 10520, 20520 01590006
163: 10520 IVPASS = IVPASS + 1 01600006
164: WRITE (I02,80001) IVTNUM 01610006
165: GO TO 531 01620006
166: 20520 IVFAIL = IVFAIL + 1 01630006
167: IVCORR = 587 01640006
168: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 01650006
169: 531 CONTINUE 01660006
170: IVTNUM = 53 01670006
171: C 01680006
172: C **** TEST 53 **** 01690006
173: C 01700006
174: IF (ICZERO) 30530, 530, 30530 01710006
175: 530 CONTINUE 01720006
176: IVCOMP = 9999 01730006
177: GO TO 40530 01740006
178: 30530 IVDELE = IVDELE + 1 01750006
179: WRITE (I02,80003) IVTNUM 01760006
180: IF (ICZERO) 40530, 541, 40530 01770006
181: 40530 IF (IVCOMP - 9999) 20530, 10530, 20530 01780006
182: 10530 IVPASS = IVPASS + 1 01790006
183: WRITE (I02,80001) IVTNUM 01800006
184: GO TO 541 01810006
185: 20530 IVFAIL = IVFAIL + 1 01820006
186: IVCORR = 9999 01830006
187: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 01840006
188: C 01850006
189: C TESTS 54 THROUGH 57 CONTAIN POSITIVE SIGNED INTEGERS 01860006
190: C 01870006
191: 541 CONTINUE 01880006
192: IVTNUM = 54 01890006
193: C 01900006
194: C **** TEST 54 **** 01910006
195: C 01920006
196: IF (ICZERO) 30540, 540, 30540 01930006
197: 540 CONTINUE 01940006
198: IVCOMP = +3 01950006
199: GO TO 40540 01960006
200: 30540 IVDELE = IVDELE + 1 01970006
201: WRITE (I02,80003) IVTNUM 01980006
202: IF (ICZERO) 40540, 551, 40540 01990006
203: 40540 IF (IVCOMP - 3) 20540, 10540, 20540 02000006
204: 10540 IVPASS = IVPASS + 1 02010006
205: WRITE (I02,80001) IVTNUM 02020006
206: GO TO 551 02030006
207: 20540 IVFAIL = IVFAIL + 1 02040006
208: IVCORR = 3 02050006
209: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 02060006
210: 551 CONTINUE 02070006
211: IVTNUM = 55 02080006
212: C 02090006
213: C **** TEST 55 **** 02100006
214: C 02110006
215: IF (ICZERO) 30550, 550, 30550 02120006
216: 550 CONTINUE 02130006
217: IVCOMP = +76 02140006
218: GO TO 40550 02150006
219: 30550 IVDELE = IVDELE + 1 02160006
220: WRITE (I02,80003) IVTNUM 02170006
221: IF (ICZERO) 40550, 561, 40550 02180006
222: 40550 IF (IVCOMP - 76) 20550, 10550, 20550 02190006
223: 10550 IVPASS = IVPASS + 1 02200006
224: WRITE (I02,80001) IVTNUM 02210006
225: GO TO 561 02220006
226: 20550 IVFAIL = IVFAIL + 1 02230006
227: IVCORR = 76 02240006
228: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 02250006
229: 561 CONTINUE 02260006
230: IVTNUM = 56 02270006
231: C 02280006
232: C **** TEST 56 **** 02290006
233: C 02300006
234: IF (ICZERO) 30560, 560, 30560 02310006
235: 560 CONTINUE 02320006
236: IVCOMP = +587 02330006
237: GO TO 40560 02340006
238: 30560 IVDELE = IVDELE + 1 02350006
239: WRITE (I02,80003) IVTNUM 02360006
240: IF (ICZERO) 40560, 571, 40560 02370006
241: 40560 IF (IVCOMP - 587) 20560, 10560, 20560 02380006
242: 10560 IVPASS = IVPASS + 1 02390006
243: WRITE (I02,80001) IVTNUM 02400006
244: GO TO 571 02410006
245: 20560 IVFAIL = IVFAIL + 1 02420006
246: IVCORR = 587 02430006
247: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 02440006
248: 571 CONTINUE 02450006
249: IVTNUM = 57 02460006
250: C 02470006
251: C **** TEST 57 **** 02480006
252: C 02490006
253: IF (ICZERO) 30570, 570, 30570 02500006
254: 570 CONTINUE 02510006
255: IVCOMP = +9999 02520006
256: GO TO 40570 02530006
257: 30570 IVDELE = IVDELE + 1 02540006
258: WRITE (I02,80003) IVTNUM 02550006
259: IF (ICZERO) 40570, 581, 40570 02560006
260: 40570 IF (IVCOMP - 9999) 20570, 10570, 20570 02570006
261: 10570 IVPASS = IVPASS + 1 02580006
262: WRITE (I02,80001) IVTNUM 02590006
263: GO TO 581 02600006
264: 20570 IVFAIL = IVFAIL + 1 02610006
265: IVCORR = 9999 02620006
266: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 02630006
267: C 02640006
268: C TESTS 58 THROUGH 61 CONTAIN SIGNED NEGATIVE INTEGERS 02650006
269: C 02660006
270: 581 CONTINUE 02670006
271: IVTNUM = 58 02680006
272: C 02690006
273: C **** TEST 58 **** 02700006
274: C 02710006
275: IF (ICZERO) 30580, 580, 30580 02720006
276: 580 CONTINUE 02730006
277: IVCOMP = -3 02740006
278: GO TO 40580 02750006
279: 30580 IVDELE = IVDELE + 1 02760006
280: WRITE (I02,80003) IVTNUM 02770006
281: IF (ICZERO) 40580, 591, 40580 02780006
282: 40580 IF (IVCOMP + 3) 20580, 10580, 20580 02790006
283: 10580 IVPASS = IVPASS + 1 02800006
284: WRITE (I02,80001) IVTNUM 02810006
285: GO TO 591 02820006
286: 20580 IVFAIL = IVFAIL + 1 02830006
287: IVCORR = -3 02840006
288: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 02850006
289: 591 CONTINUE 02860006
290: IVTNUM = 59 02870006
291: C 02880006
292: C **** TEST 59 **** 02890006
293: C 02900006
294: IF (ICZERO) 30590, 590, 30590 02910006
295: 590 CONTINUE 02920006
296: IVCOMP = -76 02930006
297: GO TO 40590 02940006
298: 30590 IVDELE = IVDELE + 1 02950006
299: WRITE (I02,80003) IVTNUM 02960006
300: IF (ICZERO) 40590, 601, 40590 02970006
301: 40590 IF (IVCOMP + 76) 20590, 10590, 20590 02980006
302: 10590 IVPASS = IVPASS + 1 02990006
303: WRITE (I02,80001) IVTNUM 03000006
304: GO TO 601 03010006
305: 20590 IVFAIL = IVFAIL + 1 03020006
306: IVCORR = -76 03030006
307: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 03040006
308: 601 CONTINUE 03050006
309: IVTNUM = 60 03060006
310: C 03070006
311: C **** TEST 60 **** 03080006
312: C 03090006
313: IF (ICZERO) 30600, 600, 30600 03100006
314: 600 CONTINUE 03110006
315: IVCOMP = -587 03120006
316: GO TO 40600 03130006
317: 30600 IVDELE = IVDELE + 1 03140006
318: WRITE (I02,80003) IVTNUM 03150006
319: IF (ICZERO) 40600, 611, 40600 03160006
320: 40600 IF (IVCOMP + 587) 20600,10600,20600 03170006
321: 10600 IVPASS = IVPASS + 1 03180006
322: WRITE (I02,80001) IVTNUM 03190006
323: GO TO 611 03200006
324: 20600 IVFAIL = IVFAIL + 1 03210006
325: IVCORR = -587 03220006
326: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 03230006
327: 611 CONTINUE 03240006
328: IVTNUM = 61 03250006
329: C 03260006
330: C **** TEST 61 **** 03270006
331: C 03280006
332: IF (ICZERO) 30610, 610, 30610 03290006
333: 610 CONTINUE 03300006
334: IVCOMP = -9999 03310006
335: GO TO 40610 03320006
336: 30610 IVDELE = IVDELE + 1 03330006
337: WRITE (I02,80003) IVTNUM 03340006
338: IF (ICZERO) 40610, 621, 40610 03350006
339: 40610 IF (IVCOMP + 9999) 20610, 10610, 20610 03360006
340: 10610 IVPASS = IVPASS + 1 03370006
341: WRITE (I02,80001) IVTNUM 03380006
342: GO TO 621 03390006
343: 20610 IVFAIL = IVFAIL + 1 03400006
344: IVCORR = -9999 03410006
345: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 03420006
346: C 03430006
347: C TEST 62 THROUGH TEST 73 CONTAIN STATEMENT OF FORM 03440006
348: C INTEGER VARIABLE = INTEGER VARIABLE 03450006
349: C 03460006
350: C TESTS 62 THROUGH 65 CONTAIN UNSIGNED VALUES. 03470006
351: C 03480006
352: 621 CONTINUE 03490006
353: IVTNUM = 62 03500006
354: C 03510006
355: C **** TEST 62 **** 03520006
356: C 03530006
357: IF (ICZERO) 30620, 620, 30620 03540006
358: 620 CONTINUE 03550006
359: IVON01 = 3 03560006
360: IVCOMP = IVON01 03570006
361: GO TO 40620 03580006
362: 30620 IVDELE = IVDELE + 1 03590006
363: WRITE (I02,80003) IVTNUM 03600006
364: IF (ICZERO) 40620, 631, 40620 03610006
365: 40620 IF (IVCOMP - 3) 20620, 10620, 20620 03620006
366: 10620 IVPASS = IVPASS + 1 03630006
367: WRITE (I02,80001) IVTNUM 03640006
368: GO TO 631 03650006
369: 20620 IVFAIL = IVFAIL + 1 03660006
370: IVCORR = 3 03670006
371: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 03680006
372: 631 CONTINUE 03690006
373: IVTNUM = 63 03700006
374: C 03710006
375: C **** TEST 63 **** 03720006
376: C 03730006
377: IF (ICZERO) 30630, 630, 30630 03740006
378: 630 CONTINUE 03750006
379: IVON01 = 76 03760006
380: IVCOMP = IVON01 03770006
381: GO TO 40630 03780006
382: 30630 IVDELE = IVDELE + 1 03790006
383: WRITE (I02,80003) IVTNUM 03800006
384: IF (ICZERO) 40630, 641, 40630 03810006
385: 40630 IF (IVCOMP - 76) 20630, 10630, 20630 03820006
386: 10630 IVPASS = IVPASS + 1 03830006
387: WRITE (I02,80001) IVTNUM 03840006
388: GO TO 641 03850006
389: 20630 IVFAIL = IVFAIL + 1 03860006
390: IVCORR = 76 03870006
391: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 03880006
392: 641 CONTINUE 03890006
393: IVTNUM = 64 03900006
394: C 03910006
395: C **** TEST 64 **** 03920006
396: C 03930006
397: IF (ICZERO) 30640, 640, 30640 03940006
398: 640 CONTINUE 03950006
399: IVON01 = 587 03960006
400: IVCOMP = IVON01 03970006
401: GO TO 40640 03980006
402: 30640 IVDELE = IVDELE + 1 03990006
403: WRITE (I02,80003) IVTNUM 04000006
404: IF (ICZERO) 40640, 651, 40640 04010006
405: 40640 IF (IVCOMP - 587) 20640, 10640, 20640 04020006
406: 10640 IVPASS = IVPASS + 1 04030006
407: WRITE (I02,80001) IVTNUM 04040006
408: GO TO 651 04050006
409: 20640 IVFAIL = IVFAIL + 1 04060006
410: IVCORR = 587 04070006
411: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 04080006
412: 651 CONTINUE 04090006
413: IVTNUM = 65 04100006
414: C 04110006
415: C **** TEST 65 **** 04120006
416: C 04130006
417: IF (ICZERO) 30650, 650, 30650 04140006
418: 650 CONTINUE 04150006
419: IVON01 = 9999 04160006
420: IVCOMP = IVON01 04170006
421: GO TO 40650 04180006
422: 30650 IVDELE = IVDELE + 1 04190006
423: WRITE (I02,80003) IVTNUM 04200006
424: IF (ICZERO) 40650, 661, 40650 04210006
425: 40650 IF (IVCOMP - 9999) 20650, 10650, 20650 04220006
426: 10650 IVPASS = IVPASS + 1 04230006
427: WRITE (I02,80001) IVTNUM 04240006
428: GO TO 661 04250006
429: 20650 IVFAIL = IVFAIL + 1 04260006
430: IVCORR = 9999 04270006
431: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 04280006
432: C 04290006
433: C TESTS 66 THROUGH 69 CONTAIN POSITIVE VALUES. 04300006
434: C 04310006
435: 661 CONTINUE 04320006
436: IVTNUM = 66 04330006
437: C 04340006
438: C **** TEST 66 **** 04350006
439: C 04360006
440: IF (ICZERO) 30660, 660, 30660 04370006
441: 660 CONTINUE 04380006
442: IVON01 = +3 04390006
443: IVCOMP = IVON01 04400006
444: GO TO 40660 04410006
445: 30660 IVDELE = IVDELE + 1 04420006
446: WRITE (I02,80003) IVTNUM 04430006
447: IF (ICZERO) 40660, 671, 40660 04440006
448: 40660 IF (IVCOMP - 3) 20660,10660,20660 04450006
449: 10660 IVPASS = IVPASS + 1 04460006
450: WRITE (I02,80001) IVTNUM 04470006
451: GO TO 671 04480006
452: 20660 IVFAIL = IVFAIL + 1 04490006
453: IVCORR = 3 04500006
454: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 04510006
455: 671 CONTINUE 04520006
456: IVTNUM = 67 04530006
457: C 04540006
458: C **** TEST 67 **** 04550006
459: C 04560006
460: IF (ICZERO) 30670, 670, 30670 04570006
461: 670 CONTINUE 04580006
462: IVON01 = +76 04590006
463: IVCOMP = IVON01 04600006
464: GO TO 40670 04610006
465: 30670 IVDELE = IVDELE + 1 04620006
466: WRITE (I02,80003) IVTNUM 04630006
467: IF (ICZERO) 40670, 681, 40670 04640006
468: 40670 IF (IVCOMP - 76) 20670, 10670, 20670 04650006
469: 10670 IVPASS = IVPASS + 1 04660006
470: WRITE (I02,80001) IVTNUM 04670006
471: GO TO 681 04680006
472: 20670 IVFAIL = IVFAIL + 1 04690006
473: IVCORR = 76 04700006
474: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 04710006
475: 681 CONTINUE 04720006
476: IVTNUM = 68 04730006
477: C 04740006
478: C **** TEST 68 **** 04750006
479: C 04760006
480: IF (ICZERO) 30680, 680, 30680 04770006
481: 680 CONTINUE 04780006
482: IVON01 = +587 04790006
483: IVCOMP = IVON01 04800006
484: GO TO 40680 04810006
485: 30680 IVDELE = IVDELE + 1 04820006
486: WRITE (I02,80003) IVTNUM 04830006
487: IF (ICZERO) 40680, 691, 40680 04840006
488: 40680 IF (IVCOMP - 587) 20680, 10680, 20680 04850006
489: 10680 IVPASS = IVPASS + 1 04860006
490: WRITE (I02,80001) IVTNUM 04870006
491: GO TO 691 04880006
492: 20680 IVFAIL = IVFAIL + 1 04890006
493: IVCORR = 587 04900006
494: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 04910006
495: 691 CONTINUE 04920006
496: IVTNUM = 69 04930006
497: C 04940006
498: C **** TEST 69 **** 04950006
499: C 04960006
500: IF (ICZERO) 30690, 690, 30690 04970006
501: 690 CONTINUE 04980006
502: IVON01 = +9999 04990006
503: IVCOMP = IVON01 05000006
504: GO TO 40690 05010006
505: 30690 IVDELE = IVDELE + 1 05020006
506: WRITE (I02,80003) IVTNUM 05030006
507: IF (ICZERO) 40690, 701, 40690 05040006
508: 40690 IF (IVCOMP - 9999) 20690, 10690, 20690 05050006
509: 10690 IVPASS = IVPASS + 1 05060006
510: WRITE (I02,80001) IVTNUM 05070006
511: GO TO 701 05080006
512: 20690 IVFAIL = IVFAIL + 1 05090006
513: IVCORR = 9999 05100006
514: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 05110006
515: C 05120006
516: C TESTS 70 THROUGH 73 CONTAIN NEGATIVE VALUES. 05130006
517: C 05140006
518: 701 CONTINUE 05150006
519: IVTNUM = 70 05160006
520: C 05170006
521: C **** TEST 70 **** 05180006
522: C 05190006
523: IF (ICZERO) 30700, 700, 30700 05200006
524: 700 CONTINUE 05210006
525: IVON01 = -3 05220006
526: IVCOMP = IVON01 05230006
527: GO TO 40700 05240006
528: 30700 IVDELE = IVDELE + 1 05250006
529: WRITE (I02,80003) IVTNUM 05260006
530: IF (ICZERO) 40700, 711, 40700 05270006
531: 40700 IF (IVCOMP + 3) 20700, 10700, 20700 05280006
532: 10700 IVPASS = IVPASS + 1 05290006
533: WRITE (I02,80001) IVTNUM 05300006
534: GO TO 711 05310006
535: 20700 IVFAIL = IVFAIL + 1 05320006
536: IVCORR = -3 05330006
537: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 05340006
538: 711 CONTINUE 05350006
539: IVTNUM = 71 05360006
540: C 05370006
541: C **** TEST 71 **** 05380006
542: C 05390006
543: IF (ICZERO) 30710, 710, 30710 05400006
544: 710 CONTINUE 05410006
545: IVON01 = -76 05420006
546: IVCOMP = IVON01 05430006
547: GO TO 40710 05440006
548: 30710 IVDELE = IVDELE + 1 05450006
549: WRITE (I02,80003) IVTNUM 05460006
550: IF (ICZERO) 40710, 721, 40710 05470006
551: 40710 IF (IVCOMP + 76) 20710, 10710, 20710 05480006
552: 10710 IVPASS = IVPASS + 1 05490006
553: WRITE (I02,80001) IVTNUM 05500006
554: GO TO 721 05510006
555: 20710 IVFAIL = IVFAIL + 1 05520006
556: IVCORR = -76 05530006
557: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 05540006
558: 721 CONTINUE 05550006
559: IVTNUM = 72 05560006
560: C 05570006
561: C **** TEST 72 **** 05580006
562: C 05590006
563: IF (ICZERO) 30720, 720, 30720 05600006
564: 720 CONTINUE 05610006
565: IVON01 = -587 05620006
566: IVCOMP = IVON01 05630006
567: GO TO 40720 05640006
568: 30720 IVDELE = IVDELE + 1 05650006
569: WRITE (I02,80003) IVTNUM 05660006
570: IF (ICZERO) 40720, 731, 40720 05670006
571: 40720 IF (IVCOMP + 587) 20720, 10720, 20720 05680006
572: 10720 IVPASS = IVPASS + 1 05690006
573: WRITE (I02,80001) IVTNUM 05700006
574: GO TO 731 05710006
575: 20720 IVFAIL = IVFAIL + 1 05720006
576: IVCORR = -587 05730006
577: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 05740006
578: 731 CONTINUE 05750006
579: IVTNUM = 73 05760006
580: C 05770006
581: C **** TEST 73 **** 05780006
582: C 05790006
583: IF (ICZERO) 30730, 730, 30730 05800006
584: 730 CONTINUE 05810006
585: IVON01 = -9999 05820006
586: IVCOMP = IVON01 05830006
587: GO TO 40730 05840006
588: 30730 IVDELE = IVDELE + 1 05850006
589: WRITE (I02,80003) IVTNUM 05860006
590: IF (ICZERO) 40730, 741, 40730 05870006
591: 40730 IF (IVCOMP + 9999) 20730, 10730, 20730 05880006
592: 10730 IVPASS = IVPASS + 1 05890006
593: WRITE (I02,80001) IVTNUM 05900006
594: GO TO 741 05910006
595: 20730 IVFAIL = IVFAIL + 1 05920006
596: IVCORR = -9999 05930006
597: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 05940006
598: C 05950006
599: C TESTS 74 THROUGH 79 CHECK THAT AT LEAST 16 BITS ARE USED IN THE 05960006
600: C INTERNAL REPRESENTATION OF AN INTEGER DATUM. THIS INCLUDES ONE 05970006
601: C BIT FOR THE SIGN. THE LARGEST INTEGER USED IS 32767 =2**15 - 1, 05980006
602: C AND THE SMALLEST INTEGER USED IS -32766. 05990006
603: C 06000006
604: 741 CONTINUE 06010006
605: IVTNUM = 74 06020006
606: C 06030006
607: C **** TEST 74 **** 06040006
608: C UNSIGNED CONSTANT 32767 06050006
609: C 06060006
610: IF (ICZERO) 30740, 740, 30740 06070006
611: 740 CONTINUE 06080006
612: IVCOMP = 32767 06090006
613: GO TO 40740 06100006
614: 30740 IVDELE = IVDELE + 1 06110006
615: WRITE (I02,80003) IVTNUM 06120006
616: IF (ICZERO) 40740, 751, 40740 06130006
617: 40740 IF (IVCOMP - 32767) 20740, 10740, 20740 06140006
618: 10740 IVPASS = IVPASS + 1 06150006
619: WRITE (I02,80001) IVTNUM 06160006
620: GO TO 751 06170006
621: 20740 IVFAIL = IVFAIL + 1 06180006
622: IVCORR = 32767 06190006
623: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 06200006
624: 751 CONTINUE 06210006
625: IVTNUM = 75 06220006
626: C 06230006
627: C **** TEST 75 **** 06240006
628: C SIGNED POSITIVE CONSTANT +32767 06250006
629: C 06260006
630: IF (ICZERO) 30750, 750, 30750 06270006
631: 750 CONTINUE 06280006
632: IVCOMP = +32767 06290006
633: GO TO 40750 06300006
634: 30750 IVDELE = IVDELE + 1 06310006
635: WRITE (I02,80003) IVTNUM 06320006
636: IF (ICZERO) 40750, 761, 40750 06330006
637: 40750 IF (IVCOMP - 32767) 20750, 10750, 20750 06340006
638: 10750 IVPASS = IVPASS + 1 06350006
639: WRITE (I02,80001) IVTNUM 06360006
640: GO TO 761 06370006
641: 20750 IVFAIL = IVFAIL + 1 06380006
642: IVCORR = 32767 06390006
643: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 06400006
644: 761 CONTINUE 06410006
645: IVTNUM = 76 06420006
646: C 06430006
647: C **** TEST 76 **** 06440006
648: C SIGNED NEGATIVE CONSTANT -32766 06450006
649: C 06460006
650: IF (ICZERO) 30760, 760, 30760 06470006
651: 760 CONTINUE 06480006
652: IVCOMP = - 32766 06490006
653: GO TO 40760 06500006
654: 30760 IVDELE = IVDELE + 1 06510006
655: WRITE (I02,80003) IVTNUM 06520006
656: IF (ICZERO) 40760, 771, 40760 06530006
657: 40760 IF (IVCOMP + 32766) 20760, 10760, 20760 06540006
658: 10760 IVPASS = IVPASS + 1 06550006
659: WRITE (I02,80001) IVTNUM 06560006
660: GO TO 771 06570006
661: 20760 IVFAIL = IVFAIL + 1 06580006
662: IVCORR = -32766 06590006
663: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 06600006
664: 771 CONTINUE 06610006
665: IVTNUM = 77 06620006
666: C 06630006
667: C **** TEST 77 **** 06640006
668: C 06650006
669: IF (ICZERO) 30770, 770, 30770 06660006
670: 770 CONTINUE 06670006
671: IVON01 = 32767 06680006
672: IVCOMP = IVON01 06690006
673: GO TO 40770 06700006
674: 30770 IVDELE = IVDELE + 1 06710006
675: WRITE (I02,80003) IVTNUM 06720006
676: IF (ICZERO) 40770, 781, 40770 06730006
677: 40770 IF (IVCOMP - 32767) 20770, 10770, 20770 06740006
678: 10770 IVPASS = IVPASS + 1 06750006
679: WRITE (I02,80001) IVTNUM 06760006
680: GO TO 781 06770006
681: 20770 IVFAIL = IVFAIL + 1 06780006
682: IVCORR = 32767 06790006
683: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 06800006
684: 781 CONTINUE 06810006
685: IVTNUM = 78 06820006
686: C 06830006
687: C **** TEST 78 **** 06840006
688: C 06850006
689: IF (ICZERO) 30780, 780, 30780 06860006
690: 780 CONTINUE 06870006
691: IVON01 = +32767 06880006
692: IVCOMP = IVON01 06890006
693: GO TO 40780 06900006
694: 30780 IVDELE = IVDELE + 1 06910006
695: WRITE (I02,80003) IVTNUM 06920006
696: IF (ICZERO) 40780, 791, 40780 06930006
697: 40780 IF (IVCOMP - 32767) 20780, 10780, 20780 06940006
698: 10780 IVPASS = IVPASS + 1 06950006
699: WRITE (I02,80001) IVTNUM 06960006
700: GO TO 791 06970006
701: 20780 IVFAIL = IVFAIL + 1 06980006
702: IVCORR = 32767 06990006
703: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 07000006
704: 791 CONTINUE 07010006
705: IVTNUM = 79 07020006
706: C 07030006
707: C **** TEST 79 **** 07040006
708: C 07050006
709: IF (ICZERO) 30790, 790, 30790 07060006
710: 790 CONTINUE 07070006
711: IVON01 = -32766 07080006
712: IVCOMP=IVON01 07090006
713: GO TO 40790 07100006
714: 30790 IVDELE = IVDELE + 1 07110006
715: WRITE (I02,80003) IVTNUM 07120006
716: IF (ICZERO) 40790, 801, 40790 07130006
717: 40790 IF (IVCOMP + 32766) 20790, 10790, 20790 07140006
718: 10790 IVPASS = IVPASS + 1 07150006
719: WRITE (I02,80001) IVTNUM 07160006
720: GO TO 801 07170006
721: 20790 IVFAIL = IVFAIL + 1 07180006
722: IVCORR = -32766 07190006
723: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 07200006
724: 801 CONTINUE 07210006
725: C 07220006
726: C WRITE PAGE FOOTINGS AND RUN SUMMARIES 07230006
727: 99999 CONTINUE 07240006
728: WRITE (I02,90002) 07250006
729: WRITE (I02,90006) 07260006
730: WRITE (I02,90002) 07270006
731: WRITE (I02,90002) 07280006
732: WRITE (I02,90007) 07290006
733: WRITE (I02,90002) 07300006
734: WRITE (I02,90008) IVFAIL 07310006
735: WRITE (I02,90009) IVPASS 07320006
736: WRITE (I02,90010) IVDELE 07330006
737: C 07340006
738: C 07350006
739: C TERMINATE ROUTINE EXECUTION 07360006
740: STOP 07370006
741: C 07380006
742: C FORMAT STATEMENTS FOR PAGE HEADERS 07390006
743: 90000 FORMAT (1H1) 07400006
744: 90002 FORMAT (1H ) 07410006
745: 90001 FORMAT (1H ,10X,34HFORTRAN COMPILER VALIDATION SYSTEM) 07420006
746: 90003 FORMAT (1H ,21X,11HVERSION 1.0) 07430006
747: 90004 FORMAT (1H ,10X,38HFOR OFFICIAL USE ONLY - COPYRIGHT 1978) 07440006
748: 90005 FORMAT (1H ,5X,4HTEST,5X,9HPASS/FAIL, 5X,8HCOMPUTED,8X,7HCORRECT) 07450006
749: 90006 FORMAT (1H ,5X,46H----------------------------------------------) 07460006
750: 90011 FORMAT (1H ,18X,17HSUBSET LEVEL TEST) 07470006
751: C 07480006
752: C FORMAT STATEMENTS FOR RUN SUMMARIES 07490006
753: 90008 FORMAT (1H ,15X,I5,19H ERRORS ENCOUNTERED) 07500006
754: 90009 FORMAT (1H ,15X,I5,13H TESTS PASSED) 07510006
755: 90010 FORMAT (1H ,15X,I5,14H TESTS DELETED) 07520006
756: C 07530006
757: C FORMAT STATEMENTS FOR TEST RESULTS 07540006
758: 80001 FORMAT (1H ,4X,I5,7X,4HPASS) 07550006
759: 80002 FORMAT (1H ,4X,I5,7X,4HFAIL) 07560006
760: 80003 FORMAT (1H ,4X,I5,7X,7HDELETED) 07570006
761: 80004 FORMAT (1H ,4X,I5,7X,4HFAIL,10X,I6,9X,I6) 07580006
762: 80005 FORMAT (1H ,4X,I5,7X,4HFAIL,4X,E12.5,3X,E12.5) 07590006
763: C 07600006
764: 90007 FORMAT (1H ,20X,20HEND OF PROGRAM FM006) 07610006
765: END 07620006
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.