C C COMMENT SECTION. C C FM016 C C THIS ROUTINE BEGINS A SERIES OF 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 LOGICAL LCTNT1, LCTNF1, LVTNTF, LVTNFT, LATN1A(2) LOGICAL LADN1D, LADN1B DIMENSION LADN1D(2), LADN1B(2) DATA LADN1D/.TRUE., .FALSE./ 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 = 139 C TEST 139 - THIS TESTS THE LOGICAL CONSTANT .TRUE. C IF (ICZERO) 31390, 1390, 31390 1390 CONTINUE IVON01=0 IF ( .TRUE. ) IVON01 = 1 GO TO 41390 31390 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41390, 1401, 41390 41390 IF ( IVON01 - 1 ) 21390, 11390, 21390 11390 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1401 21390 IVFAIL = IVFAIL + 1 IVCOMP=IVON01 IVCORR=1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1401 CONTINUE IVTNUM = 140 C TEST 140 - THIS TESTS THE LOGICAL CONSTANT .FALSE. C IF (ICZERO) 31400, 1400, 31400 1400 CONTINUE IVON01=1 IF ( .FALSE. ) IVON01=0 GO TO 41400 31400 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41400, 1411, 41400 41400 IF ( IVON01 - 1 ) 21400, 11400, 21400 11400 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1411 21400 IVFAIL = IVFAIL + 1 IVCOMP=IVON01 IVCORR=1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1411 CONTINUE IVTNUM = 141 C TEST 141 - THIS TESTS THE LOGICAL VARIABLE = .TRUE. C IF (ICZERO) 31410, 1410, 31410 1410 CONTINUE LCTNT1=.TRUE. IVON01 = 0 IF ( LCTNT1 ) IVON01 = 1 GO TO 41410 31410 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41410, 1421, 41410 41410 IF ( IVON01 - 1 ) 21410, 11410, 21410 11410 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1421 21410 IVFAIL = IVFAIL + 1 IVCOMP=IVON01 IVCORR=1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1421 CONTINUE IVTNUM = 142 C TEST 142 - THIS TESTS THE LOGICAL VARIABLE = .FALSE. C IF (ICZERO) 31420, 1420, 31420 1420 CONTINUE IVON01=1 LCTNF1=.FALSE. IF ( LCTNF1 ) IVON01=0 GO TO 41420 31420 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41420, 1431, 41420 41420 IF ( IVON01 - 1 ) 21420, 11420, 21420 11420 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1431 21420 IVFAIL = IVFAIL + 1 IVCOMP=IVON01 IVCORR=1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1431 CONTINUE IVTNUM = 143 C TEST 143 - THIS TESTS CHANGING THE VALUE OF A LOGICAL VARIABLE C FROM .TRUE. TO .FALSE. C IF (ICZERO) 31430, 1430, 31430 1430 CONTINUE LVTNTF=.TRUE. LVTNTF=.FALSE. IVON01 = 1 IF ( LVTNTF ) IVON01 = 0 GO TO 41430 31430 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41430, 1441, 41430 41430 IF ( IVON01 - 1 ) 21430, 11430, 21430 11430 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1441 21430 IVFAIL = IVFAIL + 1 IVCOMP=IVON01 IVCORR=1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1441 CONTINUE IVTNUM = 144 C TEST 144 - THIS TESTS CHANGING THE VALUE OF A LOGICAL VARIABLE C FROM .FALSE. TO .TRUE. C IF (ICZERO) 31440, 1440, 31440 1440 CONTINUE LVTNFT=.FALSE. LVTNFT=.TRUE. IVON01=0 IF ( LVTNFT ) IVON01=1 GO TO 41440 31440 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41440, 1451, 41440 41440 IF ( IVON01 - 1 ) 21440, 11440, 21440 11440 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1451 21440 IVFAIL = IVFAIL + 1 IVCOMP=IVON01 IVCORR=1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1451 CONTINUE IVTNUM = 145 C TEST 145 - TEST OF A LOGICAL ARRAY ELEMENT SET TO .TRUE. C IF (ICZERO) 31450, 1450, 31450 1450 CONTINUE LATN1A(1)=.TRUE. IVON01=0 IF ( LATN1A(1) ) IVON01=1 GO TO 41450 31450 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41450, 1461, 41450 41450 IF ( IVON01 - 1 ) 21450, 11450, 21450 11450 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1461 21450 IVFAIL = IVFAIL + 1 IVCOMP=IVON01 IVCORR=1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1461 CONTINUE IVTNUM = 146 C TEST 146 - TEST OF A LOGICAL ARRAY ELEMENT SET TO .FALSE. C IF (ICZERO) 31460, 1460, 31460 1460 CONTINUE LATN1A(2) = .FALSE. IVON01=1 IF ( LATN1A(2) ) IVON01=0 GO TO 41460 31460 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41460, 1471, 41460 41460 IF ( IVON01 - 1 ) 21460, 11460, 21460 11460 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1471 21460 IVFAIL = IVFAIL + 1 IVCOMP=IVON01 IVCORR=1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1471 CONTINUE IVTNUM = 147 C TEST 147 - TEST OF A LOGICAL ARRAY ELEMENT SET .TRUE. C IN A DATA INITIALIZATION STATEMENT. C IF (ICZERO) 31470, 1470, 31470 1470 CONTINUE IVON01=0 IF ( LADN1D(1) ) IVON01=1 GO TO 41470 31470 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41470, 1481, 41470 41470 IF ( IVON01 - 1 ) 21470, 11470, 21470 11470 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1481 21470 IVFAIL = IVFAIL + 1 IVCOMP=IVON01 IVCORR=1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1481 CONTINUE IVTNUM = 148 C TEST 148 - TEST OF A LOGICAL ARRAY ELEMENT SET .FALSE. C IN A DATA INITIALIZATION STATEMENT. C IF (ICZERO) 31480, 1480, 31480 1480 CONTINUE IVON01=1 IF ( LADN1D(2) ) IVON01=0 GO TO 41480 31480 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41480, 1491, 41480 41480 IF ( IVON01 - 1 ) 21480, 11480, 21480 11480 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1491 21480 IVFAIL = IVFAIL + 1 IVCOMP=IVON01 IVCORR=1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1491 CONTINUE IVTNUM = 149 C TEST 149 - LIKE TEST 145 EXCEPT THAT THE ARRAY DECLARATION WAS C IN A DIMENSION STATEMENT RATHER THAN IN THE TYPE STATEMENT. C IF (ICZERO) 31490, 1490, 31490 1490 CONTINUE LADN1B(1)=.TRUE. IVON01=0 IF ( LADN1B(1) ) IVON01=1 GO TO 41490 31490 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41490, 1501, 41490 41490 IF ( IVON01 - 1 ) 21490, 11490, 21490 11490 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1501 21490 IVFAIL = IVFAIL + 1 IVCOMP=IVON01 IVCORR=1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR C C FOR TESTS 150 THRU 156 THE TRUE PATH IS USED.. C 1501 CONTINUE IVTNUM = 150 C TEST 150 - RELATIONAL EXPRESSION WITH INTEGER CONSTANTS .LT. C IF (ICZERO) 31500, 1500, 31500 1500 CONTINUE IVON01=0 IF ( 3 .LT. 76 ) IVON01=1 GO TO 41500 31500 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41500, 1511, 41500 41500 IF ( IVON01 - 1 ) 21500, 11500, 21500 11500 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1511 21500 IVFAIL = IVFAIL + 1 IVCOMP=IVON01 IVCORR=1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1511 CONTINUE IVTNUM = 151 C TEST 151 - TEST WITH RELATIONAL EXPRESSION .LE. C IF (ICZERO) 31510, 1510, 31510 1510 CONTINUE IVON01=0 IF ( 587 .LE. 587 ) IVON01=1 GO TO 41510 31510 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41510, 1521, 41510 41510 IF ( IVON01 - 1 ) 21510, 11510, 21510 11510 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1521 21510 IVFAIL = IVFAIL + 1 IVCOMP=IVON01 IVCORR=1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1521 CONTINUE IVTNUM = 152 C TEST 152 - TEST OF RELATIONAL EXPRESSION WITH INTEGER CONSTANTS C RELATIONAL OPERATOR IS .EQ. C IF (ICZERO) 31520, 1520, 31520 1520 CONTINUE IVON01=0 IF ( 9999 .EQ. 9999 ) IVON01=1 GO TO 41520 31520 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41520, 1531, 41520 41520 IF ( IVON01 - 1 ) 21520, 11520, 21520 11520 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1531 21520 IVFAIL = IVFAIL + 1 IVCOMP=IVON01 IVCORR=1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1531 CONTINUE IVTNUM = 153 C TEST 153 - TEST OF RELATIONAL EXPRESSION WITH INTEGER CONSTANTS C RELATIONAL OPERATOR IS .NE. C IF (ICZERO) 31530, 1530, 31530 1530 CONTINUE IVON01=0 IF ( 0 .NE. 32767 ) IVON01=1 GO TO 41530 31530 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41530, 1541, 41530 41530 IF ( IVON01 - 1 ) 21530, 11530, 21530 11530 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1541 21530 IVFAIL = IVFAIL + 1 IVCOMP=IVON01 IVCORR=1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1541 CONTINUE IVTNUM = 154 C TEST 154 - TEST OF RELATIONAL EXPRESSION WITH INTEGER CONSTANTS C RELATIONAL OPERATOR IS .GT. C IF (ICZERO) 31540, 1540, 31540 1540 CONTINUE IVON01=0 IF ( 32767 .GT. 76 ) IVON01=1 GO TO 41540 31540 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41540, 1551, 41540 41540 IF ( IVON01 - 1 ) 21540, 11540, 21540 11540 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1551 21540 IVFAIL = IVFAIL + 1 IVCOMP=IVON01 IVCORR=1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1551 CONTINUE IVTNUM = 155 C TEST 155 - TEST OF RELATIONAL EXPRESSION WITH INTEGER CONSTANTS C RELATIONAL OPERATOR IS .GE. C IF (ICZERO) 31550, 1550, 31550 1550 CONTINUE IVON01=0 IF ( 32767 .GE. 76 ) IVON01=1 GO TO 41550 31550 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41550, 1561, 41550 41550 IF ( IVON01 - 1 ) 21550, 11550, 21550 11550 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1561 21550 IVFAIL = IVFAIL + 1 IVCOMP=IVON01 IVCORR=1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1561 CONTINUE IVTNUM = 156 C TEST 156 - TEST OF RELATIONAL EXPRESSION WITH INTEGER CONSTANTS C RELATIONAL OPERATOR IS .GE. C IF (ICZERO) 31560, 1560, 31560 1560 CONTINUE IVON01=0 IF ( 32767 .GE. 32767 ) IVON01=1 GO TO 41560 31560 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41560, 1571, 41560 41560 IF ( IVON01 - 1 ) 21560, 11560, 21560 11560 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1571 21560 IVFAIL = IVFAIL + 1 IVCOMP=IVON01 IVCORR=1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR C C FOR TESTS 157 THRU 162 THE FALSE PATH IS USED.. C 1571 CONTINUE IVTNUM = 157 C TEST 157 - RELATIONAL EXPRESSION INTEGER CONSTANTS FALSE PATH C RELATIONAL OPERATOR IS .LT. C IF (ICZERO) 31570, 1570, 31570 1570 CONTINUE IVON01=1 IF ( 76 .LT. 3 ) IVON01=0 GO TO 41570 31570 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41570, 1581, 41570 41570 IF ( IVON01 - 1 ) 21570, 11570, 21570 11570 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1581 21570 IVFAIL = IVFAIL + 1 IVCOMP=IVON01 IVCORR=1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1581 CONTINUE IVTNUM = 158 C TEST 158 - RELATIONAL EXPRESSION INTEGER CONSTANTS FALSE PATH C RELATIONAL OPERATOR IS .LE. C IF (ICZERO) 31580, 1580, 31580 1580 CONTINUE IVON01=1 IF ( 76 .LE. 3 ) IVON01=0 GO TO 41580 31580 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41580, 1591, 41580 41580 IF ( IVON01 - 1 ) 21580, 11580, 21580 11580 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1591 21580 IVFAIL = IVFAIL + 1 IVCOMP=IVON01 IVCORR=1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1591 CONTINUE IVTNUM = 159 C TEST 159 - RELATIONAL EXPRESSION INTEGER CONSTANTS FALSE PATH C RELATIONAL OPERATOR IS .EQ. C IF (ICZERO) 31590, 1590, 31590 1590 CONTINUE IVON01=1 IF ( 9999 .EQ. 587 ) IVON01=0 GO TO 41590 31590 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41590, 1601, 41590 41590 IF ( IVON01 - 1 ) 21590, 11590, 21590 11590 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1601 21590 IVFAIL = IVFAIL + 1 IVCOMP=IVON01 IVCORR=1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1601 CONTINUE IVTNUM = 160 C TEST 160 - RELATIONAL EXPRESSION INTEGER CONSTANTS FALSE PATH C RELATIONAL OPERATOR IS .NE. C IF (ICZERO) 31600, 1600, 31600 1600 CONTINUE IVON01=1 IF ( 3 .NE. 3 ) IVON01=0 GO TO 41600 31600 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41600, 1611, 41600 41600 IF ( IVON01 - 1 ) 21600, 11600, 21600 11600 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1611 21600 IVFAIL = IVFAIL + 1 IVCOMP=IVON01 IVCORR=1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1611 CONTINUE IVTNUM=161 C C TEST 161 - RELATIONAL EXPRESSION INTEGER CONSTANTS FALSE PATH C RELATIONAL OPERATOR IS .GT. C IF ( ICZERO ) 31610, 1610, 31610 1610 CONTINUE IVON01=1 IF ( 76 .GT. 32767 ) IVON01=0 GO TO 41610 31610 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF ( ICZERO ) 41610, 1621, 41610 41610 IF ( IVON01 - 1 ) 21610, 11610, 21610 11610 IVPASS = IVPASS+ 1 WRITE (I02,80001) IVTNUM GO TO 1621 21610 IVFAIL = IVFAIL + 1 IVCOMP=IVON01 IVCORR=1 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 1621 CONTINUE IVTNUM = 162 C C C **** TEST 162 **** C C TEST 162 - RELATIONAL EXPRESSION INTEGER CONSTANTS FALSE PATH C RELATIONAL OPERATOR IS .GE. C IF (ICZERO) 31620, 1620, 31620 1620 CONTINUE IVON01=1 IF ( 76 .GE. 32767 ) IVON01 = 0 GO TO 41620 31620 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41620, 1631, 41620 41620 IF ( IVON01 - 1 ) 21620, 11620, 21620 11620 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1631 21620 IVFAIL = IVFAIL + 1 IVCOMP=IVON01 IVCORR=1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1631 CONTINUE IVTNUM = 163 C C **** TEST 163 **** C TEST 163 - RELATIONAL EXPRESSION WITH INTEGER VARIABLE C REFERENCES (IC) (RO) (IVR). TRUE PATH. USE .LT. C C IF (ICZERO) 31630, 1630, 31630 1630 CONTINUE IVON01 = 76 IVON02 = 0 IF ( 3 .LT. IVON01 ) IVON02 = 1 GO TO 41630 31630 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41630, 1641, 41630 41630 IF ( IVON02 - 1 ) 21630, 11630, 21630 11630 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1641 21630 IVFAIL = IVFAIL + 1 IVCOMP = IVON02 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1641 CONTINUE IVTNUM = 164 C C **** TEST 164 **** C TEST 164 - RELATIONAL EXPRESSION. INTEGER VARIABLE REFERENCES. C TRUE PATH. .LE. C C IF (ICZERO) 31640, 1640, 31640 1640 CONTINUE IVON01 = 587 IVON02 = 0 IF ( 587 .LE. IVON01 ) IVON02 = 1 GO TO 41640 31640 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41640, 1651, 41640 41640 IF ( IVON02 - 1 ) 21640, 11640, 21640 11640 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1651 21640 IVFAIL = IVFAIL + 1 IVCOMP = IVON02 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1651 CONTINUE IVTNUM = 165 C C **** TEST 165 **** C TEST 165 - RELATIONAL EXPRESSION. INTEGER VARIABLE REFERENCE. C TRUE PATH. .EQ. C C IF (ICZERO) 31650, 1650, 31650 1650 CONTINUE IVON01 = 9999 IVON02 = 0 IF ( 9999 .EQ. IVON01 ) IVON02 = 1 GO TO 41650 31650 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41650, 1661, 41650 41650 IF ( IVON02 - 1 ) 21650, 11650, 21650 11650 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1661 21650 IVFAIL = IVFAIL + 1 IVCOMP = IVON02 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1661 CONTINUE IVTNUM = 166 C C **** TEST 166 **** C TEST 166 - RELATIONAL EXPRESSION. INTEGER VARIABLE REFERENCE. C TRUE PATH. .NE. C C IF (ICZERO) 31660, 1660, 31660 1660 CONTINUE IVON01 = 32767 IVON02 = 0 IF ( 0 .NE. IVON01 ) IVON02 = 1 GO TO 41660 31660 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41660, 1671, 41660 41660 IF ( IVON02 - 1 ) 21660, 11660, 21660 11660 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1671 21660 IVFAIL = IVFAIL + 1 IVCOMP = IVON02 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1671 CONTINUE IVTNUM = 167 C C **** TEST 167 **** C TEST 167 - RELATIONAL EXPRESSION. INTEGER VARIABLE REFERENCE. C TRUE PATH. .GT. C C IF (ICZERO) 31670, 1670, 31670 1670 CONTINUE IVON01 = 76 IVON02 = 0 IF ( 32767 .GT. IVON01 ) IVON02 = 1 GO TO 41670 31670 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41670, 1681, 41670 41670 IF ( IVON02 - 1 ) 21670, 11670, 21670 11670 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1681 21670 IVFAIL = IVFAIL + 1 IVCOMP = IVON02 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1681 CONTINUE IVTNUM = 168 C C **** TEST 168 **** C TEST 168 - RELATIONAL EXPRESSION. INTEGER VARIABLE REFERENCE. C TRUE PATH. .GE. C C IF (ICZERO) 31680, 1680, 31680 1680 CONTINUE IVON01 = 76 IVON02 = 0 IF ( 32767 .GE. IVON01 ) IVON02 = 1 GO TO 41680 31680 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41680, 1691, 41680 41680 IF ( IVON02 - 1 ) 21680, 11680, 21680 11680 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1691 21680 IVFAIL = IVFAIL + 1 IVCOMP = IVON02 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1691 CONTINUE IVTNUM = 169 C C **** TEST 169 **** C TEST 169 - RELATIONAL EXPRESSION. INTEGER VARIABLE REFERENCE. C TRUE PATH. .EQ. C C IF (ICZERO) 31690, 1690, 31690 1690 CONTINUE IVON01 = 32767 IVON02 = 0 IF ( 32767 .EQ. IVON01 ) IVON02 = 1 GO TO 41690 31690 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 41690, 1701, 41690 41690 IF ( IVON02 - 1 ) 21690, 11690, 21690 11690 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 1701 21690 IVFAIL = IVFAIL + 1 IVCOMP = IVON02 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 1701 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 FM016) END