|
|
1.1 root 1: C COMMENT SECTION 00010040
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 00020040
6: C FM040 00030040
7: C 00040040
8: C THIS ROUTINE TESTS ARITHMETIC ASSIGNMENT STATEMENTS OF THE 00050040
9: C FORM INTEGER VARIABLE = ARITHMETIC EXPRESSION 00060040
10: C WHERE THE ARITHMETIC EXPRESSION IS FORMED WITH THE ARITHMETIC 00070040
11: C OPERATOR /, INTEGER VARIABLES AND AN INTEGER CONSTANT. BOTH 00080040
12: C POSITIVE AND NEGATIVE VALUES ARE USED FOR THE INTEGER VARIABLES 00090040
13: C AND THE INTEGER CONSTANT. 00100040
14: C 00110040
15: C THERE ARE TESTS WHICH REQUIRE NO TRUNCATION OF THE RESULT AND 00120040
16: C TESTS WHERE THE RESULT MUST BE TRUNCATED BEFORE BEING STORED IN 00130040
17: C THE RESULTANT INTEGER VARIABLE. SOME OF THE TESTS USE PARENS 00140040
18: C TO GROUP ELEMENTS IN THE ARITHMETIC EXPRESSION. 00150040
19: C 00160040
20: C THERE ARE TESTS WHERE THE ARITHMETIC EXPRESSION CONTAINS 00170040
21: C (1) INTEGER VARIABLE/INTEGER VARIABLE 00180040
22: C (2) INTEGER VARIABLE/INTEGER VARIABLE/INTEGER CONSTANT 00190040
23: C INTEGER VARIABLE/INTEGER CONSTANT/INTEGER VARIABLE 00200040
24: C INTEGER CONSTANT/INTEGER VARIABLE/INTEGER VARIABLE 00210040
25: C (3) SAME AS (2) BUT WITH PARENTHESES TO GROUP ELEMENTS 00220040
26: C IN THE ARITHMETIC EXPRESSION. 00230040
27: C 00240040
28: C REFERENCES 00250040
29: C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, 00260040
30: C X3.9-1978 00270040
31: C 00280040
32: C SECTION 4.3, INTEGER TYPE 00290040
33: C SECTION 4.3.1, INTEGER CONSTANT 00300040
34: C SECTION 6.1, ARITHMETIC EXPRESSIONS 00310040
35: C SECTION 6.6, EVALUATION OF EXPRESSIONS 00320040
36: C SECTION 10.1, ARITHMETIC ASSIGNMENT STATEMENT 00330040
37: C 00340040
38: C ********************************************************** 00350040
39: C 00360040
40: C A COMPILER VALIDATION SYSTEM FOR THE FORTRAN LANGUAGE 00370040
41: C BASED ON SPECIFICATIONS AS DEFINED IN AMERICAN NATIONAL STANDARD 00380040
42: C PROGRAMMING LANGUAGE FORTRAN X3.9-1978, HAS BEEN DEVELOPED BY THE 00390040
43: C FEDERAL COBOL COMPILER TESTING SERVICE. THE FORTRAN COMPILER 00400040
44: C VALIDATION SYSTEM (FCVS) CONSISTS OF AUDIT ROUTINES, THEIR RELATED00410040
45: C DATA, AND AN EXECUTIVE SYSTEM. EACH AUDIT ROUTINE IS A FORTRAN 00420040
46: C PROGRAM, SUBPROGRAM OR FUNCTION WHICH INCLUDES TESTS OF SPECIFIC 00430040
47: C LANGUAGE ELEMENTS AND SUPPORTING PROCEDURES INDICATING THE RESULT 00440040
48: C OF EXECUTING THESE TESTS. 00450040
49: C 00460040
50: C THIS PARTICULAR PROGRAM/SUBPROGRAM/FUNCTION CONTAINS FEATURES 00470040
51: C FOUND ONLY IN THE SUBSET AS DEFINED IN X3.9-1978. 00480040
52: C 00490040
53: C SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO - 00500040
54: C 00510040
55: C DEPARTMENT OF THE NAVY 00520040
56: C FEDERAL COBOL COMPILER TESTING SERVICE 00530040
57: C WASHINGTON, D.C. 20376 00540040
58: C 00550040
59: C ********************************************************** 00560040
60: C 00570040
61: C 00580040
62: C 00590040
63: C INITIALIZATION SECTION 00600040
64: C 00610040
65: C INITIALIZE CONSTANTS 00620040
66: C ************** 00630040
67: C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. 00640040
68: I01 = 5 00650040
69: C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. 00660040
70: I02 = 6 00670040
71: C SYSTEM ENVIRONMENT SECTION 00680040
72: C 00690040
73: I01 = 5 00700040
74: C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 00710040
75: C (UNIT NUMBER FOR CARD READER). 00720040
76: CX011 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-011 CONTROL CARD. 00730040
77: C THE CX011 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL 00740040
78: C FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX010 ABOVE. 00750040
79: C 00760040
80: I02 = 6 00770040
81: C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02 = 6 00780040
82: C (UNIT NUMBER FOR PRINTER). 00790040
83: CX021 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-021 CONTROL CARD. 00800040
84: C THE CX021 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL 00810040
85: C FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX020 ABOVE. 00820040
86: C 00830040
87: IVPASS=0 00840040
88: IVFAIL=0 00850040
89: IVDELE=0 00860040
90: ICZERO=0 00870040
91: C 00880040
92: C WRITE PAGE HEADERS 00890040
93: WRITE (I02,90000) 00900040
94: WRITE (I02,90001) 00910040
95: WRITE (I02,90002) 00920040
96: WRITE (I02, 90002) 00930040
97: WRITE (I02,90003) 00940040
98: WRITE (I02,90002) 00950040
99: WRITE (I02,90004) 00960040
100: WRITE (I02,90002) 00970040
101: WRITE (I02,90011) 00980040
102: WRITE (I02,90002) 00990040
103: WRITE (I02,90002) 01000040
104: WRITE (I02,90005) 01010040
105: WRITE (I02,90006) 01020040
106: WRITE (I02,90002) 01030040
107: C 01040040
108: C TEST SECTION 01050040
109: C 01060040
110: C ARITHMETIC ASSIGNMENT STATEMENT 01070040
111: C 01080040
112: C TEST 582 THROUGH TEST 597 CONTAIN ARITHMETIC ASSIGNMENT STATEMENTS01090040
113: C OF THE FORM INTEGER VARIABLE=INTEGER VARIABLE/INTEGER VAR. 01100040
114: C 01110040
115: C TEST 582 THROUGH TEST 585 - POSITIVE VALUES 01120040
116: C NO TRUNCATION REQUIRED 01130040
117: C 01140040
118: 5821 CONTINUE 01150040
119: IVTNUM = 582 01160040
120: C 01170040
121: C **** TEST 582 **** 01180040
122: C 01190040
123: IF (ICZERO) 35820, 5820, 35820 01200040
124: 5820 CONTINUE 01210040
125: IVON01 = 4 01220040
126: IVON02 = 2 01230040
127: IVCOMP = IVON01 / IVON02 01240040
128: GO TO 45820 01250040
129: 35820 IVDELE = IVDELE + 1 01260040
130: WRITE (I02,80003) IVTNUM 01270040
131: IF (ICZERO) 45820, 5831, 45820 01280040
132: 45820 IF (IVCOMP -2) 25820,15820,25820 01290040
133: 15820 IVPASS = IVPASS + 1 01300040
134: WRITE (I02,80001) IVTNUM 01310040
135: GO TO 5831 01320040
136: 25820 IVFAIL = IVFAIL + 1 01330040
137: IVCORR = 2 01340040
138: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 01350040
139: 5831 CONTINUE 01360040
140: IVTNUM = 583 01370040
141: C 01380040
142: C **** TEST 583 **** 01390040
143: C 01400040
144: IF (ICZERO) 35830, 5830, 35830 01410040
145: 5830 CONTINUE 01420040
146: IVON01 = 3575 01430040
147: IVON02 = 25 01440040
148: IVCOMP = IVON01/IVON02 01450040
149: GO TO 45830 01460040
150: 35830 IVDELE = IVDELE + 1 01470040
151: WRITE (I02,80003) IVTNUM 01480040
152: IF (ICZERO) 45830, 5841, 45830 01490040
153: 45830 IF (IVCOMP - 143) 25830,15830,25830 01500040
154: 15830 IVPASS = IVPASS + 1 01510040
155: WRITE (I02,80001) IVTNUM 01520040
156: GO TO 5841 01530040
157: 25830 IVFAIL = IVFAIL + 1 01540040
158: IVCORR = 143 01550040
159: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 01560040
160: 5841 CONTINUE 01570040
161: IVTNUM = 584 01580040
162: C 01590040
163: C **** TEST 584 **** 01600040
164: C 01610040
165: IF (ICZERO) 35840, 5840, 35840 01620040
166: 5840 CONTINUE 01630040
167: IVON01 = 6170 01640040
168: IVON02 = 1234 01650040
169: IVCOMP = IVON01/IVON02 01660040
170: GO TO 45840 01670040
171: 35840 IVDELE = IVDELE + 1 01680040
172: WRITE (I02,80003) IVTNUM 01690040
173: IF (ICZERO) 45840, 5851, 45840 01700040
174: 45840 IF (IVCOMP - 5) 25840,15840,25840 01710040
175: 15840 IVPASS = IVPASS + 1 01720040
176: WRITE (I02,80001) IVTNUM 01730040
177: GO TO 5851 01740040
178: 25840 IVFAIL = IVFAIL + 1 01750040
179: IVCORR = 5 01760040
180: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 01770040
181: 5851 CONTINUE 01780040
182: IVTNUM = 585 01790040
183: C 01800040
184: C **** TEST 585 **** 01810040
185: C 01820040
186: IF (ICZERO) 35850, 5850, 35850 01830040
187: 5850 CONTINUE 01840040
188: IVON01 = 32767 01850040
189: IVON02 = 1 01860040
190: IVCOMP = IVON01/IVON02 01870040
191: GO TO 45850 01880040
192: 35850 IVDELE = IVDELE + 1 01890040
193: WRITE (I02,80003) IVTNUM 01900040
194: IF (ICZERO) 45850, 5861, 45850 01910040
195: 45850 IF (IVCOMP - 32767) 25850,15850,25850 01920040
196: 15850 IVPASS = IVPASS + 1 01930040
197: WRITE (I02,80001) IVTNUM 01940040
198: GO TO 5861 01950040
199: 25850 IVFAIL = IVFAIL + 1 01960040
200: IVCORR = 32767 01970040
201: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 01980040
202: C 01990040
203: C TEST 586 THROUGH TEST 589 - POSITIVE VALUES 02000040
204: C TRUNCATION OF RESULT REQUIRED 02010040
205: C 02020040
206: 5861 CONTINUE 02030040
207: IVTNUM = 586 02040040
208: C 02050040
209: C **** TEST 586 **** 02060040
210: C 02070040
211: IF (ICZERO) 35860, 5860, 35860 02080040
212: 5860 CONTINUE 02090040
213: IVON01 = 2 02100040
214: IVON02 = 3 02110040
215: IVCOMP = IVON01/IVON02 02120040
216: GO TO 45860 02130040
217: 35860 IVDELE = IVDELE + 1 02140040
218: WRITE (I02,80003) IVTNUM 02150040
219: IF (ICZERO) 45860, 5871, 45860 02160040
220: 45860 IF (IVCOMP) 25860,15860,25860 02170040
221: 15860 IVPASS = IVPASS + 1 02180040
222: WRITE (I02,80001) IVTNUM 02190040
223: GO TO 5871 02200040
224: 25860 IVFAIL = IVFAIL + 1 02210040
225: IVCORR = 0 02220040
226: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 02230040
227: 5871 CONTINUE 02240040
228: IVTNUM = 587 02250040
229: C 02260040
230: C **** TEST 587 **** 02270040
231: C 02280040
232: IF (ICZERO) 35870, 5870, 35870 02290040
233: 5870 CONTINUE 02300040
234: IVON01 = 959 02310040
235: IVON02 = 120 02320040
236: IVCOMP = IVON01/IVON02 02330040
237: GO TO 45870 02340040
238: 35870 IVDELE = IVDELE + 1 02350040
239: WRITE (I02,80003) IVTNUM 02360040
240: IF (ICZERO) 45870, 5881, 45870 02370040
241: 45870 IF (IVCOMP - 7) 25870,15870,25870 02380040
242: 15870 IVPASS = IVPASS + 1 02390040
243: WRITE (I02,80001) IVTNUM 02400040
244: GO TO 5881 02410040
245: 25870 IVFAIL = IVFAIL + 1 02420040
246: IVCORR = 7 02430040
247: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 02440040
248: 5881 CONTINUE 02450040
249: IVTNUM = 588 02460040
250: C 02470040
251: C **** TEST 588 **** 02480040
252: C 02490040
253: IF (ICZERO) 35880, 5880, 35880 02500040
254: 5880 CONTINUE 02510040
255: IVON01 = 26606 02520040
256: IVON02 = 8 02530040
257: IVCOMP = IVON01/IVON02 02540040
258: GO TO 45880 02550040
259: 35880 IVDELE = IVDELE + 1 02560040
260: WRITE (I02,80003) IVTNUM 02570040
261: IF (ICZERO) 45880, 5891, 45880 02580040
262: 45880 IF (IVCOMP - 3325) 25880,15880,25880 02590040
263: 15880 IVPASS = IVPASS + 1 02600040
264: WRITE (I02,80001) IVTNUM 02610040
265: GO TO 5891 02620040
266: 25880 IVFAIL = IVFAIL + 1 02630040
267: IVCORR = 3325 02640040
268: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 02650040
269: 5891 CONTINUE 02660040
270: IVTNUM = 589 02670040
271: C 02680040
272: C **** TEST 589 **** 02690040
273: C 02700040
274: IF (ICZERO) 35890, 5890, 35890 02710040
275: 5890 CONTINUE 02720040
276: IVON01 = 25603 02730040
277: IVON02 = 10354 02740040
278: IVCOMP = IVON01/IVON02 02750040
279: GO TO 45890 02760040
280: 35890 IVDELE = IVDELE + 1 02770040
281: WRITE (I02,80003) IVTNUM 02780040
282: IF (ICZERO) 45890, 5901, 45890 02790040
283: 45890 IF (IVCOMP - 2) 25890,15890,25890 02800040
284: 15890 IVPASS = IVPASS + 1 02810040
285: WRITE (I02,80001) IVTNUM 02820040
286: GO TO 5901 02830040
287: 25890 IVFAIL = IVFAIL + 1 02840040
288: IVCORR = 2 02850040
289: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 02860040
290: C 02870040
291: C TEST 590 THROUGH TEST 593 - NEGATIVE VALUES INCLUDED 02880040
292: C NO TRUNCATION REQUIRED 02890040
293: C 02900040
294: 5901 CONTINUE 02910040
295: IVTNUM = 590 02920040
296: C 02930040
297: C **** TEST 590 **** 02940040
298: C 02950040
299: IF (ICZERO) 35900, 5900, 35900 02960040
300: 5900 CONTINUE 02970040
301: IVON01 = 75 02980040
302: IVON02 = -25 02990040
303: IVCOMP = IVON01/IVON02 03000040
304: GO TO 45900 03010040
305: 35900 IVDELE = IVDELE + 1 03020040
306: WRITE (I02,80003) IVTNUM 03030040
307: IF (ICZERO) 45900, 5911, 45900 03040040
308: 45900 IF (IVCOMP + 3) 25900,15900,25900 03050040
309: 15900 IVPASS = IVPASS + 1 03060040
310: WRITE (I02,80001) IVTNUM 03070040
311: GO TO 5911 03080040
312: 25900 IVFAIL = IVFAIL + 1 03090040
313: IVCORR = -3 03100040
314: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 03110040
315: 5911 CONTINUE 03120040
316: IVTNUM = 591 03130040
317: C 03140040
318: C **** TEST 591 **** 03150040
319: C 03160040
320: IF (ICZERO) 35910, 5910, 35910 03170040
321: 5910 CONTINUE 03180040
322: IVON01 = -6170 03190040
323: IVON02 = -1234 03200040
324: IVCOMP = IVON01/IVON02 03210040
325: GO TO 45910 03220040
326: 35910 IVDELE = IVDELE + 1 03230040
327: WRITE (I02,80003) IVTNUM 03240040
328: IF (ICZERO) 45910, 5921, 45910 03250040
329: 45910 IF (IVCOMP -5) 25910,15910,25910 03260040
330: 15910 IVPASS = IVPASS + 1 03270040
331: WRITE (I02,80001) IVTNUM 03280040
332: GO TO 5921 03290040
333: 25910 IVFAIL = IVFAIL + 1 03300040
334: IVCORR = 5 03310040
335: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 03320040
336: 5921 CONTINUE 03330040
337: IVTNUM = 592 03340040
338: C 03350040
339: C **** TEST 592 **** 03360040
340: C 03370040
341: IF (ICZERO) 35920, 5920, 35920 03380040
342: 5920 CONTINUE 03390040
343: IVON01 = 32766 03400040
344: IVON02 = -2 03410040
345: IVCOMP =-IVON01/IVON02 03420040
346: GO TO 45920 03430040
347: 35920 IVDELE = IVDELE + 1 03440040
348: WRITE (I02,80003) IVTNUM 03450040
349: IF (ICZERO) 45920, 5931, 45920 03460040
350: 45920 IF (IVCOMP - 16383) 25920,15920,25920 03470040
351: 15920 IVPASS = IVPASS + 1 03480040
352: WRITE (I02,80001) IVTNUM 03490040
353: GO TO 5931 03500040
354: 25920 IVFAIL = IVFAIL + 1 03510040
355: IVCORR = 16383 03520040
356: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 03530040
357: 5931 CONTINUE 03540040
358: IVTNUM = 593 03550040
359: C 03560040
360: C **** TEST 593 **** 03570040
361: C 03580040
362: IF (ICZERO) 35930, 5930, 35930 03590040
363: 5930 CONTINUE 03600040
364: IVON01 = 4 03610040
365: IVON02 = 2 03620040
366: IVCOMP = IVON01/(-IVON02) 03630040
367: GO TO 45930 03640040
368: 35930 IVDELE = IVDELE + 1 03650040
369: WRITE (I02,80003) IVTNUM 03660040
370: IF (ICZERO) 45930, 5941, 45930 03670040
371: 45930 IF (IVCOMP + 2) 25930,15930,25930 03680040
372: 15930 IVPASS = IVPASS + 1 03690040
373: WRITE (I02,80001) IVTNUM 03700040
374: GO TO 5941 03710040
375: 25930 IVFAIL = IVFAIL + 1 03720040
376: IVCORR = -2 03730040
377: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 03740040
378: C 03750040
379: C TEST 594 THROUGH TEST 597 - NEGATIVE VALUES INCLUDED 03760040
380: C TRUNCATION OF RESULT REQUIRED 03770040
381: C 03780040
382: 5941 CONTINUE 03790040
383: IVTNUM = 594 03800040
384: C 03810040
385: C **** TEST 594 **** 03820040
386: C 03830040
387: IF (ICZERO) 35940, 5940, 35940 03840040
388: 5940 CONTINUE 03850040
389: IVON01 = -5 03860040
390: IVON02 = 2 03870040
391: IVCOMP = IVON01/IVON02 03880040
392: GO TO 45940 03890040
393: 35940 IVDELE = IVDELE + 1 03900040
394: WRITE (I02,80003) IVTNUM 03910040
395: IF (ICZERO) 45940, 5951, 45940 03920040
396: 45940 IF (IVCOMP + 2) 25940,15940,25940 03930040
397: 15940 IVPASS = IVPASS + 1 03940040
398: WRITE (I02,80001) IVTNUM 03950040
399: GO TO 5951 03960040
400: 25940 IVFAIL = IVFAIL + 1 03970040
401: IVCORR = -2 03980040
402: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 03990040
403: 5951 CONTINUE 04000040
404: IVTNUM = 595 04010040
405: C 04020040
406: C **** TEST 595 **** 04030040
407: C 04040040
408: IF (ICZERO) 35950, 5950, 35950 04050040
409: 5950 CONTINUE 04060040
410: IVON01 = -25603 04070040
411: IVON02 = -10354 04080040
412: IVCOMP = IVON01/IVON02 04090040
413: GO TO 45950 04100040
414: 35950 IVDELE = IVDELE + 1 04110040
415: WRITE (I02,80003) IVTNUM 04120040
416: IF (ICZERO) 45950, 5961, 45950 04130040
417: 45950 IF (IVCOMP -2) 25950,15950,25950 04140040
418: 15950 IVPASS = IVPASS + 1 04150040
419: WRITE (I02,80001) IVTNUM 04160040
420: GO TO 5961 04170040
421: 25950 IVFAIL = IVFAIL + 1 04180040
422: IVCORR =2 04190040
423: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 04200040
424: 5961 CONTINUE 04210040
425: IVTNUM = 596 04220040
426: C 04230040
427: C **** TEST 596 **** 04240040
428: C 04250040
429: IF (ICZERO) 35960, 5960, 35960 04260040
430: 5960 CONTINUE 04270040
431: IVON01 = 25603 04280040
432: IVON02 = 10354 04290040
433: IVCOMP = -IVON01/IVON02 04300040
434: GO TO 45960 04310040
435: 35960 IVDELE = IVDELE + 1 04320040
436: WRITE (I02,80003) IVTNUM 04330040
437: IF (ICZERO) 45960, 5971, 45960 04340040
438: 45960 IF (IVCOMP +2) 25960,15960,25960 04350040
439: 15960 IVPASS = IVPASS + 1 04360040
440: WRITE (I02,80001) IVTNUM 04370040
441: GO TO 5971 04380040
442: 25960 IVFAIL = IVFAIL + 1 04390040
443: IVCORR = -2 04400040
444: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 04410040
445: 5971 CONTINUE 04420040
446: IVTNUM = 597 04430040
447: C 04440040
448: C **** TEST 597 **** 04450040
449: C 04460040
450: IF (ICZERO) 35970, 5970, 35970 04470040
451: 5970 CONTINUE 04480040
452: IVON01 = 25603 04490040
453: IVON02 = -2 04500040
454: IVCOMP = -(IVON01/IVON02) 04510040
455: GO TO 45970 04520040
456: 35970 IVDELE = IVDELE + 1 04530040
457: WRITE (I02,80003) IVTNUM 04540040
458: IF (ICZERO) 45970, 5981, 45970 04550040
459: 45970 IF (IVCOMP - 12801) 25970,15970,25970 04560040
460: 15970 IVPASS = IVPASS + 1 04570040
461: WRITE (I02,80001) IVTNUM 04580040
462: GO TO 5981 04590040
463: 25970 IVFAIL = IVFAIL + 1 04600040
464: IVCORR = 12801 04610040
465: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 04620040
466: C 04630040
467: C TEST 598 THROUGH TEST 614 CONTAIN TWO INTEGER VARIABLES, AN 04640040
468: C INTEGER CONSTANT AND OPERATOR / IN AN ARITHMETIC EXPRESSION. 04650040
469: C 04660040
470: C TEST 598 THROUGH TEST 603 - NO PARENS TO GROUP ELEMENTS BUT 04670040
471: C THERE ARE PARENS SURROUNDING NEGATIVE CONSTANTS 04680040
472: C 04690040
473: C TEST 598 AND TEST 599 - IV = IV/IV/IC. 04700040
474: C 04710040
475: 5981 CONTINUE 04720040
476: IVTNUM = 598 04730040
477: C 04740040
478: C **** TEST 598 **** 04750040
479: C 04760040
480: IF (ICZERO) 35980, 5980, 35980 04770040
481: 5980 CONTINUE 04780040
482: IVON01 = 32766 04790040
483: IVON02 = 2 04800040
484: IVCOMP = IVON01/IVON02/3 04810040
485: GO TO 45980 04820040
486: 35980 IVDELE = IVDELE + 1 04830040
487: WRITE (I02,80003) IVTNUM 04840040
488: IF (ICZERO) 45980, 5991, 45980 04850040
489: 45980 IF (IVCOMP - 5461) 25980,15980,25980 04860040
490: 15980 IVPASS = IVPASS + 1 04870040
491: WRITE (I02,80001) IVTNUM 04880040
492: GO TO 5991 04890040
493: 25980 IVFAIL = IVFAIL + 1 04900040
494: IVCORR = 5461 04910040
495: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 04920040
496: 5991 CONTINUE 04930040
497: IVTNUM = 599 04940040
498: C 04950040
499: C **** TEST 599 **** 04960040
500: C 04970040
501: IF (ICZERO) 35990, 5990, 35990 04980040
502: 5990 CONTINUE 04990040
503: IVON01 = 7151 05000040
504: IVON02 = 3 05010040
505: IVCOMP = IVON01/IVON02/10 05020040
506: GO TO 45990 05030040
507: 35990 IVDELE = IVDELE + 1 05040040
508: WRITE (I02,80003) IVTNUM 05050040
509: IF (ICZERO) 45990, 6001, 45990 05060040
510: 45990 IF (IVCOMP -238) 25990,15990,25990 05070040
511: 15990 IVPASS = IVPASS + 1 05080040
512: WRITE (I02,80001) IVTNUM 05090040
513: GO TO 6001 05100040
514: 25990 IVFAIL = IVFAIL + 1 05110040
515: IVCORR = 238 05120040
516: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 05130040
517: C 05140040
518: C TEST 600 AND TEST 601 - IV= IV/IC/IV. 05150040
519: C 05160040
520: 6001 CONTINUE 05170040
521: IVTNUM = 600 05180040
522: C 05190040
523: C **** TEST 600 **** 05200040
524: C 05210040
525: IF (ICZERO) 36000, 6000, 36000 05220040
526: 6000 CONTINUE 05230040
527: IVON01 = -7150 05240040
528: IVON03 = -25 05250040
529: IVCOMP = IVON01/(-2)/IVON03 05260040
530: GO TO 46000 05270040
531: 36000 IVDELE = IVDELE + 1 05280040
532: WRITE (I02,80003) IVTNUM 05290040
533: IF (ICZERO) 46000, 6011, 46000 05300040
534: 46000 IF (IVCOMP + 143) 26000,16000,26000 05310040
535: 16000 IVPASS = IVPASS + 1 05320040
536: WRITE (I02,80001) IVTNUM 05330040
537: GO TO 6011 05340040
538: 26000 IVFAIL = IVFAIL + 1 05350040
539: IVCORR = -143 05360040
540: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 05370040
541: 6011 CONTINUE 05380040
542: IVTNUM = 601 05390040
543: C 05400040
544: C **** TEST 601 **** 05410040
545: C 05420040
546: IF (ICZERO) 36010, 6010, 36010 05430040
547: 6010 CONTINUE 05440040
548: IVON01 = 32767 05450040
549: IVON03 = -1 05460040
550: IVCOMP = IVON01/2/IVON03 05470040
551: GO TO 46010 05480040
552: 36010 IVDELE = IVDELE + 1 05490040
553: WRITE (I02,80003) IVTNUM 05500040
554: IF (ICZERO) 46010, 6021, 46010 05510040
555: 46010 IF (IVCOMP + 16383) 26010,16010,26010 05520040
556: 16010 IVPASS = IVPASS + 1 05530040
557: WRITE (I02,80001) IVTNUM 05540040
558: GO TO 6021 05550040
559: 26010 IVFAIL = IVFAIL + 1 05560040
560: IVCORR = -16383 05570040
561: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 05580040
562: 6021 CONTINUE 05590040
563: IVTNUM = 602 05600040
564: C 05610040
565: C **** TEST 602 **** 05620040
566: C 05630040
567: C TEST 602 AND TEST 603 - IV=IC/IV/IV 05640040
568: C 05650040
569: C 05660040
570: IF (ICZERO) 36020, 6020, 36020 05670040
571: 6020 CONTINUE 05680040
572: IVON02 = 13 05690040
573: IVON03 = 51 05700040
574: IVCOMP = 15249/IVON02/IVON03 05710040
575: GO TO 46020 05720040
576: 36020 IVDELE = IVDELE + 1 05730040
577: WRITE (I02,80003) IVTNUM 05740040
578: IF (ICZERO) 46020, 6031, 46020 05750040
579: 46020 IF (IVCOMP - 23) 26020,16020,26020 05760040
580: 16020 IVPASS = IVPASS + 1 05770040
581: WRITE (I02,80001) IVTNUM 05780040
582: GO TO 6031 05790040
583: 26020 IVFAIL = IVFAIL + 1 05800040
584: IVCORR = 23 05810040
585: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 05820040
586: 6031 CONTINUE 05830040
587: IVTNUM = 603 05840040
588: C 05850040
589: C **** TEST 603 **** 05860040
590: C 05870040
591: IF (ICZERO) 36030, 6030, 36030 05880040
592: 6030 CONTINUE 05890040
593: IVON02 = -13 05900040
594: IVON03 = -51 05910040
595: IVCOMP = -15249/IVON02/IVON03 05920040
596: GO TO 46030 05930040
597: 36030 IVDELE = IVDELE + 1 05940040
598: WRITE (I02,80003) IVTNUM 05950040
599: IF (ICZERO) 46030, 6041, 46030 05960040
600: 46030 IF (IVCOMP +23) 26030,16030,26030 05970040
601: 16030 IVPASS = IVPASS + 1 05980040
602: WRITE (I02,80001) IVTNUM 05990040
603: GO TO 6041 06000040
604: 26030 IVFAIL = IVFAIL + 1 06010040
605: IVCORR = -23 06020040
606: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 06030040
607: C 06040040
608: C TEST 604 THROUGH TEST 614 - PARENTHESES ARE USED TO GROUP 06050040
609: C ELEMENTS IN THE ARITHMETIC EXPRESSIONS. 06060040
610: C 06070040
611: C TEST 604 AND TEST 605 - IV=(IV/IV)/IC. 06080040
612: C 06090040
613: 6041 CONTINUE 06100040
614: IVTNUM = 604 06110040
615: C 06120040
616: C **** TEST 604 **** 06130040
617: C 06140040
618: IF (ICZERO) 36040, 6040, 36040 06150040
619: 6040 CONTINUE 06160040
620: IVON01 = 32766 06170040
621: IVON02 = 2 06180040
622: IVCOMP =(IVON01/IVON02)/3 06190040
623: GO TO 46040 06200040
624: 36040 IVDELE = IVDELE + 1 06210040
625: WRITE (I02,80003) IVTNUM 06220040
626: IF (ICZERO) 46040, 6051, 46040 06230040
627: 46040 IF (IVCOMP -5461) 26040,16040,26040 06240040
628: 16040 IVPASS = IVPASS + 1 06250040
629: WRITE (I02,80001) IVTNUM 06260040
630: GO TO 6051 06270040
631: 26040 IVFAIL = IVFAIL + 1 06280040
632: IVCORR = 5461 06290040
633: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 06300040
634: 6051 CONTINUE 06310040
635: IVTNUM = 605 06320040
636: C 06330040
637: C **** TEST 605 **** 06340040
638: C 06350040
639: IF (ICZERO) 36050, 6050, 36050 06360040
640: 6050 CONTINUE 06370040
641: IVON01 = 7151 06380040
642: IVON02 = 3 06390040
643: IVCOMP = (IVON01/IVON02)/10 06400040
644: GO TO 46050 06410040
645: 36050 IVDELE = IVDELE + 1 06420040
646: WRITE (I02,80003) IVTNUM 06430040
647: IF (ICZERO) 46050, 6061, 46050 06440040
648: 46050 IF (IVCOMP - 238) 26050,16050,26050 06450040
649: 16050 IVPASS = IVPASS + 1 06460040
650: WRITE (I02,80001) IVTNUM 06470040
651: GO TO 6061 06480040
652: 26050 IVFAIL = IVFAIL + 1 06490040
653: IVCORR = 238 06500040
654: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 06510040
655: C 06520040
656: C TEST 606 AND TEST 607 - IV=IV/(IV/IC). 06530040
657: C 06540040
658: 6061 CONTINUE 06550040
659: IVTNUM = 606 06560040
660: C 06570040
661: C **** TEST 606 **** 06580040
662: C 06590040
663: IF (ICZERO) 36060, 6060, 36060 06600040
664: 6060 CONTINUE 06610040
665: IVON01 = -7154 06620040
666: IVON02 = 26 06630040
667: IVCOMP = IVON01/(IVON02/5) 06640040
668: GO TO 46060 06650040
669: 36060 IVDELE = IVDELE + 1 06660040
670: WRITE (I02,80003) IVTNUM 06670040
671: IF (ICZERO) 46060, 6071, 46060 06680040
672: 46060 IF (IVCOMP + 1430) 26060,16060,26060 06690040
673: 16060 IVPASS = IVPASS + 1 06700040
674: WRITE (I02,80001) IVTNUM 06710040
675: GO TO 6071 06720040
676: 26060 IVFAIL = IVFAIL + 1 06730040
677: IVCORR = -1430 06740040
678: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 06750040
679: 6071 CONTINUE 06760040
680: IVTNUM = 607 06770040
681: C 06780040
682: C **** TEST 607 **** 06790040
683: C 06800040
684: IF (ICZERO) 36070, 6070, 36070 06810040
685: 6070 CONTINUE 06820040
686: IVON01 = 29 06830040
687: IVON02 = -5 06840040
688: IVCOMP = IVON01/(IVON02/2) 06850040
689: GO TO 46070 06860040
690: 36070 IVDELE = IVDELE + 1 06870040
691: WRITE (I02,80003) IVTNUM 06880040
692: IF (ICZERO) 46070, 6081, 46070 06890040
693: 46070 IF (IVCOMP + 14) 26070,16070,26070 06900040
694: 16070 IVPASS = IVPASS + 1 06910040
695: WRITE (I02,80001) IVTNUM 06920040
696: GO TO 6081 06930040
697: 26070 IVFAIL = IVFAIL + 1 06940040
698: IVCORR = -14 06950040
699: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 06960040
700: C 06970040
701: C TEST 608 AND TEST 609 - IV = (IV/IC)/IV. 06980040
702: C 06990040
703: 6081 CONTINUE 07000040
704: IVTNUM = 608 07010040
705: C 07020040
706: C **** TEST 608 **** 07030040
707: C 07040040
708: IF (ICZERO) 36080, 6080, 36080 07050040
709: 6080 CONTINUE 07060040
710: IVON01 = 24 07070040
711: IVON03 = 3 07080040
712: IVCOMP = (IVON01/3)/IVON03 07090040
713: GO TO 46080 07100040
714: 36080 IVDELE = IVDELE + 1 07110040
715: WRITE (I02,80003) IVTNUM 07120040
716: IF (ICZERO) 46080, 6091, 46080 07130040
717: 46080 IF (IVCOMP -2) 26080,16080,26080 07140040
718: 16080 IVPASS = IVPASS + 1 07150040
719: WRITE (I02,80001) IVTNUM 07160040
720: GO TO 6091 07170040
721: 26080 IVFAIL = IVFAIL + 1 07180040
722: IVCORR = 2 07190040
723: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 07200040
724: 6091 CONTINUE 07210040
725: IVTNUM = 609 07220040
726: C 07230040
727: C **** TEST 609 **** 07240040
728: C 07250040
729: IF (ICZERO) 36090, 6090, 36090 07260040
730: 6090 CONTINUE 07270040
731: IVON01 = 7151 07280040
732: IVON03 = 10 07290040
733: IVCOMP = (IVON01/(-3))/IVON03 07300040
734: GO TO 46090 07310040
735: 36090 IVDELE = IVDELE + 1 07320040
736: WRITE (I02,80003) IVTNUM 07330040
737: IF (ICZERO) 46090, 6101, 46090 07340040
738: 46090 IF (IVCOMP + 238) 26090,16090,26090 07350040
739: 16090 IVPASS = IVPASS + 1 07360040
740: WRITE (I02,80001) IVTNUM 07370040
741: GO TO 6101 07380040
742: 26090 IVFAIL = IVFAIL + 1 07390040
743: IVCORR = -238 07400040
744: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 07410040
745: C 07420040
746: C TEST 610 AND TEST 611 - IV=IV(IC/IV) 07430040
747: C 07440040
748: 6101 CONTINUE 07450040
749: IVTNUM = 610 07460040
750: C 07470040
751: C **** TEST 610 **** 07480040
752: C 07490040
753: IF (ICZERO) 36100, 6100, 36100 07500040
754: 6100 CONTINUE 07510040
755: IVON01 = -7154 07520040
756: IVON03 = -5 07530040
757: IVCOMP = IVON01/((-26)/IVON03) 07540040
758: GO TO 46100 07550040
759: 36100 IVDELE = IVDELE + 1 07560040
760: WRITE (I02,80003) IVTNUM 07570040
761: IF (ICZERO) 46100, 6111, 46100 07580040
762: 46100 IF (IVCOMP + 1430) 26100,16100,26100 07590040
763: 16100 IVPASS = IVPASS + 1 07600040
764: WRITE (I02,80001) IVTNUM 07610040
765: GO TO 6111 07620040
766: 26100 IVFAIL = IVFAIL + 1 07630040
767: IVCORR = -1430 07640040
768: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 07650040
769: 6111 CONTINUE 07660040
770: IVTNUM = 611 07670040
771: C 07680040
772: C **** TEST 611 **** 07690040
773: C 07700040
774: IF (ICZERO) 36110, 6110, 36110 07710040
775: 6110 CONTINUE 07720040
776: IVON01 = 7150 07730040
777: IVON03 = 5 07740040
778: IVCOMP = IVON01/((+25)/IVON03) 07750040
779: GO TO 46110 07760040
780: 36110 IVDELE = IVDELE + 1 07770040
781: WRITE (I02,80003) IVTNUM 07780040
782: IF (ICZERO) 46110, 6121, 46110 07790040
783: 46110 IF (IVCOMP -1430) 26110,16110,26110 07800040
784: 16110 IVPASS = IVPASS + 1 07810040
785: WRITE (I02,80001) IVTNUM 07820040
786: GO TO 6121 07830040
787: 26110 IVFAIL = IVFAIL + 1 07840040
788: IVCORR = 1430 07850040
789: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 07860040
790: 6121 CONTINUE 07870040
791: IVTNUM = 612 07880040
792: C 07890040
793: C **** TEST 612 **** 07900040
794: C TEST 612 - IV= (IC/IV)/IV 07910040
795: C 07920040
796: IF (ICZERO) 36120, 6120, 36120 07930040
797: 6120 CONTINUE 07940040
798: IVON02 = -3 07950040
799: IVON03 = -10 07960040
800: IVCOMP = (-7154/IVON02)/IVON03 07970040
801: GO TO 46120 07980040
802: 36120 IVDELE = IVDELE + 1 07990040
803: WRITE (I02,80003) IVTNUM 08000040
804: IF (ICZERO) 46120, 6131, 46120 08010040
805: 46120 IF (IVCOMP + 238) 26120,16120,26120 08020040
806: 16120 IVPASS = IVPASS + 1 08030040
807: WRITE (I02,80001) IVTNUM 08040040
808: GO TO 6131 08050040
809: 26120 IVFAIL = IVFAIL + 1 08060040
810: IVCORR = -238 08070040
811: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 08080040
812: C 08090040
813: C TEST 613 AND TEST 614 - IV=IC/(IV/IV) 08100040
814: C 08110040
815: 6131 CONTINUE 08120040
816: IVTNUM = 613 08130040
817: C 08140040
818: C **** TEST 613 **** 08150040
819: C 08160040
820: IF (ICZERO) 36130, 6130, 36130 08170040
821: 6130 CONTINUE 08180040
822: IVON02 = 8 08190040
823: IVON03 = 4 08200040
824: IVCOMP = 24/(IVON02/IVON03) 08210040
825: GO TO 46130 08220040
826: 36130 IVDELE = IVDELE + 1 08230040
827: WRITE (I02,80003) IVTNUM 08240040
828: IF (ICZERO) 46130, 6141, 46130 08250040
829: 46130 IF (IVCOMP - 12) 26130,16130,26130 08260040
830: 16130 IVPASS = IVPASS + 1 08270040
831: WRITE (I02,80001) IVTNUM 08280040
832: GO TO 6141 08290040
833: 26130 IVFAIL = IVFAIL + 1 08300040
834: IVCORR = 12 08310040
835: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 08320040
836: 6141 CONTINUE 08330040
837: IVTNUM = 614 08340040
838: C 08350040
839: C **** TEST 614 **** 08360040
840: C 08370040
841: IF (ICZERO) 36140, 6140, 36140 08380040
842: 6140 CONTINUE 08390040
843: IVON02 = 25 08400040
844: IVON03 = 5 08410040
845: IVCOMP = 7150/(-(IVON02/IVON03)) 08420040
846: GO TO 46140 08430040
847: 36140 IVDELE = IVDELE + 1 08440040
848: WRITE (I02,80003) IVTNUM 08450040
849: IF (ICZERO) 46140, 6151, 46140 08460040
850: 46140 IF (IVCOMP + 1430) 26140,16140,26140 08470040
851: 16140 IVPASS = IVPASS + 1 08480040
852: WRITE (I02,80001) IVTNUM 08490040
853: GO TO 6151 08500040
854: 26140 IVFAIL = IVFAIL + 1 08510040
855: IVCORR = -1430 08520040
856: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 08530040
857: C **** END OF TESTS **** 08540040
858: 6151 CONTINUE 08550040
859: C 08560040
860: C WRITE PAGE FOOTINGS AND RUN SUMMARIES 08570040
861: 99999 CONTINUE 08580040
862: WRITE (I02,90002) 08590040
863: WRITE (I02,90006) 08600040
864: WRITE (I02,90002) 08610040
865: WRITE (I02,90002) 08620040
866: WRITE (I02,90007) 08630040
867: WRITE (I02,90002) 08640040
868: WRITE (I02,90008) IVFAIL 08650040
869: WRITE (I02,90009) IVPASS 08660040
870: WRITE (I02,90010) IVDELE 08670040
871: C 08680040
872: C 08690040
873: C TERMINATE ROUTINE EXECUTION 08700040
874: STOP 08710040
875: C 08720040
876: C FORMAT STATEMENTS FOR PAGE HEADERS 08730040
877: 90000 FORMAT (1H1) 08740040
878: 90002 FORMAT (1H ) 08750040
879: 90001 FORMAT (1H ,10X,34HFORTRAN COMPILER VALIDATION SYSTEM) 08760040
880: 90003 FORMAT (1H ,21X,11HVERSION 1.0) 08770040
881: 90004 FORMAT (1H ,10X,38HFOR OFFICIAL USE ONLY - COPYRIGHT 1978) 08780040
882: 90005 FORMAT (1H ,5X,4HTEST,5X,9HPASS/FAIL, 5X,8HCOMPUTED,8X,7HCORRECT) 08790040
883: 90006 FORMAT (1H ,5X,46H----------------------------------------------) 08800040
884: 90011 FORMAT (1H ,18X,17HSUBSET LEVEL TEST) 08810040
885: C 08820040
886: C FORMAT STATEMENTS FOR RUN SUMMARIES 08830040
887: 90008 FORMAT (1H ,15X,I5,19H ERRORS ENCOUNTERED) 08840040
888: 90009 FORMAT (1H ,15X,I5,13H TESTS PASSED) 08850040
889: 90010 FORMAT (1H ,15X,I5,14H TESTS DELETED) 08860040
890: C 08870040
891: C FORMAT STATEMENTS FOR TEST RESULTS 08880040
892: 80001 FORMAT (1H ,4X,I5,7X,4HPASS) 08890040
893: 80002 FORMAT (1H ,4X,I5,7X,4HFAIL) 08900040
894: 80003 FORMAT (1H ,4X,I5,7X,7HDELETED) 08910040
895: 80004 FORMAT (1H ,4X,I5,7X,4HFAIL,10X,I6,9X,I6) 08920040
896: 80005 FORMAT (1H ,4X,I5,7X,4HFAIL,4X,E12.5,3X,E12.5) 08930040
897: C 08940040
898: 90007 FORMAT (1H ,20X,20HEND OF PROGRAM FM040) 08950040
899: END 08960040
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.