PROGRAM FM253 C C C C THIS ROUTINE IS A TEST OF THE IF-BLOCK. TESTS WITHIN THIS C ROUTINE ARE FOR THE SYNTAX OF THE BASIC IF ( ) THEN THROUGH C END IF BLOCK STRUCTURE. C C THERE IS ALSO A SERIES OF TESTS TO CHECK THE HIERARCHY AND C ORDER OF EVALUATION IN EXPRESSIONS THAT CONTAIN A COMBINATION OF C ARITHMETIC, RELATIONAL, AND LOGICAL OPERATORS. C C REFERENCES C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, C X3.9-1978 C SECTION 11.6, BLOCK IF STATEMENT C SECTION 11.6.1, IF-LEVEL C SECTION 11.6.2, IF-BLOCK C SECTION 11.6.3, EXECUTION OF A BLOCK IF STATEMENT C C C C C ****************************************************************** C A COMPILER VALIDATION SYSTEM FOR THE FORTRAN LANGUAGE C BASED ON SPECIFICATIONS AS DEFINED IN AMERICAN STANDARD FORTRAN C X3.9-1978, HAS BEEN DEVELOPED BY THE DEPARTMENT OF THE NAVY. THE C FORTRAN COMPILER VALIDATION SYSTEM (FCVS) CONSISTS OF AUDIT C ROUTINES, THEIR RELATED DATA, AND AN EXECUTIVE SYSTEM. EACH AUDIT C ROUTINE IS A FORTRAN PROGRAM OR SUBPROGRAM WHICH INCLUDES TESTS C OF SPECIFIC LANGUAGE ELEMENTS AND SUPPORTING PROCEDURES INDICATING C THE RESULT OF EXECUTING THESE TESTS. C C THIS PARTICULAR PROGRAM OR SUBPROGRAM CONTAINS ONLY FEATURES C FOUND IN THE SUBSET LEVEL OF THE STANDARD. C C SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C DEPARTMENT OF THE NAVY C FEDERAL COBOL COMPILER TESTING SERVICE C WASHINGTON, D.C. 20376 C C ****************************************************************** C C IMPLICIT LOGICAL (L) IMPLICIT CHARACTER*14 (C) C DIMENSION LADN11(2) LOGICAL LVTN01, LVTN02, LATN11(2), LADN11 DATA LADN11/.TRUE., .FALSE./ C C C **** LOGICAL STATEMENT FUNCTION REFERENCED IN TEST 20 **** C LFIS01 ( L ) = .NOT. L C C C C C C INITIALIZATION SECTION. C C INITIALIZE CONSTANTS C ******************** C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER I01 = 5 C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER I02 = 6 C SYSTEM ENVIRONMENT SECTION C CX010 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-010 CONTROL CARD. C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 C (UNIT NUMBER FOR CARD READER). CX011 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-011 CONTROL CARD C THE CX011 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL C FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX010 ABOVE. C CX020 THIS CARD IS PEPLACED BY CONTENTS OF FEXEC X-020 CONTROL CARD. C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02 = 6 C (UNIT NUMBER FOR PRINTER). CX021 THIS CARD IS PEPLACED BY CONTENTS OF FEXEC X-021 CONTROL CARD. C THE CX021 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL C FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX020 ABOVE. C IVPASS = 0 IVFAIL = 0 IVDELE = 0 ICZERO = 0 C C WRITE OUT PAGE HEADERS C WRITE (I02,90002) WRITE (I02,90006) WRITE (I02,90008) WRITE (I02,90004) WRITE (I02,90010) WRITE (I02,90004) WRITE (I02,90016) WRITE (I02,90001) WRITE (I02,90004) WRITE (I02,90012) WRITE (I02,90014) WRITE (I02,90004) C C C **** FCVS PROGRAM 253 - TEST 001 **** C C TEST 001 USES A VERY SIMPLE BLOCK IF STATEMENT. THE EXPRESSION C WITHIN THE PARENTHESES IS THE LOGICAL CONSTANT .TRUE. AND THE C EXECUTABLE STATEMENT WITHIN THE IF-BLOCK OF LEVEL ONE IS AN C INTEGER ARITHMETIC ASSIGNMENT STATEMENT. SINCE THE LOGICAL C EXPRESSION IS TRUE, THEN THE INTEGER ASSIGNMENT STATEMENT ( TRUE C PATH ) SHOULD BE EXECUTED. C C THIS IS A SYNTAX CHECK FOR THE BLOCK IF STATEMENT. SHOULD A C COMPILER NOT BE ABLE TO ACCEPT THE SYNTAX OF THIS BASIC TEST, C THEN ROUTINES FM253, THRU FMXXX NEED NOT BE RUN. C C IVTNUM = 1 IF (ICZERO) 30010, 0010, 30010 0010 CONTINUE IVCOMP = 0 IF ( .TRUE. ) THEN IVCOMP = 1 END IF IVCORR = 1 40010 IF ( IVCOMP - 1 ) 20010, 10010, 20010 30010 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10010, 0021, 20010 10010 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0021 20010 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0021 CONTINUE C C **** FCVS PROGRAM 253 - TEST 002 **** C C TEST 002 USES A LOGICAL VARIABLE SET .FALSE. AS THE LOGICAL C EXPRESSION IN THE BLOCK IF STATEMENT. BECAUSE THE EXPRESSION C IS FALSE, THE IF-BLOCK (WHICH IS AN INTEGER ARITHMETIC ASSIGNMENT C STATEMENT AND A LOGICAL ASSIGNMENT STATEMENT) SHOULD NOT BE C EXECUTED. C C IVTNUM = 2 IF (ICZERO) 30020, 0020, 30020 0020 CONTINUE IVCOMP = 0 IVON01 = 1 LVON01 = .FALSE. LVTN01 = .FALSE. IF ( LVON01 ) THEN IVON01 = 0 LVTN01 = .TRUE. END IF IVCORR = 1 40020 IF ( IVON01 .EQ. 1 ) IVCOMP = 1 40021 IF ( IVCOMP - 1 ) 20020, 10020, 20020 30020 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10020, 0031, 20020 10020 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0031 20020 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0031 CONTINUE C C **** FCVS PROGRAM 253 - TEST 003 **** C C TEST 003 IS A BLOCK IF STATEMENT WITH AN EMPTY IF-BLOCK. THE C LOGICAL EXPRESSION IS A LOGICAL ARRAY ELEMENT REFERENCE SET TO C .TRUE. SECTION 11.6.2 STATES THAT, AN IF-BLOCK MAY BE EMPTY. C BECAUSE THE LOGICAL EXPRESSION IS TRUE, THE IF-BLOCK SHOULD BE C EXECUTED. IF THE VALUE OF THE EXPRESSION IS TRUE AND THE IF-BLOCK C IS EMPTY, CONTROL IS TRANSFERRED TO THE NEXT END IF STATEMENT C THAT HAS THE SAME IF-LEVEL AS THE BLOCK IF STATEMENT ACCORDING C TO SECTION 11.6.3. IN THIS TEST THE EMPTY IF-BLOCK IS OF LEVEL ONE C C IVTNUM = 3 IF (ICZERO) 30030, 0030, 30030 0030 CONTINUE IVCOMP = 0 LATN11(1) = .TRUE. IF ( LATN11(1) ) THEN END IF IVCOMP = 1 IVCORR = 1 40030 IF ( IVCOMP - 1 ) 20030, 10030, 20030 30030 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10030, 0041, 20030 10030 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0041 20030 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0041 CONTINUE C C **** FCVS PROGRAM 253 - TEST 004 **** C C TEST 004 IS LIKE THE PREVIOUS TEST USING A LOGICAL ARRAY C ELEMENT REFERENCE AS THE LOGICAL EXPRESSION OF THE BLOCK IF C STATEMENT THAT HAS AN EMPTY IF-BLOCK STRUCTURE OF LEVEL ONE. C IN THIS TEST THE LOGICAL EXPRESSION IS FALSE SO CONTROL SHOULD C BE TRANSFERRED TO THE END IF STATEMENT THAT HAS THE SAME IF-LEVEL C AS THE BLOCK IF STATEMENT ACCORDING TO SECTION 11.6.3. C C THE LOGICAL ARRAY ELEMENT REFERENCE LADN11(2) IS SET TO .FALSE. C IN THE DATA STATEMENT AS FOLLOWS C C DATA LADN11/.TRUE., .FALSE./ C C IVTNUM = 4 IF (ICZERO) 30040, 0040, 30040 0040 CONTINUE IVCOMP = 0 IF ( LADN11(2) ) THEN END IF IVCOMP = 1 IVCORR = 1 40040 IF ( IVCOMP - 1 ) 20040, 10040, 20040 30040 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10040, 0051, 20040 10040 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0051 20040 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0051 CONTINUE C C C THE NEXT FOUR TESTS ARE FOR A BLOCK IF STRUCTURE OF LEVEL C TWO IN THE INNERMOST IF-BLOCK. THIS STRUCTURE IS SHOWN BELOW - C C IF ( E1 ) THEN C IF-BLOCK 1 C IF ( E2 ) THEN C IF-BLOCK 2 C END IF C END IF C TESTS WILL USE THE FOUR COMBINATIONS OF TRUE AND FALSE FOR E1 AND C E2 RESPECTIVELY TO TEST THE TRANSFER OF CONTROL AS DESCRIBED C IN SECTION 11.6.3. C C C C **** FCVS PROGRAM 253 - TEST 005 **** C C TEST 005 USES A FALSE VALUE FOR E1 AND A FALSE VALUE FOR E2. C CONTROL SHOULD BE TRANSFERRED TO THE END IF STATEMENT OF LEVEL 1 C WHICH MEANS IF-BLOCK 1 AND IF-BLOCK 2 SHOULD NOT BE EXECUTED. C C IVTNUM = 5 IF (ICZERO) 30050, 0050, 30050 0050 CONTINUE IVCOMP = 1 LADN11(2) = .FALSE. IF ( 76 .LT. 3 ) THEN IVCOMP = IVCOMP * 2 IF ( ( LADN11(2) ) ) THEN IVCOMP = IVCOMP * 3 END IF END IF IVCORR = 1 40051 IF ( IVCOMP - 1 ) 20050, 10050, 20050 30050 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10050, 0061, 20050 10050 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0061 20050 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0061 CONTINUE C C **** FCVS PROGRAM 253 - TEST 006 **** C C TEST 006 USES A FALSE VALUE FOR E1 AND A TRUE VALUE FOR E2. C CONTROL SHOULD BE TRANSFERRED TO THE END IF STATEMENT OF LEVEL 1 C WHICH MEANS IF-BLOCK 1 AND IF-BLOCK 2 SHOULD NOT BE EXECUTED. C C IVTNUM = 6 IF (ICZERO) 30060, 0060, 30060 0060 CONTINUE IVCOMP = 1 IVON03 = 32767 LVTN01 = .TRUE. LVON01 = .TRUE. IF ( .NOT. LVTN01 ) THEN IVCOMP = IVCOMP * 2 IF ( LVON01 .AND. IVON03 .GE. 587 ) THEN IVCOMP = IVCOMP * 3 END IF END IF IVCORR = 1 40061 IF ( IVCOMP - 1 ) 20060, 10060, 20060 30060 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10060, 0071, 20060 10060 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0071 20060 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0071 CONTINUE C C **** FCVS PROGRAM 253 - TEST 007 **** C C TEST 007 USES A TRUE VALUE FOR E1 AND A FALSE VALUE FOR E2. C IF-BLOCK 1 SHOULD BE EXECUTED, BUT IF-BLOCK 2 SHOULD NOT BE C EXECUTED. C C IF-BLOCK 1 ALSO CONTAINS AN UNCONDITIONAL GO TO AND A CONTINUE C STATEMENT WHICH SHOULD BOTH BE EXECUTED. C C IVTNUM = 7 IF (ICZERO) 30070, 0070, 30070 0070 CONTINUE IVCOMP = 1 IVON03 = 587 IVON04 = 3 LATN11(1) = .TRUE. LATN11(2) = .FALSE. IF ( (LATN11(1)) .OR. ((7 * IVON04) .EQ. 21) ) THEN IVCOMP = IVCOMP * 2 GO TO 0072 0072 CONTINUE IF ( 7 .GT. IVON03 .OR. LATN11(2) ) THEN IVCOMP = IVCOMP * 3 END IF END IF C C **** IVCOMP IS DETERMINED BY IVCOMP = 2 = 1 * 2 **** C IVCORR = 2 40070 IF ( IVCOMP - 2 ) 20070, 10070, 20070 30070 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10070, 0081, 20070 10070 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0081 20070 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0081 CONTINUE C C **** FCVS PROGRAM 253 - TEST 008 **** C C TEST 008 USES A TRUE VALUE FOR E1 AND A TRUE VALUE FOR E2. C BOTH IF-BLOCK 1 AND IF-BLOCK 2 SHOULD BE EXECUTED. C C IF-BLOCK 1 CONTAINS AN ASSIGN STATEMENT PLUS AN ASSIGNED GO TO C STATEMENT WHICH SHOULD BOTH BE EXECUTED. C C IVTNUM = 8 IF (ICZERO) 30080, 0080, 30080 0080 CONTINUE IVCOMP = 1 IVON04 = 4 IVON05 = 2 LVON01 = .FALSE. LVTN01 = LVON01 C IF ( IVON04 - 1 .LE. 6 .AND. 7 .GE. 5 / IVON05 ) THEN IVCOMP = IVCOMP * 2 ASSIGN 0083 TO I GO TO 0084 0082 IVCOMP = IVCOMP * 3 GO TO 0085 0083 IVCOMP = IVCOMP * 5 GO TO 0085 0084 GO TO I, ( 0082, 0083 ) 0085 IF ( .NOT. ( LVTN01 ) ) THEN IVCOMP = IVCOMP * 7 END IF END IF C C **** IVCOMP IS DETERMINED BY IVCOMP = 70 = 1 * 2 * 5 * 7 **** C IVCORR = 70 40080 IF ( IVCOMP - 70 ) 20080, 10080, 20080 30080 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10080, 0091, 20080 10080 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0091 20080 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0091 CONTINUE C C THE NEXT FIVE TESTS ARE FOR A BLOCK IF STRUCTURE OF LEVEL C THREE IN THE INNERMOST IF-BLOCK. THIS STRUCTURE IS SHOWN BELOW - C C IF ( E1 ) THEN C IF-BLOCK 1 C IF ( E2 ) THEN C IF-BLOCK 2 C IF ( E3 ) THEN C IF-BLOCK 3 C END IF C END IF C END IF C C THE FIVE TESTS WILL USE THE FOLLOWING COMBINATIONS OF TRUE AND C FALSE FOR E1, E2, AND E3 AS SHOWN BELOW - C TEST NUMBER 9 10 11 12 13 C E1 T T T T F C E2 T T F F T C E3 T F T F T C C CONTROL SHOULD BE AS DESCRIBED IN SECTION 11.6.3. C C C C **** FCVS PROGRAM 253 - TEST 009 **** C C TEST 009 HAS E1, E2, AND E3 AS TRUE. IF-BLOCK 1, 2, AND 3 C SHOULD BE EXECUTED. IF-BLOCK 1 HAS A COMPUTED GO TO STATEMENT C WHICH SHOULD BE EXECUTED. C C IVTNUM = 9 IF (ICZERO) 30090, 0090, 30090 0090 CONTINUE IVCOMP = 1 IVON01 = 4 IVON02 = 3 C IF ( .NOT. IVON01 .EQ. 3 .OR. .NOT. IVON02 .EQ. 4 ) THEN IVCOMP = IVCOMP * 2 J = 2 GO TO 0095 0092 IVCOMP = IVCOMP * 3 GO TO 0096 0093 IVCOMP = IVCOMP * 5 GO TO 0096 0094 IVCOMP = IVCOMP * 7 GO TO 0096 0095 GO TO ( 0092, 0093, 0094 ), J 0096 IF ( IVON01 .EQ. 4 .AND. IVON02 .NE. 2 ) THEN IVCOMP = IVCOMP * 11 IF ( IVON01 .EQ. 4 .AND. .NOT. IVON02 .EQ. 2 ) THEN IVCOMP = IVCOMP * 13 END IF END IF END IF C C **** IVCOMP IS DETERMINED BY IVCOMP = 1430 = 1*2*5*11*13 **** C IVCORR = 1430 40090 IF ( IVCOMP - 1430 ) 20090, 10090, 20090 30090 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10090, 0101, 20090 10090 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0101 20090 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0101 CONTINUE C C **** FCVS PROGRAM 253 - TEST 010 **** C C C TEST 010 HAS E1 AND E2 AS TRUE. E3 IS FALSE. IF-BLOCK 1 HAS C A LOGICAL IF STATEMENT WHICH SHOULD BE EXECUTED BY TAKING THE C TRUE PATH. IF-BLOCK 2 HAS AN ARITHMETIC IF STATEMENT WITH THE C VALUE INSIDE THE PARENTHESIS EQUAL TO ZERO. IF-BLOCK 3 SHOULD NOT C BE EXECUTED. C C IVTNUM = 10 IF (ICZERO) 30100, 0100, 30100 0100 CONTINUE IVCOMP = 1 IVON01 = +3 LVON01 = .FALSE. C IF ( .NOT. LVON01 .AND. .TRUE. .OR. .TRUE. .AND. .NOT. LVON01 ) 1THEN IVCOMP = IVCOMP * 2 IF ( 3 .LE. IVON01 ) IVCOMP = IVCOMP * 3 IF ( .NOT.(LVON01.AND..TRUE.).OR.(.TRUE..AND..NOT.LVON01) ) 1 THEN IF ( 3 - IVON01 ) 0103, 0102, 0103 0102 IVCOMP = IVCOMP * 5 GO TO 0104 0103 IVCOMP = IVCOMP * 7 0104 CONTINUE IF ( .NOT.(.NOT.(LVON01.AND..TRUE.)).OR..FALSE..AND. 1 .NOT.LVON01 ) THEN IVCOMP = IVCOMP * 11 END IF END IF END IF C C **** IVCOMP IS DETERMINED BY IVCOMP = 30 = 1 * 2 * 3 * 5 **** C IVCORR = 30 40100 IF ( IVCOMP - 30 ) 20100, 10100, 20100 30100 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10100, 0111, 20100 10100 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0111 20100 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0111 CONTINUE C C **** FCVS PROGRAM 253 - TEST 011 **** C C C TEST 011 HAS E1 AND E3 AS TRUE. E2 IS FALSE. ONLY IF-BLOCK 1 C SHOULD BE EXECUTED. THIS SET OF BLOCK IF STATEMENTS HAS INTEGER C ASSIGNMENT STATEMENTS BETWEEN THE END IF STATEMENTS. A CHECK IS C MADE TO DETERMINE IF THESE STATEMENTS HAVE BEEN EXECUTED. C C IVTNUM = 11 IF (ICZERO) 30110, 0110, 30110 0110 CONTINUE IVCOMP = 1 LVON01 = .TRUE. LVON02 = .FALSE. LVON03 = .TRUE. C IF ( LVON01 ) THEN IVCOMP = IVCOMP * 2 IF ( LVON02 ) THEN IVCOMP = IVCOMP * 3 IF ( LVON03 ) THEN IVCOMP = IVCOMP * 5 END IF IVCOMP = IVCOMP * 7 END IF IVCOMP = IVCOMP * 11 END IF IVCOMP = IVCOMP * 13 C C **** IVCOMP IS DETERMINED BY IVCOMP = 286 = 1*2*11*13 **** C IVCORR = 286 40110 IF ( IVCOMP - 286 ) 20110, 10110, 20110 30110 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10110, 0121, 20110 10110 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0121 20110 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0121 CONTINUE C C **** FCVS PROGRAM 253 - TEST 012 **** C C C TEST 012 HAS E1 AS TRUE. E2 AND E3 ARE FALSE. ONLY IF-BLOCK 1 C SHOULD BE EXECUTED. INTEGER ASSIGNMENT STATEMENTS ARE USED TO C DETERMINE THE FLOW OF LOGIC THROUGH THE BLOCK IF STRUCTURE. C C IVTNUM = 12 IF (ICZERO) 30120, 0120, 30120 0120 CONTINUE IVCOMP = 1 LVON01 = .TRUE. LVON02 = .FALSE. LVON03 = .FALSE. C IF ( LVON01 ) THEN IVCOMP = IVCOMP * 2 IF ( LVON02 ) THEN IVCOMP = IVCOMP * 3 IF ( LVON03 ) THEN IVCOMP = IVCOMP * 5 END IF IVCOMP = IVCOMP * 7 END IF IVCOMP = IVCOMP * 11 END IF IVCOMP = IVCOMP * 13 C C **** IVCOMP IS DETERMINED BY IVCOMP = 286 = 1*2*11*13 **** C IVCORR = 286 40120 IF ( IVCOMP - 286 ) 20120, 10120, 20120 30120 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10120, 0131, 20120 10120 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0131 20120 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0131 CONTINUE C C **** FCVS PROGRAM 253 - TEST 013 **** C C C TEST 013 HAS E1 FALSE. E2 AND E3 ARE TRUE. NONE OF THE IF- C BLOCKS SHOULD BE EXECUTED. INTEGER ASSIGNMENT STATEMENTS ARE C USED TO TRACE THE FLOW OF LOGIC THROUGH THE BLOCK IF STRUCTURE. C C IVTNUM = 13 IF (ICZERO) 30130, 0130, 30130 0130 CONTINUE IVCOMP = 1 LVON01 = .FALSE. LVON02 = .TRUE. LVON03 = .TRUE. C IF ( LVON01 ) THEN IVCOMP = IVCOMP * 2 IF ( LVON02 ) THEN IVCOMP = IVCOMP * 3 IF ( LVON03 ) THEN IVCOMP = IVCOMP * 5 END IF IVCOMP = IVCOMP * 7 END IF IVCOMP = IVCOMP * 11 END IF IVCOMP = IVCOMP * 13 C C **** IVCOMP IS DETERMINED BY IVCOMP = 13 = 1 * 13 **** C IVCORR = 13 40130 IF ( IVCOMP - 13 ) 20130, 10130, 20130 30130 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10130, 0141, 20130 10130 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0141 20130 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0141 CONTINUE C C **** FCVS PROGRAM 253 - TEST 014 **** C C TEST 014 IS TO CHECK FOR PROPER TRANSFER OF CONTROL USING C LOGICAL IF STATEMENTS WITHIN IF-BLOCKS AND BRANCHING TO THE C OUTERMOST IF-LEVEL FROM THE INNERMOST IF-LEVEL IN A CONTROLLED C LOOP. THE INNERMOST IF-LEVEL SHOULD BE EXECUTED 10 TIMES. A C LOGICAL IF STATEMENT IS USED IN EACH OF THE IF-LEVELS IN CASE C THE EXECUTION LOGIC BRANCHES INCORRECTLY. THIS SHOULD PREVENT C AN INFINITE LOOP DURING THE EXECUTION OF THIS ROUTINE. C C IVTNUM = 14 IF (ICZERO) 30140, 0140, 30140 0140 CONTINUE IVCOMP = 0 IVON01 = 0 IVON02 = 0 IVON03 = 0 0142 IF ( IVON03 .LT. 10 ) THEN IVON01 = IVON01 + 1 IF ( IVON01 .GT. 11 ) GO TO 0143 IF ( IVON03 .LT. 10 ) THEN IVON02 = IVON02 + 1 IF ( IVON02 .GT. 11 ) GO TO 0143 IF ( IVON03 .LT. 10 ) THEN IVON03 = IVON03 + 1 IF ( IVON03 .GT. 11 ) GO TO 0143 IF ( IVON03 .LE. 10 ) GO TO 0142 END IF END IF END IF 0143 CONTINUE IVCOMP = IVON01 IVCORR = 10 40140 IF ( IVCOMP - 10 ) 20140, 10140, 20140 30140 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10140, 0151, 20140 10140 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0151 20140 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0151 CONTINUE C C THE NEXT TWO TESTS ARE TO CHECK THE COUNTERS IN IF-LEVEL 2 AND C IF-LEVEL 3 RESPECTIVELY IN THE PREVIOUS TEST. C C C C **** FCVS PROGRAM 253 - TEST 015 **** C C TEST 015 CHECKS THAT THE INTEGER COUNTER IN IF-LEVEL 2 IN THE C PREVIOUS TEST IS EQUAL TO TEN (10). C C IVTNUM = 15 IF (ICZERO) 30150, 0150, 30150 0150 CONTINUE IVCOMP = IVON02 IVCORR = 10 40150 IF ( IVCOMP - 10 ) 20150, 10150, 20150 30150 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10150, 0161, 20150 10150 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0161 20150 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0161 CONTINUE C C **** FCVS PROGRAM 253 - TEST 016 **** C C TEST 016 CHECKS THAT THE INTEGER COUNTER IN IF-LEVEL 3 IN THE C PREVIOUS TEST IS EQUAL TO TEN (10). C C IVTNUM = 16 IF (ICZERO) 30160, 0160, 30160 0160 CONTINUE IVCOMP = IVON03 IVCORR = 10 40160 IF ( IVCOMP - 10 ) 20160, 10160, 20160 30160 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10160, 0171, 20160 10160 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0171 20160 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0171 CONTINUE C C THE NEXT THREE TESTS ARE SIMILAR TO THE PREVIOUS THREE TESTS C IN THAT THEY TEST THE TRANSFER OF CONTROL WITHIN A THREE LEVEL C BLOCK IF STRUCTURE. EACH OF THE IF-LEVELS ARE EXECUTED AS IF THEY C WERE A LOOP USING LOGICAL IF STATEMENTS WITHIN EACH IF-LEVEL. C C C C **** FCVS PROGRAM 253 - TEST 017 **** C C TEST 017 CHECKS THAT THE VALUE OF THE INTEGER COUNTER IVON04 IN C IF-LEVEL 1 IN THIS TEST EQUALS 10. C C IVTNUM = 17 IF (ICZERO) 30170, 0170, 30170 0170 CONTINUE IVCOMP = 0 IVON01 = 0 IVON02 = 0 IVON03 = 0 IVON04 = 0 IVON05 = 0 IVON06 = 0 C 0172 IF ( IVON01 .LT. 10 ) THEN IVON01 = IVON01 + 1 IVON04 = IVON04 + 1 IF ( IVON01 .GT. 11 ) GO TO 0175 0173 IF ( IVON02 .LT. 10 ) THEN IVON02 = IVON02 + 1 IVON05 = IVON05 + 1 IF ( IVON02 .GT. 11 ) GO TO 0175 0174 IF ( IVON03 .LT. 10 ) THEN IVON03 = IVON03 + 1 IVON06 = IVON06 + 1 IF ( IVON03 .GT. 11 ) GO TO 0175 IF ( IVON03 .LE. 10 ) GO TO 0174 END IF IVON03 = 0 IF ( IVON02 .LE. 10 ) GO TO 0173 END IF IVON02 = 0 IF ( IVON01 .LE. 10 ) GO TO 0172 END IF 0175 CONTINUE IVCOMP = IVON04 IVCORR = 10 40170 IF ( IVCOMP - 10 ) 20170, 10170, 20170 30170 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10170, 0181, 20170 10170 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0181 20170 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0181 CONTINUE C C **** FCVS PROGRAM 253 - TEST 018 **** C C TEST 018 CHECKS THAT THE VALUE OF THE INTEGER COUNTER IVON05 IN C IF-LEVEL 2 OF THE PREVIOUS TEST EQUALS 100. C C IVTNUM = 18 IF (ICZERO) 30180, 0180, 30180 0180 CONTINUE IVCOMP = IVON05 IVCORR = 100 40180 IF ( IVCOMP - 100 ) 20180, 10180, 20180 30180 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10180, 0191, 20180 10180 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0191 20180 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0191 CONTINUE C C **** FCVS PROGRAM 253 - TEST 019 **** C C TEST 019 CHECKS THAT THE VALUE OF THE INTEGER COUNTER IVON06 IN C IF-LEVEL 3 OF THE PREVIOUS TEST EQUALS 1000. C C IVTNUM = 19 IF (ICZERO) 30190, 0190, 30190 0190 CONTINUE IVCOMP = IVON06 IVCORR = 1000 40190 IF ( IVCOMP - 1000 ) 20190, 10190, 20190 30190 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10190, 0201, 20190 10190 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0201 20190 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0201 CONTINUE C C **** FCVS PROGRAM 253 - TEST 020 **** C C TEST 020 USES A LOGICAL STATEMENT FUNCTION LFIS01(L) AS C THE LOGICAL EXPRESSION IN A BLOCK IF STRUCTURE. THE LOGICAL C STATEMENT FUNCTION TAKES THE LOGICAL COMPLEMENT OF THE LOGICAL C VALUE SUPPLIED. THE VALUE OF .FALSE. IS SUPPLIED AND THE LOGICAL C VALUE OF .TRUE. SHOULD BE RETURNED AS THE LOGICAL FUNCTION C REFERENCE. THE IF-BLOCK OF LEVEL ONE SHOULD BE EXECUTED. C C IVTNUM = 20 IF (ICZERO) 30200, 0200, 30200 0200 CONTINUE IVCOMP = 0 LVON01 = .FALSE. IF ( LFIS01( LVON01 ) ) THEN IVCOMP = 1 END IF IVCORR = 1 40200 IF ( IVCOMP - 1 ) 20200, 10200, 20200 30200 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10200, 0211, 20200 10200 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0211 20200 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0211 CONTINUE C C C THE FOLLOWING SERIES OF TESTS ARE TO CHECK THE PRECEDENCE OF C OPERATORS. THESE INCLUDE ARITHMETIC, RELATIONAL, AND LOGICAL C OPERATORS. ARITHMETIC OPERATORS ARE CHECKED FIRST FROM THE C EVALUATION OF CERTAIN ARITHMETIC EXPRESSIONS THAT USE ONLY INTEGER C VALUES IN THE COMPUTATIONS. ALL INTERMEDIATE AND FINAL VALUES ARE C LESS THAN 32767. AFTER EACH OF THE STATEMENTS IS TESTED BY ITSELF C THEN THE RELATIONAL OPERATORS ARE TESTED USING THE INTEGER VALUES C OBTAINED IN EACH OF THE ARITHMETIC EXPRESSIONS. IN THIS TEST THE C RELATIONAL EXPRESSIONS ARE COMBINED WITH LOGICAL OPERATORS TO C PRODUCE A LOGICAL EXPRESSION. FINALLY THE ENTIRE SET OF SIX (6) C ARITHMETIC , RELATIONAL, AND LOGICAL EXPRESSIONS IS COMBINED INTO C ONE LOGICAL IF STATEMENT. C C C C **** FCVS PROGRAM 253 - TEST 021 **** C C TEST 021 CHECKS THE ORDER OF EVALUATION WHEN AN ARITHMETIC C EXPRESSION HAS PARENTHESES AND A SERIES OF EXPONENTIATION. THE C ORDER OF EVALUATION IS SHOWN BELOW - C C 1 + 2 * ( 4 - 2 ) ** 2 ** 3 - 4 / 2 C 1 + 2 * ( 2 ) ** 2 ** 3 - 4 / 2 C 1 + 2 * 2 ** 8 - 4 / 2 C 1 + 2 * 256 - 4 / 2 C 1 + 512 - 2 C 513 - 2 C 511 C IVTNUM = 21 IF (ICZERO) 30210, 0210, 30210 0210 CONTINUE IVON01 = 1 IVON02 = 2 IVON03 = 4 IVON04 = 2 IVON05 = 4 IVON06 = 2 IVCOMP = IVON01 + IVON02 * ( IVON03 - IVON04 ) ** 2 ** 3 - IVON05 1 / IVON06 IVCORR = 511 40210 IF ( IVCOMP - 511 ) 20210, 10210, 20210 30210 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10210, 0221, 20210 10210 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0221 20210 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0221 CONTINUE C C **** FCVS PROGRAM 253 - TEST 022 **** C C TEST 022 IS A SERIES OF DIVISIONS FOLLOWED BY A SERIES OF C MULTIPLICATIONS ALL WITHOUT ANY PARENTHESES. C C 16 / 2 / 2 / 2 * 4 * 8 C 8 / 2 / 2 * 4 * 8 C 4 / 2 * 4 * 8 C 2 * 4 * 8 C 8 * 8 C 64 C C IVTNUM = 22 IF (ICZERO) 30220, 0220, 30220 0220 CONTINUE IVON07 = 16 IVON08 = 2 IVON09 = 2 IVON10 = 2 IVON11 = 4 IVON12 = 8 IVCOMP = IVON07 / IVON08 / IVON09 / IVON10 * IVON11 * IVON12 IVCORR = 64 40220 IF ( IVCOMP - 64 ) 20220, 10220, 20220 30220 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10220, 0231, 20220 10220 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0231 20220 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0231 CONTINUE C C **** FCVS PROGRAM 253 - TEST 023 **** C C TEST 023 HAS ONE SUBTRACTION IMBEDDED IN A SERIES OF ADDITIONS C WITHOUT ANY PARENTHESES. C C 3 + 4 - 1 + 5 C 7 - 1 + 5 C 6 + 5 C 11 C C IVTNUM = 23 IF (ICZERO) 30230, 0230, 30230 0230 CONTINUE IVON13 = 3 IVON14 = 4 IVON15 = 1 IVON16 = 5 IVCOMP = IVON13 + IVON14 - IVON15 + IVON16 IVCORR = 11 40230 IF ( IVCOMP - 11 ) 20230, 10230, 20230 30230 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10230, 0241, 20230 10230 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0241 20230 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0241 CONTINUE C C **** FCVS PROGRAM 253 - TEST 024 **** C C TEST 024 HAS ADDITION, SUBTRACTION, MULTIPLICATION, DIVISION, C AND EXPONENTIATION WITHOUT PARENTHESES. C C 4 + 4 - 6 * 3 / 3 ** 2 C 4 + 4 - 6 * 3 / 9 C 4 + 4 - 18 / 9 C 4 + 4 - 2 C 8 - 2 C 6 C C IVTNUM = 24 IF (ICZERO) 30240, 0240, 30240 0240 CONTINUE IVON17 = 4 IVON18 = 4 IVON19 = 6 IVON20 = 3 IVON21 = 3 IVON22 = 2 IVCOMP = IVON17 + IVON18 - IVON19 * IVON20 / IVON21 ** IVON22 IVCORR = 6 40240 IF ( IVCOMP - 6 ) 20240, 10240, 20240 30240 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10240, 0251, 20240 10240 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0251 20240 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0251 CONTINUE C C **** FCVS PROGRAM 253 - TEST 025 **** C C TEST 025 IS LIKE TEST NUMBER 021 EXCEPT THAT THE PARENTHESES C HAVE BEEN REMOVED. THE INTEGER VALUES USED AS INPUT ARE THE SAME. C REMOVAL OF THE PARENTHESES CHANGES THE ORDER OF EVALUATION SO THE C FINAL INTEGER RESULT IS DIFFERENT. C C 1 + 2 * 4 - 2 ** 2 ** 3 - 4 / 2 C 1 + 2 * 4 - 2 ** 8 - 4 / 2 C 1 + 2 * 4 - 256 - 4 / 2 C 1 + 8 - 256 - 2 C 9 - 256 - 2 C -247 - 2 C -249 C IVTNUM = 25 IF (ICZERO) 30250, 0250, 30250 0250 CONTINUE IVON23 = 1 IVON24 = 2 IVON25 = 4 IVON26 = 2 IVON27 = 4 IVON28 = 2 IVCOMP = IVON23 + IVON24 * IVON25 - IVON26 ** 2 ** 3 - IVON27 1 / IVON28 IVCORR = -249 40250 IF ( IVCOMP + 249 ) 20250, 10250, 20250 30250 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10250, 0261, 20250 10250 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0261 20250 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0261 CONTINUE C C **** FCVS PROGRAM 253 - TEST 026 **** C C TEST 026 IS JUST LIKE TEST NUMBER 022 EXCEPT THAT PARENTHESES C HAVE BEEN ADDED. ALTHOUGH THE INTEGER VALUES ARE THE SAME, THE C PARENTHESES CHANGE THE ORDER OF EVALUATION SO THAT THE FINAL C INTEGER RESULT IS DIFFERENT. C C 16 / ( 2 / 2 ) / 2 * ( 4 * 8 ) C 16 / ( 1 ) / 2 * ( 32 ) C 16 / 2 * 32 C 8 * 32 C 256 C IVTNUM = 26 IF (ICZERO) 30260, 0260, 30260 0260 CONTINUE IVON29 = 16 IVON30 = 2 IVON31 = 2 IVON32 = 2 IVON33 = 4 IVON34 = 8 IVCOMP = IVON29 / ( IVON30 / IVON31 ) / IVON32 * ( IVON33 * 1 IVON34 ) IVCORR = 256 40260 IF ( IVCOMP - 256 ) 20260, 10260, 20260 30260 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10260, 0271, 20260 10260 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0271 20260 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0271 CONTINUE C C **** FCVS PROGRAM 253 - TEST 027 **** C C TEST 027 COMBINES THE INTEGER RESULTS OBTAINED IN THE PREVIOUS C SIX TESTS AND USES RELATIONAL AND LOGICAL OPERATORS IN ONE C LOGICAL EXPRESSION. RELATIONAL EXPRESSIONS ARE EVALUATED FIRST C FOLLOWED BY THE LOGICAL OPERATORS .NOT. , .AND., AND .OR. IN THAT C ORDER. C C 511 .LT. 64 .OR. .NOT. 11 .LE. 6 .AND. -249 .LE. 256 C F .OR. .NOT. F .AND. T C F .OR. T .AND. T C F .OR. T C T C C IVTNUM = 27 IF (ICZERO) 30270, 0270, 30270 0270 CONTINUE IVON35 = 511 IVON36 = 64 IVON37 = 11 IVON38 = 6 IVON39 = -249 IVON40 = 256 IVCOMP = 0 LVON01 = IVON35 .LT. IVON36 .OR. .NOT. IVON37 .LE. IVON38 .AND. 1 IVON39 .LE. IVON40 IF ( LVON01 ) IVCOMP = 1 IVCORR = 1 40270 IF ( IVCOMP - 1 ) 20270, 10270, 20270 30270 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10270, 0281, 20270 10270 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0281 20270 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0281 CONTINUE C C **** FCVS PROGRAM 253 - TEST 028 **** C C TEST 028 IS THE BIGGIE. IT COMBINES ALL OF THE INTEGER VALUES C AND RESULTS IN THE PREVIOUS SEVEN (7) TESTS. IF THERE WERE ANY C ERRORS IN ANY OF THE PREVIOUS SEVEN TESTS, THEN THIS TEST SHOULD C ALSO FAIL. C C IVTNUM = 28 IF (ICZERO) 30280, 0280, 30280 0280 CONTINUE IVCOMP = 0 IF ( IVON01 + IVON02 * ( IVON03 - IVON04 ) ** 2 ** 3 - IVON05 / 1IVON06 .LT. IVON07 / IVON08 / IVON09 / IVON10 * IVON11 * IVON12 2.OR. .NOT. IVON13 + IVON14 - IVON15 + IVON16 .LE. IVON17 + IVON18 3- IVON19 * IVON20 / IVON21 ** IVON22 .AND. IVON23 + IVON24 * 4IVON25 - IVON26 ** 2 ** 3 - IVON27 / IVON28 .LE. IVON29 / ( IVON30 5 / IVON31 ) / IVON32 * ( IVON33 * IVON34 ) ) IVCOMP = 1 IVCORR = 1 40280 IF ( IVCOMP - 1 ) 20280, 10280, 20280 30280 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10280, 0291, 20280 10280 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0291 20280 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0291 CONTINUE C C C WRITE OUT TEST SUMMARY C WRITE (I02,90004) WRITE (I02,90014) WRITE (I02,90004) WRITE (I02,90000) WRITE (I02,90004) WRITE (I02,90020) IVFAIL WRITE (I02,90022) IVPASS WRITE (I02,90024) IVDELE STOP 90001 FORMAT (1H ,24X,5HFM253) 90000 FORMAT (1H ,20X,20HEND OF PROGRAM FM253) C C FORMATS FOR TEST DETAIL LINES C 80000 FORMAT (1H ,4X,I5,6X,7HDELETED) 80002 FORMAT (1H ,4X,I5,7X,4HPASS) 80010 FORMAT (1H ,4X,I5,7X,4HFAIL,10X,I6,9X,I6) 80012 FORMAT (1H ,4X,I5,7X,4HFAIL,4X,E12.5,3X,E12.5) 80018 FORMAT (1H ,4X,I5,7X,4HFAIL,2X,A14,1X,A14) C C FORMAT STATEMENTS FOR PAGE HEADERS C 90002 FORMAT (1H1) 90004 FORMAT (1H ) 90006 FORMAT (1H ,10X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90008 FORMAT (1H ,21X,11HVERSION 1.0) 90010 FORMAT (1H ,8X,38HFOR OFFICIAL USE ONLY - COPYRIGHT 1978) 90012 FORMAT (1H ,5X,4HTEST,5X,9HPASS/FAIL,5X,8HCOMPUTED,8X,7HCORRECT) 90014 FORMAT (1H ,5X,46H----------------------------------------------) 90016 FORMAT (1H ,18X,17HSUBSET LEVEL TEST) C C FORMAT STATEMENTS FOR RUN SUMMARY C 90020 FORMAT (1H ,19X,I5,13H TESTS FAILED) 90022 FORMAT (1H ,19X,I5,13H TESTS PASSED) 90024 FORMAT (1H ,19X,I5,14H TESTS DELETED) END