|
|
1.1 root 1: C COMMENT SECTION 00010037
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 00020037
6: C FM037 00030037
7: C 00040037
8: C THIS ROUTINE TESTS ARITHMETIC ASSIGNMENT STATEMENTS OF THE 00050037
9: C FORM 00060037
10: C INTEGER VARIABLE = ARITHMETIC EXPRESSION 00070037
11: C WHERE THE ARITHMETIC EXPRESSION IS FORMED WITH THREE INTEGER 00080037
12: C CONSTANTS AND THE ARITHMETIC OPERATOR /. BOTH POSITIVE AND NEGA- 00090037
13: C TIVE CONSTANTS ARE USED IN THE ARITHMETIC EXPRESSION. 00100037
14: C 00110037
15: C THERE ARE TESTS WHICH REQUIRE NO TRUNCATION OF THE RESULT 00120037
16: C AND TESTS WHERE THE RESULT MUST BE TRUNCATED BEFORE BEING STORED 00130037
17: C IN THE RESULTANT INTEGER VARIABLE. THE STANDARD STATES 'THE VALUE00140037
18: C OF AN INTEGER FACTOR OR TERM IS THE NEAREST INTEGER WHOSE MAGNI- 00150037
19: C TUDE DOES NOT EXCEED THE MAGNITUDE OF THE MATHEMATICAL VALUE 00160037
20: C REPRESENTED BY THAT FACTOR OR TERM. THE ASSOCIATIVE AND COMMUTA- 00170037
21: C TIVE LAWS DO NOT APPLY IN THE EVALUATION OF INTEGER TERMS CON- 00180037
22: C TAINING DIVISION, HENCE THE EVALUATION OF SUCH TERMS MUST EFFEC- 00190037
23: C TIVELY PROCEED FROM LEFT TO RIGHT.' 00200037
24: C 00210037
25: C THERE ARE TESTS WHERE THE ARITHMETIC EXPRESSION CONTAINS 00220037
26: C (1) INTEGER CONSTANT/INTEGER CONSTANT/INTEGER CONSTANT 00230037
27: C NO TRUNCATION REQUIRED 00240037
28: C (2) INTEGER CONSTANT/INTEGER CONSTANT/INTEGER CONSTANT 00250037
29: C TRUNCATION REQUIRED 00260037
30: C 00270037
31: C REFERENCES 00280037
32: C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, 00290037
33: C X3.9-1978 00300037
34: C 00310037
35: C SECTION 4.3, INTEGER TYPE 00320037
36: C SECTION 4.3.1, INTEGER CONSTANT 00330037
37: C SECTION 6.1, ARITHMETIC EXPRESSIONS 00340037
38: C SECTION 6.6, EVALUATION OF EXPRESSIONS 00350037
39: C SECTION 10.1, ARITHMETIC ASSIGNMENT STATEMENT 00360037
40: C 00370037
41: C ********************************************************** 00380037
42: C 00390037
43: C A COMPILER VALIDATION SYSTEM FOR THE FORTRAN LANGUAGE 00400037
44: C BASED ON SPECIFICATIONS AS DEFINED IN AMERICAN NATIONAL STANDARD 00410037
45: C PROGRAMMING LANGUAGE FORTRAN X3.9-1978, HAS BEEN DEVELOPED BY THE 00420037
46: C FEDERAL COBOL COMPILER TESTING SERVICE. THE FORTRAN COMPILER 00430037
47: C VALIDATION SYSTEM (FCVS) CONSISTS OF AUDIT ROUTINES, THEIR RELATED00440037
48: C DATA, AND AN EXECUTIVE SYSTEM. EACH AUDIT ROUTINE IS A FORTRAN 00450037
49: C PROGRAM, SUBPROGRAM OR FUNCTION WHICH INCLUDES TESTS OF SPECIFIC 00460037
50: C LANGUAGE ELEMENTS AND SUPPORTING PROCEDURES INDICATING THE RESULT 00470037
51: C OF EXECUTING THESE TESTS. 00480037
52: C 00490037
53: C THIS PARTICULAR PROGRAM/SUBPROGRAM/FUNCTION CONTAINS FEATURES 00500037
54: C FOUND ONLY IN THE SUBSET AS DEFINED IN X3.9-1978. 00510037
55: C 00520037
56: C SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO - 00530037
57: C 00540037
58: C DEPARTMENT OF THE NAVY 00550037
59: C FEDERAL COBOL COMPILER TESTING SERVICE 00560037
60: C WASHINGTON, D.C. 20376 00570037
61: C 00580037
62: C ********************************************************** 00590037
63: C 00600037
64: C 00610037
65: C 00620037
66: C INITIALIZATION SECTION 00630037
67: C 00640037
68: C INITIALIZE CONSTANTS 00650037
69: C ************** 00660037
70: C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. 00670037
71: I01 = 5 00680037
72: C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. 00690037
73: I02 = 6 00700037
74: C SYSTEM ENVIRONMENT SECTION 00710037
75: C 00720037
76: I01 = 5 00730037
77: C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 00740037
78: C (UNIT NUMBER FOR CARD READER). 00750037
79: CX011 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-011 CONTROL CARD. 00760037
80: C THE CX011 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL 00770037
81: C FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX010 ABOVE. 00780037
82: C 00790037
83: I02 = 6 00800037
84: C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02 = 6 00810037
85: C (UNIT NUMBER FOR PRINTER). 00820037
86: CX021 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-021 CONTROL CARD. 00830037
87: C THE CX021 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL 00840037
88: C FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX020 ABOVE. 00850037
89: C 00860037
90: IVPASS=0 00870037
91: IVFAIL=0 00880037
92: IVDELE=0 00890037
93: ICZERO=0 00900037
94: C 00910037
95: C WRITE PAGE HEADERS 00920037
96: WRITE (I02,90000) 00930037
97: WRITE (I02,90001) 00940037
98: WRITE (I02,90002) 00950037
99: WRITE (I02, 90002) 00960037
100: WRITE (I02,90003) 00970037
101: WRITE (I02,90002) 00980037
102: WRITE (I02,90004) 00990037
103: WRITE (I02,90002) 01000037
104: WRITE (I02,90011) 01010037
105: WRITE (I02,90002) 01020037
106: WRITE (I02,90002) 01030037
107: WRITE (I02,90005) 01040037
108: WRITE (I02,90006) 01050037
109: WRITE (I02,90002) 01060037
110: C 01070037
111: C TEST SECTION 01080037
112: C 01090037
113: C ARITHMETIC ASSIGNMENT STATEMENT 01100037
114: C 01110037
115: C TEST 491 THROUGH TEST 519 CONTAIN THREE INTEGER CONSTANTS AND 01120037
116: C OPERATOR / IN AN ARITHMETIC EXPRESSION. THE FORM TESTED IS 01130037
117: C INTEGER VARIABLE = INTEGER CONSTANT/INTEGER CONSTANT/INT.CON. 01140037
118: C 01150037
119: C 01160037
120: C TEST 491 THROUGH TEST 496 - POSITIVE INTEGER CONSTANTS 01170037
121: C NO TRUNCATION REQUIRED 01180037
122: C 01190037
123: 4911 CONTINUE 01200037
124: IVTNUM = 491 01210037
125: C 01220037
126: C **** TEST 491 **** 01230037
127: C 01240037
128: IF (ICZERO) 34910, 4910, 34910 01250037
129: 4910 CONTINUE 01260037
130: IVCOMP = 24/3/4 01270037
131: GO TO 44910 01280037
132: 34910 IVDELE = IVDELE + 1 01290037
133: WRITE (I02,80003) IVTNUM 01300037
134: IF (ICZERO) 44910, 4921, 44910 01310037
135: 44910 IF (IVCOMP - 2) 24910,14910,24910 01320037
136: 14910 IVPASS = IVPASS + 1 01330037
137: WRITE (I02,80001) IVTNUM 01340037
138: GO TO 4921 01350037
139: 24910 IVFAIL = IVFAIL + 1 01360037
140: IVCORR = 2 01370037
141: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 01380037
142: 4921 CONTINUE 01390037
143: IVTNUM = 492 01400037
144: C 01410037
145: C **** TEST 492 **** 01420037
146: C 01430037
147: IF (ICZERO) 34920, 4920, 34920 01440037
148: 4920 CONTINUE 01450037
149: IVCOMP = 330/3/2 01460037
150: GO TO 44920 01470037
151: 34920 IVDELE = IVDELE + 1 01480037
152: WRITE (I02,80003) IVTNUM 01490037
153: IF (ICZERO) 44920, 4931, 44920 01500037
154: 44920 IF (IVCOMP - 55) 24920,14920,24920 01510037
155: 14920 IVPASS = IVPASS + 1 01520037
156: WRITE (I02,80001) IVTNUM 01530037
157: GO TO 4931 01540037
158: 24920 IVFAIL = IVFAIL + 1 01550037
159: IVCORR = 55 01560037
160: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 01570037
161: 4931 CONTINUE 01580037
162: IVTNUM = 493 01590037
163: C 01600037
164: C **** TEST 493 **** 01610037
165: C 01620037
166: IF (ICZERO) 34930, 4930, 34930 01630037
167: 4930 CONTINUE 01640037
168: IVCOMP = 15249/13/51 01650037
169: GO TO 44930 01660037
170: 34930 IVDELE = IVDELE + 1 01670037
171: WRITE (I02,80003) IVTNUM 01680037
172: IF (ICZERO) 44930, 4941, 44930 01690037
173: 44930 IF (IVCOMP - 23) 24930,14930,24930 01700037
174: 14930 IVPASS = IVPASS + 1 01710037
175: WRITE (I02,80001) IVTNUM 01720037
176: GO TO 4941 01730037
177: 24930 IVFAIL = IVFAIL + 1 01740037
178: IVCORR = 23 01750037
179: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 01760037
180: 4941 CONTINUE 01770037
181: IVTNUM = 494 01780037
182: C 01790037
183: C **** TEST 494 **** 01800037
184: C 01810037
185: IF (ICZERO) 34940, 4940, 34940 01820037
186: 4940 CONTINUE 01830037
187: IVCOMP = 7150/2/25 01840037
188: GO TO 44940 01850037
189: 34940 IVDELE = IVDELE + 1 01860037
190: WRITE (I02,80003) IVTNUM 01870037
191: IF (ICZERO) 44940, 4951, 44940 01880037
192: 44940 IF (IVCOMP - 143) 24940,14940,24940 01890037
193: 14940 IVPASS = IVPASS + 1 01900037
194: WRITE (I02,80001) IVTNUM 01910037
195: GO TO 4951 01920037
196: 24940 IVFAIL = IVFAIL + 1 01930037
197: IVCORR = 143 01940037
198: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 01950037
199: 4951 CONTINUE 01960037
200: IVTNUM = 495 01970037
201: C 01980037
202: C **** TEST 495 **** 01990037
203: C 02000037
204: IF (ICZERO) 34950, 4950, 34950 02010037
205: 4950 CONTINUE 02020037
206: IVCOMP = 32766/2/3 02030037
207: GO TO 44950 02040037
208: 34950 IVDELE = IVDELE + 1 02050037
209: WRITE (I02,80003) IVTNUM 02060037
210: IF (ICZERO) 44950, 4961, 44950 02070037
211: 44950 IF (IVCOMP - 5461) 24950,14950,24950 02080037
212: 14950 IVPASS = IVPASS + 1 02090037
213: WRITE (I02,80001) IVTNUM 02100037
214: GO TO 4961 02110037
215: 24950 IVFAIL = IVFAIL + 1 02120037
216: IVCORR = 5461 02130037
217: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 02140037
218: 4961 CONTINUE 02150037
219: IVTNUM = 496 02160037
220: C 02170037
221: C **** TEST 496 **** 02180037
222: C 02190037
223: IF (ICZERO) 34960, 4960, 34960 02200037
224: 4960 CONTINUE 02210037
225: IVCOMP = 32766/1/1 02220037
226: GO TO 44960 02230037
227: 34960 IVDELE = IVDELE + 1 02240037
228: WRITE (I02,80003) IVTNUM 02250037
229: IF (ICZERO) 44960, 4971, 44960 02260037
230: 44960 IF (IVCOMP - 32766) 24960,14960,24960 02270037
231: 14960 IVPASS = IVPASS + 1 02280037
232: WRITE (I02,80001) IVTNUM 02290037
233: GO TO 4971 02300037
234: 24960 IVFAIL = IVFAIL + 1 02310037
235: IVCORR = 32766 02320037
236: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 02330037
237: C 02340037
238: C TEST 497 THROUGH TEST 502 - POSITIVE INTEGER CONSTANTS 02350037
239: C TRUNCATION REQUIRED 02360037
240: C 02370037
241: 4971 CONTINUE 02380037
242: IVTNUM = 497 02390037
243: C 02400037
244: C **** TEST 497 **** 02410037
245: C 02420037
246: IF (ICZERO) 34970, 4970, 34970 02430037
247: 4970 CONTINUE 02440037
248: IVCOMP = 24/3/3 02450037
249: GO TO 44970 02460037
250: 34970 IVDELE = IVDELE + 1 02470037
251: WRITE (I02,80003) IVTNUM 02480037
252: IF (ICZERO) 44970, 4981, 44970 02490037
253: 44970 IF (IVCOMP -2) 24970,14970,24970 02500037
254: 14970 IVPASS = IVPASS + 1 02510037
255: WRITE (I02,80001) IVTNUM 02520037
256: GO TO 4981 02530037
257: 24970 IVFAIL = IVFAIL + 1 02540037
258: IVCORR = 2 02550037
259: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 02560037
260: 4981 CONTINUE 02570037
261: IVTNUM = 498 02580037
262: C 02590037
263: C **** TEST 498 **** 02600037
264: C 02610037
265: IF (ICZERO) 34980, 4980, 34980 02620037
266: 4980 CONTINUE 02630037
267: IVCOMP = 230/2/3 02640037
268: GO TO 44980 02650037
269: 34980 IVDELE = IVDELE + 1 02660037
270: WRITE (I02,80003) IVTNUM 02670037
271: IF (ICZERO) 44980, 4991, 44980 02680037
272: 44980 IF (IVCOMP - 38) 24980,14980,24980 02690037
273: 14980 IVPASS = IVPASS + 1 02700037
274: WRITE (I02,80001) IVTNUM 02710037
275: GO TO 4991 02720037
276: 24980 IVFAIL = IVFAIL + 1 02730037
277: IVCORR = 38 02740037
278: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 02750037
279: 4991 CONTINUE 02760037
280: IVTNUM = 499 02770037
281: C 02780037
282: C **** TEST 499 **** 02790037
283: C 02800037
284: IF (ICZERO) 34990, 4990, 34990 02810037
285: 4990 CONTINUE 02820037
286: IVCOMP = 7151/3/10 02830037
287: GO TO 44990 02840037
288: 34990 IVDELE = IVDELE + 1 02850037
289: WRITE (I02,80003) IVTNUM 02860037
290: IF (ICZERO) 44990, 5001, 44990 02870037
291: 44990 IF (IVCOMP - 238) 24990,14990,24990 02880037
292: 14990 IVPASS = IVPASS + 1 02890037
293: WRITE (I02,80001) IVTNUM 02900037
294: GO TO 5001 02910037
295: 24990 IVFAIL = IVFAIL + 1 02920037
296: IVCORR = 238 02930037
297: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 02940037
298: 5001 CONTINUE 02950037
299: IVTNUM = 500 02960037
300: C 02970037
301: C **** TEST 500 **** 02980037
302: C 02990037
303: IF (ICZERO) 35000, 5000, 35000 03000037
304: 5000 CONTINUE 03010037
305: IVCOMP = 15248/51/13 03020037
306: GO TO 45000 03030037
307: 35000 IVDELE = IVDELE + 1 03040037
308: WRITE (I02,80003) IVTNUM 03050037
309: IF (ICZERO) 45000, 5011, 45000 03060037
310: 45000 IF (IVCOMP - 22) 25000,15000,25000 03070037
311: 15000 IVPASS = IVPASS + 1 03080037
312: WRITE (I02,80001) IVTNUM 03090037
313: GO TO 5011 03100037
314: 25000 IVFAIL = IVFAIL + 1 03110037
315: IVCORR = 22 03120037
316: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 03130037
317: 5011 CONTINUE 03140037
318: IVTNUM = 501 03150037
319: C 03160037
320: C **** TEST 501 **** 03170037
321: C 03180037
322: IF (ICZERO) 35010, 5010, 35010 03190037
323: 5010 CONTINUE 03200037
324: IVCOMP = 27342/4/3 03210037
325: GO TO 45010 03220037
326: 35010 IVDELE = IVDELE + 1 03230037
327: WRITE (I02,80003) IVTNUM 03240037
328: IF (ICZERO) 45010, 5021, 45010 03250037
329: 45010 IF (IVCOMP - 2278) 25010,15010,25010 03260037
330: 15010 IVPASS = IVPASS + 1 03270037
331: WRITE (I02,80001) IVTNUM 03280037
332: GO TO 5021 03290037
333: 25010 IVFAIL = IVFAIL + 1 03300037
334: IVCORR = 2278 03310037
335: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 03320037
336: 5021 CONTINUE 03330037
337: IVTNUM = 502 03340037
338: C 03350037
339: C **** TEST 502 **** 03360037
340: C 03370037
341: IF (ICZERO) 35020, 5020, 35020 03380037
342: 5020 CONTINUE 03390037
343: IVCOMP = 32767/2/1 03400037
344: GO TO 45020 03410037
345: 35020 IVDELE = IVDELE + 1 03420037
346: WRITE (I02,80003) IVTNUM 03430037
347: IF (ICZERO) 45020, 5031, 45020 03440037
348: 45020 IF (IVCOMP - 16383) 25020,15020,25020 03450037
349: 15020 IVPASS = IVPASS + 1 03460037
350: WRITE (I02,80001) IVTNUM 03470037
351: GO TO 5031 03480037
352: 25020 IVFAIL = IVFAIL + 1 03490037
353: IVCORR = 16383 03500037
354: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 03510037
355: C 03520037
356: C TEST 503 THROUGH TEST 507 - NEGATIVE INTEGER CONSTANTS INCLUDED 03530037
357: C NO TRUNCATION REQUIRED 03540037
358: C 03550037
359: 5031 CONTINUE 03560037
360: IVTNUM = 503 03570037
361: C 03580037
362: C **** TEST 503 **** 03590037
363: C 03600037
364: IF (ICZERO) 35030, 5030, 35030 03610037
365: 5030 CONTINUE 03620037
366: IVCOMP = -24/3/4 03630037
367: GO TO 45030 03640037
368: 35030 IVDELE = IVDELE + 1 03650037
369: WRITE (I02,80003) IVTNUM 03660037
370: IF (ICZERO) 45030, 5041, 45030 03670037
371: 45030 IF (IVCOMP +2) 25030,15030,25030 03680037
372: 15030 IVPASS = IVPASS + 1 03690037
373: WRITE (I02,80001) IVTNUM 03700037
374: GO TO 5041 03710037
375: 25030 IVFAIL = IVFAIL + 1 03720037
376: IVCORR = -2 03730037
377: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 03740037
378: 5041 CONTINUE 03750037
379: IVTNUM = 504 03760037
380: C 03770037
381: C **** TEST 504 **** 03780037
382: C 03790037
383: IF (ICZERO) 35040, 5040, 35040 03800037
384: 5040 CONTINUE 03810037
385: IVCOMP = 330/(-3)/2 03820037
386: GO TO 45040 03830037
387: 35040 IVDELE = IVDELE + 1 03840037
388: WRITE (I02,80003) IVTNUM 03850037
389: IF (ICZERO) 45040, 5051, 45040 03860037
390: 45040 IF (IVCOMP + 55) 25040,15040,25040 03870037
391: 15040 IVPASS = IVPASS + 1 03880037
392: WRITE (I02,80001) IVTNUM 03890037
393: GO TO 5051 03900037
394: 25040 IVFAIL = IVFAIL + 1 03910037
395: IVCORR = -55 03920037
396: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 03930037
397: 5051 CONTINUE 03940037
398: IVTNUM = 505 03950037
399: C 03960037
400: C **** TEST 505 **** 03970037
401: C 03980037
402: IF (ICZERO) 35050, 5050, 35050 03990037
403: 5050 CONTINUE 04000037
404: IVCOMP = 15249/(-13)/(-51) 04010037
405: GO TO 45050 04020037
406: 35050 IVDELE = IVDELE + 1 04030037
407: WRITE (I02,80003) IVTNUM 04040037
408: IF (ICZERO) 45050, 5061, 45050 04050037
409: 45050 IF (IVCOMP - 23) 25050,15050,25050 04060037
410: 15050 IVPASS = IVPASS + 1 04070037
411: WRITE (I02,80001) IVTNUM 04080037
412: GO TO 5061 04090037
413: 25050 IVFAIL = IVFAIL + 1 04100037
414: IVCORR = 23 04110037
415: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 04120037
416: 5061 CONTINUE 04130037
417: IVTNUM = 506 04140037
418: C 04150037
419: C **** TEST 506 **** 04160037
420: C 04170037
421: IF (ICZERO) 35060, 5060, 35060 04180037
422: 5060 CONTINUE 04190037
423: IVCOMP = -7150/(-2)/(-25) 04200037
424: GO TO 45060 04210037
425: 35060 IVDELE = IVDELE + 1 04220037
426: WRITE (I02,80003) IVTNUM 04230037
427: IF (ICZERO) 45060, 5071, 45060 04240037
428: 45060 IF (IVCOMP + 143) 25060,15060,25060 04250037
429: 15060 IVPASS = IVPASS + 1 04260037
430: WRITE (I02,80001) IVTNUM 04270037
431: GO TO 5071 04280037
432: 25060 IVFAIL = IVFAIL + 1 04290037
433: IVCORR = -143 04300037
434: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 04310037
435: 5071 CONTINUE 04320037
436: IVTNUM = 507 04330037
437: C 04340037
438: C **** TEST 507 **** 04350037
439: C 04360037
440: IF (ICZERO) 35070, 5070, 35070 04370037
441: 5070 CONTINUE 04380037
442: IVCOMP = (-32766)/(-2)/(-3) 04390037
443: GO TO 45070 04400037
444: 35070 IVDELE = IVDELE + 1 04410037
445: WRITE (I02,80003) IVTNUM 04420037
446: IF (ICZERO) 45070, 5081, 45070 04430037
447: 45070 IF (IVCOMP + 5461) 25070,15070,25070 04440037
448: 15070 IVPASS = IVPASS + 1 04450037
449: WRITE (I02,80001) IVTNUM 04460037
450: GO TO 5081 04470037
451: 25070 IVFAIL = IVFAIL + 1 04480037
452: IVCORR = -5461 04490037
453: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 04500037
454: C 04510037
455: C TEST 508 THROUGH TEST 513 - NEGATIVE INTEGER CONSTANTS INCLUDED 04520037
456: C TRUNCATION REQUIRED 04530037
457: C 04540037
458: 5081 CONTINUE 04550037
459: IVTNUM = 508 04560037
460: C 04570037
461: C **** TEST 508 **** 04580037
462: C 04590037
463: IF (ICZERO) 35080, 5080, 35080 04600037
464: 5080 CONTINUE 04610037
465: IVCOMP = -24/3/3 04620037
466: GO TO 45080 04630037
467: 35080 IVDELE = IVDELE + 1 04640037
468: WRITE (I02,80003) IVTNUM 04650037
469: IF (ICZERO) 45080, 5091, 45080 04660037
470: 45080 IF (IVCOMP + 2) 25080,15080,25080 04670037
471: 15080 IVPASS = IVPASS + 1 04680037
472: WRITE (I02,80001) IVTNUM 04690037
473: GO TO 5091 04700037
474: 25080 IVFAIL = IVFAIL + 1 04710037
475: IVCORR = -2 04720037
476: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 04730037
477: 5091 CONTINUE 04740037
478: IVTNUM = 509 04750037
479: C 04760037
480: C **** TEST 509 **** 04770037
481: C 04780037
482: IF (ICZERO) 35090, 5090, 35090 04790037
483: 5090 CONTINUE 04800037
484: IVCOMP = 230/(-2)/3 04810037
485: GO TO 45090 04820037
486: 35090 IVDELE = IVDELE + 1 04830037
487: WRITE (I02,80003) IVTNUM 04840037
488: IF (ICZERO) 45090, 5101, 45090 04850037
489: 45090 IF (IVCOMP + 38) 25090,15090,25090 04860037
490: 15090 IVPASS = IVPASS + 1 04870037
491: WRITE (I02,80001) IVTNUM 04880037
492: GO TO 5101 04890037
493: 25090 IVFAIL = IVFAIL + 1 04900037
494: IVCORR = -38 04910037
495: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 04920037
496: 5101 CONTINUE 04930037
497: IVTNUM = 510 04940037
498: C 04950037
499: C **** TEST 510 **** 04960037
500: C 04970037
501: IF (ICZERO) 35100, 5100, 35100 04980037
502: 5100 CONTINUE 04990037
503: IVCOMP = 7151/(-3)/(-10) 05000037
504: GO TO 45100 05010037
505: 35100 IVDELE = IVDELE + 1 05020037
506: WRITE (I02,80003) IVTNUM 05030037
507: IF (ICZERO) 45100, 5111, 45100 05040037
508: 45100 IF (IVCOMP - 238) 25100,15100,25100 05050037
509: 15100 IVPASS = IVPASS + 1 05060037
510: WRITE (I02,80001) IVTNUM 05070037
511: GO TO 5111 05080037
512: 25100 IVFAIL = IVFAIL + 1 05090037
513: IVCORR = 238 05100037
514: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 05110037
515: 5111 CONTINUE 05120037
516: IVTNUM = 511 05130037
517: C 05140037
518: C **** TEST 511 **** 05150037
519: C 05160037
520: IF (ICZERO) 35110, 5110, 35110 05170037
521: 5110 CONTINUE 05180037
522: IVCOMP = -15248/(-51)/(-13) 05190037
523: GO TO 45110 05200037
524: 35110 IVDELE = IVDELE + 1 05210037
525: WRITE (I02,80003) IVTNUM 05220037
526: IF (ICZERO) 45110, 5121, 45110 05230037
527: 45110 IF (IVCOMP + 22) 25110,15110,25110 05240037
528: 15110 IVPASS = IVPASS + 1 05250037
529: WRITE (I02,80001) IVTNUM 05260037
530: GO TO 5121 05270037
531: 25110 IVFAIL = IVFAIL + 1 05280037
532: IVCORR = -22 05290037
533: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 05300037
534: 5121 CONTINUE 05310037
535: IVTNUM = 512 05320037
536: C 05330037
537: C **** TEST 512 **** 05340037
538: C 05350037
539: IF (ICZERO) 35120, 5120, 35120 05360037
540: 5120 CONTINUE 05370037
541: IVCOMP = (-27342)/(-4)/(-3) 05380037
542: GO TO 45120 05390037
543: 35120 IVDELE = IVDELE + 1 05400037
544: WRITE (I02,80003) IVTNUM 05410037
545: IF (ICZERO) 45120, 5131, 45120 05420037
546: 45120 IF (IVCOMP + 2278) 25120,15120,25120 05430037
547: 15120 IVPASS = IVPASS + 1 05440037
548: WRITE (I02,80001) IVTNUM 05450037
549: GO TO 5131 05460037
550: 25120 IVFAIL = IVFAIL + 1 05470037
551: IVCORR = -2278 05480037
552: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 05490037
553: 5131 CONTINUE 05500037
554: IVTNUM = 513 05510037
555: C 05520037
556: C **** TEST 513 **** 05530037
557: C 05540037
558: IF (ICZERO) 35130, 5130, 35130 05550037
559: 5130 CONTINUE 05560037
560: IVCOMP = 32767/2/(-1) 05570037
561: GO TO 45130 05580037
562: 35130 IVDELE = IVDELE + 1 05590037
563: WRITE (I02,80003) IVTNUM 05600037
564: IF (ICZERO) 45130, 5141, 45130 05610037
565: 45130 IF (IVCOMP + 16383) 25130,15130,25130 05620037
566: 15130 IVPASS = IVPASS + 1 05630037
567: WRITE (I02,80001) IVTNUM 05640037
568: GO TO 5141 05650037
569: 25130 IVFAIL = IVFAIL + 1 05660037
570: IVCORR = -16383 05670037
571: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 05680037
572: C 05690037
573: C TEST 514 THROUGH TEST 519 - POSITIVE AND NEGATIVE SIGNED INTEGER 05700037
574: C CONSTANTS IN ARITHMETIC EXPRESSION. 05710037
575: C 05720037
576: 5141 CONTINUE 05730037
577: IVTNUM = 514 05740037
578: C 05750037
579: C **** TEST 514 **** 05760037
580: C 05770037
581: IF (ICZERO) 35140, 5140, 35140 05780037
582: 5140 CONTINUE 05790037
583: IVCOMP = +24/(-3)/4 05800037
584: GO TO 45140 05810037
585: 35140 IVDELE = IVDELE + 1 05820037
586: WRITE (I02,80003) IVTNUM 05830037
587: IF (ICZERO) 45140, 5151, 45140 05840037
588: 45140 IF (IVCOMP +2) 25140,15140,25140 05850037
589: 15140 IVPASS = IVPASS + 1 05860037
590: WRITE (I02,80001) IVTNUM 05870037
591: GO TO 5151 05880037
592: 25140 IVFAIL = IVFAIL + 1 05890037
593: IVCORR = -2 05900037
594: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 05910037
595: 5151 CONTINUE 05920037
596: IVTNUM = 515 05930037
597: C 05940037
598: C **** TEST 515 **** 05950037
599: C 05960037
600: IF (ICZERO) 35150, 5150, 35150 05970037
601: 5150 CONTINUE 05980037
602: IVCOMP = 24/(+3)/(-4) 05990037
603: GO TO 45150 06000037
604: 35150 IVDELE = IVDELE + 1 06010037
605: WRITE (I02,80003) IVTNUM 06020037
606: IF (ICZERO) 45150, 5161, 45150 06030037
607: 45150 IF (IVCOMP +2) 25150,15150,25150 06040037
608: 15150 IVPASS = IVPASS + 1 06050037
609: WRITE (I02,80001) IVTNUM 06060037
610: GO TO 5161 06070037
611: 25150 IVFAIL = IVFAIL + 1 06080037
612: IVCORR = -2 06090037
613: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 06100037
614: 5161 CONTINUE 06110037
615: IVTNUM = 516 06120037
616: C 06130037
617: C **** TEST 516 **** 06140037
618: C 06150037
619: IF (ICZERO) 35160, 5160, 35160 06160037
620: 5160 CONTINUE 06170037
621: IVCOMP = -24/(-3)/(+4) 06180037
622: GO TO 45160 06190037
623: 35160 IVDELE = IVDELE + 1 06200037
624: WRITE (I02,80003) IVTNUM 06210037
625: IF (ICZERO) 45160, 5171, 45160 06220037
626: 45160 IF (IVCOMP -2) 25160,15160,25160 06230037
627: 15160 IVPASS = IVPASS + 1 06240037
628: WRITE (I02,80001) IVTNUM 06250037
629: GO TO 5171 06260037
630: 25160 IVFAIL = IVFAIL + 1 06270037
631: IVCORR = 2 06280037
632: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 06290037
633: 5171 CONTINUE 06300037
634: IVTNUM = 517 06310037
635: C 06320037
636: C **** TEST 517 **** 06330037
637: C 06340037
638: IF (ICZERO) 35170, 5170, 35170 06350037
639: 5170 CONTINUE 06360037
640: IVCOMP = -16811/(-16812)/(+1) 06370037
641: GO TO 45170 06380037
642: 35170 IVDELE = IVDELE + 1 06390037
643: WRITE (I02,80003) IVTNUM 06400037
644: IF (ICZERO) 45170, 5181, 45170 06410037
645: 45170 IF (IVCOMP - 0) 25170,15170,25170 06420037
646: 15170 IVPASS = IVPASS + 1 06430037
647: WRITE (I02,80001) IVTNUM 06440037
648: GO TO 5181 06450037
649: 25170 IVFAIL = IVFAIL + 1 06460037
650: IVCORR = 0 06470037
651: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 06480037
652: 5181 CONTINUE 06490037
653: IVTNUM = 518 06500037
654: C 06510037
655: C **** TEST 518 **** 06520037
656: C 06530037
657: IF (ICZERO) 35180, 5180, 35180 06540037
658: 5180 CONTINUE 06550037
659: IVCOMP = (-16811) / (+16811) / (+1) 06560037
660: GO TO 45180 06570037
661: 35180 IVDELE = IVDELE + 1 06580037
662: WRITE (I02,80003) IVTNUM 06590037
663: IF (ICZERO) 45180, 5191, 45180 06600037
664: 45180 IF (IVCOMP +1) 25180,15180,25180 06610037
665: 15180 IVPASS = IVPASS + 1 06620037
666: WRITE (I02,80001) IVTNUM 06630037
667: GO TO 5191 06640037
668: 25180 IVFAIL = IVFAIL + 1 06650037
669: IVCORR = -1 06660037
670: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 06670037
671: 5191 CONTINUE 06680037
672: IVTNUM = 519 06690037
673: C 06700037
674: C **** TEST 519 **** 06710037
675: C 06720037
676: IF (ICZERO) 35190, 5190, 35190 06730037
677: 5190 CONTINUE 06740037
678: IVCOMP = (-335)/(+168)/(+1) 06750037
679: GO TO 45190 06760037
680: 35190 IVDELE = IVDELE + 1 06770037
681: WRITE (I02,80003) IVTNUM 06780037
682: IF (ICZERO) 45190, 5201, 45190 06790037
683: 45190 IF (IVCOMP + 1) 25190,15190,25190 06800037
684: 15190 IVPASS = IVPASS + 1 06810037
685: WRITE (I02,80001) IVTNUM 06820037
686: GO TO 5201 06830037
687: 25190 IVFAIL = IVFAIL + 1 06840037
688: IVCORR = -1 06850037
689: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 06860037
690: C **** END OF TESTS **** 06870037
691: 5201 CONTINUE 06880037
692: C 06890037
693: C WRITE PAGE FOOTINGS AND RUN SUMMARIES 06900037
694: 99999 CONTINUE 06910037
695: WRITE (I02,90002) 06920037
696: WRITE (I02,90006) 06930037
697: WRITE (I02,90002) 06940037
698: WRITE (I02,90002) 06950037
699: WRITE (I02,90007) 06960037
700: WRITE (I02,90002) 06970037
701: WRITE (I02,90008) IVFAIL 06980037
702: WRITE (I02,90009) IVPASS 06990037
703: WRITE (I02,90010) IVDELE 07000037
704: C 07010037
705: C 07020037
706: C TERMINATE ROUTINE EXECUTION 07030037
707: STOP 07040037
708: C 07050037
709: C FORMAT STATEMENTS FOR PAGE HEADERS 07060037
710: 90000 FORMAT (1H1) 07070037
711: 90002 FORMAT (1H ) 07080037
712: 90001 FORMAT (1H ,10X,34HFORTRAN COMPILER VALIDATION SYSTEM) 07090037
713: 90003 FORMAT (1H ,21X,11HVERSION 1.0) 07100037
714: 90004 FORMAT (1H ,10X,38HFOR OFFICIAL USE ONLY - COPYRIGHT 1978) 07110037
715: 90005 FORMAT (1H ,5X,4HTEST,5X,9HPASS/FAIL, 5X,8HCOMPUTED,8X,7HCORRECT) 07120037
716: 90006 FORMAT (1H ,5X,46H----------------------------------------------) 07130037
717: 90011 FORMAT (1H ,18X,17HSUBSET LEVEL TEST) 07140037
718: C 07150037
719: C FORMAT STATEMENTS FOR RUN SUMMARIES 07160037
720: 90008 FORMAT (1H ,15X,I5,19H ERRORS ENCOUNTERED) 07170037
721: 90009 FORMAT (1H ,15X,I5,13H TESTS PASSED) 07180037
722: 90010 FORMAT (1H ,15X,I5,14H TESTS DELETED) 07190037
723: C 07200037
724: C FORMAT STATEMENTS FOR TEST RESULTS 07210037
725: 80001 FORMAT (1H ,4X,I5,7X,4HPASS) 07220037
726: 80002 FORMAT (1H ,4X,I5,7X,4HFAIL) 07230037
727: 80003 FORMAT (1H ,4X,I5,7X,7HDELETED) 07240037
728: 80004 FORMAT (1H ,4X,I5,7X,4HFAIL,10X,I6,9X,I6) 07250037
729: 80005 FORMAT (1H ,4X,I5,7X,4HFAIL,4X,E12.5,3X,E12.5) 07260037
730: C 07270037
731: 90007 FORMAT (1H ,20X,20HEND OF PROGRAM FM037) 07280037
732: END 07290037
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.