PROGRAM FM016 C 00010016 C COMMENT SECTION. 00020016 C 00030016 C FM016 00040016 C 00050016 C THIS ROUTINE BEGINS A SERIES OF TESTS OF THE FORTRAN 00060016 C LOGICAL IF STATEMENT IN ALL OF THE VARIOUS FORMS. THE 00070016 C FOLLOWING LOGICAL OPERANDS ARE USED FOR THIS ROUTINE - LOGICAL 00080016 C CONSTANTS, LOGICAL VARIABLES, LOGICAL ARRAY ELEMENTS, AND 00090016 C ARITHMETIC EXPRESSIONS WITH VARIOUS RELATIONAL OPERATORS. BOTH 00100016 C THE TRUE AND FALSE BRANCHES ARE TESTED IN THE SERIES OF TESTS. 00110016 C 00120016 C REFERENCES 00130016 C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, 00140016 C X3.9-1978 00150016 C 00160016 C SECTION 4.7.1, LOGICAL CONSTANT 00170016 C SECTION 6, EXPRESSIONS 00180016 C SECTION 6.1, ARITHMETIC EXPRESSIONS 00190016 C SECTION 6.3, RELATIONAL EXPRESSIONS 00200016 C SECTION 6.4, LOGICAL EXPRESSIONS 00210016 C SECTION 6.6, EVALUATION OF EXPRESSIONS 00220016 C SECTION 10, ASSIGNMENT STATEMENTS 00230016 C SECTION 10.2, LOGICAL ASSIGNMENT STATEMENT 00240016 C SECTION 11.5, LOGICAL IF STATEMENT 00250016 C 00260016 LOGICAL LCTNT1, LCTNF1, LVTNTF, LVTNFT, LATN1A(2) 00270016 LOGICAL LADN1D, LADN1B 00280016 DIMENSION LADN1D(2), LADN1B(2) 00290016 DATA LADN1D/.TRUE., .FALSE./ 00300016 C 00310016 C ********************************************************** 00320016 C 00330016 C A COMPILER VALIDATION SYSTEM FOR THE FORTRAN LANGUAGE 00340016 C BASED ON SPECIFICATIONS AS DEFINED IN AMERICAN NATIONAL STANDARD 00350016 C PROGRAMMING LANGUAGE FORTRAN X3.9-1978, HAS BEEN DEVELOPED BY THE 00360016 C FEDERAL COBOL COMPILER TESTING SERVICE. THE FORTRAN COMPILER 00370016 C VALIDATION SYSTEM (FCVS) CONSISTS OF AUDIT ROUTINES, THEIR RELATED00380016 C DATA, AND AN EXECUTIVE SYSTEM. EACH AUDIT ROUTINE IS A FORTRAN 00390016 C PROGRAM, SUBPROGRAM OR FUNCTION WHICH INCLUDES TESTS OF SPECIFIC 00400016 C LANGUAGE ELEMENTS AND SUPPORTING PROCEDURES INDICATING THE RESULT 00410016 C OF EXECUTING THESE TESTS. 00420016 C 00430016 C THIS PARTICULAR PROGRAM/SUBPROGRAM/FUNCTION CONTAINS FEATURES 00440016 C FOUND ONLY IN THE SUBSET AS DEFINED IN X3.9-1978. 00450016 C 00460016 C SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO - 00470016 C 00480016 C NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY 00490016 C SOFTWARE STANDARDS VALIDATION GROUP 00500016 C BUILDING 225 RM A266 00510016 C GAITHERSBURG, MD 20899 00520016 C ********************************************************** 00530016 C 00540016 C 00550016 C 00560016 C INITIALIZATION SECTION 00570016 C 00580016 C INITIALIZE CONSTANTS 00590016 C ************** 00600016 C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. 00610016 I01 = 5 00620016 C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. 00630016 I02 = 6 00640016 C SYSTEM ENVIRONMENT SECTION 00650016 C 00660016 CX010 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-010 CONTROL CARD. 00670016 C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 00680016 C (UNIT NUMBER FOR CARD READER). 00690016 CX011 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-011 CONTROL CARD. 00700016 C THE CX011 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL 00710016 C FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX010 ABOVE. 00720016 C 00730016 CX020 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-020 CONTROL CARD. 00740016 C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02 = 6 00750016 C (UNIT NUMBER FOR PRINTER). 00760016 CX021 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-021 CONTROL CARD. 00770016 C THE CX021 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL 00780016 C FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX020 ABOVE. 00790016 C 00800016 IVPASS=0 00810016 IVFAIL=0 00820016 IVDELE=0 00830016 ICZERO=0 00840016 C 00850016 C WRITE PAGE HEADERS 00860016 WRITE (I02,90000) 00870016 WRITE (I02,90001) 00880016 WRITE (I02,90002) 00890016 WRITE (I02, 90002) 00900016 WRITE (I02,90003) 00910016 WRITE (I02,90002) 00920016 WRITE (I02,90004) 00930016 WRITE (I02,90002) 00940016 WRITE (I02,90011) 00950016 WRITE (I02,90002) 00960016 WRITE (I02,90002) 00970016 WRITE (I02,90005) 00980016 WRITE (I02,90006) 00990016 WRITE (I02,90002) 01000016 IVTNUM = 139 01010016 C TEST 139 - THIS TESTS THE LOGICAL CONSTANT .TRUE. 01020016 C 01030016 IF (ICZERO) 31390, 1390, 31390 01040016 1390 CONTINUE 01050016 IVON01=0 01060016 IF ( .TRUE. ) IVON01 = 1 01070016 GO TO 41390 01080016 31390 IVDELE = IVDELE + 1 01090016 WRITE (I02,80003) IVTNUM 01100016 IF (ICZERO) 41390, 1401, 41390 01110016 41390 IF ( IVON01 - 1 ) 21390, 11390, 21390 01120016 11390 IVPASS = IVPASS + 1 01130016 WRITE (I02,80001) IVTNUM 01140016 GO TO 1401 01150016 21390 IVFAIL = IVFAIL + 1 01160016 IVCOMP=IVON01 01170016 IVCORR=1 01180016 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 01190016 1401 CONTINUE 01200016 IVTNUM = 140 01210016 C TEST 140 - THIS TESTS THE LOGICAL CONSTANT .FALSE. 01220016 C 01230016 IF (ICZERO) 31400, 1400, 31400 01240016 1400 CONTINUE 01250016 IVON01=1 01260016 IF ( .FALSE. ) IVON01=0 01270016 GO TO 41400 01280016 31400 IVDELE = IVDELE + 1 01290016 WRITE (I02,80003) IVTNUM 01300016 IF (ICZERO) 41400, 1411, 41400 01310016 41400 IF ( IVON01 - 1 ) 21400, 11400, 21400 01320016 11400 IVPASS = IVPASS + 1 01330016 WRITE (I02,80001) IVTNUM 01340016 GO TO 1411 01350016 21400 IVFAIL = IVFAIL + 1 01360016 IVCOMP=IVON01 01370016 IVCORR=1 01380016 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 01390016 1411 CONTINUE 01400016 IVTNUM = 141 01410016 C TEST 141 - THIS TESTS THE LOGICAL VARIABLE = .TRUE. 01420016 C 01430016 IF (ICZERO) 31410, 1410, 31410 01440016 1410 CONTINUE 01450016 LCTNT1=.TRUE. 01460016 IVON01 = 0 01470016 IF ( LCTNT1 ) IVON01 = 1 01480016 GO TO 41410 01490016 31410 IVDELE = IVDELE + 1 01500016 WRITE (I02,80003) IVTNUM 01510016 IF (ICZERO) 41410, 1421, 41410 01520016 41410 IF ( IVON01 - 1 ) 21410, 11410, 21410 01530016 11410 IVPASS = IVPASS + 1 01540016 WRITE (I02,80001) IVTNUM 01550016 GO TO 1421 01560016 21410 IVFAIL = IVFAIL + 1 01570016 IVCOMP=IVON01 01580016 IVCORR=1 01590016 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 01600016 1421 CONTINUE 01610016 IVTNUM = 142 01620016 C TEST 142 - THIS TESTS THE LOGICAL VARIABLE = .FALSE. 01630016 C 01640016 IF (ICZERO) 31420, 1420, 31420 01650016 1420 CONTINUE 01660016 IVON01=1 01670016 LCTNF1=.FALSE. 01680016 IF ( LCTNF1 ) IVON01=0 01690016 GO TO 41420 01700016 31420 IVDELE = IVDELE + 1 01710016 WRITE (I02,80003) IVTNUM 01720016 IF (ICZERO) 41420, 1431, 41420 01730016 41420 IF ( IVON01 - 1 ) 21420, 11420, 21420 01740016 11420 IVPASS = IVPASS + 1 01750016 WRITE (I02,80001) IVTNUM 01760016 GO TO 1431 01770016 21420 IVFAIL = IVFAIL + 1 01780016 IVCOMP=IVON01 01790016 IVCORR=1 01800016 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 01810016 1431 CONTINUE 01820016 IVTNUM = 143 01830016 C TEST 143 - THIS TESTS CHANGING THE VALUE OF A LOGICAL VARIABLE 01840016 C FROM .TRUE. TO .FALSE. 01850016 C 01860016 IF (ICZERO) 31430, 1430, 31430 01870016 1430 CONTINUE 01880016 LVTNTF=.TRUE. 01890016 LVTNTF=.FALSE. 01900016 IVON01 = 1 01910016 IF ( LVTNTF ) IVON01 = 0 01920016 GO TO 41430 01930016 31430 IVDELE = IVDELE + 1 01940016 WRITE (I02,80003) IVTNUM 01950016 IF (ICZERO) 41430, 1441, 41430 01960016 41430 IF ( IVON01 - 1 ) 21430, 11430, 21430 01970016 11430 IVPASS = IVPASS + 1 01980016 WRITE (I02,80001) IVTNUM 01990016 GO TO 1441 02000016 21430 IVFAIL = IVFAIL + 1 02010016 IVCOMP=IVON01 02020016 IVCORR=1 02030016 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 02040016 1441 CONTINUE 02050016 IVTNUM = 144 02060016 C TEST 144 - THIS TESTS CHANGING THE VALUE OF A LOGICAL VARIABLE 02070016 C FROM .FALSE. TO .TRUE. 02080016 C 02090016 IF (ICZERO) 31440, 1440, 31440 02100016 1440 CONTINUE 02110016 LVTNFT=.FALSE. 02120016 LVTNFT=.TRUE. 02130016 IVON01=0 02140016 IF ( LVTNFT ) IVON01=1 02150016 GO TO 41440 02160016 31440 IVDELE = IVDELE + 1 02170016 WRITE (I02,80003) IVTNUM 02180016 IF (ICZERO) 41440, 1451, 41440 02190016 41440 IF ( IVON01 - 1 ) 21440, 11440, 21440 02200016 11440 IVPASS = IVPASS + 1 02210016 WRITE (I02,80001) IVTNUM 02220016 GO TO 1451 02230016 21440 IVFAIL = IVFAIL + 1 02240016 IVCOMP=IVON01 02250016 IVCORR=1 02260016 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 02270016 1451 CONTINUE 02280016 IVTNUM = 145 02290016 C TEST 145 - TEST OF A LOGICAL ARRAY ELEMENT SET TO .TRUE. 02300016 C 02310016 IF (ICZERO) 31450, 1450, 31450 02320016 1450 CONTINUE 02330016 LATN1A(1)=.TRUE. 02340016 IVON01=0 02350016 IF ( LATN1A(1) ) IVON01=1 02360016 GO TO 41450 02370016 31450 IVDELE = IVDELE + 1 02380016 WRITE (I02,80003) IVTNUM 02390016 IF (ICZERO) 41450, 1461, 41450 02400016 41450 IF ( IVON01 - 1 ) 21450, 11450, 21450 02410016 11450 IVPASS = IVPASS + 1 02420016 WRITE (I02,80001) IVTNUM 02430016 GO TO 1461 02440016 21450 IVFAIL = IVFAIL + 1 02450016 IVCOMP=IVON01 02460016 IVCORR=1 02470016 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 02480016 1461 CONTINUE 02490016 IVTNUM = 146 02500016 C TEST 146 - TEST OF A LOGICAL ARRAY ELEMENT SET TO .FALSE. 02510016 C 02520016 IF (ICZERO) 31460, 1460, 31460 02530016 1460 CONTINUE 02540016 LATN1A(2) = .FALSE. 02550016 IVON01=1 02560016 IF ( LATN1A(2) ) IVON01=0 02570016 GO TO 41460 02580016 31460 IVDELE = IVDELE + 1 02590016 WRITE (I02,80003) IVTNUM 02600016 IF (ICZERO) 41460, 1471, 41460 02610016 41460 IF ( IVON01 - 1 ) 21460, 11460, 21460 02620016 11460 IVPASS = IVPASS + 1 02630016 WRITE (I02,80001) IVTNUM 02640016 GO TO 1471 02650016 21460 IVFAIL = IVFAIL + 1 02660016 IVCOMP=IVON01 02670016 IVCORR=1 02680016 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 02690016 1471 CONTINUE 02700016 IVTNUM = 147 02710016 C TEST 147 - TEST OF A LOGICAL ARRAY ELEMENT SET .TRUE. 02720016 C IN A DATA INITIALIZATION STATEMENT. 02730016 C 02740016 IF (ICZERO) 31470, 1470, 31470 02750016 1470 CONTINUE 02760016 IVON01=0 02770016 IF ( LADN1D(1) ) IVON01=1 02780016 GO TO 41470 02790016 31470 IVDELE = IVDELE + 1 02800016 WRITE (I02,80003) IVTNUM 02810016 IF (ICZERO) 41470, 1481, 41470 02820016 41470 IF ( IVON01 - 1 ) 21470, 11470, 21470 02830016 11470 IVPASS = IVPASS + 1 02840016 WRITE (I02,80001) IVTNUM 02850016 GO TO 1481 02860016 21470 IVFAIL = IVFAIL + 1 02870016 IVCOMP=IVON01 02880016 IVCORR=1 02890016 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 02900016 1481 CONTINUE 02910016 IVTNUM = 148 02920016 C TEST 148 - TEST OF A LOGICAL ARRAY ELEMENT SET .FALSE. 02930016 C IN A DATA INITIALIZATION STATEMENT. 02940016 C 02950016 IF (ICZERO) 31480, 1480, 31480 02960016 1480 CONTINUE 02970016 IVON01=1 02980016 IF ( LADN1D(2) ) IVON01=0 02990016 GO TO 41480 03000016 31480 IVDELE = IVDELE + 1 03010016 WRITE (I02,80003) IVTNUM 03020016 IF (ICZERO) 41480, 1491, 41480 03030016 41480 IF ( IVON01 - 1 ) 21480, 11480, 21480 03040016 11480 IVPASS = IVPASS + 1 03050016 WRITE (I02,80001) IVTNUM 03060016 GO TO 1491 03070016 21480 IVFAIL = IVFAIL + 1 03080016 IVCOMP=IVON01 03090016 IVCORR=1 03100016 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 03110016 1491 CONTINUE 03120016 IVTNUM = 149 03130016 C TEST 149 - LIKE TEST 145 EXCEPT THAT THE ARRAY DECLARATION WAS 03140016 C IN A DIMENSION STATEMENT RATHER THAN IN THE TYPE STATEMENT. 03150016 C 03160016 IF (ICZERO) 31490, 1490, 31490 03170016 1490 CONTINUE 03180016 LADN1B(1)=.TRUE. 03190016 IVON01=0 03200016 IF ( LADN1B(1) ) IVON01=1 03210016 GO TO 41490 03220016 31490 IVDELE = IVDELE + 1 03230016 WRITE (I02,80003) IVTNUM 03240016 IF (ICZERO) 41490, 1501, 41490 03250016 41490 IF ( IVON01 - 1 ) 21490, 11490, 21490 03260016 11490 IVPASS = IVPASS + 1 03270016 WRITE (I02,80001) IVTNUM 03280016 GO TO 1501 03290016 21490 IVFAIL = IVFAIL + 1 03300016 IVCOMP=IVON01 03310016 IVCORR=1 03320016 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 03330016 C 03340016 C FOR TESTS 150 THRU 156 THE TRUE PATH IS USED.. 03350016 C 03360016 1501 CONTINUE 03370016 IVTNUM = 150 03380016 C TEST 150 - RELATIONAL EXPRESSION WITH INTEGER CONSTANTS .LT. 03390016 C 03400016 IF (ICZERO) 31500, 1500, 31500 03410016 1500 CONTINUE 03420016 IVON01=0 03430016 IF ( 3 .LT. 76 ) IVON01=1 03440016 GO TO 41500 03450016 31500 IVDELE = IVDELE + 1 03460016 WRITE (I02,80003) IVTNUM 03470016 IF (ICZERO) 41500, 1511, 41500 03480016 41500 IF ( IVON01 - 1 ) 21500, 11500, 21500 03490016 11500 IVPASS = IVPASS + 1 03500016 WRITE (I02,80001) IVTNUM 03510016 GO TO 1511 03520016 21500 IVFAIL = IVFAIL + 1 03530016 IVCOMP=IVON01 03540016 IVCORR=1 03550016 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 03560016 1511 CONTINUE 03570016 IVTNUM = 151 03580016 C TEST 151 - TEST WITH RELATIONAL EXPRESSION .LE. 03590016 C 03600016 IF (ICZERO) 31510, 1510, 31510 03610016 1510 CONTINUE 03620016 IVON01=0 03630016 IF ( 587 .LE. 587 ) IVON01=1 03640016 GO TO 41510 03650016 31510 IVDELE = IVDELE + 1 03660016 WRITE (I02,80003) IVTNUM 03670016 IF (ICZERO) 41510, 1521, 41510 03680016 41510 IF ( IVON01 - 1 ) 21510, 11510, 21510 03690016 11510 IVPASS = IVPASS + 1 03700016 WRITE (I02,80001) IVTNUM 03710016 GO TO 1521 03720016 21510 IVFAIL = IVFAIL + 1 03730016 IVCOMP=IVON01 03740016 IVCORR=1 03750016 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 03760016 1521 CONTINUE 03770016 IVTNUM = 152 03780016 C TEST 152 - TEST OF RELATIONAL EXPRESSION WITH INTEGER CONSTANTS 03790016 C RELATIONAL OPERATOR IS .EQ. 03800016 C 03810016 IF (ICZERO) 31520, 1520, 31520 03820016 1520 CONTINUE 03830016 IVON01=0 03840016 IF ( 9999 .EQ. 9999 ) IVON01=1 03850016 GO TO 41520 03860016 31520 IVDELE = IVDELE + 1 03870016 WRITE (I02,80003) IVTNUM 03880016 IF (ICZERO) 41520, 1531, 41520 03890016 41520 IF ( IVON01 - 1 ) 21520, 11520, 21520 03900016 11520 IVPASS = IVPASS + 1 03910016 WRITE (I02,80001) IVTNUM 03920016 GO TO 1531 03930016 21520 IVFAIL = IVFAIL + 1 03940016 IVCOMP=IVON01 03950016 IVCORR=1 03960016 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 03970016 1531 CONTINUE 03980016 IVTNUM = 153 03990016 C TEST 153 - TEST OF RELATIONAL EXPRESSION WITH INTEGER CONSTANTS 04000016 C RELATIONAL OPERATOR IS .NE. 04010016 C 04020016 IF (ICZERO) 31530, 1530, 31530 04030016 1530 CONTINUE 04040016 IVON01=0 04050016 IF ( 0 .NE. 32767 ) IVON01=1 04060016 GO TO 41530 04070016 31530 IVDELE = IVDELE + 1 04080016 WRITE (I02,80003) IVTNUM 04090016 IF (ICZERO) 41530, 1541, 41530 04100016 41530 IF ( IVON01 - 1 ) 21530, 11530, 21530 04110016 11530 IVPASS = IVPASS + 1 04120016 WRITE (I02,80001) IVTNUM 04130016 GO TO 1541 04140016 21530 IVFAIL = IVFAIL + 1 04150016 IVCOMP=IVON01 04160016 IVCORR=1 04170016 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 04180016 1541 CONTINUE 04190016 IVTNUM = 154 04200016 C TEST 154 - TEST OF RELATIONAL EXPRESSION WITH INTEGER CONSTANTS 04210016 C RELATIONAL OPERATOR IS .GT. 04220016 C 04230016 IF (ICZERO) 31540, 1540, 31540 04240016 1540 CONTINUE 04250016 IVON01=0 04260016 IF ( 32767 .GT. 76 ) IVON01=1 04270016 GO TO 41540 04280016 31540 IVDELE = IVDELE + 1 04290016 WRITE (I02,80003) IVTNUM 04300016 IF (ICZERO) 41540, 1551, 41540 04310016 41540 IF ( IVON01 - 1 ) 21540, 11540, 21540 04320016 11540 IVPASS = IVPASS + 1 04330016 WRITE (I02,80001) IVTNUM 04340016 GO TO 1551 04350016 21540 IVFAIL = IVFAIL + 1 04360016 IVCOMP=IVON01 04370016 IVCORR=1 04380016 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 04390016 1551 CONTINUE 04400016 IVTNUM = 155 04410016 C TEST 155 - TEST OF RELATIONAL EXPRESSION WITH INTEGER CONSTANTS 04420016 C RELATIONAL OPERATOR IS .GE. 04430016 C 04440016 IF (ICZERO) 31550, 1550, 31550 04450016 1550 CONTINUE 04460016 IVON01=0 04470016 IF ( 32767 .GE. 76 ) IVON01=1 04480016 GO TO 41550 04490016 31550 IVDELE = IVDELE + 1 04500016 WRITE (I02,80003) IVTNUM 04510016 IF (ICZERO) 41550, 1561, 41550 04520016 41550 IF ( IVON01 - 1 ) 21550, 11550, 21550 04530016 11550 IVPASS = IVPASS + 1 04540016 WRITE (I02,80001) IVTNUM 04550016 GO TO 1561 04560016 21550 IVFAIL = IVFAIL + 1 04570016 IVCOMP=IVON01 04580016 IVCORR=1 04590016 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 04600016 1561 CONTINUE 04610016 IVTNUM = 156 04620016 C TEST 156 - TEST OF RELATIONAL EXPRESSION WITH INTEGER CONSTANTS 04630016 C RELATIONAL OPERATOR IS .GE. 04640016 C 04650016 IF (ICZERO) 31560, 1560, 31560 04660016 1560 CONTINUE 04670016 IVON01=0 04680016 IF ( 32767 .GE. 32767 ) IVON01=1 04690016 GO TO 41560 04700016 31560 IVDELE = IVDELE + 1 04710016 WRITE (I02,80003) IVTNUM 04720016 IF (ICZERO) 41560, 1571, 41560 04730016 41560 IF ( IVON01 - 1 ) 21560, 11560, 21560 04740016 11560 IVPASS = IVPASS + 1 04750016 WRITE (I02,80001) IVTNUM 04760016 GO TO 1571 04770016 21560 IVFAIL = IVFAIL + 1 04780016 IVCOMP=IVON01 04790016 IVCORR=1 04800016 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 04810016 C 04820016 C FOR TESTS 157 THRU 162 THE FALSE PATH IS USED.. 04830016 C 04840016 1571 CONTINUE 04850016 IVTNUM = 157 04860016 C TEST 157 - RELATIONAL EXPRESSION INTEGER CONSTANTS FALSE PATH 04870016 C RELATIONAL OPERATOR IS .LT. 04880016 C 04890016 IF (ICZERO) 31570, 1570, 31570 04900016 1570 CONTINUE 04910016 IVON01=1 04920016 IF ( 76 .LT. 3 ) IVON01=0 04930016 GO TO 41570 04940016 31570 IVDELE = IVDELE + 1 04950016 WRITE (I02,80003) IVTNUM 04960016 IF (ICZERO) 41570, 1581, 41570 04970016 41570 IF ( IVON01 - 1 ) 21570, 11570, 21570 04980016 11570 IVPASS = IVPASS + 1 04990016 WRITE (I02,80001) IVTNUM 05000016 GO TO 1581 05010016 21570 IVFAIL = IVFAIL + 1 05020016 IVCOMP=IVON01 05030016 IVCORR=1 05040016 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 05050016 1581 CONTINUE 05060016 IVTNUM = 158 05070016 C TEST 158 - RELATIONAL EXPRESSION INTEGER CONSTANTS FALSE PATH 05080016 C RELATIONAL OPERATOR IS .LE. 05090016 C 05100016 IF (ICZERO) 31580, 1580, 31580 05110016 1580 CONTINUE 05120016 IVON01=1 05130016 IF ( 76 .LE. 3 ) IVON01=0 05140016 GO TO 41580 05150016 31580 IVDELE = IVDELE + 1 05160016 WRITE (I02,80003) IVTNUM 05170016 IF (ICZERO) 41580, 1591, 41580 05180016 41580 IF ( IVON01 - 1 ) 21580, 11580, 21580 05190016 11580 IVPASS = IVPASS + 1 05200016 WRITE (I02,80001) IVTNUM 05210016 GO TO 1591 05220016 21580 IVFAIL = IVFAIL + 1 05230016 IVCOMP=IVON01 05240016 IVCORR=1 05250016 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 05260016 1591 CONTINUE 05270016 IVTNUM = 159 05280016 C TEST 159 - RELATIONAL EXPRESSION INTEGER CONSTANTS FALSE PATH 05290016 C RELATIONAL OPERATOR IS .EQ. 05300016 C 05310016 IF (ICZERO) 31590, 1590, 31590 05320016 1590 CONTINUE 05330016 IVON01=1 05340016 IF ( 9999 .EQ. 587 ) IVON01=0 05350016 GO TO 41590 05360016 31590 IVDELE = IVDELE + 1 05370016 WRITE (I02,80003) IVTNUM 05380016 IF (ICZERO) 41590, 1601, 41590 05390016 41590 IF ( IVON01 - 1 ) 21590, 11590, 21590 05400016 11590 IVPASS = IVPASS + 1 05410016 WRITE (I02,80001) IVTNUM 05420016 GO TO 1601 05430016 21590 IVFAIL = IVFAIL + 1 05440016 IVCOMP=IVON01 05450016 IVCORR=1 05460016 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 05470016 1601 CONTINUE 05480016 IVTNUM = 160 05490016 C TEST 160 - RELATIONAL EXPRESSION INTEGER CONSTANTS FALSE PATH 05500016 C RELATIONAL OPERATOR IS .NE. 05510016 C 05520016 IF (ICZERO) 31600, 1600, 31600 05530016 1600 CONTINUE 05540016 IVON01=1 05550016 IF ( 3 .NE. 3 ) IVON01=0 05560016 GO TO 41600 05570016 31600 IVDELE = IVDELE + 1 05580016 WRITE (I02,80003) IVTNUM 05590016 IF (ICZERO) 41600, 1611, 41600 05600016 41600 IF ( IVON01 - 1 ) 21600, 11600, 21600 05610016 11600 IVPASS = IVPASS + 1 05620016 WRITE (I02,80001) IVTNUM 05630016 GO TO 1611 05640016 21600 IVFAIL = IVFAIL + 1 05650016 IVCOMP=IVON01 05660016 IVCORR=1 05670016 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 05680016 1611 CONTINUE 05690016 IVTNUM=161 05700016 C 05710016 C TEST 161 - RELATIONAL EXPRESSION INTEGER CONSTANTS FALSE PATH 05720016 C RELATIONAL OPERATOR IS .GT. 05730016 C 05740016 IF ( ICZERO ) 31610, 1610, 31610 05750016 1610 CONTINUE 05760016 IVON01=1 05770016 IF ( 76 .GT. 32767 ) IVON01=0 05780016 GO TO 41610 05790016 31610 IVDELE = IVDELE + 1 05800016 WRITE (I02,80003) IVTNUM 05810016 IF ( ICZERO ) 41610, 1621, 41610 05820016 41610 IF ( IVON01 - 1 ) 21610, 11610, 21610 05830016 11610 IVPASS = IVPASS+ 1 05840016 WRITE (I02,80001) IVTNUM 05850016 GO TO 1621 05860016 21610 IVFAIL = IVFAIL + 1 05870016 IVCOMP=IVON01 05880016 IVCORR=1 05890016 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 05900016 1621 CONTINUE 05910016 IVTNUM = 162 05920016 C 05930016 C 05940016 C **** TEST 162 **** 05950016 C 05960016 C TEST 162 - RELATIONAL EXPRESSION INTEGER CONSTANTS FALSE PATH 05970016 C RELATIONAL OPERATOR IS .GE. 05980016 C 05990016 IF (ICZERO) 31620, 1620, 31620 06000016 1620 CONTINUE 06010016 IVON01=1 06020016 IF ( 76 .GE. 32767 ) IVON01 = 0 06030016 GO TO 41620 06040016 31620 IVDELE = IVDELE + 1 06050016 WRITE (I02,80003) IVTNUM 06060016 IF (ICZERO) 41620, 1631, 41620 06070016 41620 IF ( IVON01 - 1 ) 21620, 11620, 21620 06080016 11620 IVPASS = IVPASS + 1 06090016 WRITE (I02,80001) IVTNUM 06100016 GO TO 1631 06110016 21620 IVFAIL = IVFAIL + 1 06120016 IVCOMP=IVON01 06130016 IVCORR=1 06140016 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 06150016 1631 CONTINUE 06160016 IVTNUM = 163 06170016 C 06180016 C **** TEST 163 **** 06190016 C TEST 163 - RELATIONAL EXPRESSION WITH INTEGER VARIABLE 06200016 C REFERENCES (IC) (RO) (IVR). TRUE PATH. USE .LT. 06210016 C 06220016 C 06230016 IF (ICZERO) 31630, 1630, 31630 06240016 1630 CONTINUE 06250016 IVON01 = 76 06260016 IVON02 = 0 06270016 IF ( 3 .LT. IVON01 ) IVON02 = 1 06280016 GO TO 41630 06290016 31630 IVDELE = IVDELE + 1 06300016 WRITE (I02,80003) IVTNUM 06310016 IF (ICZERO) 41630, 1641, 41630 06320016 41630 IF ( IVON02 - 1 ) 21630, 11630, 21630 06330016 11630 IVPASS = IVPASS + 1 06340016 WRITE (I02,80001) IVTNUM 06350016 GO TO 1641 06360016 21630 IVFAIL = IVFAIL + 1 06370016 IVCOMP = IVON02 06380016 IVCORR = 1 06390016 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 06400016 1641 CONTINUE 06410016 IVTNUM = 164 06420016 C 06430016 C **** TEST 164 **** 06440016 C TEST 164 - RELATIONAL EXPRESSION. INTEGER VARIABLE REFERENCES. 06450016 C TRUE PATH. .LE. 06460016 C 06470016 C 06480016 IF (ICZERO) 31640, 1640, 31640 06490016 1640 CONTINUE 06500016 IVON01 = 587 06510016 IVON02 = 0 06520016 IF ( 587 .LE. IVON01 ) IVON02 = 1 06530016 GO TO 41640 06540016 31640 IVDELE = IVDELE + 1 06550016 WRITE (I02,80003) IVTNUM 06560016 IF (ICZERO) 41640, 1651, 41640 06570016 41640 IF ( IVON02 - 1 ) 21640, 11640, 21640 06580016 11640 IVPASS = IVPASS + 1 06590016 WRITE (I02,80001) IVTNUM 06600016 GO TO 1651 06610016 21640 IVFAIL = IVFAIL + 1 06620016 IVCOMP = IVON02 06630016 IVCORR = 1 06640016 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 06650016 1651 CONTINUE 06660016 IVTNUM = 165 06670016 C 06680016 C **** TEST 165 **** 06690016 C TEST 165 - RELATIONAL EXPRESSION. INTEGER VARIABLE REFERENCE. 06700016 C TRUE PATH. .EQ. 06710016 C 06720016 C 06730016 IF (ICZERO) 31650, 1650, 31650 06740016 1650 CONTINUE 06750016 IVON01 = 9999 06760016 IVON02 = 0 06770016 IF ( 9999 .EQ. IVON01 ) IVON02 = 1 06780016 GO TO 41650 06790016 31650 IVDELE = IVDELE + 1 06800016 WRITE (I02,80003) IVTNUM 06810016 IF (ICZERO) 41650, 1661, 41650 06820016 41650 IF ( IVON02 - 1 ) 21650, 11650, 21650 06830016 11650 IVPASS = IVPASS + 1 06840016 WRITE (I02,80001) IVTNUM 06850016 GO TO 1661 06860016 21650 IVFAIL = IVFAIL + 1 06870016 IVCOMP = IVON02 06880016 IVCORR = 1 06890016 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 06900016 1661 CONTINUE 06910016 IVTNUM = 166 06920016 C 06930016 C **** TEST 166 **** 06940016 C TEST 166 - RELATIONAL EXPRESSION. INTEGER VARIABLE REFERENCE. 06950016 C TRUE PATH. .NE. 06960016 C 06970016 C 06980016 IF (ICZERO) 31660, 1660, 31660 06990016 1660 CONTINUE 07000016 IVON01 = 32767 07010016 IVON02 = 0 07020016 IF ( 0 .NE. IVON01 ) IVON02 = 1 07030016 GO TO 41660 07040016 31660 IVDELE = IVDELE + 1 07050016 WRITE (I02,80003) IVTNUM 07060016 IF (ICZERO) 41660, 1671, 41660 07070016 41660 IF ( IVON02 - 1 ) 21660, 11660, 21660 07080016 11660 IVPASS = IVPASS + 1 07090016 WRITE (I02,80001) IVTNUM 07100016 GO TO 1671 07110016 21660 IVFAIL = IVFAIL + 1 07120016 IVCOMP = IVON02 07130016 IVCORR = 1 07140016 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 07150016 1671 CONTINUE 07160016 IVTNUM = 167 07170016 C 07180016 C **** TEST 167 **** 07190016 C TEST 167 - RELATIONAL EXPRESSION. INTEGER VARIABLE REFERENCE. 07200016 C TRUE PATH. .GT. 07210016 C 07220016 C 07230016 IF (ICZERO) 31670, 1670, 31670 07240016 1670 CONTINUE 07250016 IVON01 = 76 07260016 IVON02 = 0 07270016 IF ( 32767 .GT. IVON01 ) IVON02 = 1 07280016 GO TO 41670 07290016 31670 IVDELE = IVDELE + 1 07300016 WRITE (I02,80003) IVTNUM 07310016 IF (ICZERO) 41670, 1681, 41670 07320016 41670 IF ( IVON02 - 1 ) 21670, 11670, 21670 07330016 11670 IVPASS = IVPASS + 1 07340016 WRITE (I02,80001) IVTNUM 07350016 GO TO 1681 07360016 21670 IVFAIL = IVFAIL + 1 07370016 IVCOMP = IVON02 07380016 IVCORR = 1 07390016 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 07400016 1681 CONTINUE 07410016 IVTNUM = 168 07420016 C 07430016 C **** TEST 168 **** 07440016 C TEST 168 - RELATIONAL EXPRESSION. INTEGER VARIABLE REFERENCE. 07450016 C TRUE PATH. .GE. 07460016 C 07470016 C 07480016 IF (ICZERO) 31680, 1680, 31680 07490016 1680 CONTINUE 07500016 IVON01 = 76 07510016 IVON02 = 0 07520016 IF ( 32767 .GE. IVON01 ) IVON02 = 1 07530016 GO TO 41680 07540016 31680 IVDELE = IVDELE + 1 07550016 WRITE (I02,80003) IVTNUM 07560016 IF (ICZERO) 41680, 1691, 41680 07570016 41680 IF ( IVON02 - 1 ) 21680, 11680, 21680 07580016 11680 IVPASS = IVPASS + 1 07590016 WRITE (I02,80001) IVTNUM 07600016 GO TO 1691 07610016 21680 IVFAIL = IVFAIL + 1 07620016 IVCOMP = IVON02 07630016 IVCORR = 1 07640016 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 07650016 1691 CONTINUE 07660016 IVTNUM = 169 07670016 C 07680016 C **** TEST 169 **** 07690016 C TEST 169 - RELATIONAL EXPRESSION. INTEGER VARIABLE REFERENCE. 07700016 C TRUE PATH. .EQ. 07710016 C 07720016 C 07730016 IF (ICZERO) 31690, 1690, 31690 07740016 1690 CONTINUE 07750016 IVON01 = 32767 07760016 IVON02 = 0 07770016 IF ( 32767 .EQ. IVON01 ) IVON02 = 1 07780016 GO TO 41690 07790016 31690 IVDELE = IVDELE + 1 07800016 WRITE (I02,80003) IVTNUM 07810016 IF (ICZERO) 41690, 1701, 41690 07820016 41690 IF ( IVON02 - 1 ) 21690, 11690, 21690 07830016 11690 IVPASS = IVPASS + 1 07840016 WRITE (I02,80001) IVTNUM 07850016 GO TO 1701 07860016 21690 IVFAIL = IVFAIL + 1 07870016 IVCOMP = IVON02 07880016 IVCORR = 1 07890016 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 07900016 1701 CONTINUE 07910016 C 07920016 C WRITE PAGE FOOTINGS AND RUN SUMMARIES 07930016 99999 CONTINUE 07940016 WRITE (I02,90002) 07950016 WRITE (I02,90006) 07960016 WRITE (I02,90002) 07970016 WRITE (I02,90002) 07980016 WRITE (I02,90007) 07990016 WRITE (I02,90002) 08000016 WRITE (I02,90008) IVFAIL 08010016 WRITE (I02,90009) IVPASS 08020016 WRITE (I02,90010) IVDELE 08030016 C 08040016 C 08050016 C TERMINATE ROUTINE EXECUTION 08060016 STOP 08070016 C 08080016 C FORMAT STATEMENTS FOR PAGE HEADERS 08090016 90000 FORMAT ("1") 08100016 90002 FORMAT (" ") 08110016 90001 FORMAT (" ",10X,"FORTRAN COMPILER VALIDATION SYSTEM" ) 08120016 90003 FORMAT (" ",21X,"VERSION 2.1" ) 08130016 90004 FORMAT (" ",10X,"FOR OFFICIAL USE ONLY - COPYRIGHT 1978" ) 08140016 90005 FORMAT (" ",5X,"TEST",5X,"PASS/FAIL", 5X,"COMPUTED",8X,"CORRECT") 08150016 90006 FORMAT (" ",5X,"----------------------------------------------" ) 08160016 90011 FORMAT (" ",18X,"SUBSET LEVEL TEST" ) 08170016 C 08180016 C FORMAT STATEMENTS FOR RUN SUMMARIES 08190016 90008 FORMAT (" ",15X,I5," ERRORS ENCOUNTERED" ) 08200016 90009 FORMAT (" ",15X,I5," TESTS PASSED" ) 08210016 90010 FORMAT (" ",15X,I5," TESTS DELETED" ) 08220016 C 08230016 C FORMAT STATEMENTS FOR TEST RESULTS 08240016 80001 FORMAT (" ",4X,I5,7X,"PASS") 08250016 80002 FORMAT (" ",4X,I5,7X,"FAIL") 08260016 80003 FORMAT (" ",4X,I5,7X,"DELETED") 08270016 80004 FORMAT (" ",4X,I5,7X,"FAIL",10X,I6,9X,I6) 08280016 80005 FORMAT (" ",4X,I5,7X,"FAIL",4X,E12.5,3X,E12.5) 08290016 C 08300016 90007 FORMAT (" ",20X,"END OF PROGRAM FM016" ) 08310016 END 08320016