FM301.f Source File


Contents

Source Code


Source Code

      PROGRAM FM301                                                     00010301
C                                                                       00020301
C                                                                       00030301
C        FM301 TESTS THE USE OF THE TYPE-STATEMENT TO EXPLICITLY        00040301
C     DEFINE THE DATA TYPE FOR VARIABLES, ARRAYS, AND STATEMENT         00050301
C     FUNCTIONS.  ONLY INTEGER, REAL, LOGICAL AND CHARACTER DATA        00060301
C     TYPES ARE TESTED IN THIS ROUTINE.  INTEGER AND REAL VARIABLES     00070301
C     AND ARRAYS ARE TESTED IN A MANNER WHICH BOTH CONFIRMS AND         00080301
C     OVERRIDES THE IMPLICIT TYPING OF THE DATA ENTITIES.               00090301
C                                                                       00100301
C        FM301 DOES NOT ATTEMPT TO TEST ALL OF THE ELEMENTARY SYNTAX    00110301
C     FORMS OF THE TYPE-STATEMENT.  THESE FORMS ARE TESTED ADEQUATELY   00120301
C     WITHIN THE BOILER PLATE AND OTHER AUDIT PROGRAMS.                 00130301
C                                                                       00140301
C     REFERENCES.                                                       00150301
C        AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN,       00160301
C           X3.9-1978                                                   00170301
C                                                                       00180301
C        SECTION 4.1, DATA TYPES                                        00190301
C        SECTION 8.4, TYPE-STATEMENT                                    00200301
C        SECTION 8.5, IMPLICIT STATEMENT                                00210301
C        SECTION 15.4, STATEMENT FUNCTION                               00220301
C                                                                       00230301
C                                                                       00240301
C     ******************************************************************00250301
C         A COMPILER VALIDATION SYSTEM FOR THE FORTRAN LANGUAGE         00260301
C     BASED ON SPECIFICATIONS AS DEFINED IN AMERICAN STANDARD FORTRAN   00270301
C     X3.9-1978, HAS BEEN DEVELOPED BY THE DEPARTMENT OF THE NAVY.  THE 00280301
C     FORTRAN COMPILER VALIDATION SYSTEM (FCVS) CONSISTS OF AUDIT       00290301
C     ROUTINES, THEIR RELATED DATA, AND AN EXECUTIVE SYSTEM.  EACH AUDIT00300301
C     ROUTINE IS A FORTRAN PROGRAM OR SUBPROGRAM WHICH INCLUDES TESTS   00310301
C     OF SPECIFIC LANGUAGE ELEMENTS AND SUPPORTING PROCEDURES INDICATING00320301
C     THE RESULT OF EXECUTING THESE TESTS.                              00330301
C                                                                       00340301
C     THIS PARTICULAR PROGRAM OR SUBPROGRAM CONTAINS ONLY FEATURES      00350301
C     FOUND IN THE SUBSET LEVEL OF THE STANDARD.                        00360301
C                                                                       00370301
C           SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO             00380301
C              NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY           00390301
C                   SOFTWARE STANDARDS VALIDATION GROUP                 00400301
C                          BUILDING 225  RM A266                        00410301
C                         GAITHERSBURG, MD  20899                       00420301
C     ******************************************************************00430301
C                                                                       00440301
C                                                                       00450301
      IMPLICIT LOGICAL (L)                                              00460301
      IMPLICIT CHARACTER*14 (C)                                         00470301
C                                                                       00480301
                                                                        00490301
C                                                                       00500301
C     *** IMPLICIT STATEMENT FOR TEST 006 ***                           00510301
C                                                                       00520301
      IMPLICIT LOGICAL (M)                                              00530301
C                                                                       00540301
C     *** IMPLICIT STATEMENT FOR TEST 017 ***                           00550301
C                                                                       00560301
      IMPLICIT INTEGER (G)                                              00570301
C                                                                       00580301
C     *** IMPLICIT STATEMENT FOR TEST 018 ***                           00590301
C                                                                       00600301
      IMPLICIT CHARACTER*2 (F)                                          00610301
C                                                                       00620301
C     *** SPECIFICATION STATEMENTS FOR TEST 001 ***                     00630301
C                                                                       00640301
      INTEGER AVTN01                                                    00650301
C                                                                       00660301
C     *** SPECIFICATION STATEMENTS FOR TEST 002 ***                     00670301
C                                                                       00680301
      REAL KVTN01                                                       00690301
C                                                                       00700301
C     *** SPECIFICATION STATEMENTS FOR TEST 003 ***                     00710301
C                                                                       00720301
      INTEGER KVTN02, AVTN02, KVTN03                                    00730301
C                                                                       00740301
C     *** SPECIFICATION STATEMENTS FOR TEST 004 ***                     00750301
C                                                                       00760301
      REAL AVTN03, AVTN04, KVTN04                                       00770301
C                                                                       00780301
C     *** SPECIFICATION STATEMENTS FOR TEST 005 ***                     00790301
C                                                                       00800301
      LOGICAL HVTN01                                                    00810301
C                                                                       00820301
C     *** SPECIFICATION STATEMENTS FOR TEST 006 ***                     00830301
C        (ALSO SEE THE IMPLICIT STATEMENTS FOR TEST 006)                00840301
C                                                                       00850301
      REAL MVTN01                                                       00860301
C                                                                       00870301
C     *** SPECIFICATION STATEMENTS FOR TEST 007 ***                     00880301
C                                                                       00890301
      INTEGER NVTN11(4)                                                 00900301
C                                                                       00910301
C     *** SPECIFICATION STATEMENTS FOR TEST 008 ***                     00920301
C                                                                       00930301
      REAL NVTN22(2,2)                                                  00940301
C                                                                       00950301
C     *** SPECIFICATION STATEMENTS FOR TESTS 009 AND 010 ***            00960301
C                                                                       00970301
      INTEGER NVTN33(3,3,3), AVTN15(5)                                  00980301
C                                                                       00990301
C     *** SPECIFICATION STATEMENTS FOR TEST 011 ***                     01000301
C                                                                       01010301
      DIMENSION NVTN14(5)                                               01020301
      INTEGER NVTN14                                                    01030301
C                                                                       01040301
C     *** SPECIFICATION STATEMENTS FOR TEST 012 ***                     01050301
C                                                                       01060301
      DIMENSION AVTN16(4)                                               01070301
      INTEGER AVTN16                                                    01080301
C                                                                       01090301
C     *** SPECIFICATION STATEMENTS FOR TESTS 013 AND 014 ***            01100301
C                                                                       01110301
      CHARACTER CVTN01*14, CATN12(4)*14                                 01120301
C                                                                       01130301
C     *** SPECIFICATION STATEMENTS FOR TEST 015 ***                     01140301
C                                                                       01150301
      DIMENSION CADN13(6)                                               01160301
      CHARACTER CADN13*14                                               01170301
C                                                                       01180301
C     *** SPECIFICATION STATEMENTS FOR TEST 016 ***                     01190301
C                                                                       01200301
      CHARACTER KVTN05                                                  01210301
C                                                                       01220301
C     *** SPECIFICATION STATEMENTS FOR TEST 017 ***                     01230301
C        (ALSO SEE THE IMPLICIT STATEMENT FOR TEST 017)                 01240301
C                                                                       01250301
      CHARACTER GVTN01*3                                                01260301
C                                                                       01270301
C     *** SPECIFICATION STATEMENTS FOR TEST 018 ***                     01280301
C        (ALSO SEE THE IMPLICIT STATEMENT FOR TEST 018)                 01290301
C                                                                       01300301
      CHARACTER FVTN01*3                                                01310301
C                                                                       01320301
C     *** SPECIFICATION STATEMENTS FOR TEST 019 ***                     01330301
C                                                                       01340301
      INTEGER IFTN01                                                    01350301
      IFTN01(IDON01) = IDON01 + 1                                       01360301
C                                                                       01370301
C                                                                       01380301
C                                                                       01390301
C     INITIALIZATION SECTION.                                           01400301
C                                                                       01410301
C     INITIALIZE CONSTANTS                                              01420301
C     ********************                                              01430301
C     I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER          01440301
      I01 = 5                                                           01450301
C     I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER              01460301
      I02 = 6                                                           01470301
C     SYSTEM ENVIRONMENT SECTION                                        01480301
C                                                                       01490301
CX010     THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-010 CONTROL CARD.01500301
C     THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5      01510301
C     (UNIT NUMBER FOR CARD READER).                                    01520301
CX011      THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-011 CONTROL CARD01530301
C     THE CX011 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL            01540301
C     FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX010 ABOVE.         01550301
C                                                                       01560301
CX020     THIS CARD IS PEPLACED BY CONTENTS OF FEXEC X-020 CONTROL CARD.01570301
C     THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02 = 6      01580301
C     (UNIT NUMBER FOR PRINTER).                                        01590301
CX021     THIS CARD IS PEPLACED BY CONTENTS OF FEXEC X-021 CONTROL CARD.01600301
C     THE CX021 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL            01610301
C     FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX020 ABOVE.         01620301
C                                                                       01630301
      IVPASS = 0                                                        01640301
      IVFAIL = 0                                                        01650301
      IVDELE = 0                                                        01660301
      ICZERO = 0                                                        01670301
C                                                                       01680301
C     WRITE OUT PAGE HEADERS                                            01690301
C                                                                       01700301
      WRITE (I02,90002)                                                 01710301
      WRITE (I02,90006)                                                 01720301
      WRITE (I02,90008)                                                 01730301
      WRITE (I02,90004)                                                 01740301
      WRITE (I02,90010)                                                 01750301
      WRITE (I02,90004)                                                 01760301
      WRITE (I02,90016)                                                 01770301
      WRITE (I02,90001)                                                 01780301
      WRITE (I02,90004)                                                 01790301
      WRITE (I02,90012)                                                 01800301
      WRITE (I02,90014)                                                 01810301
      WRITE (I02,90004)                                                 01820301
C                                                                       01830301
C                                                                       01840301
C     ****  FCVS PROGRAM 301  -  TEST 001  ****                         01850301
C                                                                       01860301
C         TEST 001 DEFINES AN INTEGER VARIABLE OVERRIDING THE IMPLICIT  01870301
C     COMPILER DEFAULT TYPE SPECIFYING REAL.                            01880301
C                                                                       01890301
C                                                                       01900301
      IVTNUM =   1                                                      01910301
      IF (ICZERO) 30010, 0010, 30010                                    01920301
 0010 CONTINUE                                                          01930301
      IVCOMP = 0                                                        01940301
      AVTN01 = 100                                                      01950301
      IVCORR = 100                                                      01960301
      IVCOMP = AVTN01                                                   01970301
40010 IF (IVCOMP - 100) 20010, 10010, 20010                             01980301
30010 IVDELE = IVDELE + 1                                               01990301
      WRITE (I02,80000) IVTNUM                                          02000301
      IF (ICZERO) 10010, 0021, 20010                                    02010301
10010 IVPASS = IVPASS + 1                                               02020301
      WRITE (I02,80002) IVTNUM                                          02030301
      GO TO 0021                                                        02040301
20010 IVFAIL = IVFAIL + 1                                               02050301
      WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR                          02060301
 0021 CONTINUE                                                          02070301
C                                                                       02080301
C     ****  FCVS PROGRAM 301  -  TEST 002  ****                         02090301
C                                                                       02100301
C         TEST 002 DEFINES A REAL VARIABLE OVERRIDING THE IMPLICIT      02110301
C     COMPILER DEFAULT TYPE SPECIFYING INTEGER.                         02120301
C                                                                       02130301
C                                                                       02140301
      IVTNUM =   2                                                      02150301
      IF (ICZERO) 30020, 0020, 30020                                    02160301
 0020 CONTINUE                                                          02170301
      RVCOMP = 0.0                                                      02180301
      KVTN01 = 1.004                                                    02190301
      RVCORR = 1.004                                                    02200301
      RVCOMP = KVTN01                                                   02210301
40020 IF (RVCOMP - 1.0035) 20020, 10020, 40021                          02220301
40021 IF (RVCOMP - 1.0045) 10020, 10020, 20020                          02230301
30020 IVDELE = IVDELE + 1                                               02240301
      WRITE (I02,80000) IVTNUM                                          02250301
      IF (ICZERO) 10020, 0031, 20020                                    02260301
10020 IVPASS = IVPASS + 1                                               02270301
      WRITE (I02,80002) IVTNUM                                          02280301
      GO TO 0031                                                        02290301
20020 IVFAIL = IVFAIL + 1                                               02300301
      WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR                          02310301
 0031 CONTINUE                                                          02320301
C                                                                       02330301
C     ****  FCVS PROGRAM 301  -  TEST 003  ****                         02340301
C                                                                       02350301
C         TEST 003 DEFINES A SERIES OF INTEGER VARIABLES IN ONE TYPE-   02360301
C     STATEMENT.  TWO VARIABLES CONFIRM THE IMPLICIT INTEGER TYPING.    02370301
C     THE OTHER VARIABLE OVERRIDES THE IMPLICIT TYPING.                 02380301
C                                                                       02390301
C                                                                       02400301
      IVTNUM =   3                                                      02410301
      IF (ICZERO) 30030, 0030, 30030                                    02420301
 0030 CONTINUE                                                          02430301
      IVCOMP = 0                                                        02440301
      KVTN02 = 20                                                       02450301
      KVTN03 = 30                                                       02460301
      AVTN02 = 200                                                      02470301
      IVCORR = 20                                                       02480301
      IVCOMP = KVTN02                                                   02490301
40030 IF (IVCOMP - 20) 20030, 40031, 20030                              02500301
40031 IVCORR = 30                                                       02510301
      IVCOMP = KVTN03                                                   02520301
40033 IF (IVCOMP - 30) 20030, 40034, 20030                              02530301
40034 IVCORR = 200                                                      02540301
      IVCOMP = AVTN02                                                   02550301
40035 IF (IVCOMP - 200) 20030, 10030, 20030                             02560301
30030 IVDELE = IVDELE + 1                                               02570301
      WRITE (I02,80000) IVTNUM                                          02580301
      IF (ICZERO) 10030, 0041, 20030                                    02590301
10030 IVPASS = IVPASS + 1                                               02600301
      WRITE (I02,80002) IVTNUM                                          02610301
      GO TO 0041                                                        02620301
20030 IVFAIL = IVFAIL + 1                                               02630301
      WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR                          02640301
 0041 CONTINUE                                                          02650301
C                                                                       02660301
C     ****  FCVS PROGRAM 301  -  TEST 004  ****                         02670301
C                                                                       02680301
C         TEST 004 DEFINES A SERIES OF REAL VARIABLES IN ONE TYPE-      02690301
C     STATEMENT.  TWO VARIABLES CONFIRM THE IMPLICIT REAL TYPING.  THE  02700301
C     THIRD VARIABLE OVERRIDES THE IMPLICIT TYPING.                     02710301
C                                                                       02720301
C                                                                       02730301
      IVTNUM =   4                                                      02740301
      IF (ICZERO) 30040, 0040, 30040                                    02750301
 0040 CONTINUE                                                          02760301
      RVCOMP = 0.0                                                      02770301
      AVTN03 = 3.0                                                      02780301
      AVTN04 = 4.                                                       02790301
      KVTN04 = .4                                                       02800301
      RVCORR = 3.0                                                      02810301
      RVCOMP = AVTN03                                                   02820301
40040 IF (RVCOMP - 2.9995) 20040, 40042, 40041                          02830301
40041 IF (RVCOMP - 3.0005) 40042, 40042, 20040                          02840301
40042 RVCORR = 4.                                                       02850301
      RVCOMP = AVTN04                                                   02860301
40043 IF (RVCOMP - 3.9995) 20040, 40045, 40044                          02870301
40044 IF (RVCOMP - 4.0005) 40045, 40045, 20040                          02880301
40045 RVCORR = .4                                                       02890301
      RVCOMP = KVTN04                                                   02900301
40046 IF (RVCOMP - .39995) 20040, 10040, 40047                          02910301
40047 IF (RVCOMP - .40005) 10040, 10040, 20040                          02920301
30040 IVDELE = IVDELE + 1                                               02930301
      WRITE (I02,80000) IVTNUM                                          02940301
      IF (ICZERO) 10040, 0051, 20040                                    02950301
10040 IVPASS = IVPASS + 1                                               02960301
      WRITE (I02,80002) IVTNUM                                          02970301
      GO TO 0051                                                        02980301
20040 IVFAIL = IVFAIL + 1                                               02990301
      WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR                          03000301
 0051 CONTINUE                                                          03010301
C                                                                       03020301
C     ****  FCVS PROGRAM 301  -  TEST 005  ****                         03030301
C                                                                       03040301
C         TEST 005 DEFINES A LOGICAL VARIABLE.                          03050301
C                                                                       03060301
C                                                                       03070301
      IVTNUM =   5                                                      03080301
      IF (ICZERO) 30050, 0050, 30050                                    03090301
 0050 CONTINUE                                                          03100301
      HVTN01 = .TRUE.                                                   03110301
      IVCORR = 1                                                        03120301
      IVCOMP = 0                                                        03130301
      IF (HVTN01) IVCOMP = 1                                            03140301
40050 IF (IVCOMP - 1) 20050, 10050, 20050                               03150301
30050 IVDELE = IVDELE + 1                                               03160301
      WRITE (I02,80000) IVTNUM                                          03170301
      IF (ICZERO) 10050, 0061, 20050                                    03180301
10050 IVPASS = IVPASS + 1                                               03190301
      WRITE (I02,80002) IVTNUM                                          03200301
      GO TO 0061                                                        03210301
20050 IVFAIL = IVFAIL + 1                                               03220301
      WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR                          03230301
 0061 CONTINUE                                                          03240301
C                                                                       03250301
C     ****  FCVS PROGRAM 301  -  TEST 006  ****                         03260301
C                                                                       03270301
C         TEST 006 DEFINES A REAL VARIABLE WITH A TYPE-STATEMENT THAT   03280301
C     OVERRIDES THE IMPLICIT STATEMENT TYPING OF THE INTEGER LETTER 'M' 03290301
C     AS LOGICAL.                                                       03300301
C                                                                       03310301
C                                                                       03320301
      IVTNUM =   6                                                      03330301
      IF (ICZERO) 30060, 0060, 30060                                    03340301
 0060 CONTINUE                                                          03350301
      RVCOMP = 0.0                                                      03360301
      MVTN01 = 12.345                                                   03370301
      RVCORR = 12.345                                                   03380301
      RVCOMP = MVTN01                                                   03390301
40060 IF (RVCOMP - 12.340) 20060, 10060, 40061                          03400301
40061 IF (RVCOMP - 12.350) 10060, 10060, 20060                          03410301
30060 IVDELE = IVDELE + 1                                               03420301
      WRITE (I02,80000) IVTNUM                                          03430301
      IF (ICZERO) 10060, 0071, 20060                                    03440301
10060 IVPASS = IVPASS + 1                                               03450301
      WRITE (I02,80002) IVTNUM                                          03460301
      GO TO 0071                                                        03470301
20060 IVFAIL = IVFAIL + 1                                               03480301
      WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR                          03490301
 0071 CONTINUE                                                          03500301
C                                                                       03510301
C     ****  FCVS PROGRAM 301  -  TEST 007  ****                         03520301
C                                                                       03530301
C         TEST 007 DEFINES A ONE DIMENSIONAL INTEGER ARRAY.             03540301
C                                                                       03550301
C                                                                       03560301
      IVTNUM =   7                                                      03570301
      IF (ICZERO) 30070, 0070, 30070                                    03580301
 0070 CONTINUE                                                          03590301
      IVCOMP = 0                                                        03600301
      NVTN11(3) = 3                                                     03610301
      IVCORR = 3                                                        03620301
      IVCOMP = NVTN11(3)                                                03630301
40070 IF (IVCOMP - 3) 20070, 10070, 20070                               03640301
30070 IVDELE = IVDELE + 1                                               03650301
      WRITE (I02,80000) IVTNUM                                          03660301
      IF (ICZERO) 10070, 0081, 20070                                    03670301
10070 IVPASS = IVPASS + 1                                               03680301
      WRITE (I02,80002) IVTNUM                                          03690301
      GO TO 0081                                                        03700301
20070 IVFAIL = IVFAIL + 1                                               03710301
      WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR                          03720301
 0081 CONTINUE                                                          03730301
C                                                                       03740301
C     ****  FCVS PROGRAM 301  -  TEST 008  ****                         03750301
C                                                                       03760301
C         TEST 008 DEFINES A TWO DIMENSIONAL REAL ARRAY THAT OVERRIDES  03770301
C     THE IMPLICIT TYPING OF INTEGER.                                   03780301
C                                                                       03790301
C                                                                       03800301
      IVTNUM =   8                                                      03810301
      IF (ICZERO) 30080, 0080, 30080                                    03820301
 0080 CONTINUE                                                          03830301
      RVCOMP = 0.0                                                      03840301
      NVTN22(1,2) = 2.12                                                03850301
      RVCORR = 2.12                                                     03860301
      RVCOMP = NVTN22(1,2)                                              03870301
40080 IF (RVCOMP - 2.1195) 20080, 10080, 40081                          03880301
40081 IF (RVCOMP - 2.1205) 10080, 10080, 20080                          03890301
30080 IVDELE = IVDELE + 1                                               03900301
      WRITE (I02,80000) IVTNUM                                          03910301
      IF (ICZERO) 10080, 0091, 20080                                    03920301
10080 IVPASS = IVPASS + 1                                               03930301
      WRITE (I02,80002) IVTNUM                                          03940301
      GO TO 0091                                                        03950301
20080 IVFAIL = IVFAIL + 1                                               03960301
      WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR                          03970301
 0091 CONTINUE                                                          03980301
C                                                                       03990301
C     ****  FCVS PROGRAM 301  -  TEST 009  ****                         04000301
C                                                                       04010301
C         TEST 009 DEFINES TWO INTEGER ARRAYS WITH ONE TYPE-STATEMENT.  04020301
C     ONE ARRAY IS THREE DIMENSIONAL WHILE THE OTHER ARRAY OVERRIDES    04030301
C     THE IMPLICIT TYPING OF REAL.  ONLY THE THREE DIMENSIONAL ARRAY    04040301
C     IS CHECKED IN THIS TEST.                                          04050301
C                                                                       04060301
C                                                                       04070301
      IVTNUM =   9                                                      04080301
      IF (ICZERO) 30090, 0090, 30090                                    04090301
 0090 CONTINUE                                                          04100301
      IVCOMP = 0                                                        04110301
      NVTN33(1,2,3) = 123                                               04120301
      IVCORR = 123                                                      04130301
      IVCOMP = NVTN33(1,2,3)                                            04140301
40090 IF (IVCOMP - 123) 20090, 10090, 20090                             04150301
30090 IVDELE = IVDELE + 1                                               04160301
      WRITE (I02,80000) IVTNUM                                          04170301
      IF (ICZERO) 10090, 0101, 20090                                    04180301
10090 IVPASS = IVPASS + 1                                               04190301
      WRITE (I02,80002) IVTNUM                                          04200301
      GO TO 0101                                                        04210301
20090 IVFAIL = IVFAIL + 1                                               04220301
      WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR                          04230301
 0101 CONTINUE                                                          04240301
C                                                                       04250301
C     ****  FCVS PROGRAM 301  -  TEST 010  ****                         04260301
C                                                                       04270301
C         TEST 010 CHECKS THE SECOND ARRAY DESCRIBED IN THE PREVIOUS    04280301
C     TEST.                                                             04290301
C                                                                       04300301
C                                                                       04310301
      IVTNUM =  10                                                      04320301
      IF (ICZERO) 30100, 0100, 30100                                    04330301
 0100 CONTINUE                                                          04340301
      IVCOMP = 0                                                        04350301
      AVTN15(2) = 5                                                     04360301
      IVCORR = 5                                                        04370301
      IVCOMP = AVTN15(2)                                                04380301
40100 IF (IVCOMP - 5) 20100, 10100, 20100                               04390301
30100 IVDELE = IVDELE + 1                                               04400301
      WRITE (I02,80000) IVTNUM                                          04410301
      IF (ICZERO) 10100, 0111, 20100                                    04420301
10100 IVPASS = IVPASS + 1                                               04430301
      WRITE (I02,80002) IVTNUM                                          04440301
      GO TO 0111                                                        04450301
20100 IVFAIL = IVFAIL + 1                                               04460301
      WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR                          04470301
 0111 CONTINUE                                                          04480301
C                                                                       04490301
C     ****  FCVS PROGRAM 301  -  TEST 011  ****                         04500301
C                                                                       04510301
C         TEST 011 USES THE TYPE-STATEMENT TO EXPLICITLY TYPE AN ARRAY  04520301
C     THAT WAS DEFINED WITH A DIMENSION STATEMENT.                      04530301
C                                                                       04540301
C                                                                       04550301
      IVTNUM =  11                                                      04560301
      IF (ICZERO) 30110, 0110, 30110                                    04570301
 0110 CONTINUE                                                          04580301
      IVCOMP = 0                                                        04590301
      NVTN14(5) = 5                                                     04600301
      IVCORR = 5                                                        04610301
      IVCOMP = NVTN14(5)                                                04620301
40110 IF (IVCOMP - 5) 20110, 10110, 20110                               04630301
30110 IVDELE = IVDELE + 1                                               04640301
      WRITE (I02,80000) IVTNUM                                          04650301
      IF (ICZERO) 10110, 0121, 20110                                    04660301
10110 IVPASS = IVPASS + 1                                               04670301
      WRITE (I02,80002) IVTNUM                                          04680301
      GO TO 0121                                                        04690301
20110 IVFAIL = IVFAIL + 1                                               04700301
      WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR                          04710301
 0121 CONTINUE                                                          04720301
C                                                                       04730301
C     ****  FCVS PROGRAM 301  -  TEST 012  ****                         04740301
C                                                                       04750301
C         TEST 012 USES THE TYPE-STATEMENT TO OVERRIDE THE TYPING OF    04760301
C     AN ARRAY THAT WAS DEFINED WITH A DIMENSION STATEMENT.             04770301
C                                                                       04780301
      IVTNUM =  12                                                      04790301
      IF (ICZERO) 30120, 0120, 30120                                    04800301
 0120 CONTINUE                                                          04810301
      IVCOMP = 0                                                        04820301
      AVTN16(3) = 163                                                   04830301
      IVCORR = 163                                                      04840301
      IVCOMP = AVTN16(3)                                                04850301
40120 IF (IVCOMP - 163) 20120, 10120, 20120                             04860301
30120 IVDELE = IVDELE + 1                                               04870301
      WRITE (I02,80000) IVTNUM                                          04880301
      IF (ICZERO) 10120, 0131, 20120                                    04890301
10120 IVPASS = IVPASS + 1                                               04900301
      WRITE (I02,80002) IVTNUM                                          04910301
      GO TO 0131                                                        04920301
20120 IVFAIL = IVFAIL + 1                                               04930301
      WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR                          04940301
 0131 CONTINUE                                                          04950301
C                                                                       04960301
C     ****  FCVS PROGRAM 301  -  TEST 013  ****                         04970301
C                                                                       04980301
C         TEST 013 USES ONE CHARACTER TYPE-STATEMENT TO SPECIFY BOTH A  04990301
C     VARIABLE AND AN ARRAY DECLARATOR.  ONLY THE VARIABLE IS CHECKED   05000301
C     IN THIS TEST.                                                     05010301
C                                                                       05020301
      IVTNUM =  13                                                      05030301
      IF (ICZERO) 30130, 0130, 30130                                    05040301
 0130 CONTINUE                                                          05050301
      CVTN01 = '12345678901234'                                         05060301
      CVCOMP = '              '                                         05070301
      CVCORR = '12345678901234'                                         05080301
      CVCOMP = CVTN01                                                   05090301
40130 IF (CVCOMP .EQ. '12345678901234') GO TO 10130                     05100301
40131 GO TO 20130                                                       05110301
30130 IVDELE = IVDELE + 1                                               05120301
      WRITE (I02,80000) IVTNUM                                          05130301
      IF (ICZERO) 10130, 0141, 20130                                    05140301
10130 IVPASS = IVPASS + 1                                               05150301
      WRITE (I02,80002) IVTNUM                                          05160301
      GO TO 0141                                                        05170301
20130 IVFAIL = IVFAIL + 1                                               05180301
      WRITE (I02,80018) IVTNUM, CVCOMP, CVCORR                          05190301
 0141 CONTINUE                                                          05200301
C                                                                       05210301
C     ****  FCVS PROGRAM 301  -  TEST 014  ****                         05220301
C                                                                       05230301
C         TEST 014 CHECKS THE ARRAY DECLARATOR FROM THE PREVIOUS TEST.  05240301
C                                                                       05250301
      IVTNUM =  14                                                      05260301
      IF (ICZERO) 30140, 0140, 30140                                    05270301
 0140 CONTINUE                                                          05280301
      CVCOMP = '              '                                         05290301
      CATN12(2) = 'ABCDEFGHIJKLMN'                                      05300301
      CVCORR = 'ABCDEFGHIJKLMN'                                         05310301
      CVCOMP = CATN12(2)                                                05320301
40140 IF (CVCOMP .EQ. 'ABCDEFGHIJKLMN') GO TO 10140                     05330301
40141 GO TO 20140                                                       05340301
30140 IVDELE = IVDELE + 1                                               05350301
      WRITE (I02,80000) IVTNUM                                          05360301
      IF (ICZERO) 10140, 0151, 20140                                    05370301
10140 IVPASS = IVPASS + 1                                               05380301
      WRITE (I02,80002) IVTNUM                                          05390301
      GO TO 0151                                                        05400301
20140 IVFAIL = IVFAIL + 1                                               05410301
      WRITE (I02,80018) IVTNUM, CVCOMP, CVCORR                          05420301
 0151 CONTINUE                                                          05430301
C                                                                       05440301
C     ****  FCVS PROGRAM 301  -  TEST 015  ****                         05450301
C                                                                       05460301
C         TEST 015 USES THE CHARACTER TYPE-STATEMENT TO SPECIFY AN      05470301
C     ARRAY-NAME.  THE ARRAY IS DECLARED IN A DIMENSION STATEMENT.      05480301
C                                                                       05490301
      IVTNUM =  15                                                      05500301
      IF (ICZERO) 30150, 0150, 30150                                    05510301
 0150 CONTINUE                                                          05520301
      CVCOMP = '              '                                         05530301
      CADN13(3) = '12345678901234'                                      05540301
      CVCORR = '12345678901234'                                         05550301
      CVCOMP = CADN13(3)                                                05560301
40150 IF (CVCOMP .EQ. '12345678901234') GO TO 10150                     05570301
40151 GO TO 20150                                                       05580301
30150 IVDELE = IVDELE + 1                                               05590301
      WRITE (I02,80000) IVTNUM                                          05600301
      IF (ICZERO) 10150, 0161, 20150                                    05610301
10150 IVPASS = IVPASS + 1                                               05620301
      WRITE (I02,80002) IVTNUM                                          05630301
      GO TO 0161                                                        05640301
20150 IVFAIL = IVFAIL + 1                                               05650301
      WRITE (I02,80018) IVTNUM, CVCOMP, CVCORR                          05660301
 0161 CONTINUE                                                          05670301
C                                                                       05680301
C     ****  FCVS PROGRAM 301  -  TEST 016  ****                         05690301
C                                                                       05700301
C         TEST 016 USES THE CHARACTER TYPE-STATEMENT TO OVERRIDE THE    05710301
C     IMPLICIT (DEFAULT) TYPING OF INTEGER.                             05720301
C                                                                       05730301
      IVTNUM =  16                                                      05740301
      IF (ICZERO) 30160, 0160, 30160                                    05750301
 0160 CONTINUE                                                          05760301
      CVCOMP = '   '                                                    05770301
      KVTN05 = 'A'                                                      05780301
      CVCORR = 'A'                                                      05790301
      CVCOMP = KVTN05                                                   05800301
40160 IF (CVCOMP .EQ. 'A') GO TO 10160                                  05810301
40161 GO TO 20160                                                       05820301
30160 IVDELE = IVDELE + 1                                               05830301
      WRITE (I02,80000) IVTNUM                                          05840301
      IF (ICZERO) 10160, 0171, 20160                                    05850301
10160 IVPASS = IVPASS + 1                                               05860301
      WRITE (I02,80002) IVTNUM                                          05870301
      GO TO 0171                                                        05880301
20160 IVFAIL = IVFAIL + 1                                               05890301
      WRITE (I02,80018) IVTNUM, CVCOMP, CVCORR                          05900301
 0171 CONTINUE                                                          05910301
C                                                                       05920301
C     ****  FCVS PROGRAM 301  -  TEST 017  ****                         05930301
C                                                                       05940301
C         TEST 017 USES THE CHARACTER TYPE-STATEMENT TO OVERRIDE THE    05950301
C     IMPLICIT TYPING OF THE LETTER 'G' AS INTEGER.                     05960301
C                                                                       05970301
      IVTNUM =  17                                                      05980301
      IF (ICZERO) 30170, 0170, 30170                                    05990301
 0170 CONTINUE                                                          06000301
      CVCOMP = '   '                                                    06010301
      GVTN01 = 'ABC'                                                    06020301
      CVCORR = 'ABC'                                                    06030301
      CVCOMP = GVTN01                                                   06040301
40170 IF (CVCOMP .EQ. 'ABC') GO TO 10170                                06050301
40171 GO TO 20170                                                       06060301
30170 IVDELE = IVDELE + 1                                               06070301
      WRITE (I02,80000) IVTNUM                                          06080301
      IF (ICZERO) 10170, 0181, 20170                                    06090301
10170 IVPASS = IVPASS + 1                                               06100301
      WRITE (I02,80002) IVTNUM                                          06110301
      GO TO 0181                                                        06120301
20170 IVFAIL = IVFAIL + 1                                               06130301
      WRITE (I02,80018) IVTNUM, CVCOMP, CVCORR                          06140301
 0181 CONTINUE                                                          06150301
C                                                                       06160301
C     ****  FCVS PROGRAM 301  -  TEST 018  ****                         06170301
C                                                                       06180301
C         TEST 018 USES THE CHARAACTER TYPE-STATEMENT TO OVERRIDE THE   06190301
C     LENGTH OF A CHARACTER FIELD DEFINED BY AN IMPLICIT STATEMENT.     06200301
C                                                                       06210301
      IVTNUM =  18                                                      06220301
      IF (ICZERO) 30180, 0180, 30180                                    06230301
 0180 CONTINUE                                                          06240301
      CVCOMP = '   '                                                    06250301
      FVTN01 = 'ABC'                                                    06260301
      CVCORR = 'ABC'                                                    06270301
      CVCOMP = FVTN01                                                   06280301
40180 IF (CVCOMP .EQ. 'ABC') GO TO 10180                                06290301
40181 GO TO 20180                                                       06300301
30180 IVDELE = IVDELE + 1                                               06310301
      WRITE (I02,80000) IVTNUM                                          06320301
      IF (ICZERO) 10180, 0191, 20180                                    06330301
10180 IVPASS = IVPASS + 1                                               06340301
      WRITE (I02,80002) IVTNUM                                          06350301
      GO TO 0191                                                        06360301
20180 IVFAIL = IVFAIL + 1                                               06370301
      WRITE (I02,80018) IVTNUM, CVCOMP, CVCORR                          06380301
 0191 CONTINUE                                                          06390301
C                                                                       06400301
C     ****  FCVS PROGRAM 301  -  TEST 019  ****                         06410301
C                                                                       06420301
C         TEST 019 USES THE TYPE-STATEMENT TO SPECIFY AN INTEGER        06430301
C     STATEMENT FUNCTION.                                               06440301
C                                                                       06450301
      IVTNUM =  19                                                      06460301
      IF (ICZERO) 30190, 0190, 30190                                    06470301
 0190 CONTINUE                                                          06480301
      IVCOMP = 0                                                        06490301
      IVON01 = 5                                                        06500301
      IVON02 = IFTN01(IVON01)                                           06510301
      IVCORR = 6                                                        06520301
      IVCOMP = IVON02                                                   06530301
40190 IF (IVCOMP - 6) 20190, 10190, 20190                               06540301
30190 IVDELE = IVDELE + 1                                               06550301
      WRITE (I02,80000) IVTNUM                                          06560301
      IF (ICZERO) 10190, 0201, 20190                                    06570301
10190 IVPASS = IVPASS + 1                                               06580301
      WRITE (I02,80002) IVTNUM                                          06590301
      GO TO 0201                                                        06600301
20190 IVFAIL = IVFAIL + 1                                               06610301
      WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR                          06620301
 0201 CONTINUE                                                          06630301
C                                                                       06640301
C                                                                       06650301
C     WRITE OUT TEST SUMMARY                                            06660301
C                                                                       06670301
      WRITE (I02,90004)                                                 06680301
      WRITE (I02,90014)                                                 06690301
      WRITE (I02,90004)                                                 06700301
      WRITE (I02,90000)                                                 06710301
      WRITE (I02,90004)                                                 06720301
      WRITE (I02,90020) IVFAIL                                          06730301
      WRITE (I02,90022) IVPASS                                          06740301
      WRITE (I02,90024) IVDELE                                          06750301
      STOP                                                              06760301
90001 FORMAT (" ",24X,"FM301")                                          06770301
90000 FORMAT (" ",20X,"END OF PROGRAM FM301" )                          06780301
C                                                                       06790301
C     FORMATS FOR TEST DETAIL LINES                                     06800301
C                                                                       06810301
80000 FORMAT (" ",4X,I5,6X,"DELETED")                                   06820301
80002 FORMAT (" ",4X,I5,7X,"PASS")                                      06830301
80010 FORMAT (" ",4X,I5,7X,"FAIL",10X,I6,9X,I6)                         06840301
80012 FORMAT (" ",4X,I5,7X,"FAIL",4X,E12.5,3X,E12.5)                    06850301
80018 FORMAT (" ",4X,I5,7X,"FAIL",2X,A14,1X,A14)                        06860301
C                                                                       06870301
C     FORMAT STATEMENTS FOR PAGE HEADERS                                06880301
C                                                                       06890301
90002 FORMAT ("1")                                                      06900301
90004 FORMAT (" ")                                                      06910301
90006 FORMAT (" ",10X,"FORTRAN COMPILER VALIDATION SYSTEM" )            06920301
90008 FORMAT (" ",21X,"VERSION 2.1" )                                   06930301
90010 FORMAT (" ",8X,"FOR OFFICIAL USE ONLY - COPYRIGHT 1978" )         06940301
90012 FORMAT (" ",5X,"TEST",5X,"PASS/FAIL",5X,"COMPUTED",8X,"CORRECT")  06950301
90014 FORMAT (" ",5X,"----------------------------------------------" ) 06960301
90016 FORMAT (" ",18X,"SUBSET LEVEL TEST" )                             06970301
C                                                                       06980301
C     FORMAT STATEMENTS FOR RUN SUMMARY                                 06990301
C                                                                       07000301
90020 FORMAT (" ",19X,I5," TESTS FAILED" )                              07010301
90022 FORMAT (" ",19X,I5," TESTS PASSED" )                              07020301
90024 FORMAT (" ",19X,I5," TESTS DELETED" )                             07030301
      END                                                               07040301