|
|
1.1 root 1: C COMMENT SECTION 00010080
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 00020080
6: C FM080 00030080
7: C 00040080
8: C THIS ROUTINE CONTAINS EXTERNAL FUNCTION REFERENCE TESTS. 00050080
9: C THE FUNCTION SUBPROGRAMS CALLED BY THIS ROUTINE ARE FF081, 00060080
10: C FF082 AND FF083. THE FUNCTION SUBPROGRAMS ARE DEFINED AS 00070080
11: C FF081 = INTEGER, FF082 = REAL, FF083 = IMPLICIT REAL. 00080080
12: C THE FUNCTION SUBPROGRAM DUMMY ARGUMENTS MUST AGREE IN ORDER, 00090080
13: C NUMBER AND TYPE WITH THE CORRESPONDING ACTUAL ARGUMENTS OF THE 00100080
14: C MAIN PROGRAM. THE ARGUMENTS OF THE FUNCTION SUBPROGRAMS WILL 00110080
15: C CORRESPOND TO ACTUAL ARGUMENT LIST REFERENCES OF VARIABLE-NAME, 00120080
16: C ARRAY-NAME, ARRAY-ELEMENT-NAME AND EXPRESSION RESPECTIVELY. 00130080
17: C 00140080
18: C THIS ROUTINE WILL TEST THE VALUE OF THE FUNCTION AND THE 00150080
19: C FUNCTION ARGUMENTS RETURNED FOLLOWING THE FUNCTION REFERENCE CALL.00160080
20: C 00170080
21: C 00180080
22: C REFERENCES 00190080
23: C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, 00200080
24: C X3.9-1978 00210080
25: C 00220080
26: C SECTION 2.6, ARRAY 00230080
27: C SECTION 15.5.2, REFERENCING EXTERNAL FUNCTIONS 00240080
28: C SECTION 17.2, EVENTS THAT CAUSE ENTITIES TO BECOME DEFINED 00250080
29: DIMENSION IADN1A (5), IADN2A (4,4) 00260080
30: DIMENSION RADN3A (3,6,3), RADN1A (10) 00270080
31: DIMENSION IADN3A (3,4,5) 00280080
32: INTEGER FF081 00290080
33: REAL FF082 00300080
34: C 00310080
35: C ********************************************************** 00320080
36: C 00330080
37: C A COMPILER VALIDATION SYSTEM FOR THE FORTRAN LANGUAGE 00340080
38: C BASED ON SPECIFICATIONS AS DEFINED IN AMERICAN NATIONAL STANDARD 00350080
39: C PROGRAMMING LANGUAGE FORTRAN X3.9-1978, HAS BEEN DEVELOPED BY THE 00360080
40: C FEDERAL COBOL COMPILER TESTING SERVICE. THE FORTRAN COMPILER 00370080
41: C VALIDATION SYSTEM (FCVS) CONSISTS OF AUDIT ROUTINES, THEIR RELATED00380080
42: C DATA, AND AN EXECUTIVE SYSTEM. EACH AUDIT ROUTINE IS A FORTRAN 00390080
43: C PROGRAM, SUBPROGRAM OR FUNCTION WHICH INCLUDES TESTS OF SPECIFIC 00400080
44: C LANGUAGE ELEMENTS AND SUPPORTING PROCEDURES INDICATING THE RESULT 00410080
45: C OF EXECUTING THESE TESTS. 00420080
46: C 00430080
47: C THIS PARTICULAR PROGRAM/SUBPROGRAM/FUNCTION CONTAINS FEATURES 00440080
48: C FOUND ONLY IN THE SUBSET AS DEFINED IN X3.9-1978. 00450080
49: C 00460080
50: C SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO - 00470080
51: C 00480080
52: C DEPARTMENT OF THE NAVY 00490080
53: C FEDERAL COBOL COMPILER TESTING SERVICE 00500080
54: C WASHINGTON, D.C. 20376 00510080
55: C 00520080
56: C ********************************************************** 00530080
57: C 00540080
58: C 00550080
59: C 00560080
60: C INITIALIZATION SECTION 00570080
61: C 00580080
62: C INITIALIZE CONSTANTS 00590080
63: C ************** 00600080
64: C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. 00610080
65: I01 = 5 00620080
66: C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. 00630080
67: I02 = 6 00640080
68: C SYSTEM ENVIRONMENT SECTION 00650080
69: C 00660080
70: I01 = 5 00670080
71: C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 00680080
72: C (UNIT NUMBER FOR CARD READER). 00690080
73: CX011 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-011 CONTROL CARD. 00700080
74: C THE CX011 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL 00710080
75: C FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX010 ABOVE. 00720080
76: C 00730080
77: I02 = 6 00740080
78: C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02 = 6 00750080
79: C (UNIT NUMBER FOR PRINTER). 00760080
80: CX021 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-021 CONTROL CARD. 00770080
81: C THE CX021 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL 00780080
82: C FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX020 ABOVE. 00790080
83: C 00800080
84: IVPASS=0 00810080
85: IVFAIL=0 00820080
86: IVDELE=0 00830080
87: ICZERO=0 00840080
88: C 00850080
89: C WRITE PAGE HEADERS 00860080
90: WRITE (I02,90000) 00870080
91: WRITE (I02,90001) 00880080
92: WRITE (I02,90002) 00890080
93: WRITE (I02, 90002) 00900080
94: WRITE (I02,90003) 00910080
95: WRITE (I02,90002) 00920080
96: WRITE (I02,90004) 00930080
97: WRITE (I02,90002) 00940080
98: WRITE (I02,90011) 00950080
99: WRITE (I02,90002) 00960080
100: WRITE (I02,90002) 00970080
101: WRITE (I02,90005) 00980080
102: WRITE (I02,90006) 00990080
103: WRITE (I02,90002) 01000080
104: C 01010080
105: C TEST SECTION 01020080
106: C 01030080
107: C EXTERNAL FUNCTION REFERENCE - FUNCTION SUBPROGRAM DEFINED AS 01040080
108: C INTEGER (FF081) 01050080
109: C 01060080
110: 6741 CONTINUE 01070080
111: IVTNUM = 674 01080080
112: C 01090080
113: C TEST 674 THROUGH 679 TEST THE FUNCTION AND ARGUMENT VALUES 01100080
114: C FROM REFERENCE OF FUNCTION FF081. FUNCTION SUBPROGRAM FF081 IS 01110080
115: C DEFINED AS INTEGER. 01120080
116: C 01130080
117: C **** TEST 674 **** 01140080
118: C 01150080
119: C TEST 674 TESTS THE FUNCTION VALUE RETURNED FROM FUNCTION FF081 01160080
120: C 01170080
121: IF (ICZERO) 36740,6740,36740 01180080
122: 6740 CONTINUE 01190080
123: IVON0A = 0 01200080
124: IVON02 = 2 01210080
125: IADN1A (3) = 8 01220080
126: IADN1A (2) = 4 01230080
127: IADN2A (1,3) =10 01240080
128: IVON0A = FF081 (IVON02, IADN1A, IADN2A, 999) 01250080
129: GO TO 46740 01260080
130: 36740 IVDELE = IVDELE + 1 01270080
131: WRITE (I02,80003) IVTNUM 01280080
132: IF (ICZERO) 46740,6751,46740 01290080
133: 46740 IF (IVON0A - 1015) 26740,16740,26740 01300080
134: 16740 IVPASS = IVPASS + 1 01310080
135: WRITE (I02,80001) IVTNUM 01320080
136: GO TO 6751 01330080
137: 26740 IVFAIL = IVFAIL + 1 01340080
138: IVCORR = 1015 01350080
139: IVCOMP = IVON0A 01360080
140: WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 01370080
141: 6751 CONTINUE 01380080
142: IVTNUM = 675 01390080
143: C 01400080
144: C **** TEST 675 **** 01410080
145: C 01420080
146: C TEST 675 TESTS THE RETURN VALUE OF VARIABLE-NAME ARGUMENT 01430080
147: C IVON02. VALUE OF IVON02 SHOULD BE 4. 01440080
148: C 01450080
149: IF (ICZERO) 36750,6750,36750 01460080
150: 6750 CONTINUE 01470080
151: GO TO 46750 01480080
152: 36750 IVDELE = IVDELE + 1 01490080
153: WRITE (I02,80003) IVTNUM 01500080
154: IF (ICZERO) 46750,6761,46750 01510080
155: 46750 IF (IVON02 - 4) 26750,16750,26750 01520080
156: 16750 IVPASS = IVPASS + 1 01530080
157: WRITE (I02,80001) IVTNUM 01540080
158: GO TO 6761 01550080
159: 26750 IVFAIL = IVFAIL + 1 01560080
160: IVCORR = 4 01570080
161: IVCOMP = IVON02 01580080
162: WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 01590080
163: 6761 CONTINUE 01600080
164: IVTNUM = 676 01610080
165: C 01620080
166: C **** TEST 676 **** 01630080
167: C 01640080
168: C TEST 676 TESTS THE RETURN VALUE OF ARRAY-NAME ARGUMENT 01650080
169: C IADN1A. IADN1A (2) IS INCREMENTED BY 40 IN FUNCTION SUBPROGRAM 01660080
170: C AND SHOULD RETURN A VALUE OF 44. 01670080
171: C 01680080
172: IF (ICZERO) 36760,6760,36760 01690080
173: 6760 CONTINUE 01700080
174: GO TO 46760 01710080
175: 36760 IVDELE = IVDELE + 1 01720080
176: WRITE (I02,80003) IVTNUM 01730080
177: IF (ICZERO) 46760,6771,46760 01740080
178: 46760 IF (IADN1A (2) - 44) 26760,16760,26760 01750080
179: 16760 IVPASS = IVPASS + 1 01760080
180: WRITE (I02,80001) IVTNUM 01770080
181: GO TO 6771 01780080
182: 26760 IVFAIL = IVFAIL + 1 01790080
183: IVCORR = 44 01800080
184: IVCOMP = IADN1A (2) 01810080
185: WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 01820080
186: 6771 CONTINUE 01830080
187: IVTNUM = 677 01840080
188: C 01850080
189: C **** TEST 677 **** 01860080
190: C 01870080
191: C TEST 677 TESTS THE RETURN VALUE OF ARRAY-NAME ARGUMENT IADN1A. 01880080
192: C IADN1A (3) WAS NOT MODIFFED BY FUNCTION SUBPROGRAM AND SHOULD 01890080
193: C HAVE A VALUE OF 8 01900080
194: C 01910080
195: IF (ICZERO) 36770,6770,36770 01920080
196: 6770 CONTINUE 01930080
197: GO TO 46770 01940080
198: 36770 IVDELE = IVDELE + 1 01950080
199: WRITE (I02,80003) IVTNUM 01960080
200: IF (ICZERO) 46770,6781,46770 01970080
201: 46770 IF (IADN1A (3) - 8) 26770,16770,26770 01980080
202: 16770 IVPASS = IVPASS + 1 01990080
203: WRITE (I02,80001) IVTNUM 02000080
204: GO TO 6781 02010080
205: 26770 IVFAIL = IVFAIL + 1 02020080
206: IVCORR = 8 02030080
207: IVCOMP = IADN1A (3) 02040080
208: WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 02050080
209: 6781 CONTINUE 02060080
210: IVTNUM = 678 02070080
211: C 02080080
212: C **** TEST 678 **** 02090080
213: C 02100080
214: C TEST 678 TESTS THE RETURN VALUE OF ARRAY-ELEMENT-NAME 02110080
215: C IADN2A (1,3). IADN2A (1,3) WAS INCREMENTED BY 70 IN THE FUNCTION 02120080
216: C SUBPROGRAM AND SHOULD CONTAIN A VALUE OF 80. 02130080
217: C 02140080
218: IF (ICZERO) 36780,6780,36780 02150080
219: 6780 CONTINUE 02160080
220: GO TO 46780 02170080
221: 36780 IVDELE = IVDELE + 1 02180080
222: WRITE (I02,80003) IVTNUM 02190080
223: IF (ICZERO) 46780,6791,46780 02200080
224: 46780 IF (IADN2A (1,3) - 80) 26780,16780,26780 02210080
225: 16780 IVPASS = IVPASS + 1 02220080
226: WRITE (I02,80001) IVTNUM 02230080
227: GO TO 6791 02240080
228: 26780 IVFAIL = IVFAIL + 1 02250080
229: IVCORR = 80 02260080
230: IVCOMP = IADN2A (1,3) 02270080
231: WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 02280080
232: 6791 CONTINUE 02290080
233: IVTNUM = 679 02300080
234: C 02310080
235: C **** TEST 679 **** 02320080
236: C 02330080
237: C TEST 679 TESTS THE VALUE OF INTEGER FUNCTION ASSIGNED 02340080
238: C TO A REAL VARIABLE. 02350080
239: C 02360080
240: IF (ICZERO) 36790,6790,36790 02370080
241: 6790 CONTINUE 02380080
242: RVON0A = 0.0 02390080
243: IVON02 = 2 02400080
244: IADN1A (2) = 4 02410080
245: IADN2A (1,3) = 10 02420080
246: RVON0A = FF081 (IVON02, IADN1A, IADN2A, 999) 02430080
247: GO TO 46790 02440080
248: 36790 IVDELE = IVDELE + 1 02450080
249: WRITE (I02,80003) IVTNUM 02460080
250: IF (ICZERO) 46790,6801,46790 02470080
251: 46790 IF (RVON0A - 1014.5) 26790,16790,46791 02480080
252: 46791 IF (RVON0A - 1015.5) 16790,16790,26790 02490080
253: 16790 IVPASS = IVPASS + 1 02500080
254: WRITE (I02,80001) IVTNUM 02510080
255: GO TO 6801 02520080
256: 26790 IVFAIL = IVFAIL + 1 02530080
257: RVCORR = 1015.0 02540080
258: RVCOMP = RVON0A 02550080
259: WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 02560080
260: 6801 CONTINUE 02570080
261: IVTNUM = 680 02580080
262: C 02590080
263: C EXTERNAL FUNCTION REFERENCE - FUNCTION SUBPROGRAM FF082 DEFINED AS02600080
264: C REAL 02610080
265: C 02620080
266: C TESTS 680 THRU 685 TESTS THE FUNCTION AND ARGUMENT VALUES 02630080
267: C FROM THE FUNCTION REFERENCE TO SUBPROGRAM FF082. THE FUNCTION 02640080
268: C SUBPROGRAM IS DEFINED AS REAL. 02650080
269: C 02660080
270: C **** TEST 680 *** 02670080
271: C 02680080
272: C TEST 680 TESTS THE VALUE OF THE FUNCTION FF082. VALUE OF 02690080
273: C FUNCTION SHOULD BE 339.0. 02700080
274: C 02710080
275: IF (ICZERO) 36800,6800,36800 02720080
276: 6800 CONTINUE 02730080
277: RVON01 = 2.0 02740080
278: RADN3A (2,5,2) = 100.0 02750080
279: RADN1A (5) = 210.5 02760080
280: RVON0A = 0.0 02770080
281: RVON0A = FF082 (RVON01, RADN3A, RADN1A, 26.5) 02780080
282: GO TO 46800 02790080
283: 36800 IVDELE = IVDELE + 1 02800080
284: WRITE (I02, 80003) IVTNUM 02810080
285: IF (ICZERO) 46800,6811,46800 02820080
286: 46800 IF (RVON0A - 338.5) 26800,16800,46801 02830080
287: 46801 IF (RVON0A - 339.5) 16800,16800,26800 02840080
288: 16800 IVPASS = IVPASS + 1 02850080
289: WRITE (I02,80001) IVTNUM 02860080
290: GO TO 6811 02870080
291: 26800 IVFAIL = IVFAIL + 1 02880080
292: RVCORR = 339.0 02890080
293: RVCOMP = RVON0A 02900080
294: WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 02910080
295: 6811 CONTINUE 02920080
296: IVTNUM = 681 02930080
297: C 02940080
298: C **** TEST 681 **** 02950080
299: C 02960080
300: C TEST 681 TESTS THE VALUE OF THE VARIABLE-NAME ARGUMENT RVON01 02970080
301: C FOLLOWING THE FUNCTION REFERENCE. VALUE OF RVON01 SHOULD BE 8.4. 02980080
302: C 02990080
303: IF (ICZERO) 36810,6810,36810 03000080
304: 6810 CONTINUE 03010080
305: GO TO 46810 03020080
306: 36810 IVDELE = IVDELE + 1 03030080
307: WRITE (I02,80003) IVTNUM 03040080
308: IF (ICZERO) 46810,6821,46810 03050080
309: 46810 IF (RVON01 - 8.395) 26810,16810,46811 03060080
310: 46811 IF (RVON01 - 8.405) 16810,16810,26810 03070080
311: 16810 IVPASS = IVPASS + 1 03080080
312: WRITE (I02,80001) IVTNUM 03090080
313: GO TO 6821 03100080
314: 26810 IVFAIL = IVFAIL + 1 03110080
315: RVCORR = 8.4 03120080
316: RVCOMP = RVON01 03130080
317: WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 03140080
318: 6821 CONTINUE 03150080
319: IVTNUM = 682 03160080
320: C 03170080
321: C **** TEST 682 **** 03180080
322: C 03190080
323: C TEST 682 TESTS THE VALUE OF THE ARRAY-NAME ARGUMENT RADN3A 03200080
324: C FOLLOWING THE FUNCTION REFERENCE. RADN3A (2,5,2) WAS INITIALIZED 03210080
325: C IN MAIN PROGRAM AND INCREMENTED IN SUBPROGRAM. VALUE OF RADN3A 03220080
326: C (2,5,2) SHOULD BE 112.2. 03230080
327: C 03240080
328: IF (ICZERO) 36820,6820,36820 03250080
329: 6820 CONTINUE 03260080
330: GO TO 46820 03270080
331: 36820 IVDELE = IVDELE + 1 03280080
332: WRITE (I02,80003) IVTNUM 03290080
333: IF (ICZERO) 46820,6831,46820 03300080
334: 46820 IF (RADN3A (2,5,2) - 111.7) 26820,16820,46821 03310080
335: 46821 IF (RADN3A (2,5,2) - 112.7) 16820,16820,26820 03320080
336: 16820 IVPASS = IVPASS + 1 03330080
337: WRITE (I02,80001) IVTNUM 03340080
338: GO TO 6831 03350080
339: 26820 IVFAIL = IVFAIL + 1 03360080
340: RVCORR = 112.2 03370080
341: RVCOMP = RADN3A (2,5,2) 03380080
342: WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 03390080
343: 6831 CONTINUE 03400080
344: IVTNUM = 683 03410080
345: C 03420080
346: C **** TEST 683 **** 03430080
347: C 03440080
348: C TEST 683 TESTS THE VALUE OF THE ARRAY-NAME ARGUMENT RADN3A 03450080
349: C FOLLOWING THE FUNCTION REFERENCE. RADN3A (1,2,1) WAS INITIALIZED 03460080
350: C IN THE SUBPROGRAM. THE VALUE OF RADN3A (1,2,1) SHOULD BE 612.2. 03470080
351: C 03480080
352: IF (ICZERO) 36830,6830,36830 03490080
353: 6830 CONTINUE 03500080
354: GO TO 46830 03510080
355: 36830 IVDELE = IVDELE + 1 03520080
356: WRITE (I02,80003) IVTNUM 03530080
357: IF (ICZERO) 46830,6841,46830 03540080
358: 46830 IF (RADN3A (1,2,1) - 611.7) 26830,16830,46831 03550080
359: 46831 IF (RADN3A (1,2,1) - 612.7) 16830,16830,26830 03560080
360: 16830 IVPASS = IVPASS + 1 03570080
361: WRITE (I02,80001) IVTNUM 03580080
362: GO TO 6841 03590080
363: 26830 IVFAIL = IVFAIL + 1 03600080
364: RVCORR = 612.2 03610080
365: RVCOMP = RADN3A (1,2,1) 03620080
366: WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 03630080
367: 6841 CONTINUE 03640080
368: IVTNUM = 684 03650080
369: C 03660080
370: C **** TEST 684 **** 03670080
371: C 03680080
372: C TEST 684 TESTS THE VALUE OF THE ARRAY-ELEMENT-NAME ARGUMENT 03690080
373: C RADN1A FOLLOWING THE FUNCTION REFERENCE. RADN1A (5) WAS 03700080
374: C INITIALIZED IN THE MAIN PROGRAM AND INCREMENTED BY 18.8 IN THE 03710080
375: C FUNCTION SUBPROGRAM. THE VALUE OF RADN1A SHOULD BE 229.3. 03720080
376: C 03730080
377: IF (ICZERO) 36840,6840,36840 03740080
378: 6840 CONTINUE 03750080
379: GO TO 46840 03760080
380: 36840 IVDELE = IVDELE + 1 03770080
381: WRITE (I02,80003) IVTNUM 03780080
382: IF (ICZERO) 46840,6851,46840 03790080
383: 46840 IF (RADN1A (5) - 228.8) 26840,16840,46841 03800080
384: 46841 IF (RADN1A (5) - 229.8) 16840,16840,26840 03810080
385: 16840 IVPASS = IVPASS + 1 03820080
386: WRITE (I02,80001) IVTNUM 03830080
387: GO TO 6851 03840080
388: 26840 IVFAIL = IVFAIL + 1 03850080
389: RVCORR = 229.3 03860080
390: RVCOMP = RADN1A (5) 03870080
391: WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 03880080
392: 6851 CONTINUE 03890080
393: IVTNUM = 685 03900080
394: C 03910080
395: C **** TEST 685 **** 03920080
396: C 03930080
397: C TEST 685 TESTS THE RESULTANT VALUE WHERE THE FUNCTION 03940080
398: C SUBPROGRAM IS DEFINED AS REAL AND THE VARIABLE TO WHICH THE 03950080
399: C FUNCTION VALUE IS ASSIGNED IN THE MAIN PROGRAM IS DEFINED AS 03960080
400: C INTEGER. 03970080
401: C 03980080
402: IF (ICZERO) 36850,6850,36850 03990080
403: 6850 CONTINUE 04000080
404: RVON01 = 4.0 04010080
405: RADN3A (2,5,2) = 200.0 04020080
406: RADN1A (5) = 2.85 04030080
407: IVON0A = 0.0 04040080
408: IVON0A = FF082 (RVON01, RADN3A, RADN1A, 102.68) 04050080
409: GO TO 46850 04060080
410: 36850 IVDELE = IVDELE + 1 04070080
411: WRITE (I02,80003) IVTNUM 04080080
412: IF (ICZERO) 46850,6861,46850 04090080
413: 46850 IF (IVON0A - 309) 26850,16850,26850 04100080
414: 16850 IVPASS = IVPASS + 1 04110080
415: WRITE (I02,80001) IVTNUM 04120080
416: GO TO 6861 04130080
417: 26850 IVFAIL = IVFAIL + 1 04140080
418: IVCORR = 309 04150080
419: IVCOMP = IVON0A 04160080
420: WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 04170080
421: 6861 CONTINUE 04180080
422: IVTNUM = 686 04190080
423: C 04200080
424: C TESTS 686 THRU 690 TESTS THE FUNCTION AND ARGUMENT VALUES 04210080
425: C FROM THE EXTERNAL FUNCTION REFERENCE TO SUBPROGRAM FF083. THE 04220080
426: C FUNCTION SUBPROGRAM IS AN IMPLICIT DEFINITION OF REAL. 04230080
427: C 04240080
428: C ***** TEST 686 ***** 04250080
429: C 04260080
430: C TEST 686 TESTS THE VALUE OF FUNCTION FF082. THE VALUE OF THE 04270080
431: C FUNCTION SHOULD BE 921.8. 04280080
432: C 04290080
433: IF (ICZERO) 36860,6860,36860 04300080
434: 6860 CONTINUE 04310080
435: C 04320080
436: C 04330080
437: IVON01 = 826 04340080
438: IADN2A (1,1) = 77 04350080
439: IADN3A (2,3,4) = 10 04360080
440: RVON02 = 4.4 04370080
441: RVON03 = 0.0 04380080
442: C 04390080
443: RVON03 = FF083 (IVON01, IADN2A, IADN3A, RVON02 * 2.0) 04400080
444: GO TO 46860 04410080
445: 36860 IVDELE = IVDELE + 1 04420080
446: WRITE (I02,80003) IVTNUM 04430080
447: IF (ICZERO) 46860,6871,46860 04440080
448: 46860 IF (RVON03 - 921.3) 26860,16860,46861 04450080
449: 46861 IF (RVON03 - 922.3) 16860,16860,26860 04460080
450: 16860 IVPASS = IVPASS + 1 04470080
451: WRITE (I02,80001) IVTNUM 04480080
452: GO TO 6871 04490080
453: 26860 IVFAIL = IVFAIL + 1 04500080
454: RVCORR = 921.8 04510080
455: RVCOMP = RVON03 04520080
456: WRITE (I02,80005) IVTNUM, RVCOMP, IVCORR 04530080
457: 6871 CONTINUE 04540080
458: IVTNUM = 687 04550080
459: C 04560080
460: C **** TEST 687 ***** 04570080
461: C 04580080
462: C TEST 687 TESTS THE VALUE OF THE VARIABLE-NAME ARGUMENT IVON01 04590080
463: C FOLLOWING THE FUNCTION REFERENCE. THE VALUE OF IVON01 SHOULD BE 04600080
464: C 836. 04610080
465: C 04620080
466: IF (ICZERO) 36870,6870,36870 04630080
467: 6870 CONTINUE 04640080
468: GO TO 46870 04650080
469: 36870 IVDELE = IVDELE + 1 04660080
470: WRITE (I02,80003) IVTNUM 04670080
471: IF (ICZERO) 46870,6881,46870 04680080
472: 46870 IF (IVON01 - 836) 26870,16870,26870 04690080
473: 16870 IVPASS = IVPASS + 1 04700080
474: WRITE (I02,80001) IVTNUM 04710080
475: GO TO 6881 04720080
476: 26870 IVFAIL = IVFAIL + 1 04730080
477: IVCORR = 836 04740080
478: IVCOMP = IVON01 04750080
479: WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 04760080
480: 6881 CONTINUE 04770080
481: IVTNUM = 688 04780080
482: C 04790080
483: C **** TEST 688 ***** 04800080
484: C 04810080
485: C TEST 688 TESTS THE VALUE OF THE ARRAY-NAME ARGUMENT IADN2A 04820080
486: C FOLLOWING THE FUNCTION REFERENCE. THE ACTUAL ARGUMENT WAS 04830080
487: C INITIALIZED IN THE MAIN PROGRAM AND IS INCREMENTED IN THE 04840080
488: C SUBPROGRAM. THE VALUE OF IADN2A (1,1) SHOULD BE 97. 04850080
489: C 04860080
490: IF (ICZERO) 36880,6880,36880 04870080
491: 6880 CONTINUE 04880080
492: GO TO 46880 04890080
493: 36880 IVDELE = IVDELE + 1 04900080
494: WRITE (I02,80003) IVTNUM 04910080
495: IF (ICZERO) 46880,6880,46880 04920080
496: 46880 IF (IADN2A (1,1) - 97) 26880,16880,26880 04930080
497: 16880 IVPASS = IVPASS + 1 04940080
498: WRITE (I02,80001) IVTNUM 04950080
499: GO TO 6891 04960080
500: 26880 IVFAIL = IVFAIL + 1 04970080
501: IVCORR = 97 04980080
502: IVCOMP = IADN2A (1,1) 04990080
503: WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 05000080
504: 6891 CONTINUE 05010080
505: IVTNUM = 689 05020080
506: C 05030080
507: C **** TEST 689 **** 05040080
508: C 05050080
509: C TEST 689 TESTS THE VALUE OF THE ARRAY-ELEMENT-NAME ARGUMENT 05060080
510: C IADN3A FOLLOWING THE FUNCTION REFERENCE. IADN3A (2,3,4) 05070080
511: C WAS INTIALIZED IN THE MAIN PROGRAM AND INCREMENTED BY 40 IN THE 05080080
512: C FUNCTION SUBPROGRAM. THE VALUE OF IADN3A SHOULD BE 50. 05090080
513: C 05100080
514: IF (ICZERO) 36890,6890,36890 05110080
515: 6890 CONTINUE 05120080
516: GO TO 46890 05130080
517: 36890 IVDELE = IVDELE + 1 05140080
518: WRITE (I02,80003) IVTNUM 05150080
519: IF (ICZERO) 46890,6901,46890 05160080
520: 46890 IF (IADN3A (2,3,4) - 50) 26890,16890,26890 05170080
521: 16890 IVPASS = IVPASS + 1 05180080
522: WRITE (I02,80001) IVTNUM 05190080
523: GO TO 6901 05200080
524: 26890 IVFAIL = IVFAIL + 1 05210080
525: IVCORR = 50 05220080
526: IVCOMP = IADN3A (2,3,4) 05230080
527: WRITE (I02,80004) IVTNUM,IVCOMP,IVCORR 05240080
528: 6901 CONTINUE 05250080
529: IVTNUM = 690 05260080
530: C 05270080
531: C **** TEST 690 **** 05280080
532: C 05290080
533: C TEST 690 TESTS THE RESULTANT VALUE WHERE THE FUNCTION 05300080
534: C SUBPROGRAM IS IMPLICITY DEFINED AS REAL AND THE VARIABLE 05310080
535: C TO WHICH THE FUNCTION VALUE IS ASSIGNED IN THE MAIN PROGRAM 05320080
536: C IS DEFINED AS INTEGER. THE VALUE OF IVON03 SHOULD BE 329. 05330080
537: C 05340080
538: IF (ICZERO) 36900,6900,36900 05350080
539: 6900 CONTINUE 05360080
540: IVON01 = 226 05370080
541: IADN2A (1,1) = 66 05380080
542: IADN3A (2,3,4) = 20 05390080
543: RVON02 = 8.8 05400080
544: IVON03 = 0 05410080
545: C 05420080
546: IVON03 = FF083 (IVON01,IADN2A,IADN3A,RVON02 * 2.0) 05430080
547: C 05440080
548: GO TO 46900 05450080
549: 36900 IVDELE = IVDELE + 1 05460080
550: WRITE (I02,80003) IVTNUM 05470080
551: IF (ICZERO) 46900,6911,46900 05480080
552: 46900 IF (IVON03 - 329) 26900,16900,26900 05490080
553: 16900 IVPASS = IVPASS + 1 05500080
554: WRITE (I02,80001) IVTNUM 05510080
555: GO TO 6911 05520080
556: 26900 IVFAIL = IVFAIL + 1 05530080
557: IVCORR = 329 05540080
558: IVCOMP = IVON03 05550080
559: WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 05560080
560: 6911 CONTINUE 05570080
561: C 05580080
562: C WRITE PAGE FOOTINGS AND RUN SUMMARIES 05590080
563: 99999 CONTINUE 05600080
564: WRITE (I02,90002) 05610080
565: WRITE (I02,90006) 05620080
566: WRITE (I02,90002) 05630080
567: WRITE (I02,90002) 05640080
568: WRITE (I02,90007) 05650080
569: WRITE (I02,90002) 05660080
570: WRITE (I02,90008) IVFAIL 05670080
571: WRITE (I02,90009) IVPASS 05680080
572: WRITE (I02,90010) IVDELE 05690080
573: C 05700080
574: C 05710080
575: C TERMINATE ROUTINE EXECUTION 05720080
576: STOP 05730080
577: C 05740080
578: C FORMAT STATEMENTS FOR PAGE HEADERS 05750080
579: 90000 FORMAT (1H1) 05760080
580: 90002 FORMAT (1H ) 05770080
581: 90001 FORMAT (1H ,10X,34HFORTRAN COMPILER VALIDATION SYSTEM) 05780080
582: 90003 FORMAT (1H ,21X,11HVERSION 1.0) 05790080
583: 90004 FORMAT (1H ,10X,38HFOR OFFICIAL USE ONLY - COPYRIGHT 1978) 05800080
584: 90005 FORMAT (1H ,5X,4HTEST,5X,9HPASS/FAIL, 5X,8HCOMPUTED,8X,7HCORRECT) 05810080
585: 90006 FORMAT (1H ,5X,46H----------------------------------------------) 05820080
586: 90011 FORMAT (1H ,18X,17HSUBSET LEVEL TEST) 05830080
587: C 05840080
588: C FORMAT STATEMENTS FOR RUN SUMMARIES 05850080
589: 90008 FORMAT (1H ,15X,I5,19H ERRORS ENCOUNTERED) 05860080
590: 90009 FORMAT (1H ,15X,I5,13H TESTS PASSED) 05870080
591: 90010 FORMAT (1H ,15X,I5,14H TESTS DELETED) 05880080
592: C 05890080
593: C FORMAT STATEMENTS FOR TEST RESULTS 05900080
594: 80001 FORMAT (1H ,4X,I5,7X,4HPASS) 05910080
595: 80002 FORMAT (1H ,4X,I5,7X,4HFAIL) 05920080
596: 80003 FORMAT (1H ,4X,I5,7X,7HDELETED) 05930080
597: 80004 FORMAT (1H ,4X,I5,7X,4HFAIL,10X,I6,9X,I6) 05940080
598: 80005 FORMAT (1H ,4X,I5,7X,4HFAIL,4X,E12.5,3X,E12.5) 05950080
599: C 05960080
600: 90007 FORMAT (1H ,20X,20HEND OF PROGRAM FM080) 05970080
601: END 05980080
602: INTEGER FUNCTION FF081 (IDON01, IDDN10, IDDN20, IDON02) 00010081
603: C DATE***82/08/02*18.33.46
604: C OWNER PRE/850703/TC-85- -410/ /FSTC/278FCVS*F78UBP20/
605: C AUDIT FCVS78 V2.0
606: C 00020081
607: C COMMENT SECTION 00030081
608: C 00040081
609: C FF081 00050081
610: C 00060081
611: C THIS FUNCTION SUBPROGRAM IS CALLED BY THE MAIN PROGRAM FM080. 00070081
612: C THE FUNCTION DUMMY ARGUMENTS IDON01, IDDN10 AND IDDN20 ARE 00080081
613: C INCREMENTED BY 2, 40 AND 70 RESPECTIVELY BEFORE CONTROL IS 00090081
614: C RETURNED TO THE CALLING PROGRAM. VALUE OF THE FUNCTION WILL BE 00100081
615: C THE SUM OF THE ACTUAL ARGUMENTS AS PASSED FROM CALLING PROGRAM. 00110081
616: C 00120081
617: C REFERENCES 00130081
618: C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, 00140081
619: C X3.9-1978 00150081
620: C 00160081
621: C SECTION 15.5.1, FUNCTION SUBPROGRAM AND FUNCTION STATEMENT 00170081
622: C 00180081
623: C TEST SECTION 00190081
624: C 00200081
625: C FUNCTION SUBPROGRAM 00210081
626: C 00220081
627: DIMENSION IDDN10 (5), IDDN20 (4,4) 00230081
628: IVON01 = IDON01 00240081
629: IVON02 = IDDN10(2) 00250081
630: IVON03 = IDDN20(1,3) 00260081
631: IVON04 = IDON02 00270081
632: C 00280081
633: FF081 = IVON01 + IVON02 + IVON03 + IVON04 00290081
634: IDON01 = IVON01 + 2 00300081
635: IDDN10 (2) = IVON02 + 40 00310081
636: IDDN20 (1,3) = IVON03 + 70 00320081
637: IDDN10 (4) = IVON02 + 40 00330081
638: RETURN 00340081
639: END 00350081
640: REAL FUNCTION FF082 (RDON01, RDDN3A, RDDN1A, RDON02) 00010082
641: C DATE***82/08/02*18.33.46
642: C OWNER PRE/850703/TC-85- -410/ /FSTC/278FCVS*F78UBP20/
643: C AUDIT FCVS78 V2.0
644: DIMENSION RDDN3A (3,6,3), RDDN1A (10) 00020082
645: C 00030082
646: C COMMENT SECTION 00040082
647: C 00050082
648: C FF082 00060082
649: C 00070082
650: C THIS FUNCTION SUBPROGRAM IS CALLED BY THE MAIN PROGRAM FM080. 00080082
651: C THE FUNCTION DUMMY ARGUMENTS RDON01, RDDN3A, AND RDDN1A ARE 00090082
652: C INCREMENTED BY 6.4, 12.2 AND 18.8 RESPECTIVELY BEFORE CONTROL IS 00100082
653: C RETURNED TO THE MAIN PROGRAM. VALUE OF THE FUNCTION WILL BE 00110082
654: C THE SUM OF THE ACTUAL ARGUMENTS AS PASSED TO THE SUBPROGRAM. 00120082
655: C 00130082
656: C REFERENCES 00140082
657: C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, 00150082
658: C X3.9-1978 00160082
659: C 00170082
660: C SECTION 15.5.1, FUNCTION SUBPROGRAM AND FUNCTION STATEMENT 00180082
661: C 00190082
662: C TEST SECTION 00200082
663: C 00210082
664: C FUNCTION SUBPROGRAM 00220082
665: C 00230082
666: RVON01 = RDON01 00240082
667: RVON02 = RDDN3A (2,5,2) 00250082
668: RVON03 = RDDN1A (5) 00260082
669: RVON04 = RDON02 00270082
670: C 00280082
671: FF082 = RVON01 + RVON02 + RVON03 + RVON04 00290082
672: C 00300082
673: RDON01 = RVON01 + 6.4 00310082
674: RDDN3A (2,5,2) = RVON02 + 12.2 00320082
675: RDDN1A (5) = RVON03 + 18.8 00330082
676: RDDN3A (1,2,1) = 600.0 + 12.2 00340082
677: RETURN 00350082
678: END 00360082
679: FUNCTION FF083 (IDON01,IDDN2A,IDDN3A,RDON02) 00010083
680: C DATE***82/08/02*18.33.46
681: C OWNER PRE/850703/TC-85- -410/ /FSTC/278FCVS*F78UBP20/
682: C AUDIT FCVS78 V2.0
683: DIMENSION IDDN2A (2,2), IDDN3A(3,4,5) 00020083
684: C 00030083
685: C COMMENT SECTION 00040083
686: C 00050083
687: C FF083 00060083
688: C 00070083
689: C THIS FUNCTION SUBPROGRAM IS CALLED BY THE MAIN PROGRAM FM080. 00080083
690: C THE TYPE DECLARATION IS IMPLICIT REAL. 00090083
691: C THE FUNCTION DUMMY ARGUMENTS ARE BOTH INTEGER AND REAL. DUMMY 00100083
692: C ARGUMENTS IDON01, IDDN2A AND IDDN3A ARE INCREMENTED BY 10, 20 AND 00110083
693: C 40 RESPECTIVELY BEFORE CONTROL IS RETURNED TO THE MAIN PROGRAM. 00120083
694: C THE VALUE OF THE FUNCTION RETURNED TO THE REFERENCING PROGRAM 00130083
695: C WILL BE THE SUM OF THE ACTUAL ARGUMENTS AS PASSED TO THE 00140083
696: C SUBPROGRAM FF083. 00150083
697: C DUMMY ARGUMENT IDDN2A CORRESPONDS TO AN ARRAY-NAME IN THE 00160083
698: C ACTUAL ARGUMENT OF THE MAIN PROGRAM. DUMMY ARGUMENT IDDN3A 00170083
699: C CORRESPONDS TO AN ARRAY-ELEMENT-NAME IN THE ACTUAL ARGUMENT OF THE00180083
700: C MAIN PROGRAM. DUMMY ARGUMENT IDON02 CORRESPONDS TO AN EXPRESSION00190083
701: C CONTAINING VARIABLES,ARITHMETIC OPERATORS AND CONSTANTS IN THE 00200083
702: C ACTUAL ARGUMENT OF THE MAIN PROGRAM. 00210083
703: C 00220083
704: C REFERENCES 00230083
705: C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, 00240083
706: C X3.9-1978 00250083
707: C 00260083
708: C SECTION 4.1.2, TYPE RULES FOR DATA AND PROCEDURE IDENTIFIERS 00270083
709: C SECTION 15.5.1, FUNCTION SUBPROGRAM 00280083
710: C 00290083
711: C TEST SECTION 00300083
712: C 00310083
713: C FUNCTION SUBPROGRAM 00320083
714: C 00330083
715: IVON01 = IDON01 00340083
716: IVON02 = IDDN2A (1,1) 00350083
717: IVON03 = IDDN3A (2,3,4) 00360083
718: RVON04 = RDON02 00370083
719: C 00380083
720: RVON05 = IVON01 + IVON02 + IVON03 00390083
721: FF083 = RVON05 + RVON04 00400083
722: C 00410083
723: IDON01 = IVON01 + 10 00420083
724: IDDN2A (1,1) = IVON02 + 20 00430083
725: IDDN3A (2,3,4) = IVON03 + 40 00440083
726: C 00450083
727: RETURN 00460083
728: END 00470083
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.