FM251.f Source File


Contents

Source Code


Source Code

      PROGRAM FM251                                                     00010251
C                                                                       00020251
C                                                                       00030251
C                                                                       00040251
C        THIS ROUTINE TESTS THE IMPLICIT STATEMENT FOR DECLARING        00050251
C     VARIABLES AS TYPE LOGICAL.  THE TYPE OF A VARIABLE ( LOGICAL,     00060251
C     INTEGER, OR REAL ) IS SET BY BOTH IMPLICIT STATEMENTS AND ALSO    00070251
C     BY EXPLICIT TYPE STATEMENTS.  TESTS ARE MADE TO CHECK THAT        00080251
C     EXPLICIT TYPE STATEMENTS OVERIDE THE TYPE SET BY AN IMPLICIT      00090251
C     STATEMENT FOR THE VARIABLES LISTED.                               00100251
C                                                                       00110251
C     REFERENCES                                                        00120251
C        AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN,       00130251
C             X3.9-1977                                                 00140251
C        SECTION 4.7,    LOGICAL TYPE                                   00150251
C        SECTION 8.4.1,  LOGICAL TYPE STAEMENT                          00160251
C        SECTION 8.5,    IMPLICIT STATEMENT                             00170251
C        SECTION 11.5,   LOGICAL IF STATEMENT                           00180251
C                                                                       00190251
C                                                                       00200251
C        FM016 - TESTS LOGICAL TYPE STATEMENTS WITH VARIOUS FORMS OF    00210251
C                LOGICAL CONSTANTS AND VARIABLES.                       00220251
C                                                                       00230251
C                                                                       00240251
C                                                                       00250251
C                                                                       00260251
C     ******************************************************************00270251
C         A COMPILER VALIDATION SYSTEM FOR THE FORTRAN LANGUAGE         00280251
C     BASED ON SPECIFICATIONS AS DEFINED IN AMERICAN STANDARD FORTRAN   00290251
C     X3.9-1978, HAS BEEN DEVELOPED BY THE DEPARTMENT OF THE NAVY.  THE 00300251
C     FORTRAN COMPILER VALIDATION SYSTEM (FCVS) CONSISTS OF AUDIT       00310251
C     ROUTINES, THEIR RELATED DATA, AND AN EXECUTIVE SYSTEM.  EACH AUDIT00320251
C     ROUTINE IS A FORTRAN PROGRAM OR SUBPROGRAM WHICH INCLUDES TESTS   00330251
C     OF SPECIFIC LANGUAGE ELEMENTS AND SUPPORTING PROCEDURES INDICATING00340251
C     THE RESULT OF EXECUTING THESE TESTS.                              00350251
C                                                                       00360251
C     THIS PARTICULAR PROGRAM OR SUBPROGRAM CONTAINS ONLY FEATURES      00370251
C     FOUND IN THE SUBSET LEVEL OF THE STANDARD.                        00380251
C                                                                       00390251
C           SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO             00400251
C              NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY           00410251
C                   SOFTWARE STANDARDS VALIDATION GROUP                 00420251
C                          BUILDING 225  RM A266                        00430251
C                         GAITHERSBURG, MD  20899                       00440251
C     ******************************************************************00450251
C                                                                       00460251
C                                                                       00470251
      IMPLICIT LOGICAL (L)                                              00480251
      IMPLICIT CHARACTER*14 (C)                                         00490251
C                                                                       00500251
      IMPLICIT LOGICAL (M,N)                                            00510251
      IMPLICIT LOGICAL ( E-H, O, P-Q, S-T, X-Y ), INTEGER ( U-W )       00520251
      IMPLICIT INTEGER (A, B), REAL (I, J)                              00530251
      INTEGER IVCOMP, IVPASS, IVCORR, IVTNUM, IVDELE, IVFAIL, I01, I02  00540251
      INTEGER ICZERO                                                    00550251
      INTEGER MVTN01                                                    00560251
      REAL NVTN01                                                       00570251
      LOGICAL MVTN02, NVTN02, MATN21(3,3)                               00580251
      LOGICAL AVTN01                                                    00590251
      LOGICAL IVTN01                                                    00600251
C                                                                       00610251
C                                                                       00620251
C                                                                       00630251
C     INITIALIZATION SECTION.                                           00640251
C                                                                       00650251
C     INITIALIZE CONSTANTS                                              00660251
C     ********************                                              00670251
C     I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER          00680251
      I01 = 5                                                           00690251
C     I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER              00700251
      I02 = 6                                                           00710251
C     SYSTEM ENVIRONMENT SECTION                                        00720251
C                                                                       00730251
CX010     THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-010 CONTROL CARD.00740251
C     THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5      00750251
C     (UNIT NUMBER FOR CARD READER).                                    00760251
CX011      THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-011 CONTROL CARD00770251
C     THE CX011 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL            00780251
C     FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX010 ABOVE.         00790251
C                                                                       00800251
CX020     THIS CARD IS PEPLACED BY CONTENTS OF FEXEC X-020 CONTROL CARD.00810251
C     THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02 = 6      00820251
C     (UNIT NUMBER FOR PRINTER).                                        00830251
CX021     THIS CARD IS PEPLACED BY CONTENTS OF FEXEC X-021 CONTROL CARD.00840251
C     THE CX021 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL            00850251
C     FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX020 ABOVE.         00860251
C                                                                       00870251
      IVPASS = 0                                                        00880251
      IVFAIL = 0                                                        00890251
      IVDELE = 0                                                        00900251
      ICZERO = 0                                                        00910251
C                                                                       00920251
C     WRITE OUT PAGE HEADERS                                            00930251
C                                                                       00940251
      WRITE (I02,90002)                                                 00950251
      WRITE (I02,90006)                                                 00960251
      WRITE (I02,90008)                                                 00970251
      WRITE (I02,90004)                                                 00980251
      WRITE (I02,90010)                                                 00990251
      WRITE (I02,90004)                                                 01000251
      WRITE (I02,90016)                                                 01010251
      WRITE (I02,90001)                                                 01020251
      WRITE (I02,90004)                                                 01030251
      WRITE (I02,90012)                                                 01040251
      WRITE (I02,90014)                                                 01050251
      WRITE (I02,90004)                                                 01060251
C                                                                       01070251
C                                                                       01080251
C     ****  FCVS PROGRAM 251  -  TEST 001  ****                         01090251
C                                                                       01100251
C        TEST 001 ASSIGNS A LOGICAL VALUE OF .TRUE. TO MVIN01 WHICH WAS 01110251
C     SPECIFIED AS TYPE LOGICAL IN AN IMPLICIT STATEMENT.               01120251
C                  IMPLICIT LOGICAL (M,N)                               01130251
C                                                                       01140251
      IVTNUM =   1                                                      01150251
      IF (ICZERO) 30010, 0010, 30010                                    01160251
 0010 CONTINUE                                                          01170251
      IVCOMP = 0                                                        01180251
      MVIN01 = .TRUE.                                                   01190251
      IF ( MVIN01 )  IVCOMP = 1                                         01200251
      IVCORR = 1                                                        01210251
40010 IF ( IVCOMP - 1 )  20010, 10010, 20010                            01220251
30010 IVDELE = IVDELE + 1                                               01230251
      WRITE (I02,80000) IVTNUM                                          01240251
      IF (ICZERO) 10010, 0021, 20010                                    01250251
10010 IVPASS = IVPASS + 1                                               01260251
      WRITE (I02,80002) IVTNUM                                          01270251
      GO TO 0021                                                        01280251
20010 IVFAIL = IVFAIL + 1                                               01290251
      WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR                          01300251
 0021 CONTINUE                                                          01310251
C                                                                       01320251
C     ****  FCVS PROGRAM 251  -  TEST 002  ****                         01330251
C                                                                       01340251
C        TEST 002 ASSIGNS A LOGICAL VALUE OF .FALSE. TO NVIN01 WHICH    01350251
C     WAS SPECIFIED AS TYPE LOGICAL IN AN IMPLICIT STATEMENT.           01360251
C                  IMPLICIT LOGICAL (M,N)                               01370251
C                                                                       01380251
      IVTNUM =   2                                                      01390251
      IF (ICZERO) 30020, 0020, 30020                                    01400251
 0020 CONTINUE                                                          01410251
      IVCOMP = 1                                                        01420251
      LCON01 = .FALSE.                                                  01430251
      NVIN01 = LCON01                                                   01440251
      IF ( NVIN01 )  IVCOMP = 0                                         01450251
      IVCORR = 1                                                        01460251
40020 IF ( IVCOMP - 1 )  20020, 10020, 20020                            01470251
30020 IVDELE = IVDELE + 1                                               01480251
      WRITE (I02,80000) IVTNUM                                          01490251
      IF (ICZERO) 10020, 0031, 20020                                    01500251
10020 IVPASS = IVPASS + 1                                               01510251
      WRITE (I02,80002) IVTNUM                                          01520251
      GO TO 0031                                                        01530251
20020 IVFAIL = IVFAIL + 1                                               01540251
      WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR                          01550251
 0031 CONTINUE                                                          01560251
C                                                                       01570251
C     ****  FCVS PROGRAM 251  -  TEST 003  ****                         01580251
C                                                                       01590251
C        TEST 003 ASSIGNS AN INTEGER VALUE OF 4 TO MVTN01 WHICH         01600251
C     WAS SPECIFIED AS TYPE INTEGER EXPLICITLY IN A TYPE STATEMENT.     01610251
C                  INTEGER MVTN01                                       01620251
C     THIS TEST IS TO DETERMINE WHETHER AN EXPLICIT INTEGER TYPE        01630251
C     STATEMENT CAN OVERRIDE THE IMPLICIT STATEMENT WHICH WOULD         01640251
C     SET THE TYPE AS LOGICAL.                                          01650251
C                  IMPLICIT LOGICAL (M,N)                               01660251
C                                                                       01670251
      IVTNUM =   3                                                      01680251
      IF (ICZERO) 30030, 0030, 30030                                    01690251
 0030 CONTINUE                                                          01700251
      RVCOMP = 10.0                                                     01710251
      MVTN01 = 4                                                        01720251
      RVCOMP = MVTN01/5                                                 01730251
      RVCORR = 0.0                                                      01740251
40030 IF ( RVCOMP )  20030, 10030, 20030                                01750251
30030 IVDELE = IVDELE + 1                                               01760251
      WRITE (I02,80000) IVTNUM                                          01770251
      IF (ICZERO) 10030, 0041, 20030                                    01780251
10030 IVPASS = IVPASS + 1                                               01790251
      WRITE (I02,80002) IVTNUM                                          01800251
      GO TO 0041                                                        01810251
20030 IVFAIL = IVFAIL + 1                                               01820251
      WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR                          01830251
 0041 CONTINUE                                                          01840251
C                                                                       01850251
C     ****  FCVS PROGRAM 251  -  TEST 004  ****                         01860251
C                                                                       01870251
C        TEST 004 ASSIGNS A REAL VALUE OF 4.0 TO NVTN01 WHICH           01880251
C     WAS SPECIFIED AS TYPE REAL EXPLICITLY IN A TYPE STATEMENT.        01890251
C                  REAL NVTN01                                          01900251
C     THIS TEST IS TO DETERMINE WHETHER AN EXPLICIT REAL TYPE           01910251
C     STATEMENT CAN OVERRIDE THE IMPLICIT STATEMENT WHICH WOULD         01920251
C     SET THE TYPE AS LOGICAL.                                          01930251
C                  IMPLICIT LOGICAL (M,N)                               01940251
C                                                                       01950251
      IVTNUM =   4                                                      01960251
      IF (ICZERO) 30040, 0040, 30040                                    01970251
 0040 CONTINUE                                                          01980251
      RVCOMP = 10.0                                                     01990251
      NVTN01 = 4.0                                                      02000251
      RVCOMP = NVTN01/5                                                 02010251
      RVCORR = 0.8                                                      02020251
40040 IF ( RVCOMP - 0.79995 )  20040, 10040, 40041                      02030251
40041 IF ( RVCOMP - 0.80005 )  10040, 10040, 20040                      02040251
30040 IVDELE = IVDELE + 1                                               02050251
      WRITE (I02,80000) IVTNUM                                          02060251
      IF (ICZERO) 10040, 0051, 20040                                    02070251
10040 IVPASS = IVPASS + 1                                               02080251
      WRITE (I02,80002) IVTNUM                                          02090251
      GO TO 0051                                                        02100251
20040 IVFAIL = IVFAIL + 1                                               02110251
      WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR                          02120251
 0051 CONTINUE                                                          02130251
C                                                                       02140251
C     ****  FCVS PROGRAM 251  -  TEST 005  ****                         02150251
C                                                                       02160251
C        TEST 005 ASSIGNS A LOGICAL VALUE OF .TRUE. TO MVTN02 WHICH WAS 02170251
C     SPECIFIED AS TYPE LOGICAL IN AN EXPLICIT TYPE STATEMENT AFTER ALSO02180251
C     HAVING ITS FIRST LETTER M SPECIFIED AS TYPE LOGICAL IN AN         02190251
C     IMPLICIT STATEMENT.                                               02200251
C                  IMPLICIT LOGICAL (M,N)                               02210251
C                  LOGICAL MVTN02                                       02220251
C                                                                       02230251
      IVTNUM =   5                                                      02240251
      IF (ICZERO) 30050, 0050, 30050                                    02250251
 0050 CONTINUE                                                          02260251
      IVCOMP = 0                                                        02270251
      LCON02 = .TRUE.                                                   02280251
      MVTN02 = LCON02                                                   02290251
      IF ( MVTN02 )  IVCOMP = 1                                         02300251
      IVCORR = 1                                                        02310251
40050 IF ( IVCOMP - 1 )  20050, 10050, 20050                            02320251
30050 IVDELE = IVDELE + 1                                               02330251
      WRITE (I02,80000) IVTNUM                                          02340251
      IF (ICZERO) 10050, 0061, 20050                                    02350251
10050 IVPASS = IVPASS + 1                                               02360251
      WRITE (I02,80002) IVTNUM                                          02370251
      GO TO 0061                                                        02380251
20050 IVFAIL = IVFAIL + 1                                               02390251
      WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR                          02400251
 0061 CONTINUE                                                          02410251
C                                                                       02420251
C     ****  FCVS PROGRAM 251  -  TEST 006  ****                         02430251
C                                                                       02440251
C        TEST 006 ASSIGNS A LOGICAL VALUE OF .FALSE. TO NVTN02 WHICH WAS02450251
C     SPECIFIED AS TYPE LOGICAL IN AN EXPLICIT TYPE STATEMENT AFTER ALSO02460251
C     HAVING ITS FIRST LETTER N SPECIFIED AS TYPE LOGICAL IN AN         02470251
C     IMPLICIT STATEMENT.                                               02480251
C                  IMPLICIT LOGICAL (M,N)                               02490251
C                  LOGICAL NVTN02                                       02500251
C                                                                       02510251
      IVTNUM =   6                                                      02520251
      IF (ICZERO) 30060, 0060, 30060                                    02530251
 0060 CONTINUE                                                          02540251
      IVCOMP = 1                                                        02550251
      NVTN02 = .FALSE.                                                  02560251
      IF ( NVTN02 )  IVCOMP = 0                                         02570251
      IVCORR = 1                                                        02580251
40060 IF ( IVCOMP - 1 )  20060, 10060, 20060                            02590251
30060 IVDELE = IVDELE + 1                                               02600251
      WRITE (I02,80000) IVTNUM                                          02610251
      IF (ICZERO) 10060, 0071, 20060                                    02620251
10060 IVPASS = IVPASS + 1                                               02630251
      WRITE (I02,80002) IVTNUM                                          02640251
      GO TO 0071                                                        02650251
20060 IVFAIL = IVFAIL + 1                                               02660251
      WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR                          02670251
 0071 CONTINUE                                                          02680251
C                                                                       02690251
C     ****  FCVS PROGRAM 251  -  TEST 007  ****                         02700251
C                                                                       02710251
C        TEST 007 ASSIGNS A LOGICAL VALUE OF .TRUE. TO THE ARRAY ELEMENT02720251
C     MATN21(1,1) WHICH WAS SPECIFIED AS TYPE LOGICAL IN AN EXPLICIT    02730251
C     TYPE STATEMENT AFTER ALSO HAVING ITS FIRST LETTER M SPECIFIED AS  02740251
C     TYPE LOGICAL IN AN IMPLICIT STATEMENT.                            02750251
C                  IMPLICIT LOGICAL (M,N)                               02760251
C                  LOGICAL MATN21(3,3)                                  02770251
C                                                                       02780251
      IVTNUM =   7                                                      02790251
      IF (ICZERO) 30070, 0070, 30070                                    02800251
 0070 CONTINUE                                                          02810251
      IVCOMP = 0                                                        02820251
      MATN21(1,1) = .TRUE.                                              02830251
      IF ( MATN21(1,1) )  IVCOMP = 1                                    02840251
      IVCORR = 1                                                        02850251
40070 IF ( IVCOMP - 1 )  20070, 10070, 20070                            02860251
30070 IVDELE = IVDELE + 1                                               02870251
      WRITE (I02,80000) IVTNUM                                          02880251
      IF (ICZERO) 10070, 0081, 20070                                    02890251
10070 IVPASS = IVPASS + 1                                               02900251
      WRITE (I02,80002) IVTNUM                                          02910251
      GO TO 0081                                                        02920251
20070 IVFAIL = IVFAIL + 1                                               02930251
      WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR                          02940251
 0081 CONTINUE                                                          02950251
C                                                                       02960251
C     ****  FCVS PROGRAM 251  -  TEST 008  ****                         02970251
C                                                                       02980251
C        TEST 008 ASSIGNS AN INTEGER VALUE OF 4 TO AVIN01 WHICH WAS     02990251
C     SPECIFIED AS TYPE INTEGER IN AN IMPLICIT STATEMENT.               03000251
C                  IMPLICIT INTEGER (A,B)                               03010251
C                                                                       03020251
      IVTNUM =   8                                                      03030251
      IF (ICZERO) 30080, 0080, 30080                                    03040251
 0080 CONTINUE                                                          03050251
      RVCOMP = 10.0                                                     03060251
      AVIN01 = 4                                                        03070251
      RVCOMP = AVIN01/5                                                 03080251
      RVCORR = 0.0                                                      03090251
40080 IF ( RVCOMP )  20080, 10080, 20080                                03100251
30080 IVDELE = IVDELE + 1                                               03110251
      WRITE (I02,80000) IVTNUM                                          03120251
      IF (ICZERO) 10080, 0091, 20080                                    03130251
10080 IVPASS = IVPASS + 1                                               03140251
      WRITE (I02,80002) IVTNUM                                          03150251
      GO TO 0091                                                        03160251
20080 IVFAIL = IVFAIL + 1                                               03170251
      WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR                          03180251
 0091 CONTINUE                                                          03190251
C                                                                       03200251
C     ****  FCVS PROGRAM 251  -  TEST 009  ****                         03210251
C                                                                       03220251
C        TEST 009 ASSIGNS A LOGICAL VALUE OF .TRUE. TO AVTN01 WHICH WAS 03230251
C     SPECIFIED AS TYPE LOGICAL EXPLICITLY IN A TYPE STATEMENT.         03240251
C                  LOGICAL AVTN01                                       03250251
C     THIS TEST IS TO DETERMINE WHETHER AN EXPLICIT LOGICAL TYPE        03260251
C     STATEMENT CAN OVERRIDE THE IMPLICIT STATEMENT WHICH WOULD         03270251
C     SET THE TYPE AS INTEGER.                                          03280251
C                  IMPLICIT INTEGER (A,B)                               03290251
C                                                                       03300251
      IVTNUM =   9                                                      03310251
      IF (ICZERO) 30090, 0090, 30090                                    03320251
 0090 CONTINUE                                                          03330251
      IVCOMP = 0                                                        03340251
      AVTN01 = .TRUE.                                                   03350251
      IF ( AVTN01 )  IVCOMP = 1                                         03360251
      IVCORR = 1                                                        03370251
40090 IF ( IVCOMP - 1 )  20090, 10090, 20090                            03380251
30090 IVDELE = IVDELE + 1                                               03390251
      WRITE (I02,80000) IVTNUM                                          03400251
      IF (ICZERO) 10090, 0101, 20090                                    03410251
10090 IVPASS = IVPASS + 1                                               03420251
      WRITE (I02,80002) IVTNUM                                          03430251
      GO TO 0101                                                        03440251
20090 IVFAIL = IVFAIL + 1                                               03450251
      WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR                          03460251
 0101 CONTINUE                                                          03470251
C                                                                       03480251
C     ****  FCVS PROGRAM 251  -  TEST 010  ****                         03490251
C                                                                       03500251
C        TEST 010 ASSIGNS A REAL VALUE OF 4.0 TO IVIN01 WHICH WAS       03510251
C     SPECIFIED AS REAL IMPLICITLY IN AN IMPLICIT STATEMENT.            03520251
C                  IMPLICIT REAL (I,J)                                  03530251
C                                                                       03540251
      IVTNUM =  10                                                      03550251
      IF (ICZERO) 30100, 0100, 30100                                    03560251
 0100 CONTINUE                                                          03570251
      RVCOMP = 10.0                                                     03580251
      IVIN01 = 4.0                                                      03590251
      RVCOMP = IVIN01/5                                                 03600251
      RVCORR = 0.8                                                      03610251
40100 IF ( RVCOMP - 0.79995 ) 20100, 10100, 40101                       03620251
40101 IF ( RVCOMP - 0.80005 ) 10100, 10100, 20100                       03630251
30100 IVDELE = IVDELE + 1                                               03640251
      WRITE (I02,80000) IVTNUM                                          03650251
      IF (ICZERO) 10100, 0111, 20100                                    03660251
10100 IVPASS = IVPASS + 1                                               03670251
      WRITE (I02,80002) IVTNUM                                          03680251
      GO TO 0111                                                        03690251
20100 IVFAIL = IVFAIL + 1                                               03700251
      WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR                          03710251
 0111 CONTINUE                                                          03720251
C                                                                       03730251
C     ****  FCVS PROGRAM 251  -  TEST 011  ****                         03740251
C                                                                       03750251
C        TEST 011 ASSIGNS A LOGICAL VALUE OF .FALSE. TO IVTN01 WHICH WAS03760251
C     SPECIFIED AS TYPE LOGICAL IN AN EXPLICIT TYPE STATEMENT.          03770251
C                  LOGICAL IVTN01                                       03780251
C     THIS TEST IS TO DETERMINE WHETHER AN EXPLICIT TYPE STATEMENT      03790251
C     CAN OVERRIDE THE IMPLICIT STATEMENT WHICH WOULD SET THE TYPE      03800251
C     AS REAL.                                                          03810251
C                  IMPLICIT REAL (I,J)                                  03820251
C                                                                       03830251
      IVTNUM =  11                                                      03840251
      IF (ICZERO) 30110, 0110, 30110                                    03850251
 0110 CONTINUE                                                          03860251
      IVCOMP = 1                                                        03870251
      IVTN01 = .FALSE.                                                  03880251
      IF ( IVTN01 )  IVCOMP = 0                                         03890251
      IVCORR = 1                                                        03900251
40110 IF ( IVCOMP - 1 )  20110, 10110, 20110                            03910251
30110 IVDELE = IVDELE + 1                                               03920251
      WRITE (I02,80000) IVTNUM                                          03930251
      IF (ICZERO) 10110, 0121, 20110                                    03940251
10110 IVPASS = IVPASS + 1                                               03950251
      WRITE (I02,80002) IVTNUM                                          03960251
      GO TO 0121                                                        03970251
20110 IVFAIL = IVFAIL + 1                                               03980251
      WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR                          03990251
 0121 CONTINUE                                                          04000251
C                                                                       04010251
C                                                                       04020251
C        THE NEXT TWO TESTS CHECK THE RANGE OF LETTERS THAT             04030251
C     ARE SET BY THE IMPLICIT STATEMENT AS FOLLOWS -                    04040251
C     IMPLICIT LOGICAL ( E-H, O, P-Q,  S-T, X-Y ), INTEGER ( U-W )      04050251
C                                                                       04060251
C                                                                       04070251
C                                                                       04080251
C     ****  FCVS PROGRAM 251  -  TEST 012  ****                         04090251
C                                                                       04100251
C        TEST 012 ASSIGNS A LOGICAL VALUE OF .TRUE. TO A SERIES OF      04110251
C     VARIABLES THAT BEGIN WITH THE FOLLOWING LETTERS -                 04120251
C                                                                       04130251
C        E  F  G  H  O  P  Q  S  T  X  Y                                04140251
C                                                                       04150251
C     VARIABLES THAT BEGIN WITH THESE LETTERS SHOULD BE IMPLICITLY TYPED04160251
C     LOGICAL BECAUSE OF THE IMPLICIT STATEMENT USING BOTH THE RANGE AND04170251
C     SINGLE LETTER SPECIFICATION FOR TYPE LOGICAL.  THE VARIABLE XVIN0104180251
C     IS FIRST USED IN A LOGICAL IF STATEMENT.  THE TRUE BRANCH SHOULD  04190251
C     BE TAKEN TO SET IVCOMP = 1.  THEN EACH OF THE VARIABLES SET TO    04200251
C     .TRUE. ARE USED IN A SECOND LOGICAL IF STATEMENT WHICH IS ONE     04210251
C     LARGE LOGICAL CONJUNCTION ( VARIABLE .AND. VARIABLE .AND. ... ).  04220251
C     THE TRUE BRANCH SHOULD BE TAKEN TO INCREMENT THE VALUE OF IVCOMP  04230251
C     TO A FINAL VALUE OF THREE (3).                                    04240251
C                                                                       04250251
C                                                                       04260251
      IVTNUM =  12                                                      04270251
      IF (ICZERO) 30120, 0120, 30120                                    04280251
 0120 CONTINUE                                                          04290251
      IVCOMP = 0                                                        04300251
      IVCORR = 3                                                        04310251
      EVIN01 = .TRUE.                                                   04320251
      FVIN01 = .TRUE.                                                   04330251
      GVIN01 = .TRUE.                                                   04340251
      HVIN01 = .TRUE.                                                   04350251
      OVIN01 = .TRUE.                                                   04360251
      PVIN01 = .TRUE.                                                   04370251
      QVIN01 = .TRUE.                                                   04380251
      SVIN01 = .TRUE.                                                   04390251
      TVIN01 = .TRUE.                                                   04400251
      XVIN01 = .TRUE.                                                   04410251
      YVIN01 = .TRUE.                                                   04420251
      IF ( XVIN01 )  IVCOMP = 1                                         04430251
      IF ( EVIN01 .AND. FVIN01 .AND. GVIN01 .AND. HVIN01 .AND. OVIN01   04440251
     1.AND. PVIN01 .AND. QVIN01 .AND. SVIN01 .AND. TVIN01 .AND. XVIN01  04450251
     2.AND. YVIN01 )  IVCOMP = IVCOMP + 2                               04460251
40120 IF ( IVCOMP - 3 ) 20120, 10120, 20120                             04470251
30120 IVDELE = IVDELE + 1                                               04480251
      WRITE (I02,80000) IVTNUM                                          04490251
      IF (ICZERO) 10120, 0131, 20120                                    04500251
10120 IVPASS = IVPASS + 1                                               04510251
      WRITE (I02,80002) IVTNUM                                          04520251
      GO TO 0131                                                        04530251
20120 IVFAIL = IVFAIL + 1                                               04540251
      WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR                          04550251
 0131 CONTINUE                                                          04560251
C                                                                       04570251
C     ****  FCVS PROGRAM 251  -  TEST 013  ****                         04580251
C                                                                       04590251
C        TEST 013 ASSIGNS AN INTEGER VALUE OF 4 TO VVIN01 WHICH         04600251
C     WAS SPECIFIED AS TYPE INTEGER IMPLICITLY USING THE RANGE OF       04610251
C     LETTERS  U-W  IN THE IMPLICIT INTEGER SPECIFICATION STATEMENT.    04620251
C     DIVISION IS USED TO DETERMINE WHETHER VVIN01 IS TYPE INTEGER.     04630251
C                                                                       04640251
C                                                                       04650251
      IVTNUM =  13                                                      04660251
      IF (ICZERO) 30130, 0130, 30130                                    04670251
 0130 CONTINUE                                                          04680251
      RVCOMP = 10.0                                                     04690251
      VVIN01 = 4                                                        04700251
      RVCOMP = VVIN01/5                                                 04710251
      RVCORR = 0.0                                                      04720251
40130 IF ( RVCOMP )  20130, 10130, 20130                                04730251
30130 IVDELE = IVDELE + 1                                               04740251
      WRITE (I02,80000) IVTNUM                                          04750251
      IF (ICZERO) 10130, 0141, 20130                                    04760251
10130 IVPASS = IVPASS + 1                                               04770251
      WRITE (I02,80002) IVTNUM                                          04780251
      GO TO 0141                                                        04790251
20130 IVFAIL = IVFAIL + 1                                               04800251
      WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR                          04810251
 0141 CONTINUE                                                          04820251
C                                                                       04830251
C                                                                       04840251
C     WRITE OUT TEST SUMMARY                                            04850251
C                                                                       04860251
      WRITE (I02,90004)                                                 04870251
      WRITE (I02,90014)                                                 04880251
      WRITE (I02,90004)                                                 04890251
      WRITE (I02,90000)                                                 04900251
      WRITE (I02,90004)                                                 04910251
      WRITE (I02,90020) IVFAIL                                          04920251
      WRITE (I02,90022) IVPASS                                          04930251
      WRITE (I02,90024) IVDELE                                          04940251
      STOP                                                              04950251
90001 FORMAT (" ",24X,"FM251")                                          04960251
90000 FORMAT (" ",20X,"END OF PROGRAM FM251" )                          04970251
C                                                                       04980251
C     FORMATS FOR TEST DETAIL LINES                                     04990251
C                                                                       05000251
80000 FORMAT (" ",4X,I5,6X,"DELETED")                                   05010251
80002 FORMAT (" ",4X,I5,7X,"PASS")                                      05020251
80010 FORMAT (" ",4X,I5,7X,"FAIL",10X,I6,9X,I6)                         05030251
80012 FORMAT (" ",4X,I5,7X,"FAIL",4X,E12.5,3X,E12.5)                    05040251
80018 FORMAT (" ",4X,I5,7X,"FAIL",2X,A14,1X,A14)                        05050251
C                                                                       05060251
C     FORMAT STATEMENTS FOR PAGE HEADERS                                05070251
C                                                                       05080251
90002 FORMAT ("1")                                                      05090251
90004 FORMAT (" ")                                                      05100251
90006 FORMAT (" ",10X,"FORTRAN COMPILER VALIDATION SYSTEM" )            05110251
90008 FORMAT (" ",21X,"VERSION 2.1" )                                   05120251
90010 FORMAT (" ",8X,"FOR OFFICIAL USE ONLY - COPYRIGHT 1978" )         05130251
90012 FORMAT (" ",5X,"TEST",5X,"PASS/FAIL",5X,"COMPUTED",8X,"CORRECT")  05140251
90014 FORMAT (" ",5X,"----------------------------------------------" ) 05150251
90016 FORMAT (" ",18X,"SUBSET LEVEL TEST" )                             05160251
C                                                                       05170251
C     FORMAT STATEMENTS FOR RUN SUMMARY                                 05180251
C                                                                       05190251
90020 FORMAT (" ",19X,I5," TESTS FAILED" )                              05200251
90022 FORMAT (" ",19X,I5," TESTS PASSED" )                              05210251
90024 FORMAT (" ",19X,I5," TESTS DELETED" )                             05220251
      END                                                               05230251