C C COMMENT SECTION. C C FM017 C C THIS ROUTINE CONTINUES TESTS OF THE FORTRAN C LOGICAL IF STATEMENT IN ALL OF THE VARIOUS FORMS. THE C FOLLOWING LOGICAL OPERANDS ARE USED FOR THIS ROUTINE - LOGICAL C CONSTANTS, LOGICAL VARIABLES, LOGICAL ARRAY ELEMENTS, AND C ARITHMETIC EXPRESSIONS WITH VARIOUS RELATIONAL OPERATORS. BOTH C THE TRUE AND FALSE BRANCHES ARE TESTED IN THE SERIES OF TESTS. C C REFERENCES C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, C X3.9-1978 C C SECTION 4.7.1, LOGICAL CONSTANT C SECTION 6, EXPRESSIONS C SECTION 6.1, ARITHMETIC EXPRESSIONS C SECTION 6.3, RELATIONAL EXPRESSIONS C SECTION 6.4, LOGICAL EXPRESSIONS C SECTION 6.6, EVALUATION OF EXPRESSIONS C SECTION 10, ASSIGNMENT STATEMENTS C SECTION 10.2, LOGICAL ASSIGNMENT STATEMENT C SECTION 11.5, LOGICAL IF STATEMENT C DIMENSION IADN11(3) LOGICAL LATN1A(2), LCTNT1, LCTNT2 C C ********************************************************** C C A COMPILER VALIDATION SYSTEM FOR THE FORTRAN LANGUAGE C BASED ON SPECIFICATIONS AS DEFINED IN AMERICAN NATIONAL STANDARD C PROGRAMMING LANGUAGE FORTRAN X3.9-1978, HAS BEEN DEVELOPED BY THE C FEDERAL COBOL COMPILER TESTING SERVICE. THE FORTRAN COMPILER C VALIDATION SYSTEM (FCVS) CONSISTS OF AUDIT ROUTINES, THEIR RELATED C DATA, AND AN EXECUTIVE SYSTEM. EACH AUDIT ROUTINE IS A FORTRAN C PROGRAM, SUBPROGRAM OR FUNCTION WHICH INCLUDES TESTS OF SPECIFIC C LANGUAGE ELEMENTS AND SUPPORTING PROCEDURES INDICATING THE RESULT C OF EXECUTING THESE TESTS. C C THIS PARTICULAR PROGRAM/SUBPROGRAM/FUNCTION CONTAINS FEATURES C FOUND ONLY IN THE SUBSET AS DEFINED IN X3.9-1978. C C SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO - C C DEPARTMENT OF THE NAVY C FEDERAL COBOL COMPILER TESTING SERVICE C WASHINGTON, D.C. 20376 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 REPLACED 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 REPLACED 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 PAGE HEADERS WRITE (I02,90000) WRITE (I02,90001) WRITE (I02,90002) WRITE (I02, 90002) WRITE (I02,90003) WRITE (I02,90002) WRITE (I02,90004) WRITE (I02,90002) WRITE (I02,90011) WRITE (I02,90002) WRITE (I02,90002) WRITE (I02,90005) WRITE (I02,90006) WRITE (I02,90002) IVTNUM = 170 C C **** TEST 170 **** C TEST 170 - RELATIONAL EXPRESSION. INTEGER VARIABLE REFERENCE. C FALSE PATH. .LT. C C IF (ICZERO) 31700, 1700, 31700 1700 CONTINUE IVON01 = 3 IVON02 = 1 IF ( 76 .LT. IVON01 ) IVON02 = 0 GO TO 41700 31700 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41700, 1711, 41700 41700 IF ( IVON02 - 1 ) 21700, 11700, 21700 11700 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1711 21700 IVFAIL = IVFAIL + 1 IVCOMP = IVON02 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1711 CONTINUE IVTNUM = 171 C C **** TEST 171 **** C TEST 171 - RELATIONAL EXPRESSION. INTEGER VARIABLE REFERENCE. C FALSE PATH. .LE. C C IF (ICZERO) 31710, 1710, 31710 1710 CONTINUE IVON01 = 3 IVON02 = 1 IF ( 76 .LE. IVON01 ) IVON02 = 0 GO TO 41710 31710 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41710, 1721, 41710 41710 IF ( IVON02 - 1 ) 21710, 11710, 21710 11710 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1721 21710 IVFAIL = IVFAIL + 1 IVCOMP = IVON02 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1721 CONTINUE IVTNUM = 172 C C **** TEST 172 **** C TEST 172 - RELATIONAL EXPRESSIONAL. INTEGER VARIABLE REFERENCE. C FALSE PATH. .EQ. C C IF (ICZERO) 31720, 1720, 31720 1720 CONTINUE IVON01 = 587 IVON02 = 1 IF ( 9999 .EQ. IVON01 ) IVON02 = 0 GO TO 41720 31720 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41720, 1731, 41720 41720 IF ( IVON02 - 1 ) 21720, 11720, 21720 11720 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1731 21720 IVFAIL = IVFAIL + 1 IVCOMP = IVON02 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1731 CONTINUE IVTNUM = 173 C C **** TEST 173 **** C TEST 173 - RELATIONAL EXPRESSION. INTEGER VARIABLE REFERENCE. C FALSE PATH. .NE. C C IF (ICZERO) 31730, 1730, 31730 1730 CONTINUE IVON01 = 3 IVON02 = 1 IF ( 3 .NE. IVON01 ) IVON02 = 0 GO TO 41730 31730 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41730, 1741, 41730 41730 IF ( IVON02 - 1 ) 21730, 11730, 21730 11730 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1741 21730 IVFAIL = IVFAIL + 1 IVCOMP = IVON02 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1741 CONTINUE IVTNUM = 174 C C **** TEST 174 **** C TEST 174 - RELATIONAL EXPRESSION. INTEGER VARIABLE REFERENCE. C FALSE PATH. .GT. C C IF (ICZERO) 31740, 1740, 31740 1740 CONTINUE IVON01 = 32767 IVON02 = 1 IF ( 76 .GT. IVON01 ) IVON02 = 0 GO TO 41740 31740 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41740, 1751, 41740 41740 IF ( IVON02 - 1 ) 21740, 11740, 21740 11740 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1751 21740 IVFAIL = IVFAIL + 1 IVCOMP = IVON02 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1751 CONTINUE IVTNUM = 175 C C **** TEST 175 **** C TEST 175 - RELATIONAL EXPRESSION. INTEGER VARIABLE REFERENCE. C FALSE PATH. .GE. C C IF (ICZERO) 31750, 1750, 31750 1750 CONTINUE IVON01 = 32767 IVON02 = 1 IF ( 76 .GE. IVON01 ) IVON02 = 0 GO TO 41750 31750 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41750, 1761, 41750 41750 IF ( IVON02 - 1 ) 21750, 11750, 21750 11750 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1761 21750 IVFAIL = IVFAIL + 1 IVCOMP = IVON02 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1761 CONTINUE IVTNUM = 176 C C **** TEST 176 **** C TEST 176 - RELATIONAL EXPRESSION. (IVR) (RO) (IC) C INTEGER VARIABLE REFERENCE WITH INTEGER CONSTANT C TRUE PATH. .LT. C C IF (ICZERO) 31760, 1760, 31760 1760 CONTINUE IVON01 = 3 IVON02 = 0 IF ( IVON01 .LT. 76 ) IVON02 = 1 GO TO 41760 31760 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41760, 1771, 41760 41760 IF ( IVON02 - 1 ) 21760, 11760, 21760 11760 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1771 21760 IVFAIL = IVFAIL + 1 IVCOMP = IVON02 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1771 CONTINUE IVTNUM = 177 C C **** TEST 177 **** C TEST 177 - LIKE TEST 176. FALSE PATH. .EQ. C C IF (ICZERO) 31770, 1770, 31770 1770 CONTINUE IVON01 = 587 IVON02 = 1 IF ( IVON01 .EQ. 9999 ) IVON02=0 GO TO 41770 31770 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41770, 1781, 41770 41770 IF ( IVON02 - 1 ) 21770, 11770, 21770 11770 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1781 21770 IVFAIL = IVFAIL + 1 IVCOMP = IVON02 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1781 CONTINUE IVTNUM = 178 C C **** TEST 178 **** C TEST 178 - LIKE TEST 176. TRUE PATH. .GE. C C IF (ICZERO) 31780, 1780, 31780 1780 CONTINUE IVON01 = 32767 IVON02 = 0 IF ( IVON01 .GE. 32767 ) IVON02 = 1 GO TO 41780 31780 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41780, 1791, 41780 41780 IF ( IVON02 - 1 ) 21780, 11780, 21780 11780 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1791 21780 IVFAIL = IVFAIL + 1 IVCOMP = IVON02 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1791 CONTINUE IVTNUM = 179 C C **** TEST 179 **** C TEST 179 - RELATIONAL EXPRESSION. INTEGER ARRAY ELEMENT C REFERENCE. (IC) (RO) (IAER) FALSE PATH. .LT. C C IF (ICZERO) 31790, 1790, 31790 1790 CONTINUE IVON01 = 1 IADN11(1) = 3 IF ( 76 .LT. IADN11(1) ) IVON01 = 0 GO TO 41790 31790 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41790, 1801, 41790 41790 IF ( IVON01 - 1 ) 21790, 11790, 21790 11790 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1801 21790 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1801 CONTINUE IVTNUM = 180 C C **** TEST 180 **** C TEST 180 - LIKE TEST 179. TRUE PATH. .LE. C C IF (ICZERO) 31800, 1800, 31800 1800 CONTINUE IVON01 = 0 IADN11(2) = 587 IF ( 587 .LE. IADN11(2) ) IVON01 = 1 GO TO 41800 31800 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41800, 1811, 41800 41800 IF ( IVON01 - 1 ) 21800, 11800, 21800 11800 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1811 21800 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1811 CONTINUE IVTNUM = 181 C C **** TEST 181 **** C TEST 181 - LIKE TEST 179. FALSE PATH. .GE. C C IF (ICZERO) 31810, 1810, 31810 1810 CONTINUE IVON01 = 1 IADN11(3) = 32767 IF ( 76 .GE. IADN11(3) ) IVON01 = 0 GO TO 41810 31810 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41810, 1821, 41810 41810 IF ( IVON01 - 1 ) 21810, 11810, 21810 11810 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1821 21810 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1821 CONTINUE IVTNUM = 182 C C **** TEST 182 **** C TEST 182 - RELATIONAL EXPRESSION (IAER) (RO) (IC). TRUE C PATH. .EQ. C C IF (ICZERO) 31820, 1820, 31820 1820 CONTINUE IVON01 = 0 IADN11(2) = 32767 IF ( IADN11(2) .EQ. 32767 ) IVON01 = 1 GO TO 41820 31820 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41820, 1831, 41820 41820 IF ( IVON01 - 1 ) 21820, 11820, 21820 11820 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1831 21820 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1831 CONTINUE IVTNUM = 183 C C **** TEST 183 **** C TEST 183 - RELATIONAL EXPRESSION (IVR) (RO) (IAER) C FALSE PATH. .NE. C C IF (ICZERO) 31830, 1830, 31830 1830 CONTINUE IVON01 = 1 IVON02 = 587 IADN11(1) = 587 IF ( IVON02 .NE. IADN11(1) ) IVON01 = 0 GO TO 41830 31830 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41830, 1841, 41830 41830 IF ( IVON01 - 1 ) 21830, 11830, 21830 11830 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1841 21830 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1841 CONTINUE IVTNUM = 184 C C **** TEST 184 **** C TEST 184 - RELATIONAL EXPRESSION (IAER) (RO) (IVR) C TRUE PATH .NE. C C IF (ICZERO) 31840, 1840, 31840 1840 CONTINUE IVON01 = 0 IADN11(3) = 3 IVON02 = 32767 IF ( IADN11(3) .NE. IVON02 ) IVON01 = 1 GO TO 41840 31840 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41840, 1851, 41840 41840 IF ( IVON01 - 1 ) 21840, 11840, 21840 11840 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1851 21840 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1851 CONTINUE IVTNUM = 185 C C **** TEST 185 **** C TEST 185 - TEST OF PARENTHESES ( (LE) ) C TRUE PATH LOGICAL CONSTANT .TRUE. C C IF (ICZERO) 31850, 1850, 31850 1850 CONTINUE IVON01 = 0 IF ( ( .TRUE. ) ) IVON01 = 1 GO TO 41850 31850 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41850, 1861, 41850 41850 IF ( IVON01 - 1 ) 21850, 11850, 21850 11850 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1861 21850 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1861 CONTINUE IVTNUM = 186 C C **** TEST 186 **** C TEST 186 - LIKE TEST 185 C FALSE PATH LOGICAL CONSTANT .FALSE. C C IF (ICZERO) 31860, 1860, 31860 1860 CONTINUE IVON01 = 1 IF ((( .FALSE. ))) IVON01 = 0 GO TO 41860 31860 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41860, 1871, 41860 41860 IF ( IVON01 - 1 ) 21860, 11860, 21860 11860 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1871 21860 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1871 CONTINUE IVTNUM = 187 C C **** TEST 187 **** C TEST 187 - PARENS AROUND LOGICAL VARIABLE REFERENCE ( (LVR) ) C TRUE PATH C C IF (ICZERO) 31870, 1870, 31870 1870 CONTINUE IVON01 = 0 LCTNT1 = .TRUE. IF ( ( LCTNT1 ) ) IVON01 = 1 GO TO 41870 31870 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41870, 1881, 41870 41870 IF ( IVON01 - 1 ) 21870, 11870, 21870 11870 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1881 21870 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1881 CONTINUE IVTNUM = 188 C C **** TEST 188 **** C TEST 188 - PARENS AROUND LOGICAL ARRAY REFERENCE ( ( LAER ) ) C FALSE PATH C IF (ICZERO) 31880, 1880, 31880 1880 CONTINUE IVON01 = 1 LATN1A(1) = .FALSE. IF ( ( LATN1A(1) ) ) IVON01 = 0 GO TO 41880 31880 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41880, 1891, 41880 41880 IF ( IVON01 - 1 ) 21880, 11880, 21880 11880 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1891 21880 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1891 CONTINUE IVTNUM = 189 C C **** TEST 189 **** C TEST 189 - USE OF .NOT. WITH A LOGICAL PRIMARY .NOT. (LP) C FALSE PATH .NOT. .TRUE. C C IF (ICZERO) 31890, 1890, 31890 1890 CONTINUE IVON01 = 1 IF ( .NOT. .TRUE. ) IVON01 = 0 GO TO 41890 31890 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41890, 1901, 41890 41890 IF ( IVON01 - 1 ) 21890, 11890, 21890 11890 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1901 21890 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1901 CONTINUE IVTNUM = 190 C C **** TEST 190 **** C TEST 190 - LIKE TEST 189 TRUE PATH .NOT. .FALSE. C C IF (ICZERO) 31900, 1900, 31900 1900 CONTINUE IVON01 = 0 IF ( .NOT. .FALSE. ) IVON01 = 1 GO TO 41900 31900 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41900, 1911, 41900 41900 IF ( IVON01 - 1 ) 21900, 11900, 21900 11900 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1911 21900 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1911 CONTINUE IVTNUM = 191 C C **** TEST 191 **** C TEST 191 - TESTS .NOT. WITH A LOGICAL VARIABLE SET TO .FALSE. C IN A LOGICAL ASSIGNMENT STATEMENT TRUE PATH C C IF (ICZERO) 31910, 1910, 31910 1910 CONTINUE IVON01 = 0 LCTNT1 = .FALSE. IF ( .NOT. LCTNT1 ) IVON01 = 1 GO TO 41910 31910 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41910, 1921, 41910 41910 IF ( IVON01 - 1 ) 21910, 11910, 21910 11910 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1921 21910 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1921 CONTINUE IVTNUM = 192 C C **** TEST 192 **** C TEST 192 - LIKE TEST 191 ONLY USES A LOGICAL ARRAY ELEMENT C SET TO .FALSE. IN A LOGICAL ASSIGNMENT STATEMENT TRUE C C IF (ICZERO) 31920, 1920, 31920 1920 CONTINUE IVON01 = 0 LATN1A(2) = .FALSE. IF ( .NOT. LATN1A(2) ) IVON01 = 1 GO TO 41920 31920 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41920, 1931, 41920 41920 IF ( IVON01 - 1 ) 21920, 11920, 21920 11920 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1931 21920 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1931 CONTINUE IVTNUM = 193 C C **** TEST 193 **** C TEST 193 - USE OF LOGICAL .AND. (LT) .AND. (LF) C USES TWO LOGICAL VARIABLES EACH SET TO .FALSE. C FALSE .AND. FALSE FALSE PATH C C IF (ICZERO) 31930, 1930, 31930 1930 CONTINUE IVON01 = 1 LCTNT1 = .FALSE. LCTNT2 = .FALSE. IF ( LCTNT1 .AND. LCTNT2 ) IVON01 = 0 GO TO 41930 31930 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41930, 1941, 41930 41930 IF ( IVON01 - 1 ) 21930, 11930, 21930 11930 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1941 21930 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1941 CONTINUE IVTNUM = 194 C C **** TEST 194 **** C TEST 194 - LIKE TEST 193 FALSE .AND. TRUE FALSE PATH C C IF (ICZERO) 31940, 1940, 31940 1940 CONTINUE IVON01 = 1 LCTNT1 = .FALSE. LCTNT2 = .TRUE. IF ( LCTNT1 .AND. LCTNT2 ) IVON01 = 0 GO TO 41940 31940 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41940, 1951, 41940 41940 IF ( IVON01 - 1 ) 21940, 11940, 21940 11940 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1951 21940 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1951 CONTINUE IVTNUM = 195 C C **** TEST 195 **** C TEST 195 - LIKE TEST 193 TRUE .AND. FALSE FALSE PATH C C IF (ICZERO) 31950, 1950, 31950 1950 CONTINUE IVON01 = 1 LCTNT1 = .TRUE. LCTNT2 = .FALSE. IF ( LCTNT1 .AND. LCTNT2 ) IVON01 = 0 GO TO 41950 31950 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41950, 1961, 41950 41950 IF ( IVON01 - 1 ) 21950, 11950, 21950 11950 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1961 21950 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1961 CONTINUE IVTNUM = 196 C C **** TEST 196 **** C TEST 196 - LIKE TEST 193 TRUE .AND. TRUE TRUE PATH C C IF (ICZERO) 31960, 1960, 31960 1960 CONTINUE IVON01 = 0 LCTNT1 = .TRUE. LCTNT2 = .TRUE. IF ( LCTNT1 .AND. LCTNT2 ) IVON01 = 1 GO TO 41960 31960 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41960, 1971, 41960 41960 IF ( IVON01 - 1 ) 21960, 11960, 21960 11960 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1971 21960 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1971 CONTINUE IVTNUM = 197 C C **** TEST 197 **** C TEST 197 - TEST OF THE INCLUSIVE .OR. . (LE) .OR. (LT) C USES LOGICAL VARIABLES SET IN LOGICAL ASSIGNMENT STATEMENTS C FALSE .OR. FALSE FALSE PATH C C IF (ICZERO) 31970, 1970, 31970 1970 CONTINUE IVON01 = 1 LCTNT1 = .FALSE. LCTNT2 = .FALSE. IF ( LCTNT1 .OR. LCTNT2 ) IVON01 = 0 GO TO 41970 31970 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41970, 1981, 41970 41970 IF ( IVON01 - 1 ) 21970, 11970, 21970 11970 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1981 21970 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1981 CONTINUE IVTNUM = 198 C C **** TEST 198 **** C TEST 198 - LIKE TEST 197 FALSE .OR. TRUE TRUE PATH C C IF (ICZERO) 31980, 1980, 31980 1980 CONTINUE IVON01 = 0 LCTNT1 = .FALSE. LCTNT2 = .TRUE. IF ( LCTNT1 .OR. LCTNT2 ) IVON01 = 1 GO TO 41980 31980 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41980, 1991, 41980 41980 IF ( IVON01 - 1 ) 21980, 11980, 21980 11980 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1991 21980 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1991 CONTINUE IVTNUM = 199 C C **** TEST 199 **** C TEST 199 - LIKE TEST 197. TRUE .OR. FALSE TRUE PATH. C C IF (ICZERO) 31990, 1990, 31990 1990 CONTINUE IVON01 = 0 LCTNT1 = .TRUE. LCTNT2 = .FALSE. IF ( LCTNT1 .OR. LCTNT2 ) IVON01 = 1 GO TO 41990 31990 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41990, 5001, 41990 41990 IF ( IVON01 - 1 ) 21990, 11990, 21990 11990 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5001 21990 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5001 CONTINUE C C WRITE PAGE FOOTINGS AND RUN SUMMARIES 99999 CONTINUE WRITE (I02,90002) WRITE (I02,90006) WRITE (I02,90002) WRITE (I02,90002) WRITE (I02,90007) WRITE (I02,90002) WRITE (I02,90008) IVFAIL WRITE (I02,90009) IVPASS WRITE (I02,90010) IVDELE C C C TERMINATE ROUTINE EXECUTION STOP C C FORMAT STATEMENTS FOR PAGE HEADERS 90000 FORMAT (1H1) 90002 FORMAT (1H ) 90001 FORMAT (1H ,10X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90003 FORMAT (1H ,21X,11HVERSION 1.0) 90004 FORMAT (1H ,10X,38HFOR OFFICIAL USE ONLY - COPYRIGHT 1978) 90005 FORMAT (1H ,5X,4HTEST,5X,9HPASS/FAIL, 5X,8HCOMPUTED,8X,7HCORRECT) 90006 FORMAT (1H ,5X,46H----------------------------------------------) 90011 FORMAT (1H ,18X,17HSUBSET LEVEL TEST) C C FORMAT STATEMENTS FOR RUN SUMMARIES 90008 FORMAT (1H ,15X,I5,19H ERRORS ENCOUNTERED) 90009 FORMAT (1H ,15X,I5,13H TESTS PASSED) 90010 FORMAT (1H ,15X,I5,14H TESTS DELETED) C C FORMAT STATEMENTS FOR TEST RESULTS 80001 FORMAT (1H ,4X,I5,7X,4HPASS) 80002 FORMAT (1H ,4X,I5,7X,4HFAIL) 80003 FORMAT (1H ,4X,I5,7X,7HDELETED) 80004 FORMAT (1H ,4X,I5,7X,4HFAIL,10X,I6,9X,I6) 80005 FORMAT (1H ,4X,I5,7X,4HFAIL,4X,E12.5,3X,E12.5) C 90007 FORMAT (1H ,20X,20HEND OF PROGRAM FM017) END