|
|
1.1 root 1: C COMMENT SECTION. 00010010
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 00020010
6: C FM010 00030010
7: C 00040010
8: C THIS ROUTINE TESTS REFERENCE FORMAT OF FORTRAN STATEMENTS 00050010
9: C AND STATEMENT NUMBERS. THE USE OF THE BLANK CHARACTER IS TESTED 00060010
10: C BOTH WITHIN THE STATEMENT NUMBER FIELD AND WITHIN THE FORTRAN 00070010
11: C STATEMENTS THEMSELVES. LEADING ZERO IS TESTED FOR STATEMENTS AND 00080010
12: C INTEGER CONSTANTS. VARIABLE NAMES WHICH LOOK VERY MUCH LIKE 00090010
13: C FORTRAN RESERVED WORDS ARE TESTED IN ARITHMETIC ASSIGNMENT 00100010
14: C STATEMENTS. NAMING CONVENTIONS USED THROUGHOUT THE FCVS ARE 00110010
15: C TESTED ALSO IN ARITHMETIC ASSIGNMENT STATEMENTS. 00120010
16: C 00130010
17: C REFERENCES 00140010
18: C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, 00150010
19: C X3.9-1978 00160010
20: C 00170010
21: C SECTION 2.5, VARIABLES 00180010
22: C SECTION 3.1.6, BLANK CHARACTER 00190010
23: C SECTION 3.2.2, INITIAL LINES 00200010
24: C SECTION 3.4, STATEMENT LABELS 00210010
25: C 00220010
26: C 00230010
27: C ********************************************************** 00240010
28: C 00250010
29: C A COMPILER VALIDATION SYSTEM FOR THE FORTRAN LANGUAGE 00260010
30: C BASED ON SPECIFICATIONS AS DEFINED IN AMERICAN NATIONAL STANDARD 00270010
31: C PROGRAMMING LANGUAGE FORTRAN X3.9-1978, HAS BEEN DEVELOPED BY THE 00280010
32: C FEDERAL COBOL COMPILER TESTING SERVICE. THE FORTRAN COMPILER 00290010
33: C VALIDATION SYSTEM (FCVS) CONSISTS OF AUDIT ROUTINES, THEIR RELATED00300010
34: C DATA, AND AN EXECUTIVE SYSTEM. EACH AUDIT ROUTINE IS A FORTRAN 00310010
35: C PROGRAM, SUBPROGRAM OR FUNCTION WHICH INCLUDES TESTS OF SPECIFIC 00320010
36: C LANGUAGE ELEMENTS AND SUPPORTING PROCEDURES INDICATING THE RESULT 00330010
37: C OF EXECUTING THESE TESTS. 00340010
38: C 00350010
39: C THIS PARTICULAR PROGRAM/SUBPROGRAM/FUNCTION CONTAINS FEATURES 00360010
40: C FOUND ONLY IN THE SUBSET AS DEFINED IN X3.9-1978. 00370010
41: C 00380010
42: C SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO - 00390010
43: C 00400010
44: C DEPARTMENT OF THE NAVY 00410010
45: C FEDERAL COBOL COMPILER TESTING SERVICE 00420010
46: C WASHINGTON, D.C. 20376 00430010
47: C 00440010
48: C ********************************************************** 00450010
49: C 00460010
50: C 00470010
51: C 00480010
52: C INITIALIZATION SECTION 00490010
53: C 00500010
54: C INITIALIZE CONSTANTS 00510010
55: C ************** 00520010
56: C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. 00530010
57: I01 = 5 00540010
58: C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. 00550010
59: I02 = 6 00560010
60: C SYSTEM ENVIRONMENT SECTION 00570010
61: C 00580010
62: I01 = 5 00590010
63: C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 00600010
64: C (UNIT NUMBER FOR CARD READER). 00610010
65: CX011 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-011 CONTROL CARD. 00620010
66: C THE CX011 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL 00630010
67: C FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX010 ABOVE. 00640010
68: C 00650010
69: I02 = 6 00660010
70: C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02 = 6 00670010
71: C (UNIT NUMBER FOR PRINTER). 00680010
72: CX021 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-021 CONTROL CARD. 00690010
73: C THE CX021 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL 00700010
74: C FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX020 ABOVE. 00710010
75: C 00720010
76: IVPASS=0 00730010
77: IVFAIL=0 00740010
78: IVDELE=0 00750010
79: ICZERO=0 00760010
80: C 00770010
81: C WRITE PAGE HEADERS 00780010
82: WRITE (I02,90000) 00790010
83: WRITE (I02,90001) 00800010
84: WRITE (I02,90002) 00810010
85: WRITE (I02, 90002) 00820010
86: WRITE (I02,90003) 00830010
87: WRITE (I02,90002) 00840010
88: WRITE (I02,90004) 00850010
89: WRITE (I02,90002) 00860010
90: WRITE (I02,90011) 00870010
91: WRITE (I02,90002) 00880010
92: WRITE (I02,90002) 00890010
93: WRITE (I02,90005) 00900010
94: WRITE (I02,90006) 00910010
95: WRITE (I02,90002) 00920010
96: 1001 CONTINUE 00930010
97: IVTNUM = 100 00940010
98: C 00950010
99: C **** TEST 100 **** 00960010
100: C 00970010
101: C TEST 100 - TO CHECK THE VARIOUS COMBINATIONS OF FORMING VARIABLE00980010
102: C NAMES. THESE ARE ACTUALLY SYMBOLIC NAMES (ANSI X3.9-1978 00990010
103: C SECTION 2.2). THIS IS BASICALLY A SYNTAX CHECK USING A 01000010
104: C COMBINATION OF FROM ONE TO SIX ALPHANUMERIC CHARACTERS WITH 01010010
105: C THE FIRST CHARACTER ALWAYS ALPHABETIC. REFERENCE FORMAT IS 01020010
106: C ALSO CHECKED BY HAVING EACH ASSIGNMENT STATEMENT AN INITIAL 01030010
107: C LINE (SECTION 3.2.2). THIS MEANS ZERO MAY APPEAR IN COLUMN 01040010
108: C SIX WITHOUT EFFECT, THAT LINES MAY BEGIN ANYWHERE FROM 01050010
109: C COLUMN SEVEN TO COLUMN 72, AND BLANKS MAY BE USED FREELY 01060010
110: C WITHOUT MEANING (3.1.6 BLANK CHARACTERS). 01070010
111: C 01080010
112: IF (ICZERO) 31000, 1000, 31000 01090010
113: 1000 CONTINUE 01100010
114: A=1. 01110010
115: B =2. 01120010
116: C =3. 01130010
117: D =4. 01140010
118: E =5. 01150010
119: F =6. 01160010
120: 0G = 7. 01170010
121: H=8. 01180010
122: I=901190010
123: J = 10 01200010
124: K = 11 01210010
125: L = 1201220010
126: 0M=13 01230010
127: N=14 01240010
128: O=15. 01250010
129: P=16. 01260010
130: Q=17. 01270010
131: R=18. 01280010
132: S=19. 01290010
133: T=20. 01300010
134: U=21. 01310010
135: V=22. 01320010
136: W=23. 01330010
137: X=24. 01340010
138: Y=25. 01350010
139: Z=26. 01360010
140: AAAAAA=27. 01370010
141: BBBBB=28. 01380010
142: CCCC=29. 01390010
143: DDD=30 01400010
144: EE=31. 01410010
145: F0=32. 01420010
146: G12=33. 01430010
147: H345 = 34. 01440010
148: I6789 = 35 01450010
149: J01234 = 36 01460010
150: K 5 6 78 9=37 01470010
151: L 2 L 2 L 2 =38 01480010
152: M 3 M 3 M3 = 3901490010
153: N 40 = 4 001500010
154: 0 OMY = 4 1.01510010
155: I PM H = 4 201520010
156: GO TO 1 = 4 3. 01530010
157: IF 3 = 44 01540010
158: DO 3 = 53. 01550010
159: CALL FL =62. 01560010
160: TYPE I = 63. 01570010
161: TRUE =71. 01580010
162: FALSE = 72. 01590010
163: GO TO 41000 01600010
164: 31000 IVDELE = IVDELE + 1 01610010
165: WRITE (I02,80003) IVTNUM 01620010
166: IF (ICZERO) 41000, 1011, 41000 01630010
167: 41000 IF (IPMH - 42) 21000,11000,21000 01640010
168: 11000 IVPASS = IVPASS + 1 01650010
169: WRITE (I02,80001) IVTNUM 01660010
170: GO TO 1011 01670010
171: 21000 IVFAIL = IVFAIL + 1 01680010
172: IVCOMP = IPMH 01690010
173: IVCORR = 42 01700010
174: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 01710010
175: 1011 CONTINUE 01720010
176: IVTNUM = 101 01730010
177: C 01740010
178: C **** TEST 101 **** 01750010
179: C TEST 101 - CHECKS THE FCVS NAMING CONVENTIONS FOR INTEGER AND 01760010
180: C REAL VARIABLES IN ASSIGNMENT STATEMENTS: VARIABLE = CONSTANT01770010
181: C BASICALLY A SYNTAX CHECK ON SIX CHARACTER VARIABLE NAMES. 01780010
182: C 01790010
183: IF (ICZERO) 31010, 1010, 31010 01800010
184: 1010 CONTINUE 01810010
185: IACE11 = 1 01820010
186: IACE21 = 2 01830010
187: IACE31 = 3 01840010
188: IACN11 = 4 01850010
189: IADN11 = 5 01860010
190: IATE31 = 6 01870010
191: RACE11 = 7. 01880010
192: RACE21 = 8. 01890010
193: RACN31 = 9. 01900010
194: RADE31 = 10. 01910010
195: IVTE69 = 11 01920010
196: IVON78 = 12 01930010
197: RVTNAZ = 13. 01940010
198: RVOEZ9 = 14. 01950010
199: ICTE96 = 15 01960010
200: ICON84 = 16 01970010
201: RCON48 = 17. 01980010
202: RCTE54 = 18. 01990010
203: IDONY4 = 19 02000010
204: IDOEB6 = 20 02010010
205: RDON46 = 21. 02020010
206: IFONS3 = 22 02030010
207: RFON77 = 23. 02040010
208: GO TO 41010 02050010
209: 31010 IVDELE = IVDELE + 1 02060010
210: WRITE (I02,80003) IVTNUM 02070010
211: IF (ICZERO) 41010, 1021, 41010 02080010
212: 41010 IF (IVTE69 - 11) 21010,11010,21010 02090010
213: 11010 IVPASS = IVPASS + 1 02100010
214: WRITE (I02,80001) IVTNUM 02110010
215: GO TO 1021 02120010
216: 21010 IVFAIL = IVFAIL + 1 02130010
217: IVCOMP = IVTE69 02140010
218: IVCORR = 11 02150010
219: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 02160010
220: 1021 CONTINUE 02170010
221: IVTNUM = 102 02180010
222: C 02190010
223: C **** TEST 102 **** 02200010
224: C TEST 102 - REFERENCE FORMAT CHECK ON STATEMENT LABELS (SECTION 02210010
225: C 3.4). THESE ARE NON-ZERO INTEGERS, FROM 1 TO 5 DIGITS, 02220010
226: C MAY BEGIN ANYWHERE FROM COLS. 1 TO 5, AND LEADING ZEROS ARE 02230010
227: C NOT SIGNIFICANT. BLANKS WILL BE IMBEDDED IN SOME OF THE 02240010
228: C STATEMENT LABELS AND THESE SHOULD HAVE NO EFFECT. THE 02250010
229: C CONTINUE STATEMENT (SECTION 11.11) IS USED FOR THIS TEST. 02260010
230: C A BASIC FCVS ASSUMPTION IS THAT THE LOGIC WILL FALL THRU A 02270010
231: C SERIES OF CONTINUE STATEMENTS (NORMAL EXECUTION SEQUENCE). 02280010
232: C 02290010
233: IF (ICZERO) 31020, 1020, 31020 02300010
234: 1020 CONTINUE 02310010
235: 1 CONTINUE 02320010
236: 2 CONTINUE 02330010
237: 3 CONTINUE 02340010
238: 4 CONTINUE 02350010
239: 5 CONTINUE 02360010
240: 06 CONTINUE 02370010
241: 007 CONTINUE 02380010
242: 0008 CONTINUE 02390010
243: 00009 CONTINUE 02400010
244: 010 CONTINUE 02410010
245: 1 1 CONTINUE 02420010
246: 0 12 CONTINUE 02430010
247: 0 1 3 CONTINUE 02440010
248: 00 14 CONTINUE 02450010
249: 0 15 CONTINUE 02460010
250: 0 016 CONTINUE 02470010
251: 100 CONTINUE 02480010
252: 1 0 1 CONTINUE 02490010
253: 10 2 IVON01 = 1 02500010
254: 1 03 CONTINUE 02510010
255: 1 04 CONTINUE 02520010
256: 01 05 CONTINUE 02530010
257: 010 6 CONTINUE 02540010
258: 0107 CONTINUE 02550010
259: 00108 CONTINUE 02560010
260: 1 1 1 CONTINUE 02570010
261: 1 111 CONTINUE 02580010
262: 99 CONTINUE 02590010
263: 9 9 9 CONTINUE 02600010
264: 99 99 CONTINUE 02610010
265: GO TO 41020 02620010
266: 31020 IVDELE = IVDELE + 1 02630010
267: WRITE (I02,80003) IVTNUM 02640010
268: IF (ICZERO) 41020, 1031, 41020 02650010
269: 41020 IF (IVON01 - 1) 21020,11020,21020 02660010
270: 11020 IVPASS = IVPASS + 1 02670010
271: WRITE (I02,80001) IVTNUM 02680010
272: GO TO 1031 02690010
273: 21020 IVFAIL = IVFAIL + 1 02700010
274: IVCOMP = IVON01 02710010
275: IVCORR = 1 02720010
276: WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 02730010
277: 1031 CONTINUE 02740010
278: C 02750010
279: C WRITE PAGE FOOTINGS AND RUN SUMMARIES 02760010
280: 99999 CONTINUE 02770010
281: WRITE (I02,90002) 02780010
282: WRITE (I02,90006) 02790010
283: WRITE (I02,90002) 02800010
284: WRITE (I02,90002) 02810010
285: WRITE (I02,90007) 02820010
286: WRITE (I02,90002) 02830010
287: WRITE (I02,90008) IVFAIL 02840010
288: WRITE (I02,90009) IVPASS 02850010
289: WRITE (I02,90010) IVDELE 02860010
290: C 02870010
291: C 02880010
292: C TERMINATE ROUTINE EXECUTION 02890010
293: STOP 02900010
294: C 02910010
295: C FORMAT STATEMENTS FOR PAGE HEADERS 02920010
296: 90000 FORMAT (1H1) 02930010
297: 90002 FORMAT (1H ) 02940010
298: 90001 FORMAT (1H ,10X,34HFORTRAN COMPILER VALIDATION SYSTEM) 02950010
299: 90003 FORMAT (1H ,21X,11HVERSION 1.0) 02960010
300: 90004 FORMAT (1H ,10X,38HFOR OFFICIAL USE ONLY - COPYRIGHT 1978) 02970010
301: 90005 FORMAT (1H ,5X,4HTEST,5X,9HPASS/FAIL, 5X,8HCOMPUTED,8X,7HCORRECT) 02980010
302: 90006 FORMAT (1H ,5X,46H----------------------------------------------) 02990010
303: 90011 FORMAT (1H ,18X,17HSUBSET LEVEL TEST) 03000010
304: C 03010010
305: C FORMAT STATEMENTS FOR RUN SUMMARIES 03020010
306: 90008 FORMAT (1H ,15X,I5,19H ERRORS ENCOUNTERED) 03030010
307: 90009 FORMAT (1H ,15X,I5,13H TESTS PASSED) 03040010
308: 90010 FORMAT (1H ,15X,I5,14H TESTS DELETED) 03050010
309: C 03060010
310: C FORMAT STATEMENTS FOR TEST RESULTS 03070010
311: 80001 FORMAT (1H ,4X,I5,7X,4HPASS) 03080010
312: 80002 FORMAT (1H ,4X,I5,7X,4HFAIL) 03090010
313: 80003 FORMAT (1H ,4X,I5,7X,7HDELETED) 03100010
314: 80004 FORMAT (1H ,4X,I5,7X,4HFAIL,10X,I6,9X,I6) 03110010
315: 80005 FORMAT (1H ,4X,I5,7X,4HFAIL,4X,E12.5,3X,E12.5) 03120010
316: C 03130010
317: 90007 FORMAT (1H ,20X,20HEND OF PROGRAM FM010) 03140010
318: END 03150010
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.