|
|
1.1 root 1: PROGRAM FM253 00010253
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 00020253
6: C 00030253
7: C 00040253
8: C THIS ROUTINE IS A TEST OF THE IF-BLOCK. TESTS WITHIN THIS 00050253
9: C ROUTINE ARE FOR THE SYNTAX OF THE BASIC IF ( ) THEN THROUGH 00060253
10: C END IF BLOCK STRUCTURE. 00070253
11: C 00080253
12: C THERE IS ALSO A SERIES OF TESTS TO CHECK THE HIERARCHY AND 00090253
13: C ORDER OF EVALUATION IN EXPRESSIONS THAT CONTAIN A COMBINATION OF 00100253
14: C ARITHMETIC, RELATIONAL, AND LOGICAL OPERATORS. 00110253
15: C 00120253
16: C REFERENCES 00130253
17: C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, 00140253
18: C X3.9-1978 00150253
19: C SECTION 11.6, BLOCK IF STATEMENT 00160253
20: C SECTION 11.6.1, IF-LEVEL 00170253
21: C SECTION 11.6.2, IF-BLOCK 00180253
22: C SECTION 11.6.3, EXECUTION OF A BLOCK IF STATEMENT 00190253
23: C 00200253
24: C 00210253
25: C 00220253
26: C 00230253
27: C ******************************************************************00240253
28: C A COMPILER VALIDATION SYSTEM FOR THE FORTRAN LANGUAGE 00250253
29: C BASED ON SPECIFICATIONS AS DEFINED IN AMERICAN STANDARD FORTRAN 00260253
30: C X3.9-1978, HAS BEEN DEVELOPED BY THE DEPARTMENT OF THE NAVY. THE 00270253
31: C FORTRAN COMPILER VALIDATION SYSTEM (FCVS) CONSISTS OF AUDIT 00280253
32: C ROUTINES, THEIR RELATED DATA, AND AN EXECUTIVE SYSTEM. EACH AUDIT00290253
33: C ROUTINE IS A FORTRAN PROGRAM OR SUBPROGRAM WHICH INCLUDES TESTS 00300253
34: C OF SPECIFIC LANGUAGE ELEMENTS AND SUPPORTING PROCEDURES INDICATING00310253
35: C THE RESULT OF EXECUTING THESE TESTS. 00320253
36: C 00330253
37: C THIS PARTICULAR PROGRAM OR SUBPROGRAM CONTAINS ONLY FEATURES 00340253
38: C FOUND IN THE SUBSET LEVEL OF THE STANDARD. 00350253
39: C 00360253
40: C SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO 00370253
41: C DEPARTMENT OF THE NAVY 00380253
42: C FEDERAL COBOL COMPILER TESTING SERVICE 00390253
43: C WASHINGTON, D.C. 20376 00400253
44: C 00410253
45: C ******************************************************************00420253
46: C 00430253
47: C 00440253
48: IMPLICIT LOGICAL (L) 00450253
49: IMPLICIT CHARACTER*14 (C) 00460253
50: C 00470253
51: DIMENSION LADN11(2) 00480253
52: LOGICAL LVTN01, LVTN02, LATN11(2), LADN11 00490253
53: DATA LADN11/.TRUE., .FALSE./ 00500253
54: C 00510253
55: C 00520253
56: C **** LOGICAL STATEMENT FUNCTION REFERENCED IN TEST 20 **** 00530253
57: C 00540253
58: LFIS01 ( L ) = .NOT. L 00550253
59: C 00560253
60: C 00570253
61: C 00580253
62: C 00590253
63: C 00600253
64: C INITIALIZATION SECTION. 00610253
65: C 00620253
66: C INITIALIZE CONSTANTS 00630253
67: C ******************** 00640253
68: C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER 00650253
69: I01 = 5 00660253
70: C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER 00670253
71: I02 = 6 00680253
72: C SYSTEM ENVIRONMENT SECTION 00690253
73: C 00700253
74: I01 = 5 00710253
75: C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 00720253
76: C (UNIT NUMBER FOR CARD READER). 00730253
77: CX011 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-011 CONTROL CARD00740253
78: C THE CX011 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL 00750253
79: C FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX010 ABOVE. 00760253
80: C 00770253
81: I02 = 6 00780253
82: C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02 = 6 00790253
83: C (UNIT NUMBER FOR PRINTER). 00800253
84: CX021 THIS CARD IS PEPLACED BY CONTENTS OF FEXEC X-021 CONTROL CARD.00810253
85: C THE CX021 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL 00820253
86: C FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX020 ABOVE. 00830253
87: C 00840253
88: IVPASS = 0 00850253
89: IVFAIL = 0 00860253
90: IVDELE = 0 00870253
91: ICZERO = 0 00880253
92: C 00890253
93: C WRITE OUT PAGE HEADERS 00900253
94: C 00910253
95: WRITE (I02,90002) 00920253
96: WRITE (I02,90006) 00930253
97: WRITE (I02,90008) 00940253
98: WRITE (I02,90004) 00950253
99: WRITE (I02,90010) 00960253
100: WRITE (I02,90004) 00970253
101: WRITE (I02,90016) 00980253
102: WRITE (I02,90001) 00990253
103: WRITE (I02,90004) 01000253
104: WRITE (I02,90012) 01010253
105: WRITE (I02,90014) 01020253
106: WRITE (I02,90004) 01030253
107: C 01040253
108: C 01050253
109: C **** FCVS PROGRAM 253 - TEST 001 **** 01060253
110: C 01070253
111: C TEST 001 USES A VERY SIMPLE BLOCK IF STATEMENT. THE EXPRESSION01080253
112: C WITHIN THE PARENTHESES IS THE LOGICAL CONSTANT .TRUE. AND THE 01090253
113: C EXECUTABLE STATEMENT WITHIN THE IF-BLOCK OF LEVEL ONE IS AN 01100253
114: C INTEGER ARITHMETIC ASSIGNMENT STATEMENT. SINCE THE LOGICAL 01110253
115: C EXPRESSION IS TRUE, THEN THE INTEGER ASSIGNMENT STATEMENT ( TRUE 01120253
116: C PATH ) SHOULD BE EXECUTED. 01130253
117: C 01140253
118: C THIS IS A SYNTAX CHECK FOR THE BLOCK IF STATEMENT. SHOULD A 01150253
119: C COMPILER NOT BE ABLE TO ACCEPT THE SYNTAX OF THIS BASIC TEST, 01160253
120: C THEN ROUTINES FM253, THRU FMXXX NEED NOT BE RUN. 01170253
121: C 01180253
122: C 01190253
123: IVTNUM = 1 01200253
124: IF (ICZERO) 30010, 0010, 30010 01210253
125: 0010 CONTINUE 01220253
126: IVCOMP = 0 01230253
127: IF ( .TRUE. ) THEN 01240253
128: IVCOMP = 1 01250253
129: END IF 01260253
130: IVCORR = 1 01270253
131: 40010 IF ( IVCOMP - 1 ) 20010, 10010, 20010 01280253
132: 30010 IVDELE = IVDELE + 1 01290253
133: WRITE (I02,80000) IVTNUM 01300253
134: IF (ICZERO) 10010, 0021, 20010 01310253
135: 10010 IVPASS = IVPASS + 1 01320253
136: WRITE (I02,80002) IVTNUM 01330253
137: GO TO 0021 01340253
138: 20010 IVFAIL = IVFAIL + 1 01350253
139: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 01360253
140: 0021 CONTINUE 01370253
141: C 01380253
142: C **** FCVS PROGRAM 253 - TEST 002 **** 01390253
143: C 01400253
144: C TEST 002 USES A LOGICAL VARIABLE SET .FALSE. AS THE LOGICAL 01410253
145: C EXPRESSION IN THE BLOCK IF STATEMENT. BECAUSE THE EXPRESSION 01420253
146: C IS FALSE, THE IF-BLOCK (WHICH IS AN INTEGER ARITHMETIC ASSIGNMENT 01430253
147: C STATEMENT AND A LOGICAL ASSIGNMENT STATEMENT) SHOULD NOT BE 01440253
148: C EXECUTED. 01450253
149: C 01460253
150: C 01470253
151: IVTNUM = 2 01480253
152: IF (ICZERO) 30020, 0020, 30020 01490253
153: 0020 CONTINUE 01500253
154: IVCOMP = 0 01510253
155: IVON01 = 1 01520253
156: LVON01 = .FALSE. 01530253
157: LVTN01 = .FALSE. 01540253
158: IF ( LVON01 ) THEN 01550253
159: IVON01 = 0 01560253
160: LVTN01 = .TRUE. 01570253
161: END IF 01580253
162: IVCORR = 1 01590253
163: 40020 IF ( IVON01 .EQ. 1 ) IVCOMP = 1 01600253
164: 40021 IF ( IVCOMP - 1 ) 20020, 10020, 20020 01610253
165: 30020 IVDELE = IVDELE + 1 01620253
166: WRITE (I02,80000) IVTNUM 01630253
167: IF (ICZERO) 10020, 0031, 20020 01640253
168: 10020 IVPASS = IVPASS + 1 01650253
169: WRITE (I02,80002) IVTNUM 01660253
170: GO TO 0031 01670253
171: 20020 IVFAIL = IVFAIL + 1 01680253
172: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 01690253
173: 0031 CONTINUE 01700253
174: C 01710253
175: C **** FCVS PROGRAM 253 - TEST 003 **** 01720253
176: C 01730253
177: C TEST 003 IS A BLOCK IF STATEMENT WITH AN EMPTY IF-BLOCK. THE 01740253
178: C LOGICAL EXPRESSION IS A LOGICAL ARRAY ELEMENT REFERENCE SET TO 01750253
179: C .TRUE. SECTION 11.6.2 STATES THAT, AN IF-BLOCK MAY BE EMPTY. 01760253
180: C BECAUSE THE LOGICAL EXPRESSION IS TRUE, THE IF-BLOCK SHOULD BE 01770253
181: C EXECUTED. IF THE VALUE OF THE EXPRESSION IS TRUE AND THE IF-BLOCK01780253
182: C IS EMPTY, CONTROL IS TRANSFERRED TO THE NEXT END IF STATEMENT 01790253
183: C THAT HAS THE SAME IF-LEVEL AS THE BLOCK IF STATEMENT ACCORDING 01800253
184: C TO SECTION 11.6.3. IN THIS TEST THE EMPTY IF-BLOCK IS OF LEVEL ONE01810253
185: C 01820253
186: C 01830253
187: IVTNUM = 3 01840253
188: IF (ICZERO) 30030, 0030, 30030 01850253
189: 0030 CONTINUE 01860253
190: IVCOMP = 0 01870253
191: LATN11(1) = .TRUE. 01880253
192: IF ( LATN11(1) ) THEN 01890253
193: END IF 01900253
194: IVCOMP = 1 01910253
195: IVCORR = 1 01920253
196: 40030 IF ( IVCOMP - 1 ) 20030, 10030, 20030 01930253
197: 30030 IVDELE = IVDELE + 1 01940253
198: WRITE (I02,80000) IVTNUM 01950253
199: IF (ICZERO) 10030, 0041, 20030 01960253
200: 10030 IVPASS = IVPASS + 1 01970253
201: WRITE (I02,80002) IVTNUM 01980253
202: GO TO 0041 01990253
203: 20030 IVFAIL = IVFAIL + 1 02000253
204: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 02010253
205: 0041 CONTINUE 02020253
206: C 02030253
207: C **** FCVS PROGRAM 253 - TEST 004 **** 02040253
208: C 02050253
209: C TEST 004 IS LIKE THE PREVIOUS TEST USING A LOGICAL ARRAY 02060253
210: C ELEMENT REFERENCE AS THE LOGICAL EXPRESSION OF THE BLOCK IF 02070253
211: C STATEMENT THAT HAS AN EMPTY IF-BLOCK STRUCTURE OF LEVEL ONE. 02080253
212: C IN THIS TEST THE LOGICAL EXPRESSION IS FALSE SO CONTROL SHOULD 02090253
213: C BE TRANSFERRED TO THE END IF STATEMENT THAT HAS THE SAME IF-LEVEL 02100253
214: C AS THE BLOCK IF STATEMENT ACCORDING TO SECTION 11.6.3. 02110253
215: C 02120253
216: C THE LOGICAL ARRAY ELEMENT REFERENCE LADN11(2) IS SET TO .FALSE. 02130253
217: C IN THE DATA STATEMENT AS FOLLOWS 02140253
218: C 02150253
219: C DATA LADN11/.TRUE., .FALSE./ 02160253
220: C 02170253
221: C 02180253
222: IVTNUM = 4 02190253
223: IF (ICZERO) 30040, 0040, 30040 02200253
224: 0040 CONTINUE 02210253
225: IVCOMP = 0 02220253
226: IF ( LADN11(2) ) THEN 02230253
227: END IF 02240253
228: IVCOMP = 1 02250253
229: IVCORR = 1 02260253
230: 40040 IF ( IVCOMP - 1 ) 20040, 10040, 20040 02270253
231: 30040 IVDELE = IVDELE + 1 02280253
232: WRITE (I02,80000) IVTNUM 02290253
233: IF (ICZERO) 10040, 0051, 20040 02300253
234: 10040 IVPASS = IVPASS + 1 02310253
235: WRITE (I02,80002) IVTNUM 02320253
236: GO TO 0051 02330253
237: 20040 IVFAIL = IVFAIL + 1 02340253
238: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 02350253
239: 0051 CONTINUE 02360253
240: C 02370253
241: C 02380253
242: C THE NEXT FOUR TESTS ARE FOR A BLOCK IF STRUCTURE OF LEVEL 02390253
243: C TWO IN THE INNERMOST IF-BLOCK. THIS STRUCTURE IS SHOWN BELOW - 02400253
244: C 02410253
245: C IF ( E1 ) THEN 02420253
246: C IF-BLOCK 1 02430253
247: C IF ( E2 ) THEN 02440253
248: C IF-BLOCK 2 02450253
249: C END IF 02460253
250: C END IF 02470253
251: C TESTS WILL USE THE FOUR COMBINATIONS OF TRUE AND FALSE FOR E1 AND 02480253
252: C E2 RESPECTIVELY TO TEST THE TRANSFER OF CONTROL AS DESCRIBED 02490253
253: C IN SECTION 11.6.3. 02500253
254: C 02510253
255: C 02520253
256: C 02530253
257: C **** FCVS PROGRAM 253 - TEST 005 **** 02540253
258: C 02550253
259: C TEST 005 USES A FALSE VALUE FOR E1 AND A FALSE VALUE FOR E2. 02560253
260: C CONTROL SHOULD BE TRANSFERRED TO THE END IF STATEMENT OF LEVEL 1 02570253
261: C WHICH MEANS IF-BLOCK 1 AND IF-BLOCK 2 SHOULD NOT BE EXECUTED. 02580253
262: C 02590253
263: C 02600253
264: IVTNUM = 5 02610253
265: IF (ICZERO) 30050, 0050, 30050 02620253
266: 0050 CONTINUE 02630253
267: IVCOMP = 1 02640253
268: LADN11(2) = .FALSE. 02650253
269: IF ( 76 .LT. 3 ) THEN 02660253
270: IVCOMP = IVCOMP * 2 02670253
271: IF ( ( LADN11(2) ) ) THEN 02680253
272: IVCOMP = IVCOMP * 3 02690253
273: END IF 02700253
274: END IF 02710253
275: IVCORR = 1 02720253
276: 40051 IF ( IVCOMP - 1 ) 20050, 10050, 20050 02730253
277: 30050 IVDELE = IVDELE + 1 02740253
278: WRITE (I02,80000) IVTNUM 02750253
279: IF (ICZERO) 10050, 0061, 20050 02760253
280: 10050 IVPASS = IVPASS + 1 02770253
281: WRITE (I02,80002) IVTNUM 02780253
282: GO TO 0061 02790253
283: 20050 IVFAIL = IVFAIL + 1 02800253
284: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 02810253
285: 0061 CONTINUE 02820253
286: C 02830253
287: C **** FCVS PROGRAM 253 - TEST 006 **** 02840253
288: C 02850253
289: C TEST 006 USES A FALSE VALUE FOR E1 AND A TRUE VALUE FOR E2. 02860253
290: C CONTROL SHOULD BE TRANSFERRED TO THE END IF STATEMENT OF LEVEL 1 02870253
291: C WHICH MEANS IF-BLOCK 1 AND IF-BLOCK 2 SHOULD NOT BE EXECUTED. 02880253
292: C 02890253
293: C 02900253
294: IVTNUM = 6 02910253
295: IF (ICZERO) 30060, 0060, 30060 02920253
296: 0060 CONTINUE 02930253
297: IVCOMP = 1 02940253
298: IVON03 = 32767 02950253
299: LVTN01 = .TRUE. 02960253
300: LVON01 = .TRUE. 02970253
301: IF ( .NOT. LVTN01 ) THEN 02980253
302: IVCOMP = IVCOMP * 2 02990253
303: IF ( LVON01 .AND. IVON03 .GE. 587 ) THEN 03000253
304: IVCOMP = IVCOMP * 3 03010253
305: END IF 03020253
306: END IF 03030253
307: IVCORR = 1 03040253
308: 40061 IF ( IVCOMP - 1 ) 20060, 10060, 20060 03050253
309: 30060 IVDELE = IVDELE + 1 03060253
310: WRITE (I02,80000) IVTNUM 03070253
311: IF (ICZERO) 10060, 0071, 20060 03080253
312: 10060 IVPASS = IVPASS + 1 03090253
313: WRITE (I02,80002) IVTNUM 03100253
314: GO TO 0071 03110253
315: 20060 IVFAIL = IVFAIL + 1 03120253
316: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 03130253
317: 0071 CONTINUE 03140253
318: C 03150253
319: C **** FCVS PROGRAM 253 - TEST 007 **** 03160253
320: C 03170253
321: C TEST 007 USES A TRUE VALUE FOR E1 AND A FALSE VALUE FOR E2. 03180253
322: C IF-BLOCK 1 SHOULD BE EXECUTED, BUT IF-BLOCK 2 SHOULD NOT BE 03190253
323: C EXECUTED. 03200253
324: C 03210253
325: C IF-BLOCK 1 ALSO CONTAINS AN UNCONDITIONAL GO TO AND A CONTINUE 03220253
326: C STATEMENT WHICH SHOULD BOTH BE EXECUTED. 03230253
327: C 03240253
328: C 03250253
329: IVTNUM = 7 03260253
330: IF (ICZERO) 30070, 0070, 30070 03270253
331: 0070 CONTINUE 03280253
332: IVCOMP = 1 03290253
333: IVON03 = 587 03300253
334: IVON04 = 3 03310253
335: LATN11(1) = .TRUE. 03320253
336: LATN11(2) = .FALSE. 03330253
337: IF ( (LATN11(1)) .OR. ((7 * IVON04) .EQ. 21) ) THEN 03340253
338: IVCOMP = IVCOMP * 2 03350253
339: GO TO 0072 03360253
340: 0072 CONTINUE 03370253
341: IF ( 7 .GT. IVON03 .OR. LATN11(2) ) THEN 03380253
342: IVCOMP = IVCOMP * 3 03390253
343: END IF 03400253
344: END IF 03410253
345: C 03420253
346: C **** IVCOMP IS DETERMINED BY IVCOMP = 2 = 1 * 2 **** 03430253
347: C 03440253
348: IVCORR = 2 03450253
349: 40070 IF ( IVCOMP - 2 ) 20070, 10070, 20070 03460253
350: 30070 IVDELE = IVDELE + 1 03470253
351: WRITE (I02,80000) IVTNUM 03480253
352: IF (ICZERO) 10070, 0081, 20070 03490253
353: 10070 IVPASS = IVPASS + 1 03500253
354: WRITE (I02,80002) IVTNUM 03510253
355: GO TO 0081 03520253
356: 20070 IVFAIL = IVFAIL + 1 03530253
357: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 03540253
358: 0081 CONTINUE 03550253
359: C 03560253
360: C **** FCVS PROGRAM 253 - TEST 008 **** 03570253
361: C 03580253
362: C TEST 008 USES A TRUE VALUE FOR E1 AND A TRUE VALUE FOR E2. 03590253
363: C BOTH IF-BLOCK 1 AND IF-BLOCK 2 SHOULD BE EXECUTED. 03600253
364: C 03610253
365: C IF-BLOCK 1 CONTAINS AN ASSIGN STATEMENT PLUS AN ASSIGNED GO TO 03620253
366: C STATEMENT WHICH SHOULD BOTH BE EXECUTED. 03630253
367: C 03640253
368: C 03650253
369: IVTNUM = 8 03660253
370: IF (ICZERO) 30080, 0080, 30080 03670253
371: 0080 CONTINUE 03680253
372: IVCOMP = 1 03690253
373: IVON04 = 4 03700253
374: IVON05 = 2 03710253
375: LVON01 = .FALSE. 03720253
376: LVTN01 = LVON01 03730253
377: C 03740253
378: IF ( IVON04 - 1 .LE. 6 .AND. 7 .GE. 5 / IVON05 ) THEN 03750253
379: IVCOMP = IVCOMP * 2 03760253
380: ASSIGN 0083 TO I 03770253
381: GO TO 0084 03780253
382: 0082 IVCOMP = IVCOMP * 3 03790253
383: GO TO 0085 03800253
384: 0083 IVCOMP = IVCOMP * 5 03810253
385: GO TO 0085 03820253
386: 0084 GO TO I, ( 0082, 0083 ) 03830253
387: 0085 IF ( .NOT. ( LVTN01 ) ) THEN 03840253
388: IVCOMP = IVCOMP * 7 03850253
389: END IF 03860253
390: END IF 03870253
391: C 03880253
392: C **** IVCOMP IS DETERMINED BY IVCOMP = 70 = 1 * 2 * 5 * 7 ****03890253
393: C 03900253
394: IVCORR = 70 03910253
395: 40080 IF ( IVCOMP - 70 ) 20080, 10080, 20080 03920253
396: 30080 IVDELE = IVDELE + 1 03930253
397: WRITE (I02,80000) IVTNUM 03940253
398: IF (ICZERO) 10080, 0091, 20080 03950253
399: 10080 IVPASS = IVPASS + 1 03960253
400: WRITE (I02,80002) IVTNUM 03970253
401: GO TO 0091 03980253
402: 20080 IVFAIL = IVFAIL + 1 03990253
403: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 04000253
404: 0091 CONTINUE 04010253
405: C 04020253
406: C THE NEXT FIVE TESTS ARE FOR A BLOCK IF STRUCTURE OF LEVEL 04030253
407: C THREE IN THE INNERMOST IF-BLOCK. THIS STRUCTURE IS SHOWN BELOW - 04040253
408: C 04050253
409: C IF ( E1 ) THEN 04060253
410: C IF-BLOCK 1 04070253
411: C IF ( E2 ) THEN 04080253
412: C IF-BLOCK 2 04090253
413: C IF ( E3 ) THEN 04100253
414: C IF-BLOCK 3 04110253
415: C END IF 04120253
416: C END IF 04130253
417: C END IF 04140253
418: C 04150253
419: C THE FIVE TESTS WILL USE THE FOLLOWING COMBINATIONS OF TRUE AND 04160253
420: C FALSE FOR E1, E2, AND E3 AS SHOWN BELOW - 04170253
421: C TEST NUMBER 9 10 11 12 13 04180253
422: C E1 T T T T F 04190253
423: C E2 T T F F T 04200253
424: C E3 T F T F T 04210253
425: C 04220253
426: C CONTROL SHOULD BE AS DESCRIBED IN SECTION 11.6.3. 04230253
427: C 04240253
428: C 04250253
429: C 04260253
430: C **** FCVS PROGRAM 253 - TEST 009 **** 04270253
431: C 04280253
432: C TEST 009 HAS E1, E2, AND E3 AS TRUE. IF-BLOCK 1, 2, AND 3 04290253
433: C SHOULD BE EXECUTED. IF-BLOCK 1 HAS A COMPUTED GO TO STATEMENT 04300253
434: C WHICH SHOULD BE EXECUTED. 04310253
435: C 04320253
436: C 04330253
437: IVTNUM = 9 04340253
438: IF (ICZERO) 30090, 0090, 30090 04350253
439: 0090 CONTINUE 04360253
440: IVCOMP = 1 04370253
441: IVON01 = 4 04380253
442: IVON02 = 3 04390253
443: C 04400253
444: IF ( .NOT. IVON01 .EQ. 3 .OR. .NOT. IVON02 .EQ. 4 ) THEN 04410253
445: IVCOMP = IVCOMP * 2 04420253
446: J = 2 04430253
447: GO TO 0095 04440253
448: 0092 IVCOMP = IVCOMP * 3 04450253
449: GO TO 0096 04460253
450: 0093 IVCOMP = IVCOMP * 5 04470253
451: GO TO 0096 04480253
452: 0094 IVCOMP = IVCOMP * 7 04490253
453: GO TO 0096 04500253
454: 0095 GO TO ( 0092, 0093, 0094 ), J 04510253
455: 0096 IF ( IVON01 .EQ. 4 .AND. IVON02 .NE. 2 ) THEN 04520253
456: IVCOMP = IVCOMP * 11 04530253
457: IF ( IVON01 .EQ. 4 .AND. .NOT. IVON02 .EQ. 2 ) THEN 04540253
458: IVCOMP = IVCOMP * 13 04550253
459: END IF 04560253
460: END IF 04570253
461: END IF 04580253
462: C 04590253
463: C **** IVCOMP IS DETERMINED BY IVCOMP = 1430 = 1*2*5*11*13 ****04600253
464: C 04610253
465: IVCORR = 1430 04620253
466: 40090 IF ( IVCOMP - 1430 ) 20090, 10090, 20090 04630253
467: 30090 IVDELE = IVDELE + 1 04640253
468: WRITE (I02,80000) IVTNUM 04650253
469: IF (ICZERO) 10090, 0101, 20090 04660253
470: 10090 IVPASS = IVPASS + 1 04670253
471: WRITE (I02,80002) IVTNUM 04680253
472: GO TO 0101 04690253
473: 20090 IVFAIL = IVFAIL + 1 04700253
474: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 04710253
475: 0101 CONTINUE 04720253
476: C 04730253
477: C **** FCVS PROGRAM 253 - TEST 010 **** 04740253
478: C 04750253
479: C 04760253
480: C TEST 010 HAS E1 AND E2 AS TRUE. E3 IS FALSE. IF-BLOCK 1 HAS 04770253
481: C A LOGICAL IF STATEMENT WHICH SHOULD BE EXECUTED BY TAKING THE 04780253
482: C TRUE PATH. IF-BLOCK 2 HAS AN ARITHMETIC IF STATEMENT WITH THE 04790253
483: C VALUE INSIDE THE PARENTHESIS EQUAL TO ZERO. IF-BLOCK 3 SHOULD NOT04800253
484: C BE EXECUTED. 04810253
485: C 04820253
486: C 04830253
487: IVTNUM = 10 04840253
488: IF (ICZERO) 30100, 0100, 30100 04850253
489: 0100 CONTINUE 04860253
490: IVCOMP = 1 04870253
491: IVON01 = +3 04880253
492: LVON01 = .FALSE. 04890253
493: C 04900253
494: IF ( .NOT. LVON01 .AND. .TRUE. .OR. .TRUE. .AND. .NOT. LVON01 ) 04910253
495: 1THEN 04920253
496: IVCOMP = IVCOMP * 2 04930253
497: IF ( 3 .LE. IVON01 ) IVCOMP = IVCOMP * 3 04940253
498: IF ( .NOT.(LVON01.AND..TRUE.).OR.(.TRUE..AND..NOT.LVON01) ) 04950253
499: 1 THEN 04960253
500: IF ( 3 - IVON01 ) 0103, 0102, 0103 04970253
501: 0102 IVCOMP = IVCOMP * 5 04980253
502: GO TO 0104 04990253
503: 0103 IVCOMP = IVCOMP * 7 05000253
504: 0104 CONTINUE 05010253
505: IF ( .NOT.(.NOT.(LVON01.AND..TRUE.)).OR..FALSE..AND. 05020253
506: 1 .NOT.LVON01 ) THEN 05030253
507: IVCOMP = IVCOMP * 11 05040253
508: END IF 05050253
509: END IF 05060253
510: END IF 05070253
511: C 05080253
512: C **** IVCOMP IS DETERMINED BY IVCOMP = 30 = 1 * 2 * 3 * 5 ****05090253
513: C 05100253
514: IVCORR = 30 05110253
515: 40100 IF ( IVCOMP - 30 ) 20100, 10100, 20100 05120253
516: 30100 IVDELE = IVDELE + 1 05130253
517: WRITE (I02,80000) IVTNUM 05140253
518: IF (ICZERO) 10100, 0111, 20100 05150253
519: 10100 IVPASS = IVPASS + 1 05160253
520: WRITE (I02,80002) IVTNUM 05170253
521: GO TO 0111 05180253
522: 20100 IVFAIL = IVFAIL + 1 05190253
523: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 05200253
524: 0111 CONTINUE 05210253
525: C 05220253
526: C **** FCVS PROGRAM 253 - TEST 011 **** 05230253
527: C 05240253
528: C 05250253
529: C TEST 011 HAS E1 AND E3 AS TRUE. E2 IS FALSE. ONLY IF-BLOCK 1 05260253
530: C SHOULD BE EXECUTED. THIS SET OF BLOCK IF STATEMENTS HAS INTEGER 05270253
531: C ASSIGNMENT STATEMENTS BETWEEN THE END IF STATEMENTS. A CHECK IS 05280253
532: C MADE TO DETERMINE IF THESE STATEMENTS HAVE BEEN EXECUTED. 05290253
533: C 05300253
534: C 05310253
535: IVTNUM = 11 05320253
536: IF (ICZERO) 30110, 0110, 30110 05330253
537: 0110 CONTINUE 05340253
538: IVCOMP = 1 05350253
539: LVON01 = .TRUE. 05360253
540: LVON02 = .FALSE. 05370253
541: LVON03 = .TRUE. 05380253
542: C 05390253
543: IF ( LVON01 ) THEN 05400253
544: IVCOMP = IVCOMP * 2 05410253
545: IF ( LVON02 ) THEN 05420253
546: IVCOMP = IVCOMP * 3 05430253
547: IF ( LVON03 ) THEN 05440253
548: IVCOMP = IVCOMP * 5 05450253
549: END IF 05460253
550: IVCOMP = IVCOMP * 7 05470253
551: END IF 05480253
552: IVCOMP = IVCOMP * 11 05490253
553: END IF 05500253
554: IVCOMP = IVCOMP * 13 05510253
555: C 05520253
556: C **** IVCOMP IS DETERMINED BY IVCOMP = 286 = 1*2*11*13 ****05530253
557: C 05540253
558: IVCORR = 286 05550253
559: 40110 IF ( IVCOMP - 286 ) 20110, 10110, 20110 05560253
560: 30110 IVDELE = IVDELE + 1 05570253
561: WRITE (I02,80000) IVTNUM 05580253
562: IF (ICZERO) 10110, 0121, 20110 05590253
563: 10110 IVPASS = IVPASS + 1 05600253
564: WRITE (I02,80002) IVTNUM 05610253
565: GO TO 0121 05620253
566: 20110 IVFAIL = IVFAIL + 1 05630253
567: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 05640253
568: 0121 CONTINUE 05650253
569: C 05660253
570: C **** FCVS PROGRAM 253 - TEST 012 **** 05670253
571: C 05680253
572: C 05690253
573: C TEST 012 HAS E1 AS TRUE. E2 AND E3 ARE FALSE. ONLY IF-BLOCK 105700253
574: C SHOULD BE EXECUTED. INTEGER ASSIGNMENT STATEMENTS ARE USED TO 05710253
575: C DETERMINE THE FLOW OF LOGIC THROUGH THE BLOCK IF STRUCTURE. 05720253
576: C 05730253
577: C 05740253
578: IVTNUM = 12 05750253
579: IF (ICZERO) 30120, 0120, 30120 05760253
580: 0120 CONTINUE 05770253
581: IVCOMP = 1 05780253
582: LVON01 = .TRUE. 05790253
583: LVON02 = .FALSE. 05800253
584: LVON03 = .FALSE. 05810253
585: C 05820253
586: IF ( LVON01 ) THEN 05830253
587: IVCOMP = IVCOMP * 2 05840253
588: IF ( LVON02 ) THEN 05850253
589: IVCOMP = IVCOMP * 3 05860253
590: IF ( LVON03 ) THEN 05870253
591: IVCOMP = IVCOMP * 5 05880253
592: END IF 05890253
593: IVCOMP = IVCOMP * 7 05900253
594: END IF 05910253
595: IVCOMP = IVCOMP * 11 05920253
596: END IF 05930253
597: IVCOMP = IVCOMP * 13 05940253
598: C 05950253
599: C **** IVCOMP IS DETERMINED BY IVCOMP = 286 = 1*2*11*13 ****05960253
600: C 05970253
601: IVCORR = 286 05980253
602: 40120 IF ( IVCOMP - 286 ) 20120, 10120, 20120 05990253
603: 30120 IVDELE = IVDELE + 1 06000253
604: WRITE (I02,80000) IVTNUM 06010253
605: IF (ICZERO) 10120, 0131, 20120 06020253
606: 10120 IVPASS = IVPASS + 1 06030253
607: WRITE (I02,80002) IVTNUM 06040253
608: GO TO 0131 06050253
609: 20120 IVFAIL = IVFAIL + 1 06060253
610: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 06070253
611: 0131 CONTINUE 06080253
612: C 06090253
613: C **** FCVS PROGRAM 253 - TEST 013 **** 06100253
614: C 06110253
615: C 06120253
616: C TEST 013 HAS E1 FALSE. E2 AND E3 ARE TRUE. NONE OF THE IF- 06130253
617: C BLOCKS SHOULD BE EXECUTED. INTEGER ASSIGNMENT STATEMENTS ARE 06140253
618: C USED TO TRACE THE FLOW OF LOGIC THROUGH THE BLOCK IF STRUCTURE. 06150253
619: C 06160253
620: C 06170253
621: IVTNUM = 13 06180253
622: IF (ICZERO) 30130, 0130, 30130 06190253
623: 0130 CONTINUE 06200253
624: IVCOMP = 1 06210253
625: LVON01 = .FALSE. 06220253
626: LVON02 = .TRUE. 06230253
627: LVON03 = .TRUE. 06240253
628: C 06250253
629: IF ( LVON01 ) THEN 06260253
630: IVCOMP = IVCOMP * 2 06270253
631: IF ( LVON02 ) THEN 06280253
632: IVCOMP = IVCOMP * 3 06290253
633: IF ( LVON03 ) THEN 06300253
634: IVCOMP = IVCOMP * 5 06310253
635: END IF 06320253
636: IVCOMP = IVCOMP * 7 06330253
637: END IF 06340253
638: IVCOMP = IVCOMP * 11 06350253
639: END IF 06360253
640: IVCOMP = IVCOMP * 13 06370253
641: C 06380253
642: C **** IVCOMP IS DETERMINED BY IVCOMP = 13 = 1 * 13 ****06390253
643: C 06400253
644: IVCORR = 13 06410253
645: 40130 IF ( IVCOMP - 13 ) 20130, 10130, 20130 06420253
646: 30130 IVDELE = IVDELE + 1 06430253
647: WRITE (I02,80000) IVTNUM 06440253
648: IF (ICZERO) 10130, 0141, 20130 06450253
649: 10130 IVPASS = IVPASS + 1 06460253
650: WRITE (I02,80002) IVTNUM 06470253
651: GO TO 0141 06480253
652: 20130 IVFAIL = IVFAIL + 1 06490253
653: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 06500253
654: 0141 CONTINUE 06510253
655: C 06520253
656: C **** FCVS PROGRAM 253 - TEST 014 **** 06530253
657: C 06540253
658: C TEST 014 IS TO CHECK FOR PROPER TRANSFER OF CONTROL USING 06550253
659: C LOGICAL IF STATEMENTS WITHIN IF-BLOCKS AND BRANCHING TO THE 06560253
660: C OUTERMOST IF-LEVEL FROM THE INNERMOST IF-LEVEL IN A CONTROLLED 06570253
661: C LOOP. THE INNERMOST IF-LEVEL SHOULD BE EXECUTED 10 TIMES. A 06580253
662: C LOGICAL IF STATEMENT IS USED IN EACH OF THE IF-LEVELS IN CASE 06590253
663: C THE EXECUTION LOGIC BRANCHES INCORRECTLY. THIS SHOULD PREVENT 06600253
664: C AN INFINITE LOOP DURING THE EXECUTION OF THIS ROUTINE. 06610253
665: C 06620253
666: C 06630253
667: IVTNUM = 14 06640253
668: IF (ICZERO) 30140, 0140, 30140 06650253
669: 0140 CONTINUE 06660253
670: IVCOMP = 0 06670253
671: IVON01 = 0 06680253
672: IVON02 = 0 06690253
673: IVON03 = 0 06700253
674: 0142 IF ( IVON03 .LT. 10 ) THEN 06710253
675: IVON01 = IVON01 + 1 06720253
676: IF ( IVON01 .GT. 11 ) GO TO 0143 06730253
677: IF ( IVON03 .LT. 10 ) THEN 06740253
678: IVON02 = IVON02 + 1 06750253
679: IF ( IVON02 .GT. 11 ) GO TO 0143 06760253
680: IF ( IVON03 .LT. 10 ) THEN 06770253
681: IVON03 = IVON03 + 1 06780253
682: IF ( IVON03 .GT. 11 ) GO TO 0143 06790253
683: IF ( IVON03 .LE. 10 ) GO TO 0142 06800253
684: END IF 06810253
685: END IF 06820253
686: END IF 06830253
687: 0143 CONTINUE 06840253
688: IVCOMP = IVON01 06850253
689: IVCORR = 10 06860253
690: 40140 IF ( IVCOMP - 10 ) 20140, 10140, 20140 06870253
691: 30140 IVDELE = IVDELE + 1 06880253
692: WRITE (I02,80000) IVTNUM 06890253
693: IF (ICZERO) 10140, 0151, 20140 06900253
694: 10140 IVPASS = IVPASS + 1 06910253
695: WRITE (I02,80002) IVTNUM 06920253
696: GO TO 0151 06930253
697: 20140 IVFAIL = IVFAIL + 1 06940253
698: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 06950253
699: 0151 CONTINUE 06960253
700: C 06970253
701: C THE NEXT TWO TESTS ARE TO CHECK THE COUNTERS IN IF-LEVEL 2 AND 06980253
702: C IF-LEVEL 3 RESPECTIVELY IN THE PREVIOUS TEST. 06990253
703: C 07000253
704: C 07010253
705: C 07020253
706: C **** FCVS PROGRAM 253 - TEST 015 **** 07030253
707: C 07040253
708: C TEST 015 CHECKS THAT THE INTEGER COUNTER IN IF-LEVEL 2 IN THE 07050253
709: C PREVIOUS TEST IS EQUAL TO TEN (10). 07060253
710: C 07070253
711: C 07080253
712: IVTNUM = 15 07090253
713: IF (ICZERO) 30150, 0150, 30150 07100253
714: 0150 CONTINUE 07110253
715: IVCOMP = IVON02 07120253
716: IVCORR = 10 07130253
717: 40150 IF ( IVCOMP - 10 ) 20150, 10150, 20150 07140253
718: 30150 IVDELE = IVDELE + 1 07150253
719: WRITE (I02,80000) IVTNUM 07160253
720: IF (ICZERO) 10150, 0161, 20150 07170253
721: 10150 IVPASS = IVPASS + 1 07180253
722: WRITE (I02,80002) IVTNUM 07190253
723: GO TO 0161 07200253
724: 20150 IVFAIL = IVFAIL + 1 07210253
725: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 07220253
726: 0161 CONTINUE 07230253
727: C 07240253
728: C **** FCVS PROGRAM 253 - TEST 016 **** 07250253
729: C 07260253
730: C TEST 016 CHECKS THAT THE INTEGER COUNTER IN IF-LEVEL 3 IN THE 07270253
731: C PREVIOUS TEST IS EQUAL TO TEN (10). 07280253
732: C 07290253
733: C 07300253
734: IVTNUM = 16 07310253
735: IF (ICZERO) 30160, 0160, 30160 07320253
736: 0160 CONTINUE 07330253
737: IVCOMP = IVON03 07340253
738: IVCORR = 10 07350253
739: 40160 IF ( IVCOMP - 10 ) 20160, 10160, 20160 07360253
740: 30160 IVDELE = IVDELE + 1 07370253
741: WRITE (I02,80000) IVTNUM 07380253
742: IF (ICZERO) 10160, 0171, 20160 07390253
743: 10160 IVPASS = IVPASS + 1 07400253
744: WRITE (I02,80002) IVTNUM 07410253
745: GO TO 0171 07420253
746: 20160 IVFAIL = IVFAIL + 1 07430253
747: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 07440253
748: 0171 CONTINUE 07450253
749: C 07460253
750: C THE NEXT THREE TESTS ARE SIMILAR TO THE PREVIOUS THREE TESTS 07470253
751: C IN THAT THEY TEST THE TRANSFER OF CONTROL WITHIN A THREE LEVEL 07480253
752: C BLOCK IF STRUCTURE. EACH OF THE IF-LEVELS ARE EXECUTED AS IF THEY07490253
753: C WERE A LOOP USING LOGICAL IF STATEMENTS WITHIN EACH IF-LEVEL. 07500253
754: C 07510253
755: C 07520253
756: C 07530253
757: C **** FCVS PROGRAM 253 - TEST 017 **** 07540253
758: C 07550253
759: C TEST 017 CHECKS THAT THE VALUE OF THE INTEGER COUNTER IVON04 IN07560253
760: C IF-LEVEL 1 IN THIS TEST EQUALS 10. 07570253
761: C 07580253
762: C 07590253
763: IVTNUM = 17 07600253
764: IF (ICZERO) 30170, 0170, 30170 07610253
765: 0170 CONTINUE 07620253
766: IVCOMP = 0 07630253
767: IVON01 = 0 07640253
768: IVON02 = 0 07650253
769: IVON03 = 0 07660253
770: IVON04 = 0 07670253
771: IVON05 = 0 07680253
772: IVON06 = 0 07690253
773: C 07700253
774: 0172 IF ( IVON01 .LT. 10 ) THEN 07710253
775: IVON01 = IVON01 + 1 07720253
776: IVON04 = IVON04 + 1 07730253
777: IF ( IVON01 .GT. 11 ) GO TO 0175 07740253
778: 0173 IF ( IVON02 .LT. 10 ) THEN 07750253
779: IVON02 = IVON02 + 1 07760253
780: IVON05 = IVON05 + 1 07770253
781: IF ( IVON02 .GT. 11 ) GO TO 0175 07780253
782: 0174 IF ( IVON03 .LT. 10 ) THEN 07790253
783: IVON03 = IVON03 + 1 07800253
784: IVON06 = IVON06 + 1 07810253
785: IF ( IVON03 .GT. 11 ) GO TO 0175 07820253
786: IF ( IVON03 .LE. 10 ) GO TO 0174 07830253
787: END IF 07840253
788: IVON03 = 0 07850253
789: IF ( IVON02 .LE. 10 ) GO TO 0173 07860253
790: END IF 07870253
791: IVON02 = 0 07880253
792: IF ( IVON01 .LE. 10 ) GO TO 0172 07890253
793: END IF 07900253
794: 0175 CONTINUE 07910253
795: IVCOMP = IVON04 07920253
796: IVCORR = 10 07930253
797: 40170 IF ( IVCOMP - 10 ) 20170, 10170, 20170 07940253
798: 30170 IVDELE = IVDELE + 1 07950253
799: WRITE (I02,80000) IVTNUM 07960253
800: IF (ICZERO) 10170, 0181, 20170 07970253
801: 10170 IVPASS = IVPASS + 1 07980253
802: WRITE (I02,80002) IVTNUM 07990253
803: GO TO 0181 08000253
804: 20170 IVFAIL = IVFAIL + 1 08010253
805: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 08020253
806: 0181 CONTINUE 08030253
807: C 08040253
808: C **** FCVS PROGRAM 253 - TEST 018 **** 08050253
809: C 08060253
810: C TEST 018 CHECKS THAT THE VALUE OF THE INTEGER COUNTER IVON05 IN08070253
811: C IF-LEVEL 2 OF THE PREVIOUS TEST EQUALS 100. 08080253
812: C 08090253
813: C 08100253
814: IVTNUM = 18 08110253
815: IF (ICZERO) 30180, 0180, 30180 08120253
816: 0180 CONTINUE 08130253
817: IVCOMP = IVON05 08140253
818: IVCORR = 100 08150253
819: 40180 IF ( IVCOMP - 100 ) 20180, 10180, 20180 08160253
820: 30180 IVDELE = IVDELE + 1 08170253
821: WRITE (I02,80000) IVTNUM 08180253
822: IF (ICZERO) 10180, 0191, 20180 08190253
823: 10180 IVPASS = IVPASS + 1 08200253
824: WRITE (I02,80002) IVTNUM 08210253
825: GO TO 0191 08220253
826: 20180 IVFAIL = IVFAIL + 1 08230253
827: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 08240253
828: 0191 CONTINUE 08250253
829: C 08260253
830: C **** FCVS PROGRAM 253 - TEST 019 **** 08270253
831: C 08280253
832: C TEST 019 CHECKS THAT THE VALUE OF THE INTEGER COUNTER IVON06 IN08290253
833: C IF-LEVEL 3 OF THE PREVIOUS TEST EQUALS 1000. 08300253
834: C 08310253
835: C 08320253
836: IVTNUM = 19 08330253
837: IF (ICZERO) 30190, 0190, 30190 08340253
838: 0190 CONTINUE 08350253
839: IVCOMP = IVON06 08360253
840: IVCORR = 1000 08370253
841: 40190 IF ( IVCOMP - 1000 ) 20190, 10190, 20190 08380253
842: 30190 IVDELE = IVDELE + 1 08390253
843: WRITE (I02,80000) IVTNUM 08400253
844: IF (ICZERO) 10190, 0201, 20190 08410253
845: 10190 IVPASS = IVPASS + 1 08420253
846: WRITE (I02,80002) IVTNUM 08430253
847: GO TO 0201 08440253
848: 20190 IVFAIL = IVFAIL + 1 08450253
849: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 08460253
850: 0201 CONTINUE 08470253
851: C 08480253
852: C **** FCVS PROGRAM 253 - TEST 020 **** 08490253
853: C 08500253
854: C TEST 020 USES A LOGICAL STATEMENT FUNCTION LFIS01(L) AS 08510253
855: C THE LOGICAL EXPRESSION IN A BLOCK IF STRUCTURE. THE LOGICAL 08520253
856: C STATEMENT FUNCTION TAKES THE LOGICAL COMPLEMENT OF THE LOGICAL 08530253
857: C VALUE SUPPLIED. THE VALUE OF .FALSE. IS SUPPLIED AND THE LOGICAL 08540253
858: C VALUE OF .TRUE. SHOULD BE RETURNED AS THE LOGICAL FUNCTION 08550253
859: C REFERENCE. THE IF-BLOCK OF LEVEL ONE SHOULD BE EXECUTED. 08560253
860: C 08570253
861: C 08580253
862: IVTNUM = 20 08590253
863: IF (ICZERO) 30200, 0200, 30200 08600253
864: 0200 CONTINUE 08610253
865: IVCOMP = 0 08620253
866: LVON01 = .FALSE. 08630253
867: IF ( LFIS01( LVON01 ) ) THEN 08640253
868: IVCOMP = 1 08650253
869: END IF 08660253
870: IVCORR = 1 08670253
871: 40200 IF ( IVCOMP - 1 ) 20200, 10200, 20200 08680253
872: 30200 IVDELE = IVDELE + 1 08690253
873: WRITE (I02,80000) IVTNUM 08700253
874: IF (ICZERO) 10200, 0211, 20200 08710253
875: 10200 IVPASS = IVPASS + 1 08720253
876: WRITE (I02,80002) IVTNUM 08730253
877: GO TO 0211 08740253
878: 20200 IVFAIL = IVFAIL + 1 08750253
879: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 08760253
880: 0211 CONTINUE 08770253
881: C 08780253
882: C 08790253
883: C THE FOLLOWING SERIES OF TESTS ARE TO CHECK THE PRECEDENCE OF 08800253
884: C OPERATORS. THESE INCLUDE ARITHMETIC, RELATIONAL, AND LOGICAL 08810253
885: C OPERATORS. ARITHMETIC OPERATORS ARE CHECKED FIRST FROM THE 08820253
886: C EVALUATION OF CERTAIN ARITHMETIC EXPRESSIONS THAT USE ONLY INTEGER08830253
887: C VALUES IN THE COMPUTATIONS. ALL INTERMEDIATE AND FINAL VALUES ARE08840253
888: C LESS THAN 32767. AFTER EACH OF THE STATEMENTS IS TESTED BY ITSELF08850253
889: C THEN THE RELATIONAL OPERATORS ARE TESTED USING THE INTEGER VALUES 08860253
890: C OBTAINED IN EACH OF THE ARITHMETIC EXPRESSIONS. IN THIS TEST THE 08870253
891: C RELATIONAL EXPRESSIONS ARE COMBINED WITH LOGICAL OPERATORS TO 08880253
892: C PRODUCE A LOGICAL EXPRESSION. FINALLY THE ENTIRE SET OF SIX (6) 08890253
893: C ARITHMETIC , RELATIONAL, AND LOGICAL EXPRESSIONS IS COMBINED INTO 08900253
894: C ONE LOGICAL IF STATEMENT. 08910253
895: C 08920253
896: C 08930253
897: C 08940253
898: C **** FCVS PROGRAM 253 - TEST 021 **** 08950253
899: C 08960253
900: C TEST 021 CHECKS THE ORDER OF EVALUATION WHEN AN ARITHMETIC 08970253
901: C EXPRESSION HAS PARENTHESES AND A SERIES OF EXPONENTIATION. THE 08980253
902: C ORDER OF EVALUATION IS SHOWN BELOW - 08990253
903: C 09000253
904: C 1 + 2 * ( 4 - 2 ) ** 2 ** 3 - 4 / 2 09010253
905: C 1 + 2 * ( 2 ) ** 2 ** 3 - 4 / 2 09020253
906: C 1 + 2 * 2 ** 8 - 4 / 2 09030253
907: C 1 + 2 * 256 - 4 / 2 09040253
908: C 1 + 512 - 2 09050253
909: C 513 - 2 09060253
910: C 511 09070253
911: C 09080253
912: IVTNUM = 21 09090253
913: IF (ICZERO) 30210, 0210, 30210 09100253
914: 0210 CONTINUE 09110253
915: IVON01 = 1 09120253
916: IVON02 = 2 09130253
917: IVON03 = 4 09140253
918: IVON04 = 2 09150253
919: IVON05 = 4 09160253
920: IVON06 = 2 09170253
921: IVCOMP = IVON01 + IVON02 * ( IVON03 - IVON04 ) ** 2 ** 3 - IVON05 09180253
922: 1 / IVON06 09190253
923: IVCORR = 511 09200253
924: 40210 IF ( IVCOMP - 511 ) 20210, 10210, 20210 09210253
925: 30210 IVDELE = IVDELE + 1 09220253
926: WRITE (I02,80000) IVTNUM 09230253
927: IF (ICZERO) 10210, 0221, 20210 09240253
928: 10210 IVPASS = IVPASS + 1 09250253
929: WRITE (I02,80002) IVTNUM 09260253
930: GO TO 0221 09270253
931: 20210 IVFAIL = IVFAIL + 1 09280253
932: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 09290253
933: 0221 CONTINUE 09300253
934: C 09310253
935: C **** FCVS PROGRAM 253 - TEST 022 **** 09320253
936: C 09330253
937: C TEST 022 IS A SERIES OF DIVISIONS FOLLOWED BY A SERIES OF 09340253
938: C MULTIPLICATIONS ALL WITHOUT ANY PARENTHESES. 09350253
939: C 09360253
940: C 16 / 2 / 2 / 2 * 4 * 8 09370253
941: C 8 / 2 / 2 * 4 * 8 09380253
942: C 4 / 2 * 4 * 8 09390253
943: C 2 * 4 * 8 09400253
944: C 8 * 8 09410253
945: C 64 09420253
946: C 09430253
947: C 09440253
948: IVTNUM = 22 09450253
949: IF (ICZERO) 30220, 0220, 30220 09460253
950: 0220 CONTINUE 09470253
951: IVON07 = 16 09480253
952: IVON08 = 2 09490253
953: IVON09 = 2 09500253
954: IVON10 = 2 09510253
955: IVON11 = 4 09520253
956: IVON12 = 8 09530253
957: IVCOMP = IVON07 / IVON08 / IVON09 / IVON10 * IVON11 * IVON12 09540253
958: IVCORR = 64 09550253
959: 40220 IF ( IVCOMP - 64 ) 20220, 10220, 20220 09560253
960: 30220 IVDELE = IVDELE + 1 09570253
961: WRITE (I02,80000) IVTNUM 09580253
962: IF (ICZERO) 10220, 0231, 20220 09590253
963: 10220 IVPASS = IVPASS + 1 09600253
964: WRITE (I02,80002) IVTNUM 09610253
965: GO TO 0231 09620253
966: 20220 IVFAIL = IVFAIL + 1 09630253
967: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 09640253
968: 0231 CONTINUE 09650253
969: C 09660253
970: C **** FCVS PROGRAM 253 - TEST 023 **** 09670253
971: C 09680253
972: C TEST 023 HAS ONE SUBTRACTION IMBEDDED IN A SERIES OF ADDITIONS 09690253
973: C WITHOUT ANY PARENTHESES. 09700253
974: C 09710253
975: C 3 + 4 - 1 + 5 09720253
976: C 7 - 1 + 5 09730253
977: C 6 + 5 09740253
978: C 11 09750253
979: C 09760253
980: C 09770253
981: IVTNUM = 23 09780253
982: IF (ICZERO) 30230, 0230, 30230 09790253
983: 0230 CONTINUE 09800253
984: IVON13 = 3 09810253
985: IVON14 = 4 09820253
986: IVON15 = 1 09830253
987: IVON16 = 5 09840253
988: IVCOMP = IVON13 + IVON14 - IVON15 + IVON16 09850253
989: IVCORR = 11 09860253
990: 40230 IF ( IVCOMP - 11 ) 20230, 10230, 20230 09870253
991: 30230 IVDELE = IVDELE + 1 09880253
992: WRITE (I02,80000) IVTNUM 09890253
993: IF (ICZERO) 10230, 0241, 20230 09900253
994: 10230 IVPASS = IVPASS + 1 09910253
995: WRITE (I02,80002) IVTNUM 09920253
996: GO TO 0241 09930253
997: 20230 IVFAIL = IVFAIL + 1 09940253
998: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 09950253
999: 0241 CONTINUE 09960253
1000: C 09970253
1001: C **** FCVS PROGRAM 253 - TEST 024 **** 09980253
1002: C 09990253
1003: C TEST 024 HAS ADDITION, SUBTRACTION, MULTIPLICATION, DIVISION, 10000253
1004: C AND EXPONENTIATION WITHOUT PARENTHESES. 10010253
1005: C 10020253
1006: C 4 + 4 - 6 * 3 / 3 ** 2 10030253
1007: C 4 + 4 - 6 * 3 / 9 10040253
1008: C 4 + 4 - 18 / 9 10050253
1009: C 4 + 4 - 2 10060253
1010: C 8 - 2 10070253
1011: C 6 10080253
1012: C 10090253
1013: C 10100253
1014: IVTNUM = 24 10110253
1015: IF (ICZERO) 30240, 0240, 30240 10120253
1016: 0240 CONTINUE 10130253
1017: IVON17 = 4 10140253
1018: IVON18 = 4 10150253
1019: IVON19 = 6 10160253
1020: IVON20 = 3 10170253
1021: IVON21 = 3 10180253
1022: IVON22 = 2 10190253
1023: IVCOMP = IVON17 + IVON18 - IVON19 * IVON20 / IVON21 ** IVON22 10200253
1024: IVCORR = 6 10210253
1025: 40240 IF ( IVCOMP - 6 ) 20240, 10240, 20240 10220253
1026: 30240 IVDELE = IVDELE + 1 10230253
1027: WRITE (I02,80000) IVTNUM 10240253
1028: IF (ICZERO) 10240, 0251, 20240 10250253
1029: 10240 IVPASS = IVPASS + 1 10260253
1030: WRITE (I02,80002) IVTNUM 10270253
1031: GO TO 0251 10280253
1032: 20240 IVFAIL = IVFAIL + 1 10290253
1033: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 10300253
1034: 0251 CONTINUE 10310253
1035: C 10320253
1036: C **** FCVS PROGRAM 253 - TEST 025 **** 10330253
1037: C 10340253
1038: C TEST 025 IS LIKE TEST NUMBER 021 EXCEPT THAT THE PARENTHESES 10350253
1039: C HAVE BEEN REMOVED. THE INTEGER VALUES USED AS INPUT ARE THE SAME.10360253
1040: C REMOVAL OF THE PARENTHESES CHANGES THE ORDER OF EVALUATION SO THE 10370253
1041: C FINAL INTEGER RESULT IS DIFFERENT. 10380253
1042: C 10390253
1043: C 1 + 2 * 4 - 2 ** 2 ** 3 - 4 / 2 10400253
1044: C 1 + 2 * 4 - 2 ** 8 - 4 / 2 10410253
1045: C 1 + 2 * 4 - 256 - 4 / 2 10420253
1046: C 1 + 8 - 256 - 2 10430253
1047: C 9 - 256 - 2 10440253
1048: C -247 - 2 10450253
1049: C -249 10460253
1050: C 10470253
1051: IVTNUM = 25 10480253
1052: IF (ICZERO) 30250, 0250, 30250 10490253
1053: 0250 CONTINUE 10500253
1054: IVON23 = 1 10510253
1055: IVON24 = 2 10520253
1056: IVON25 = 4 10530253
1057: IVON26 = 2 10540253
1058: IVON27 = 4 10550253
1059: IVON28 = 2 10560253
1060: IVCOMP = IVON23 + IVON24 * IVON25 - IVON26 ** 2 ** 3 - IVON27 10570253
1061: 1 / IVON28 10580253
1062: IVCORR = -249 10590253
1063: 40250 IF ( IVCOMP + 249 ) 20250, 10250, 20250 10600253
1064: 30250 IVDELE = IVDELE + 1 10610253
1065: WRITE (I02,80000) IVTNUM 10620253
1066: IF (ICZERO) 10250, 0261, 20250 10630253
1067: 10250 IVPASS = IVPASS + 1 10640253
1068: WRITE (I02,80002) IVTNUM 10650253
1069: GO TO 0261 10660253
1070: 20250 IVFAIL = IVFAIL + 1 10670253
1071: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 10680253
1072: 0261 CONTINUE 10690253
1073: C 10700253
1074: C **** FCVS PROGRAM 253 - TEST 026 **** 10710253
1075: C 10720253
1076: C TEST 026 IS JUST LIKE TEST NUMBER 022 EXCEPT THAT PARENTHESES 10730253
1077: C HAVE BEEN ADDED. ALTHOUGH THE INTEGER VALUES ARE THE SAME, THE 10740253
1078: C PARENTHESES CHANGE THE ORDER OF EVALUATION SO THAT THE FINAL 10750253
1079: C INTEGER RESULT IS DIFFERENT. 10760253
1080: C 10770253
1081: C 16 / ( 2 / 2 ) / 2 * ( 4 * 8 ) 10780253
1082: C 16 / ( 1 ) / 2 * ( 32 ) 10790253
1083: C 16 / 2 * 32 10800253
1084: C 8 * 32 10810253
1085: C 256 10820253
1086: C 10830253
1087: IVTNUM = 26 10840253
1088: IF (ICZERO) 30260, 0260, 30260 10850253
1089: 0260 CONTINUE 10860253
1090: IVON29 = 16 10870253
1091: IVON30 = 2 10880253
1092: IVON31 = 2 10890253
1093: IVON32 = 2 10900253
1094: IVON33 = 4 10910253
1095: IVON34 = 8 10920253
1096: IVCOMP = IVON29 / ( IVON30 / IVON31 ) / IVON32 * ( IVON33 * 10930253
1097: 1 IVON34 ) 10940253
1098: IVCORR = 256 10950253
1099: 40260 IF ( IVCOMP - 256 ) 20260, 10260, 20260 10960253
1100: 30260 IVDELE = IVDELE + 1 10970253
1101: WRITE (I02,80000) IVTNUM 10980253
1102: IF (ICZERO) 10260, 0271, 20260 10990253
1103: 10260 IVPASS = IVPASS + 1 11000253
1104: WRITE (I02,80002) IVTNUM 11010253
1105: GO TO 0271 11020253
1106: 20260 IVFAIL = IVFAIL + 1 11030253
1107: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 11040253
1108: 0271 CONTINUE 11050253
1109: C 11060253
1110: C **** FCVS PROGRAM 253 - TEST 027 **** 11070253
1111: C 11080253
1112: C TEST 027 COMBINES THE INTEGER RESULTS OBTAINED IN THE PREVIOUS 11090253
1113: C SIX TESTS AND USES RELATIONAL AND LOGICAL OPERATORS IN ONE 11100253
1114: C LOGICAL EXPRESSION. RELATIONAL EXPRESSIONS ARE EVALUATED FIRST 11110253
1115: C FOLLOWED BY THE LOGICAL OPERATORS .NOT. , .AND., AND .OR. IN THAT 11120253
1116: C ORDER. 11130253
1117: C 11140253
1118: C 511 .LT. 64 .OR. .NOT. 11 .LE. 6 .AND. -249 .LE. 256 11150253
1119: C F .OR. .NOT. F .AND. T 11160253
1120: C F .OR. T .AND. T 11170253
1121: C F .OR. T 11180253
1122: C T 11190253
1123: C 11200253
1124: C 11210253
1125: IVTNUM = 27 11220253
1126: IF (ICZERO) 30270, 0270, 30270 11230253
1127: 0270 CONTINUE 11240253
1128: IVON35 = 511 11250253
1129: IVON36 = 64 11260253
1130: IVON37 = 11 11270253
1131: IVON38 = 6 11280253
1132: IVON39 = -249 11290253
1133: IVON40 = 256 11300253
1134: IVCOMP = 0 11310253
1135: LVON01 = IVON35 .LT. IVON36 .OR. .NOT. IVON37 .LE. IVON38 .AND. 11320253
1136: 1 IVON39 .LE. IVON40 11330253
1137: IF ( LVON01 ) IVCOMP = 1 11340253
1138: IVCORR = 1 11350253
1139: 40270 IF ( IVCOMP - 1 ) 20270, 10270, 20270 11360253
1140: 30270 IVDELE = IVDELE + 1 11370253
1141: WRITE (I02,80000) IVTNUM 11380253
1142: IF (ICZERO) 10270, 0281, 20270 11390253
1143: 10270 IVPASS = IVPASS + 1 11400253
1144: WRITE (I02,80002) IVTNUM 11410253
1145: GO TO 0281 11420253
1146: 20270 IVFAIL = IVFAIL + 1 11430253
1147: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 11440253
1148: 0281 CONTINUE 11450253
1149: C 11460253
1150: C **** FCVS PROGRAM 253 - TEST 028 **** 11470253
1151: C 11480253
1152: C TEST 028 IS THE BIGGIE. IT COMBINES ALL OF THE INTEGER VALUES 11490253
1153: C AND RESULTS IN THE PREVIOUS SEVEN (7) TESTS. IF THERE WERE ANY 11500253
1154: C ERRORS IN ANY OF THE PREVIOUS SEVEN TESTS, THEN THIS TEST SHOULD 11510253
1155: C ALSO FAIL. 11520253
1156: C 11530253
1157: C 11540253
1158: IVTNUM = 28 11550253
1159: IF (ICZERO) 30280, 0280, 30280 11560253
1160: 0280 CONTINUE 11570253
1161: IVCOMP = 0 11580253
1162: IF ( IVON01 + IVON02 * ( IVON03 - IVON04 ) ** 2 ** 3 - IVON05 / 11590253
1163: 1IVON06 .LT. IVON07 / IVON08 / IVON09 / IVON10 * IVON11 * IVON12 11600253
1164: 2.OR. .NOT. IVON13 + IVON14 - IVON15 + IVON16 .LE. IVON17 + IVON18 11610253
1165: 3- IVON19 * IVON20 / IVON21 ** IVON22 .AND. IVON23 + IVON24 * 11620253
1166: 4IVON25 - IVON26 ** 2 ** 3 - IVON27 / IVON28 .LE. IVON29 / ( IVON3011630253
1167: 5 / IVON31 ) / IVON32 * ( IVON33 * IVON34 ) ) IVCOMP = 1 11640253
1168: IVCORR = 1 11650253
1169: 40280 IF ( IVCOMP - 1 ) 20280, 10280, 20280 11660253
1170: 30280 IVDELE = IVDELE + 1 11670253
1171: WRITE (I02,80000) IVTNUM 11680253
1172: IF (ICZERO) 10280, 0291, 20280 11690253
1173: 10280 IVPASS = IVPASS + 1 11700253
1174: WRITE (I02,80002) IVTNUM 11710253
1175: GO TO 0291 11720253
1176: 20280 IVFAIL = IVFAIL + 1 11730253
1177: WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 11740253
1178: 0291 CONTINUE 11750253
1179: C 11760253
1180: C 11770253
1181: C WRITE OUT TEST SUMMARY 11780253
1182: C 11790253
1183: WRITE (I02,90004) 11800253
1184: WRITE (I02,90014) 11810253
1185: WRITE (I02,90004) 11820253
1186: WRITE (I02,90000) 11830253
1187: WRITE (I02,90004) 11840253
1188: WRITE (I02,90020) IVFAIL 11850253
1189: WRITE (I02,90022) IVPASS 11860253
1190: WRITE (I02,90024) IVDELE 11870253
1191: STOP 11880253
1192: 90001 FORMAT (1H ,24X,5HFM253) 11890253
1193: 90000 FORMAT (1H ,20X,20HEND OF PROGRAM FM253) 11900253
1194: C 11910253
1195: C FORMATS FOR TEST DETAIL LINES 11920253
1196: C 11930253
1197: 80000 FORMAT (1H ,4X,I5,6X,7HDELETED) 11940253
1198: 80002 FORMAT (1H ,4X,I5,7X,4HPASS) 11950253
1199: 80010 FORMAT (1H ,4X,I5,7X,4HFAIL,10X,I6,9X,I6) 11960253
1200: 80012 FORMAT (1H ,4X,I5,7X,4HFAIL,4X,E12.5,3X,E12.5) 11970253
1201: 80018 FORMAT (1H ,4X,I5,7X,4HFAIL,2X,A14,1X,A14) 11980253
1202: C 11990253
1203: C FORMAT STATEMENTS FOR PAGE HEADERS 12000253
1204: C 12010253
1205: 90002 FORMAT (1H1) 12020253
1206: 90004 FORMAT (1H ) 12030253
1207: 90006 FORMAT (1H ,10X,34HFORTRAN COMPILER VALIDATION SYSTEM) 12040253
1208: 90008 FORMAT (1H ,21X,11HVERSION 1.0) 12050253
1209: 90010 FORMAT (1H ,8X,38HFOR OFFICIAL USE ONLY - COPYRIGHT 1978) 12060253
1210: 90012 FORMAT (1H ,5X,4HTEST,5X,9HPASS/FAIL,5X,8HCOMPUTED,8X,7HCORRECT) 12070253
1211: 90014 FORMAT (1H ,5X,46H----------------------------------------------) 12080253
1212: 90016 FORMAT (1H ,18X,17HSUBSET LEVEL TEST) 12090253
1213: C 12100253
1214: C FORMAT STATEMENTS FOR RUN SUMMARY 12110253
1215: C 12120253
1216: 90020 FORMAT (1H ,19X,I5,13H TESTS FAILED) 12130253
1217: 90022 FORMAT (1H ,19X,I5,13H TESTS PASSED) 12140253
1218: 90024 FORMAT (1H ,19X,I5,14H TESTS DELETED) 12150253
1219: END 12160253
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.