|
|
1.1 root 1: PROGRAM FM301 00010301
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 00020301
6: C 00030301
7: C FM301 TESTS THE USE OF THE TYPE-STATEMENT TO EXPLICITLY 00040301
8: C DEFINE THE DATA TYPE FOR VARIABLES, ARRAYS, AND STATEMENT 00050301
9: C FUNCTIONS. ONLY INTEGER, REAL, LOGICAL AND CHARACTER DATA 00060301
10: C TYPES ARE TESTED IN THIS ROUTINE. INTEGER AND REAL VARIABLES 00070301
11: C AND ARRAYS ARE TESTED IN A MANNER WHICH BOTH CONFIRMS AND 00080301
12: C OVERRIDES THE IMPLICIT TYPING OF THE DATA ENTITIES. 00090301
13: C 00100301
14: C FM301 DOES NOT ATTEMPT TO TEST ALL OF THE ELEMENTARY SYNTAX 00110301
15: C FORMS OF THE TYPE-STATEMENT. THESE FORMS ARE TESTED ADEQUATELY 00120301
16: C WITHIN THE BOILER PLATE AND OTHER AUDIT PROGRAMS. 00130301
17: C 00140301
18: C REFERENCES. 00150301
19: C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, 00160301
20: C X3.9-1978 00170301
21: C 00180301
22: C SECTION 4.1, DATA TYPES 00190301
23: C SECTION 8.4, TYPE-STATEMENT 00200301
24: C SECTION 8.5, IMPLICIT STATEMENT 00210301
25: C SECTION 15.4, STATEMENT FUNCTION 00220301
26: C 00230301
27: C 00240301
28: C ******************************************************************00250301
29: C A COMPILER VALIDATION SYSTEM FOR THE FORTRAN LANGUAGE 00260301
30: C BASED ON SPECIFICATIONS AS DEFINED IN AMERICAN STANDARD FORTRAN 00270301
31: C X3.9-1978, HAS BEEN DEVELOPED BY THE DEPARTMENT OF THE NAVY. THE 00280301
32: C FORTRAN COMPILER VALIDATION SYSTEM (FCVS) CONSISTS OF AUDIT 00290301
33: C ROUTINES, THEIR RELATED DATA, AND AN EXECUTIVE SYSTEM. EACH AUDIT00300301
34: C ROUTINE IS A FORTRAN PROGRAM OR SUBPROGRAM WHICH INCLUDES TESTS 00310301
35: C OF SPECIFIC LANGUAGE ELEMENTS AND SUPPORTING PROCEDURES INDICATING00320301
36: C THE RESULT OF EXECUTING THESE TESTS. 00330301
37: C 00340301
38: C THIS PARTICULAR PROGRAM OR SUBPROGRAM CONTAINS ONLY FEATURES 00350301
39: C FOUND IN THE SUBSET LEVEL OF THE STANDARD. 00360301
40: C 00370301
41: C SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO 00380301
42: C DEPARTMENT OF THE NAVY 00390301
43: C FEDERAL COBOL COMPILER TESTING SERVICE 00400301
44: C WASHINGTON, D.C. 20376 00410301
45: C 00420301
46: C ******************************************************************00430301
47: C 00440301
48: C 00450301
49: IMPLICIT LOGICAL (L) 00460301
50: IMPLICIT CHARACTER*14 (C) 00470301
51: C 00480301
52: 00490301
53: C 00500301
54: C *** IMPLICIT STATEMENT FOR TEST 006 *** 00510301
55: C 00520301
56: IMPLICIT LOGICAL (M) 00530301
57: C 00540301
58: C *** IMPLICIT STATEMENT FOR TEST 017 *** 00550301
59: C 00560301
60: IMPLICIT INTEGER (G) 00570301
61: C 00580301
62: C *** IMPLICIT STATEMENT FOR TEST 018 *** 00590301
63: C 00600301
64: IMPLICIT CHARACTER*2 (F) 00610301
65: C 00620301
66: C *** SPECIFICATION STATEMENTS FOR TEST 001 *** 00630301
67: C 00640301
68: INTEGER AVTN01 00650301
69: C 00660301
70: C *** SPECIFICATION STATEMENTS FOR TEST 002 *** 00670301
71: C 00680301
72: REAL KVTN01 00690301
73: C 00700301
74: C *** SPECIFICATION STATEMENTS FOR TEST 003 *** 00710301
75: C 00720301
76: INTEGER KVTN02, AVTN02, KVTN03 00730301
77: C 00740301
78: C *** SPECIFICATION STATEMENTS FOR TEST 004 *** 00750301
79: C 00760301
80: REAL AVTN03, AVTN04, KVTN04 00770301
81: C 00780301
82: C *** SPECIFICATION STATEMENTS FOR TEST 005 *** 00790301
83: C 00800301
84: LOGICAL HVTN01 00810301
85: C 00820301
86: C *** SPECIFICATION STATEMENTS FOR TEST 006 *** 00830301
87: C (ALSO SEE THE IMPLICIT STATEMENTS FOR TEST 006) 00840301
88: C 00850301
89: REAL MVTN01 00860301
90: C 00870301
91: C *** SPECIFICATION STATEMENTS FOR TEST 007 *** 00880301
92: C 00890301
93: INTEGER NVTN11(4) 00900301
94: C 00910301
95: C *** SPECIFICATION STATEMENTS FOR TEST 008 *** 00920301
96: C 00930301
97: REAL NVTN22(2,2) 00940301
98: C 00950301
99: C *** SPECIFICATION STATEMENTS FOR TESTS 009 AND 010 *** 00960301
100: C 00970301
101: INTEGER NVTN33(3,3,3), AVTN15(5) 00980301
102: C 00990301
103: C *** SPECIFICATION STATEMENTS FOR TEST 011 *** 01000301
104: C 01010301
105: DIMENSION NVTN14(5) 01020301
106: INTEGER NVTN14 01030301
107: C 01040301
108: C *** SPECIFICATION STATEMENTS FOR TEST 012 *** 01050301
109: C 01060301
110: DIMENSION AVTN16(4) 01070301
111: INTEGER AVTN16 01080301
112: C 01090301
113: C *** SPECIFICATION STATEMENTS FOR TESTS 013 AND 014 *** 01100301
114: C 01110301
115: CHARACTER CVTN01*14, CATN12(4)*14 01120301
116: C 01130301
117: C *** SPECIFICATION STATEMENTS FOR TEST 015 *** 01140301
118: C 01150301
119: DIMENSION CADN13(6) 01160301
120: CHARACTER CADN13*14 01170301
121: C 01180301
122: C *** SPECIFICATION STATEMENTS FOR TEST 016 *** 01190301
123: C 01200301
124: CHARACTER KVTN05 01210301
125: C 01220301
126: C *** SPECIFICATION STATEMENTS FOR TEST 017 *** 01230301
127: C (ALSO SEE THE IMPLICIT STATEMENT FOR TEST 017) 01240301
128: C 01250301
129: CHARACTER GVTN01*3 01260301
130: C 01270301
131: C *** SPECIFICATION STATEMENTS FOR TEST 018 *** 01280301
132: C (ALSO SEE THE IMPLICIT STATEMENT FOR TEST 018) 01290301
133: C 01300301
134: CHARACTER FVTN01*3 01310301
135: C 01320301
136: C *** SPECIFICATION STATEMENTS FOR TEST 019 *** 01330301
137: C 01340301
138: INTEGER IFTN01 01350301
139: IFTN01(IDON01) = IDON01 + 1 01360301
140: C 01370301
141: C 01380301
142: C 01390301
143: C INITIALIZATION SECTION. 01400301
144: C 01410301
145: C INITIALIZE CONSTANTS 01420301
146: C ******************** 01430301
147: C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER 01440301
148: I01 = 5 01450301
149: C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER 01460301
150: I02 = 6 01470301
151: C SYSTEM ENVIRONMENT SECTION 01480301
152: C 01490301
153: I01 = 5 01500301
154: C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 01510301
155: C (UNIT NUMBER FOR CARD READER). 01520301
156: CX011 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-011 CONTROL CARD01530301
157: C THE CX011 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL 01540301
158: C FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX010 ABOVE. 01550301
159: C 01560301
160: I02 = 6 01570301
161: C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02 = 6 01580301
162: C (UNIT NUMBER FOR PRINTER). 01590301
163: CX021 THIS CARD IS PEPLACED BY CONTENTS OF FEXEC X-021 CONTROL CARD.01600301
164: C THE CX021 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL 01610301
165: C FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX020 ABOVE. 01620301
166: C 01630301
167: IVPASS = 0 01640301
168: IVFAIL = 0 01650301
169: IVDELE = 0 01660301
170: ICZERO = 0 01670301
171: C 01680301
172: C WRITE OUT PAGE HEADERS 01690301
173: C 01700301
174: WRITE (I02,90002) 01710301
175: WRITE (I02,90006) 01720301
176: WRITE (I02,90008) 01730301
177: WRITE (I02,90004) 01740301
178: WRITE (I02,90010) 01750301
179: WRITE (I02,90004) 01760301
180: WRITE (I02,90016) 01770301
181: WRITE (I02,90001) 01780301
182: WRITE (I02,90004) 01790301
183: WRITE (I02,90012) 01800301
184: WRITE (I02,90014) 01810301
185: WRITE (I02,90004) 01820301
186: C 01830301
187: C 01840301
188: C **** FCVS PROGRAM 301 - TEST 001 **** 01850301
189: C 01860301
190: C TEST 001 DEFINES AN INTEGER VARIABLE OVERRIDING THE IMPLICIT 01870301
191: C COMPILER DEFAULT TYPE SPECIFYING REAL. 01880301
192: C 01890301
193: C 01900301
194: IVTNUM = 1 01910301
195: IF (ICZERO) 30010, 0010, 30010 01920301
196: 0010 CONTINUE 01930301
197: IVCOMP = 0 01940301
198: AVTN01 = 100 01950301
199: IVCORR = 100 01960301
200: IVCOMP = AVTN01 01970301
201: 40010 IF (IVCOMP - 100) 20010, 10010, 20010 01980301
202: 30010 IVDELE = IVDELE + 1 01990301
203: WRITE (I02,80000) IVTNUM 02000301
204: IF (ICZERO) 10010, 0021, 20010 02010301
205: 10010 IVPASS = IVPASS + 1 02020301
206: WRITE (I02,80002) IVTNUM 02030301
207: GO TO 0021 02040301
208: 20010 IVFAIL = IVFAIL + 1 02050301
209: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 02060301
210: 0021 CONTINUE 02070301
211: C 02080301
212: C **** FCVS PROGRAM 301 - TEST 002 **** 02090301
213: C 02100301
214: C TEST 002 DEFINES A REAL VARIABLE OVERRIDING THE IMPLICIT 02110301
215: C COMPILER DEFAULT TYPE SPECIFYING INTEGER. 02120301
216: C 02130301
217: C 02140301
218: IVTNUM = 2 02150301
219: IF (ICZERO) 30020, 0020, 30020 02160301
220: 0020 CONTINUE 02170301
221: RVCOMP = 0.0 02180301
222: KVTN01 = 1.004 02190301
223: RVCORR = 1.004 02200301
224: RVCOMP = KVTN01 02210301
225: 40020 IF (RVCOMP - 1.0035) 20020, 10020, 40021 02220301
226: 40021 IF (RVCOMP - 1.0045) 10020, 10020, 20020 02230301
227: 30020 IVDELE = IVDELE + 1 02240301
228: WRITE (I02,80000) IVTNUM 02250301
229: IF (ICZERO) 10020, 0031, 20020 02260301
230: 10020 IVPASS = IVPASS + 1 02270301
231: WRITE (I02,80002) IVTNUM 02280301
232: GO TO 0031 02290301
233: 20020 IVFAIL = IVFAIL + 1 02300301
234: WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 02310301
235: 0031 CONTINUE 02320301
236: C 02330301
237: C **** FCVS PROGRAM 301 - TEST 003 **** 02340301
238: C 02350301
239: C TEST 003 DEFINES A SERIES OF INTEGER VARIABLES IN ONE TYPE- 02360301
240: C STATEMENT. TWO VARIABLES CONFIRM THE IMPLICIT INTEGER TYPING. 02370301
241: C THE OTHER VARIABLE OVERRIDES THE IMPLICIT TYPING. 02380301
242: C 02390301
243: C 02400301
244: IVTNUM = 3 02410301
245: IF (ICZERO) 30030, 0030, 30030 02420301
246: 0030 CONTINUE 02430301
247: IVCOMP = 0 02440301
248: KVTN02 = 20 02450301
249: KVTN03 = 30 02460301
250: AVTN02 = 200 02470301
251: IVCORR = 20 02480301
252: IVCOMP = KVTN02 02490301
253: 40030 IF (IVCOMP - 20) 20030, 40031, 20030 02500301
254: 40031 IVCORR = 30 02510301
255: IVCOMP = KVTN03 02520301
256: 40033 IF (IVCOMP - 30) 20030, 40034, 20030 02530301
257: 40034 IVCORR = 200 02540301
258: IVCOMP = AVTN02 02550301
259: 40035 IF (IVCOMP - 200) 20030, 10030, 20030 02560301
260: 30030 IVDELE = IVDELE + 1 02570301
261: WRITE (I02,80000) IVTNUM 02580301
262: IF (ICZERO) 10030, 0041, 20030 02590301
263: 10030 IVPASS = IVPASS + 1 02600301
264: WRITE (I02,80002) IVTNUM 02610301
265: GO TO 0041 02620301
266: 20030 IVFAIL = IVFAIL + 1 02630301
267: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 02640301
268: 0041 CONTINUE 02650301
269: C 02660301
270: C **** FCVS PROGRAM 301 - TEST 004 **** 02670301
271: C 02680301
272: C TEST 004 DEFINES A SERIES OF REAL VARIABLES IN ONE TYPE- 02690301
273: C STATEMENT. TWO VARIABLES CONFIRM THE IMPLICIT REAL TYPING. THE 02700301
274: C THIRD VARIABLE OVERRIDES THE IMPLICIT TYPING. 02710301
275: C 02720301
276: C 02730301
277: IVTNUM = 4 02740301
278: IF (ICZERO) 30040, 0040, 30040 02750301
279: 0040 CONTINUE 02760301
280: RVCOMP = 0.0 02770301
281: AVTN03 = 3.0 02780301
282: AVTN04 = 4. 02790301
283: KVTN04 = .4 02800301
284: RVCORR = 3.0 02810301
285: RVCOMP = AVTN03 02820301
286: 40040 IF (RVCOMP - 2.9995) 20040, 40042, 40041 02830301
287: 40041 IF (RVCOMP - 3.0005) 40042, 40042, 20040 02840301
288: 40042 RVCORR = 4. 02850301
289: RVCOMP = AVTN04 02860301
290: 40043 IF (RVCOMP - 3.9995) 20040, 40045, 40044 02870301
291: 40044 IF (RVCOMP - 4.0005) 40045, 40045, 20040 02880301
292: 40045 RVCORR = .4 02890301
293: RVCOMP = KVTN04 02900301
294: 40046 IF (RVCOMP - .39995) 20040, 10040, 40047 02910301
295: 40047 IF (RVCOMP - .40005) 10040, 10040, 20040 02920301
296: 30040 IVDELE = IVDELE + 1 02930301
297: WRITE (I02,80000) IVTNUM 02940301
298: IF (ICZERO) 10040, 0051, 20040 02950301
299: 10040 IVPASS = IVPASS + 1 02960301
300: WRITE (I02,80002) IVTNUM 02970301
301: GO TO 0051 02980301
302: 20040 IVFAIL = IVFAIL + 1 02990301
303: WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 03000301
304: 0051 CONTINUE 03010301
305: C 03020301
306: C **** FCVS PROGRAM 301 - TEST 005 **** 03030301
307: C 03040301
308: C TEST 005 DEFINES A LOGICAL VARIABLE. 03050301
309: C 03060301
310: C 03070301
311: IVTNUM = 5 03080301
312: IF (ICZERO) 30050, 0050, 30050 03090301
313: 0050 CONTINUE 03100301
314: HVTN01 = .TRUE. 03110301
315: IVCORR = 1 03120301
316: IVCOMP = 0 03130301
317: IF (HVTN01) IVCOMP = 1 03140301
318: 40050 IF (IVCOMP - 1) 20050, 10050, 20050 03150301
319: 30050 IVDELE = IVDELE + 1 03160301
320: WRITE (I02,80000) IVTNUM 03170301
321: IF (ICZERO) 10050, 0061, 20050 03180301
322: 10050 IVPASS = IVPASS + 1 03190301
323: WRITE (I02,80002) IVTNUM 03200301
324: GO TO 0061 03210301
325: 20050 IVFAIL = IVFAIL + 1 03220301
326: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 03230301
327: 0061 CONTINUE 03240301
328: C 03250301
329: C **** FCVS PROGRAM 301 - TEST 006 **** 03260301
330: C 03270301
331: C TEST 006 DEFINES A REAL VARIABLE WITH A TYPE-STATEMENT THAT 03280301
332: C OVERRIDES THE IMPLICIT STATEMENT TYPING OF THE INTEGER LETTER 'M' 03290301
333: C AS LOGICAL. 03300301
334: C 03310301
335: C 03320301
336: IVTNUM = 6 03330301
337: IF (ICZERO) 30060, 0060, 30060 03340301
338: 0060 CONTINUE 03350301
339: RVCOMP = 0.0 03360301
340: MVTN01 = 12.345 03370301
341: RVCORR = 12.345 03380301
342: RVCOMP = MVTN01 03390301
343: 40060 IF (RVCOMP - 12.340) 20060, 10060, 40061 03400301
344: 40061 IF (RVCOMP - 12.350) 10060, 10060, 20060 03410301
345: 30060 IVDELE = IVDELE + 1 03420301
346: WRITE (I02,80000) IVTNUM 03430301
347: IF (ICZERO) 10060, 0071, 20060 03440301
348: 10060 IVPASS = IVPASS + 1 03450301
349: WRITE (I02,80002) IVTNUM 03460301
350: GO TO 0071 03470301
351: 20060 IVFAIL = IVFAIL + 1 03480301
352: WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 03490301
353: 0071 CONTINUE 03500301
354: C 03510301
355: C **** FCVS PROGRAM 301 - TEST 007 **** 03520301
356: C 03530301
357: C TEST 007 DEFINES A ONE DIMENSIONAL INTEGER ARRAY. 03540301
358: C 03550301
359: C 03560301
360: IVTNUM = 7 03570301
361: IF (ICZERO) 30070, 0070, 30070 03580301
362: 0070 CONTINUE 03590301
363: IVCOMP = 0 03600301
364: NVTN11(3) = 3 03610301
365: IVCORR = 3 03620301
366: IVCOMP = NVTN11(3) 03630301
367: 40070 IF (IVCOMP - 3) 20070, 10070, 20070 03640301
368: 30070 IVDELE = IVDELE + 1 03650301
369: WRITE (I02,80000) IVTNUM 03660301
370: IF (ICZERO) 10070, 0081, 20070 03670301
371: 10070 IVPASS = IVPASS + 1 03680301
372: WRITE (I02,80002) IVTNUM 03690301
373: GO TO 0081 03700301
374: 20070 IVFAIL = IVFAIL + 1 03710301
375: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 03720301
376: 0081 CONTINUE 03730301
377: C 03740301
378: C **** FCVS PROGRAM 301 - TEST 008 **** 03750301
379: C 03760301
380: C TEST 008 DEFINES A TWO DIMENSIONAL REAL ARRAY THAT OVERRIDES 03770301
381: C THE IMPLICIT TYPING OF INTEGER. 03780301
382: C 03790301
383: C 03800301
384: IVTNUM = 8 03810301
385: IF (ICZERO) 30080, 0080, 30080 03820301
386: 0080 CONTINUE 03830301
387: RVCOMP = 0.0 03840301
388: NVTN22(1,2) = 2.12 03850301
389: RVCORR = 2.12 03860301
390: RVCOMP = NVTN22(1,2) 03870301
391: 40080 IF (RVCOMP - 2.1195) 20080, 10080, 40081 03880301
392: 40081 IF (RVCOMP - 2.1205) 10080, 10080, 20080 03890301
393: 30080 IVDELE = IVDELE + 1 03900301
394: WRITE (I02,80000) IVTNUM 03910301
395: IF (ICZERO) 10080, 0091, 20080 03920301
396: 10080 IVPASS = IVPASS + 1 03930301
397: WRITE (I02,80002) IVTNUM 03940301
398: GO TO 0091 03950301
399: 20080 IVFAIL = IVFAIL + 1 03960301
400: WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 03970301
401: 0091 CONTINUE 03980301
402: C 03990301
403: C **** FCVS PROGRAM 301 - TEST 009 **** 04000301
404: C 04010301
405: C TEST 009 DEFINES TWO INTEGER ARRAYS WITH ONE TYPE-STATEMENT. 04020301
406: C ONE ARRAY IS THREE DIMENSIONAL WHILE THE OTHER ARRAY OVERRIDES 04030301
407: C THE IMPLICIT TYPING OF REAL. ONLY THE THREE DIMENSIONAL ARRAY 04040301
408: C IS CHECKED IN THIS TEST. 04050301
409: C 04060301
410: C 04070301
411: IVTNUM = 9 04080301
412: IF (ICZERO) 30090, 0090, 30090 04090301
413: 0090 CONTINUE 04100301
414: IVCOMP = 0 04110301
415: NVTN33(1,2,3) = 123 04120301
416: IVCORR = 123 04130301
417: IVCOMP = NVTN33(1,2,3) 04140301
418: 40090 IF (IVCOMP - 123) 20090, 10090, 20090 04150301
419: 30090 IVDELE = IVDELE + 1 04160301
420: WRITE (I02,80000) IVTNUM 04170301
421: IF (ICZERO) 10090, 0101, 20090 04180301
422: 10090 IVPASS = IVPASS + 1 04190301
423: WRITE (I02,80002) IVTNUM 04200301
424: GO TO 0101 04210301
425: 20090 IVFAIL = IVFAIL + 1 04220301
426: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 04230301
427: 0101 CONTINUE 04240301
428: C 04250301
429: C **** FCVS PROGRAM 301 - TEST 010 **** 04260301
430: C 04270301
431: C TEST 010 CHECKS THE SECOND ARRAY DESCRIBED IN THE PREVIOUS 04280301
432: C TEST. 04290301
433: C 04300301
434: C 04310301
435: IVTNUM = 10 04320301
436: IF (ICZERO) 30100, 0100, 30100 04330301
437: 0100 CONTINUE 04340301
438: IVCOMP = 0 04350301
439: AVTN15(2) = 5 04360301
440: IVCORR = 5 04370301
441: IVCOMP = AVTN15(2) 04380301
442: 40100 IF (IVCOMP - 5) 20100, 10100, 20100 04390301
443: 30100 IVDELE = IVDELE + 1 04400301
444: WRITE (I02,80000) IVTNUM 04410301
445: IF (ICZERO) 10100, 0111, 20100 04420301
446: 10100 IVPASS = IVPASS + 1 04430301
447: WRITE (I02,80002) IVTNUM 04440301
448: GO TO 0111 04450301
449: 20100 IVFAIL = IVFAIL + 1 04460301
450: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 04470301
451: 0111 CONTINUE 04480301
452: C 04490301
453: C **** FCVS PROGRAM 301 - TEST 011 **** 04500301
454: C 04510301
455: C TEST 011 USES THE TYPE-STATEMENT TO EXPLICITLY TYPE AN ARRAY 04520301
456: C THAT WAS DEFINED WITH A DIMENSION STATEMENT. 04530301
457: C 04540301
458: C 04550301
459: IVTNUM = 11 04560301
460: IF (ICZERO) 30110, 0110, 30110 04570301
461: 0110 CONTINUE 04580301
462: IVCOMP = 0 04590301
463: NVTN14(5) = 5 04600301
464: IVCORR = 5 04610301
465: IVCOMP = NVTN14(5) 04620301
466: 40110 IF (IVCOMP - 5) 20110, 10110, 20110 04630301
467: 30110 IVDELE = IVDELE + 1 04640301
468: WRITE (I02,80000) IVTNUM 04650301
469: IF (ICZERO) 10110, 0121, 20110 04660301
470: 10110 IVPASS = IVPASS + 1 04670301
471: WRITE (I02,80002) IVTNUM 04680301
472: GO TO 0121 04690301
473: 20110 IVFAIL = IVFAIL + 1 04700301
474: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 04710301
475: 0121 CONTINUE 04720301
476: C 04730301
477: C **** FCVS PROGRAM 301 - TEST 012 **** 04740301
478: C 04750301
479: C TEST 012 USES THE TYPE-STATEMENT TO OVERRIDE THE TYPING OF 04760301
480: C AN ARRAY THAT WAS DEFINED WITH A DIMENSION STATEMENT. 04770301
481: C 04780301
482: IVTNUM = 12 04790301
483: IF (ICZERO) 30120, 0120, 30120 04800301
484: 0120 CONTINUE 04810301
485: IVCOMP = 0 04820301
486: AVTN16(3) = 163 04830301
487: IVCORR = 163 04840301
488: IVCOMP = AVTN16(3) 04850301
489: 40120 IF (IVCOMP - 163) 20120, 10120, 20120 04860301
490: 30120 IVDELE = IVDELE + 1 04870301
491: WRITE (I02,80000) IVTNUM 04880301
492: IF (ICZERO) 10120, 0131, 20120 04890301
493: 10120 IVPASS = IVPASS + 1 04900301
494: WRITE (I02,80002) IVTNUM 04910301
495: GO TO 0131 04920301
496: 20120 IVFAIL = IVFAIL + 1 04930301
497: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 04940301
498: 0131 CONTINUE 04950301
499: C 04960301
500: C **** FCVS PROGRAM 301 - TEST 013 **** 04970301
501: C 04980301
502: C TEST 013 USES ONE CHARACTER TYPE-STATEMENT TO SPECIFY BOTH A 04990301
503: C VARIABLE AND AN ARRAY DECLARATOR. ONLY THE VARIABLE IS CHECKED 05000301
504: C IN THIS TEST. 05010301
505: C 05020301
506: IVTNUM = 13 05030301
507: IF (ICZERO) 30130, 0130, 30130 05040301
508: 0130 CONTINUE 05050301
509: CVTN01 = '12345678901234' 05060301
510: CVCOMP = ' ' 05070301
511: CVCORR = '12345678901234' 05080301
512: CVCOMP = CVTN01 05090301
513: 40130 IF (CVCOMP .EQ. '12345678901234') GO TO 10130 05100301
514: 40131 GO TO 20130 05110301
515: 30130 IVDELE = IVDELE + 1 05120301
516: WRITE (I02,80000) IVTNUM 05130301
517: IF (ICZERO) 10130, 0141, 20130 05140301
518: 10130 IVPASS = IVPASS + 1 05150301
519: WRITE (I02,80002) IVTNUM 05160301
520: GO TO 0141 05170301
521: 20130 IVFAIL = IVFAIL + 1 05180301
522: WRITE (I02,80018) IVTNUM, CVCOMP, CVCORR 05190301
523: 0141 CONTINUE 05200301
524: C 05210301
525: C **** FCVS PROGRAM 301 - TEST 014 **** 05220301
526: C 05230301
527: C TEST 014 CHECKS THE ARRAY DECLARATOR FROM THE PREVIOUS TEST. 05240301
528: C 05250301
529: IVTNUM = 14 05260301
530: IF (ICZERO) 30140, 0140, 30140 05270301
531: 0140 CONTINUE 05280301
532: CVCOMP = ' ' 05290301
533: CATN12(2) = 'ABCDEFGHIJKLMN' 05300301
534: CVCORR = 'ABCDEFGHIJKLMN' 05310301
535: CVCOMP = CATN12(2) 05320301
536: 40140 IF (CVCOMP .EQ. 'ABCDEFGHIJKLMN') GO TO 10140 05330301
537: 40141 GO TO 20140 05340301
538: 30140 IVDELE = IVDELE + 1 05350301
539: WRITE (I02,80000) IVTNUM 05360301
540: IF (ICZERO) 10140, 0151, 20140 05370301
541: 10140 IVPASS = IVPASS + 1 05380301
542: WRITE (I02,80002) IVTNUM 05390301
543: GO TO 0151 05400301
544: 20140 IVFAIL = IVFAIL + 1 05410301
545: WRITE (I02,80018) IVTNUM, CVCOMP, CVCORR 05420301
546: 0151 CONTINUE 05430301
547: C 05440301
548: C **** FCVS PROGRAM 301 - TEST 015 **** 05450301
549: C 05460301
550: C TEST 015 USES THE CHARACTER TYPE-STATEMENT TO SPECIFY AN 05470301
551: C ARRAY-NAME. THE ARRAY IS DECLARED IN A DIMENSION STATEMENT. 05480301
552: C 05490301
553: IVTNUM = 15 05500301
554: IF (ICZERO) 30150, 0150, 30150 05510301
555: 0150 CONTINUE 05520301
556: CVCOMP = ' ' 05530301
557: CADN13(3) = '12345678901234' 05540301
558: CVCORR = '12345678901234' 05550301
559: CVCOMP = CADN13(3) 05560301
560: 40150 IF (CVCOMP .EQ. '12345678901234') GO TO 10150 05570301
561: 40151 GO TO 20150 05580301
562: 30150 IVDELE = IVDELE + 1 05590301
563: WRITE (I02,80000) IVTNUM 05600301
564: IF (ICZERO) 10150, 0161, 20150 05610301
565: 10150 IVPASS = IVPASS + 1 05620301
566: WRITE (I02,80002) IVTNUM 05630301
567: GO TO 0161 05640301
568: 20150 IVFAIL = IVFAIL + 1 05650301
569: WRITE (I02,80018) IVTNUM, CVCOMP, CVCORR 05660301
570: 0161 CONTINUE 05670301
571: C 05680301
572: C **** FCVS PROGRAM 301 - TEST 016 **** 05690301
573: C 05700301
574: C TEST 016 USES THE CHARACTER TYPE-STATEMENT TO OVERRIDE THE 05710301
575: C IMPLICIT (DEFAULT) TYPING OF INTEGER. 05720301
576: C 05730301
577: IVTNUM = 16 05740301
578: IF (ICZERO) 30160, 0160, 30160 05750301
579: 0160 CONTINUE 05760301
580: CVCOMP = ' ' 05770301
581: KVTN05 = 'A' 05780301
582: CVCORR = 'A' 05790301
583: CVCOMP = KVTN05 05800301
584: 40160 IF (CVCOMP .EQ. 'A') GO TO 10160 05810301
585: 40161 GO TO 20160 05820301
586: 30160 IVDELE = IVDELE + 1 05830301
587: WRITE (I02,80000) IVTNUM 05840301
588: IF (ICZERO) 10160, 0171, 20160 05850301
589: 10160 IVPASS = IVPASS + 1 05860301
590: WRITE (I02,80002) IVTNUM 05870301
591: GO TO 0171 05880301
592: 20160 IVFAIL = IVFAIL + 1 05890301
593: WRITE (I02,80018) IVTNUM, CVCOMP, CVCORR 05900301
594: 0171 CONTINUE 05910301
595: C 05920301
596: C **** FCVS PROGRAM 301 - TEST 017 **** 05930301
597: C 05940301
598: C TEST 017 USES THE CHARACTER TYPE-STATEMENT TO OVERRIDE THE 05950301
599: C IMPLICIT TYPING OF THE LETTER 'G' AS INTEGER. 05960301
600: C 05970301
601: IVTNUM = 17 05980301
602: IF (ICZERO) 30170, 0170, 30170 05990301
603: 0170 CONTINUE 06000301
604: CVCOMP = ' ' 06010301
605: GVTN01 = 'ABC' 06020301
606: CVCORR = 'ABC' 06030301
607: CVCOMP = GVTN01 06040301
608: 40170 IF (CVCOMP .EQ. 'ABC') GO TO 10170 06050301
609: 40171 GO TO 20170 06060301
610: 30170 IVDELE = IVDELE + 1 06070301
611: WRITE (I02,80000) IVTNUM 06080301
612: IF (ICZERO) 10170, 0181, 20170 06090301
613: 10170 IVPASS = IVPASS + 1 06100301
614: WRITE (I02,80002) IVTNUM 06110301
615: GO TO 0181 06120301
616: 20170 IVFAIL = IVFAIL + 1 06130301
617: WRITE (I02,80018) IVTNUM, CVCOMP, CVCORR 06140301
618: 0181 CONTINUE 06150301
619: C 06160301
620: C **** FCVS PROGRAM 301 - TEST 018 **** 06170301
621: C 06180301
622: C TEST 018 USES THE CHARAACTER TYPE-STATEMENT TO OVERRIDE THE 06190301
623: C LENGTH OF A CHARACTER FIELD DEFINED BY AN IMPLICIT STATEMENT. 06200301
624: C 06210301
625: IVTNUM = 18 06220301
626: IF (ICZERO) 30180, 0180, 30180 06230301
627: 0180 CONTINUE 06240301
628: CVCOMP = ' ' 06250301
629: FVTN01 = 'ABC' 06260301
630: CVCORR = 'ABC' 06270301
631: CVCOMP = FVTN01 06280301
632: 40180 IF (CVCOMP .EQ. 'ABC') GO TO 10180 06290301
633: 40181 GO TO 20180 06300301
634: 30180 IVDELE = IVDELE + 1 06310301
635: WRITE (I02,80000) IVTNUM 06320301
636: IF (ICZERO) 10180, 0191, 20180 06330301
637: 10180 IVPASS = IVPASS + 1 06340301
638: WRITE (I02,80002) IVTNUM 06350301
639: GO TO 0191 06360301
640: 20180 IVFAIL = IVFAIL + 1 06370301
641: WRITE (I02,80018) IVTNUM, CVCOMP, CVCORR 06380301
642: 0191 CONTINUE 06390301
643: C 06400301
644: C **** FCVS PROGRAM 301 - TEST 019 **** 06410301
645: C 06420301
646: C TEST 019 USES THE TYPE-STATEMENT TO SPECIFY AN INTEGER 06430301
647: C STATEMENT FUNCTION. 06440301
648: C 06450301
649: IVTNUM = 19 06460301
650: IF (ICZERO) 30190, 0190, 30190 06470301
651: 0190 CONTINUE 06480301
652: IVCOMP = 0 06490301
653: IVON01 = 5 06500301
654: IVON02 = IFTN01(IVON01) 06510301
655: IVCORR = 6 06520301
656: IVCOMP = IVON02 06530301
657: 40190 IF (IVCOMP - 6) 20190, 10190, 20190 06540301
658: 30190 IVDELE = IVDELE + 1 06550301
659: WRITE (I02,80000) IVTNUM 06560301
660: IF (ICZERO) 10190, 0201, 20190 06570301
661: 10190 IVPASS = IVPASS + 1 06580301
662: WRITE (I02,80002) IVTNUM 06590301
663: GO TO 0201 06600301
664: 20190 IVFAIL = IVFAIL + 1 06610301
665: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 06620301
666: 0201 CONTINUE 06630301
667: C 06640301
668: C 06650301
669: C WRITE OUT TEST SUMMARY 06660301
670: C 06670301
671: WRITE (I02,90004) 06680301
672: WRITE (I02,90014) 06690301
673: WRITE (I02,90004) 06700301
674: WRITE (I02,90000) 06710301
675: WRITE (I02,90004) 06720301
676: WRITE (I02,90020) IVFAIL 06730301
677: WRITE (I02,90022) IVPASS 06740301
678: WRITE (I02,90024) IVDELE 06750301
679: STOP 06760301
680: 90001 FORMAT (1H ,24X,5HFM301) 06770301
681: 90000 FORMAT (1H ,20X,20HEND OF PROGRAM FM301) 06780301
682: C 06790301
683: C FORMATS FOR TEST DETAIL LINES 06800301
684: C 06810301
685: 80000 FORMAT (1H ,4X,I5,6X,7HDELETED) 06820301
686: 80002 FORMAT (1H ,4X,I5,7X,4HPASS) 06830301
687: 80010 FORMAT (1H ,4X,I5,7X,4HFAIL,10X,I6,9X,I6) 06840301
688: 80012 FORMAT (1H ,4X,I5,7X,4HFAIL,4X,E12.5,3X,E12.5) 06850301
689: 80018 FORMAT (1H ,4X,I5,7X,4HFAIL,2X,A14,1X,A14) 06860301
690: C 06870301
691: C FORMAT STATEMENTS FOR PAGE HEADERS 06880301
692: C 06890301
693: 90002 FORMAT (1H1) 06900301
694: 90004 FORMAT (1H ) 06910301
695: 90006 FORMAT (1H ,10X,34HFORTRAN COMPILER VALIDATION SYSTEM) 06920301
696: 90008 FORMAT (1H ,21X,11HVERSION 1.0) 06930301
697: 90010 FORMAT (1H ,8X,38HFOR OFFICIAL USE ONLY - COPYRIGHT 1978) 06940301
698: 90012 FORMAT (1H ,5X,4HTEST,5X,9HPASS/FAIL,5X,8HCOMPUTED,8X,7HCORRECT) 06950301
699: 90014 FORMAT (1H ,5X,46H----------------------------------------------) 06960301
700: 90016 FORMAT (1H ,18X,17HSUBSET LEVEL TEST) 06970301
701: C 06980301
702: C FORMAT STATEMENTS FOR RUN SUMMARY 06990301
703: C 07000301
704: 90020 FORMAT (1H ,19X,I5,13H TESTS FAILED) 07010301
705: 90022 FORMAT (1H ,19X,I5,13H TESTS PASSED) 07020301
706: 90024 FORMAT (1H ,19X,I5,14H TESTS DELETED) 07030301
707: END 07040301
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.