PROGRAM FM254
C
C
C
C        THIS ROUTINE IS A TEST OF THE ELSE IF-BLOCK.  TESTS WITHIN THIS
C     ROUTINE ARE FOR THE SYNTAX OF THE BASIC ELSE IF STATEMENT AND
C     ELSE IF-BLOCK STRUCTURE.
C
C     REFERENCES
C        AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN,
C            X3.9-1977
C        SECTION 11.7,       ELSE IF STATEMENT
C        SECTION 11.7.1,     ELSE IF-BLOCK
C        SECTION 11.7.2,     EXECUTION OF THE ELSE IF STATEMENT
C
C
C
C
C     ******************************************************************
C         A COMPILER VALIDATION SYSTEM FOR THE FORTRAN LANGUAGE
C     BASED ON SPECIFICATIONS AS DEFINED IN AMERICAN STANDARD FORTRAN
C     X3.9-1978, HAS BEEN DEVELOPED BY THE DEPARTMENT OF THE NAVY.  THE
C     FORTRAN COMPILER VALIDATION SYSTEM (FCVS) CONSISTS OF AUDIT
C     ROUTINES, THEIR RELATED DATA, AND AN EXECUTIVE SYSTEM.  EACH AUDIT
C     ROUTINE IS A FORTRAN PROGRAM OR SUBPROGRAM WHICH INCLUDES TESTS
C     OF SPECIFIC LANGUAGE ELEMENTS AND SUPPORTING PROCEDURES INDICATING
C     THE RESULT OF EXECUTING THESE TESTS.
C
C     THIS PARTICULAR PROGRAM OR SUBPROGRAM CONTAINS ONLY FEATURES
C     FOUND IN THE SUBSET LEVEL OF THE STANDARD.
C
C           SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO
C                    DEPARTMENT OF THE NAVY
C                    FEDERAL COBOL COMPILER TESTING SERVICE
C                    WASHINGTON, D.C.   20376
C
C     ******************************************************************
C
C
      IMPLICIT LOGICAL (L)
      IMPLICIT CHARACTER*14 (C)
C
      DIMENSION LADN11(2)
      LOGICAL LVTN01, LVTN02, LATN11(2), LADN11
      DATA LADN11/.TRUE., .FALSE./
C
C
C     **** LOGICAL STATEMENT FUNCTION REFERENCED IN TEST 4   ****
C
      LFIS01 ( L ) = L .AND. L
C
C
C
C
C
C     INITIALIZATION SECTION.
C
C     INITIALIZE CONSTANTS
C     ********************
C     I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER
      I01 = 5
C     I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER
      I02 = 6
C     SYSTEM ENVIRONMENT SECTION
C
CX010     THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-010 CONTROL CARD.
C     THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5
C     (UNIT NUMBER FOR CARD READER).
CX011      THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-011 CONTROL CARD
C     THE CX011 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL
C     FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX010 ABOVE.
C
CX020     THIS CARD IS PEPLACED BY CONTENTS OF FEXEC X-020 CONTROL CARD.
C     THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02 = 6
C     (UNIT NUMBER FOR PRINTER).
CX021     THIS CARD IS PEPLACED BY CONTENTS OF FEXEC X-021 CONTROL CARD.
C     THE CX021 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL
C     FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX020 ABOVE.
C
      IVPASS = 0
      IVFAIL = 0
      IVDELE = 0
      ICZERO = 0
C
C     WRITE OUT PAGE HEADERS
C
      WRITE (I02,90002)
      WRITE (I02,90006)
      WRITE (I02,90008)
      WRITE (I02,90004)
      WRITE (I02,90010)
      WRITE (I02,90004)
      WRITE (I02,90016)
      WRITE (I02,90001)
      WRITE (I02,90004)
      WRITE (I02,90012)
      WRITE (I02,90014)
      WRITE (I02,90004)
C
C
C
C        THE SYNTAX OF THE ELSE IF STATEMENTS IN THE TESTS TO FOLLOW IS
C
C        IF ( E1 )  THEN
C             IF-BLOCK
C        ELSE IF ( E2 )  THEN
C             ELSE IF-BLOCK
C        END IF
C
C     THE NEXT FOUR TESTS WILL USE THE FOLLOWING COMBINATIONS OF TRUE
C     AND FALSE FOR E1 AND E2 AS SHOWN BELOW -
C        TEST NUMBER    1    2    3    4
C             E1        F    F    T    T
C             E2        T    F    T    F
C
C
C
C
C     ****  FCVS PROGRAM 254  -  TEST 001  ****
C
C        TEST 001 USES A VERY SIMPLE ELSE IF STATEMENT.  THE EXPRESSION
C     WITHIN THE PARENTHESES IS THE LOGICAL CONSTANT  .TRUE. AND THE
C     EXECUTABLE STATEMENT WITHIN THE ELSE IF-BLOCK OF LEVEL ONE IS AN
C     INTEGER ARITHMETIC ASSIGNMENT STATEMENT.  IN THIS TEST THE LOGICAL
C     EXPRESSION E1 IS .FALSE. SO THE IF-BLOCK SHOULD NOT BE EXECUTED.
C     THE LOGICAL EXPRESSION E2 IS .TRUE. SO THE ELSE IF-BLOCK SHOULD
C     BE EXECUTED.
C
C
      IVTNUM =   1
      IF (ICZERO) 30010, 0010, 30010
 0010 CONTINUE
      IVCOMP = 1
      IF ( .FALSE. )  THEN
           IVCOMP = IVCOMP * 2
      ELSE IF ( .TRUE. )  THEN
           IVCOMP = IVCOMP * 3
      END IF
C
C        **** IVCOMP IS DETERMINED BY IVCOMP = 3 = 1 * 3
C
      IVCORR = 3
40010 IF ( IVCOMP - 3 )  20010, 10010, 20010
30010 IVDELE = IVDELE + 1
      WRITE (I02,80000) IVTNUM
      IF (ICZERO) 10010, 0021, 20010
10010 IVPASS = IVPASS + 1
      WRITE (I02,80002) IVTNUM
      GO TO 0021
20010 IVFAIL = IVFAIL + 1
      WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR
 0021 CONTINUE
C
C     ****  FCVS PROGRAM 254  -  TEST 002  ****
C
C        TEST 002 HAS E1 .FALSE. AND E2 .FALSE..  NEITHER THE IF-BLOCK
C     NOR THE ELSE IF-BLOCK SHOULD BE EXECUTED.
C
C
      IVTNUM =   2
      IF (ICZERO) 30020, 0020, 30020
 0020 CONTINUE
      IVCOMP = 1
      LVON01 = .FALSE.
      LVON02 = .FALSE.
      IF ( LVON01 )  THEN
           IVCOMP = IVCOMP * 2
      ELSE IF ( LVON02 )  THEN
           IVCOMP = IVCOMP * 3
      END IF
      IVCORR = 1
40020 IF ( IVCOMP - 1 )  20020, 10020, 20020
30020 IVDELE = IVDELE + 1
      WRITE (I02,80000) IVTNUM
      IF (ICZERO) 10020, 0031, 20020
10020 IVPASS = IVPASS + 1
      WRITE (I02,80002) IVTNUM
      GO TO 0031
20020 IVFAIL = IVFAIL + 1
      WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR
 0031 CONTINUE
C
C     ****  FCVS PROGRAM 254  -  TEST 003  ****
C
C        TEST 003 HAS E1 AS .TRUE. AND E2 AS .TRUE..  ONLY THE IF-BLOCK
C     SHOULD BE EXECUTED. THE ELSE IF-BLOCK SHOULD NOT BE EXECUTED.
C
C
      IVTNUM =   3
      IF (ICZERO) 30030, 0030, 30030
 0030 CONTINUE
      IVCOMP = 1
      LVON01 = .TRUE.
      LVON02 = .TRUE.
      LVTN01 = LVON01
      LVTN02 = LVON02
      IF ( LVTN01 )  THEN
           IVCOMP = IVCOMP * 2
      ELSE IF ( LVTN02 )  THEN
           IVCOMP = IVCOMP * 3
      END IF
C
C        **** IVCOMP IS DETERMINED BY IVCOMP = 2 = 1 * 2            ****
C
      IVCORR = 2
40030 IF ( IVCOMP - 2 )  20030, 10030, 20030
30030 IVDELE = IVDELE + 1
      WRITE (I02,80000) IVTNUM
      IF (ICZERO) 10030, 0041, 20030
10030 IVPASS = IVPASS + 1
      WRITE (I02,80002) IVTNUM
      GO TO 0041
20030 IVFAIL = IVFAIL + 1
      WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR
 0041 CONTINUE
C
C     ****  FCVS PROGRAM 254  -  TEST 004  ****
C
C        TEST 004 HAS E1 AS .TRUE. AND E2 AS .FALSE..  ONLY THE IF-BLOCK
C     SHOULD BE EXECUTED.  THE ELSE IF-BLOCK SHOULD NOT BE EXECUTED.
C
C
      IVTNUM =   4
      IF (ICZERO) 30040, 0040, 30040
 0040 CONTINUE
      IVCOMP = 1
      LVON01 = .TRUE.
      LVTN01 = LFIS01 ( LVON01 )
      LVON02 = .FALSE.
      IF ( LVTN01 )  THEN
           IVCOMP = IVCOMP * 2
      ELSE IF ( LFIS01 ( LVON02 ) )  THEN
           IVCOMP = IVCOMP * 3
      END IF
C
C        **** IVCOMP IS DETERMINED BY IVCOMP = 2 = 1 * 2            ****
C
      IVCORR = 2
40040 IF ( IVCOMP - 2 )  20040, 10040, 20040
30040 IVDELE = IVDELE + 1
      WRITE (I02,80000) IVTNUM
      IF (ICZERO) 10040, 0051, 20040
10040 IVPASS = IVPASS + 1
      WRITE (I02,80002) IVTNUM
      GO TO 0051
20040 IVFAIL = IVFAIL + 1
      WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR
 0051 CONTINUE
C
C
C        THE SYNTAX OF THE ELSE IF STATEMENTS IN THE TESTS TO FOLLOW IS
C
C        IF ( E1 )  THEN
C             IF-BLOCK 1
C        ELSE IF ( E2 )  THEN
C             ELSE IF-BLOCK 1
C        ELSE IF ( E3 )  THEN
C             ELSE IF-BLOCK 2
C        END IF
C
C
C
C     ****  FCVS PROGRAM 254  -  TEST 005  ****
C
C        TEST 005 HAS E1 AS TRUE.  E2 AND E3 ARE FALSE.  ONLY IF-BLOCK 1
C     SHOULD BE EXECUTED.  ELSE IF-BLOCKS 1 AND 2 SHOULD NOT EXECUTE.
C
C
      IVTNUM =   5
      IF (ICZERO) 30050, 0050, 30050
 0050 CONTINUE
      IVCOMP = 1
C     LADN11(1) IS SET TO .TRUE. IN A DATA STATEMENT.
      LVON02 = .FALSE.
      LVON03 = .FALSE.
      IF ( LADN11(1) )  THEN
           IVCOMP = IVCOMP * 2
      ELSE IF ( LVON02 )  THEN
           IVCOMP = IVCOMP * 3
      ELSE IF ( LVON03 )  THEN
           IVCOMP = IVCOMP * 5
      END IF
C
C        **** IVCOMP IS DETERMINED BY IVCOMP = 2 = 1 * 2            ****
C
      IVCORR = 2
40050 IF ( IVCOMP - 2 )  20050, 10050, 20050
30050 IVDELE = IVDELE + 1
      WRITE (I02,80000) IVTNUM
      IF (ICZERO) 10050, 0061, 20050
10050 IVPASS = IVPASS + 1
      WRITE (I02,80002) IVTNUM
      GO TO 0061
20050 IVFAIL = IVFAIL + 1
      WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR
 0061 CONTINUE
C
C     ****  FCVS PROGRAM 254  -  TEST 006  ****
C
C        TEST 006 HAS E1 AS FALSE, E2 AS TRUE, AND E3 AS FALSE.  ONLY
C     ELSE IF-BLOCK 1 SHOULD EXECUTE.  IF-BLOCK 1 AND ELSE IF-BLOCK 2
C     SHOULD NOT EXECUTE.
C
C
      IVTNUM =   6
      IF (ICZERO) 30060, 0060, 30060
 0060 CONTINUE
      IVCOMP = 1
      LVON01 = .FALSE.
      LATN11(2) = .TRUE.
      LVON03 = .FALSE.
      IF ( LVON01 )  THEN
           IVCOMP = IVCOMP * 2
      ELSE IF ( LATN11(2) )  THEN
           IVCOMP = IVCOMP * 3
      ELSE IF ( LVON03 )  THEN
           IVCOMP = IVCOMP * 5
      END IF
C
C        **** IVCOMP IS DETERMINED BY IVCOMP = 3 = 1 * 3            ****
C
      IVCORR = 3
40060 IF ( IVCOMP - 3 )  20060, 10060, 20060
30060 IVDELE = IVDELE + 1
      WRITE (I02,80000) IVTNUM
      IF (ICZERO) 10060, 0071, 20060
10060 IVPASS = IVPASS + 1
      WRITE (I02,80002) IVTNUM
      GO TO 0071
20060 IVFAIL = IVFAIL + 1
      WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR
 0071 CONTINUE
C
C     ****  FCVS PROGRAM 254  -  TEST 007  ****
C
C        TEST 007 HAS E1 AS FALSE, E2 AS FALSE, AND E3 AS TRUE.  ONLY
C     ELSE IF-BLOCK 2 SHOULD BE EXECUTED.  IF-BLOCK 1 AND ELSE IF-BLOCK
C     1 SHOULD NOT EXECUTE.
C
C
      IVTNUM =   7
      IF (ICZERO) 30070, 0070, 30070
 0070 CONTINUE
      IVCOMP = 1
      LVON01 = .FALSE.
      LVON02 = .FALSE.
      LVON03 = .TRUE.
      IF ( LVON01 )  THEN
           IVCOMP = IVCOMP * 2
      ELSE IF ( LVON02 )  THEN
           IVCOMP = IVCOMP * 3
      ELSE IF ( LVON03 )  THEN
           IVCOMP = IVCOMP * 5
      END IF
C
C        **** IVCOMP IS DETERMINED BY IVCOMP = 5 = 1 * 5            ****
C
      IVCORR = 5
40070 IF ( IVCOMP - 5 )  20070, 10070, 20070
30070 IVDELE = IVDELE + 1
      WRITE (I02,80000) IVTNUM
      IF (ICZERO) 10070, 0081, 20070
10070 IVPASS = IVPASS + 1
      WRITE (I02,80002) IVTNUM
      GO TO 0081
20070 IVFAIL = IVFAIL + 1
      WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR
 0081 CONTINUE
C
C     ****  FCVS PROGRAM 254  -  TEST 008  ****
C
C        TEST 008 HAS E1 AS FALSE.  BOTH E2 AND E3 ARE TRUE.  ONLY ELSE
C     IF-BLOCK 1 SHOULD EXECUTE.  IF-BLOCK 1 AND ELSE IF-BLOCK 2 SHOULD
C     NOT EXECUTE.  THIS IS A TEST OF THE LOGIC FLOW WHEN ONE OF THE
C     EXPRESSIONS IN A STRING OF ELSE IF BLOCK STRUCTURES IS TRUE.  ONLY
C     THAT PARTICULAR ELSE IF-BLOCK SHOULD BE EXECUTED.  THE REST OF THE
C     STRING SHOULD BE SKIPPED.
C
C
      IVTNUM =   8
      IF (ICZERO) 30080, 0080, 30080
 0080 CONTINUE
      IVCOMP = 1
      LVON01 = .FALSE.
      LVON02 = .TRUE.
      LVON03 = .TRUE.
      IF ( LVON01 )  THEN
           IVCOMP = IVCOMP * 2
      ELSE IF ( LVON02 )  THEN
           IVCOMP = IVCOMP * 3
      ELSE IF ( LVON03 )  THEN
           IVCOMP = IVCOMP * 5
      END IF
C
C        **** IVCOMP IS DETERMINED BY IVCOMP = 3 = 1 * 3            ****
C
      IVCORR = 3
40080 IF ( IVCOMP - 3 )  20080, 10080, 20080
30080 IVDELE = IVDELE + 1
      WRITE (I02,80000) IVTNUM
      IF (ICZERO) 10080, 0091, 20080
10080 IVPASS = IVPASS + 1
      WRITE (I02,80002) IVTNUM
      GO TO 0091
20080 IVFAIL = IVFAIL + 1
      WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR
 0091 CONTINUE
C
C
C        THE FOLLOWING TWO TESTS ARE TO CHECK THE EXECUTION OF AN ELSE
C     IF STATEMENT WITH AN EMPTY ELSE IF-BLOCK.  THE SYNTAX FOR THE TWO
C     TESTS IS AS FOLLOWS -
C
C        IF ( E1 )  THEN
C             IF-BLOCK 1
C        ELSE IF ( E2 )  THEN
C        ELSE IF ( E3 )  THEN
C             ELSE IF-BLOCK 1
C        END IF
C
C
C
C     ****  FCVS PROGRAM 254  -  TEST 009  ****
C
C        TEST 009 HAS E1 FALSE, E2 TRUE, AND E3 AS TRUE.  THE STRUCTURE
C        ELSE IF ( E2 )  THEN
C     IS FOLLOWED BY AN EMPTY ELSE IF-BLOCK ALLOWED IN SECTION 11.7.1.
C     IN SECTION 11.7.2,  IF THE VALUE OF THE EXPRESSION IS TRUE AND THE
C     ELSE IF-BLOCK IS EMPTY, CONTROL IS TRANSFERRED TO THE NEXT END IF
C     STATEMENT THAT HAS THE SAME IF-LEVEL AS THE ELSE IF STATEMENT.
C     NEITHER IF-BLOCK 1 NOR ELSE IF-BLOCK 1 SHOULD BE EXECUTED.
C
C
      IVTNUM =   9
      IF (ICZERO) 30090, 0090, 30090
 0090 CONTINUE
      IVCOMP = 1
      LVON01 = .FALSE.
      LVON02 = .TRUE.
      LVON03 = .TRUE.
      IF ( LVON01 )  THEN
           IVCOMP = IVCOMP * 2
      ELSE IF ( LVON02 )  THEN
      ELSE IF ( LVON03 )  THEN
           IVCOMP = IVCOMP * 3
      END IF
      IVCORR = 1
40090 IF ( IVCOMP - 1 )  20090, 10090, 20090
30090 IVDELE = IVDELE + 1
      WRITE (I02,80000) IVTNUM
      IF (ICZERO) 10090, 0101, 20090
10090 IVPASS = IVPASS + 1
      WRITE (I02,80002) IVTNUM
      GO TO 0101
20090 IVFAIL = IVFAIL + 1
      WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR
 0101 CONTINUE
C
C     ****  FCVS PROGRAM 254  -  TEST 010  ****
C
C        TEST 010 ALSO HAS AN EMPTY ELSE IF-BLOCK.  E1 AND E2 ARE FALSE.
C     E3 IS TRUE.  ONLY ELSE IF-BLOCK 1 SHOULD BE EXECUTED.  IF-BLOCK 1
C     SHOULD NOT BE EXECUTED.  IN SECTION 11.7.2,  IF THE VALUE OF THE
C     EXPRESSION IS FALSE, CONTROL IS TRANSFERRED TO THE NEXT ELSE IF,
C     ELSE, OR END IF STATEMENT THAT HAS THE SAME IF-LEVEL AS THE ELSE
C     IF STATEMENT.
C
C
      IVTNUM =  10
      IF (ICZERO) 30100, 0100, 30100
 0100 CONTINUE
      IVCOMP = 1
      LVON01 = .FALSE.
      LVON02 = .FALSE.
      LVON03 = .TRUE.
      IF ( LVON01 )  THEN
           IVCOMP = IVCOMP * 2
      ELSE IF ( LVON02 )  THEN
      ELSE IF ( LVON03 )  THEN
           IVCOMP = IVCOMP * 3
      END IF
C
C        **** IVCOMP IS DETERMINED BY IVCOMP = 3 = 1 * 3            ****
C
      IVCORR = 3
40100 IF ( IVCOMP - 3 )  20100, 10100, 20100
30100 IVDELE = IVDELE + 1
      WRITE (I02,80000) IVTNUM
      IF (ICZERO) 10100, 0111, 20100
10100 IVPASS = IVPASS + 1
      WRITE (I02,80002) IVTNUM
      GO TO 0111
20100 IVFAIL = IVFAIL + 1
      WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR
 0111 CONTINUE
C
C
C        THE NEXT TWO TESTS USE THE ELSE IF STRUCTURE INSIDE A BLOCKED
C     IF STRUCTURE OF LEVEL 2 AS FOLLOWS -
C
C        IF ( E1 )  THEN
C             IF-BLOCK 1
C             IF ( E2 )  THEN
C                  IF-BLOCK 2
C             ELSE IF ( E3 )  THEN
C                  ELSE IF-BLOCK 1
C             ELSE IF ( E4 )  THEN
C                  ELSE IF-BLOCK 2
C             END IF
C        ELSE IF ( E5 )  THEN
C             ELSE IF-BLOCK 3
C        ELSE IF ( E6 )  THEN
C             ELSE IF-BLOCK 4
C        END IF
C
C
C
C     ****  FCVS PROGRAM 254  -  TEST 011  ****
C
C        TEST 011 HAS E1 TRUE, E2 AND E3 AS FALSE, E4, E5, AND ALSO
C     E6 AS TRUE.  IF-BLOCK 1, AND ELSE IF-BLOCK 2 SHOULD BE EXECUTED.
C     IF-BLOCK 2, ELSE IF-BLOCK 1, 3, AND 4 SHOULD NOT BE EXECUTED.
C
C
      IVTNUM =  11
      IF (ICZERO) 30110, 0110, 30110
 0110 CONTINUE
      IVCOMP = 1
      LVON01 = .TRUE.
      LVON02 = .FALSE.
      LVON03 = .FALSE.
      LVON04 = .TRUE.
      LVON05 = .TRUE.
      LVON06 = .TRUE.
      IF ( LVON01 )  THEN
           IVCOMP = IVCOMP * 2
           IF ( LVON02 )  THEN
                IVCOMP = IVCOMP * 3
           ELSE IF ( LVON03 )  THEN
                IVCOMP = IVCOMP * 5
           ELSE IF ( LVON04 )  THEN
                IVCOMP = IVCOMP * 7
           END IF
      ELSE IF ( LVON05 )  THEN
           IVCOMP = IVCOMP * 11
      ELSE IF ( LVON06 )  THEN
           IVCOMP = IVCOMP * 13
      END IF
C
C        **** IVCOMP IS DETERMINED BY IVCOMP = 14 = 1 * 2 * 7       ****
C
      IVCORR = 14
40110 IF ( IVCOMP - 14 )  20110, 10110, 20110
30110 IVDELE = IVDELE + 1
      WRITE (I02,80000) IVTNUM
      IF (ICZERO) 10110, 0121, 20110
10110 IVPASS = IVPASS + 1
      WRITE (I02,80002) IVTNUM
      GO TO 0121
20110 IVFAIL = IVFAIL + 1
      WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR
 0121 CONTINUE
C
C     ****  FCVS PROGRAM 254  -  TEST 012  ****
C
C        TEST 012 HAS E1 AS FALSE, E2, E3, AND E4 ARE TRUE, E5 AS FALSE,
C     AND E6 IS TRUE.  ONLY ELSE IF-BLOCK 4 SHOULD BE EXECUTED.  NO
C     OTHER IF-BLOCK OR ELSE IF-BLOCK SHOULD BE EXECUTED.
C
C
      IVTNUM =  12
      IF (ICZERO) 30120, 0120, 30120
 0120 CONTINUE
      IVCOMP = 1
      LVON01 = .FALSE.
      LVON02 = .TRUE.
      LVON03 = .TRUE.
      LVON04 = .TRUE.
      LVON05 = .FALSE.
      LVON06 = .TRUE.
      IF ( LVON01 )  THEN
           IVCOMP = IVCOMP * 2
           IF ( LVON02 )  THEN
                IVCOMP = IVCOMP * 3
           ELSE IF ( LVON03 )  THEN
                IVCOMP = IVCOMP * 5
           ELSE IF ( LVON04 )  THEN
                IVCOMP = IVCOMP * 7
           END IF
      ELSE IF ( LVON05 )  THEN
           IVCOMP = IVCOMP * 11
      ELSE IF ( LVON06 )  THEN
           IVCOMP = IVCOMP * 13
      END IF
C
C        **** IVCOMP IS DETERMINED BY IVCOMP = 13 = 1 * 13          ****
C
      IVCORR = 13
40120 IF ( IVCOMP - 13 )  20120, 10120, 20120
30120 IVDELE = IVDELE + 1
      WRITE (I02,80000) IVTNUM
      IF (ICZERO) 10120, 0131, 20120
10120 IVPASS = IVPASS + 1
      WRITE (I02,80002) IVTNUM
      GO TO 0131
20120 IVFAIL = IVFAIL + 1
      WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR
 0131 CONTINUE
C
C
C     WRITE OUT TEST SUMMARY
C
      WRITE (I02,90004)
      WRITE (I02,90014)
      WRITE (I02,90004)
      WRITE (I02,90000)
      WRITE (I02,90004)
      WRITE (I02,90020) IVFAIL
      WRITE (I02,90022) IVPASS
      WRITE (I02,90024) IVDELE
      STOP
90001 FORMAT (1H ,24X,5HFM254)
90000 FORMAT (1H ,20X,20HEND OF PROGRAM FM254)
C
C     FORMATS FOR TEST DETAIL LINES
C
80000 FORMAT (1H ,4X,I5,6X,7HDELETED)
80002 FORMAT (1H ,4X,I5,7X,4HPASS)
80010 FORMAT (1H ,4X,I5,7X,4HFAIL,10X,I6,9X,I6)
80012 FORMAT (1H ,4X,I5,7X,4HFAIL,4X,E12.5,3X,E12.5)
80018 FORMAT (1H ,4X,I5,7X,4HFAIL,2X,A14,1X,A14)
C
C     FORMAT STATEMENTS FOR PAGE HEADERS
C
90002 FORMAT (1H1)
90004 FORMAT (1H )
90006 FORMAT (1H ,10X,34HFORTRAN COMPILER VALIDATION SYSTEM)
90008 FORMAT (1H ,21X,11HVERSION 1.0)
90010 FORMAT (1H ,8X,38HFOR OFFICIAL USE ONLY - COPYRIGHT 1978)
90012 FORMAT (1H ,5X,4HTEST,5X,9HPASS/FAIL,5X,8HCOMPUTED,8X,7HCORRECT)
90014 FORMAT (1H ,5X,46H----------------------------------------------)
90016 FORMAT (1H ,18X,17HSUBSET LEVEL TEST)
C
C     FORMAT STATEMENTS FOR RUN SUMMARY
C
90020 FORMAT (1H ,19X,I5,13H TESTS FAILED)
90022 FORMAT (1H ,19X,I5,13H TESTS PASSED)
90024 FORMAT (1H ,19X,I5,14H TESTS DELETED)
      END