FM016.f Source File


Contents

Source Code


Source Code

      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