FM300.f Source File


Contents

Source Code


Source Code

      PROGRAM FM300                                                     00010300
C                                                                       00020300
C                                                                       00030300
C        THIS ROUTINE TESTS THE USE OF THE EQUIVALENCE STATEMENT TO     00040300
C     EQUATE STORAGE UNITS OF VARIABLES, ARRAYS AND ARRAY ELEMENTS.     00050300
C     ONLY INTEGER, REAL, LOGICAL AND CHARACTER DATA TYPES ARE TESTED.  00060300
C     NO ATTEMPT IS MADE TO TEST DATA OF DIFFERENT TYPES THAT ARE       00070300
C     EQUATED WITH THE EQUIVALENCE STATEMENT.                           00080300
C                                                                       00090300
C     REFERENCES.                                                       00100300
C        AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN,       00110300
C           X3.9-1978                                                   00120300
C                                                                       00130300
C        SECTION 8.1, DIMENSION STATEMENT                               00140300
C        SECTION 8.2, EQUIVALENCE STATEMENT                             00150300
C        SECTION 9, DATA STATEMENT                                      00160300
C                                                                       00170300
C                                                                       00180300
C     ******************************************************************00190300
C         A COMPILER VALIDATION SYSTEM FOR THE FORTRAN LANGUAGE         00200300
C     BASED ON SPECIFICATIONS AS DEFINED IN AMERICAN STANDARD FORTRAN   00210300
C     X3.9-1978, HAS BEEN DEVELOPED BY THE DEPARTMENT OF THE NAVY.  THE 00220300
C     FORTRAN COMPILER VALIDATION SYSTEM (FCVS) CONSISTS OF AUDIT       00230300
C     ROUTINES, THEIR RELATED DATA, AND AN EXECUTIVE SYSTEM.  EACH AUDIT00240300
C     ROUTINE IS A FORTRAN PROGRAM OR SUBPROGRAM WHICH INCLUDES TESTS   00250300
C     OF SPECIFIC LANGUAGE ELEMENTS AND SUPPORTING PROCEDURES INDICATING00260300
C     THE RESULT OF EXECUTING THESE TESTS.                              00270300
C                                                                       00280300
C     THIS PARTICULAR PROGRAM OR SUBPROGRAM CONTAINS ONLY FEATURES      00290300
C     FOUND IN THE SUBSET LEVEL OF THE STANDARD.                        00300300
C                                                                       00310300
C           SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO             00320300
C              NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY           00330300
C                   SOFTWARE STANDARDS VALIDATION GROUP                 00340300
C                          BUILDING 225  RM A266                        00350300
C                         GAITHERSBURG, MD  20899                       00360300
C     ******************************************************************00370300
C                                                                       00380300
C                                                                       00390300
      IMPLICIT LOGICAL (L)                                              00400300
      IMPLICIT CHARACTER*14 (C)                                         00410300
C                                                                       00420300
                                                                        00430300
C     *** SPECIFICATION STATEMENTS FOR TEST 001 ***                     00440300
C                                                                       00450300
      EQUIVALENCE (IVOE01, IVOE02)                                      00460300
C                                                                       00470300
C     *** SPECIFICATION STATEMENTS FOR TEST 002 ***                     00480300
C                                                                       00490300
      EQUIVALENCE (RVOE01, RVOE02)                                      00500300
C                                                                       00510300
C     *** SPECIFICATION STATEMENTS FOR TEST 003 ***                     00520300
C                                                                       00530300
      EQUIVALENCE (LVOE01, LVOE02)                                      00540300
C                                                                       00550300
C     *** SPECIFICATION STATEMENTS FOR TEST 004 ***                     00560300
C                                                                       00570300
      CHARACTER CVTE01*3, CVTE02*3, CVCOMP*3                            00580300
      EQUIVALENCE (CVTE01, CVTE02)                                      00590300
C                                                                       00600300
C     *** SPECIFICATION STATEMENTS FOR TEST 005 ***                     00610300
C                                                                       00620300
      EQUIVALENCE (IVOE03, IVOE04, IVOE05)                              00630300
C                                                                       00640300
C     *** SPECIFICATION STATEMENTS FOR TEST 006 ***                     00650300
C                                                                       00660300
      EQUIVALENCE (IVOE06, IVOE07, RVOE03)                              00670300
C                                                                       00680300
C     *** SPECIFICATION STATEMENTS FOR TESTS 007 AND 008 ***            00690300
C                                                                       00700300
      EQUIVALENCE (IVOE08, IVOE09), (IVOE10, IVOE11)                    00710300
C                                                                       00720300
C     *** SPECIFICATION STATEMENTS FOR TEST 009 ***                     00730300
C                                                                       00740300
      EQUIVALENCE (IVOE12, IVOE13), (IVOE13, IVOE14)                    00750300
C                                                                       00760300
C     *** SPECIFICATION STATEMENTS FOR TEST 010 ***                     00770300
C                                                                       00780300
      EQUIVALENCE (IVOE15, IVOE16)                                      00790300
      EQUIVALENCE (IVOE16, IVOE17)                                      00800300
C                                                                       00810300
C     *** SPECIFICATION STATEMENTS FOR TESTS 011 AND 012 ***            00820300
C                                                                       00830300
      DIMENSION IADE11(2), IADE12(3)                                    00840300
      EQUIVALENCE (IADE11, IADE12)                                      00850300
C                                                                       00860300
C     *** SPECIFICATION STATEMENTS FOR TESTS 013 AND 014 ***            00870300
C                                                                       00880300
      DIMENSION RADE11(5), RADE12(5)                                    00890300
      EQUIVALENCE (RADE11(4), RADE12(2))                                00900300
C                                                                       00910300
C     *** SPECIFICATION STATEMENTS FOR TEST 015 ***                     00920300
C                                                                       00930300
      DIMENSION IADE13(4), IADE14(4)                                    00940300
      EQUIVALENCE (IADE13, IADE14(3))                                   00950300
C                                                                       00960300
C     *** SPECIFICATION STATEMENTS FOR TEST 016 ***                     00970300
C                                                                       00980300
      DIMENSION IADE15(3)                                               00990300
      EQUIVALENCE (IADE15(2), IVOE18)                                   01000300
C                                                                       01010300
C     *** SPECIFICATION STATEMENTS FOR TESTS 017 AND 018 ***            01020300
C                                                                       01030300
      DIMENSION IADE21(2,2), IADE16(4)                                  01040300
      EQUIVALENCE (IADE21, IADE16)                                      01050300
C                                                                       01060300
C     *** SPECIFICATION STATEMENTS FOR TEST 019 ***                     01070300
C                                                                       01080300
      EQUIVALENCE (IVOE19, IVOE20)                                      01090300
      DATA IVOE19/19/                                                   01100300
C                                                                       01110300
C                                                                       01120300
C                                                                       01130300
C     INITIALIZATION SECTION.                                           01140300
C                                                                       01150300
C     INITIALIZE CONSTANTS                                              01160300
C     ********************                                              01170300
C     I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER          01180300
      I01 = 5                                                           01190300
C     I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER              01200300
      I02 = 6                                                           01210300
C     SYSTEM ENVIRONMENT SECTION                                        01220300
C                                                                       01230300
CX010     THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-010 CONTROL CARD.01240300
C     THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5      01250300
C     (UNIT NUMBER FOR CARD READER).                                    01260300
CX011      THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-011 CONTROL CARD01270300
C     THE CX011 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL            01280300
C     FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX010 ABOVE.         01290300
C                                                                       01300300
CX020     THIS CARD IS PEPLACED BY CONTENTS OF FEXEC X-020 CONTROL CARD.01310300
C     THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02 = 6      01320300
C     (UNIT NUMBER FOR PRINTER).                                        01330300
CX021     THIS CARD IS PEPLACED BY CONTENTS OF FEXEC X-021 CONTROL CARD.01340300
C     THE CX021 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL            01350300
C     FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX020 ABOVE.         01360300
C                                                                       01370300
      IVPASS = 0                                                        01380300
      IVFAIL = 0                                                        01390300
      IVDELE = 0                                                        01400300
      ICZERO = 0                                                        01410300
C                                                                       01420300
C     WRITE OUT PAGE HEADERS                                            01430300
C                                                                       01440300
      WRITE (I02,90002)                                                 01450300
      WRITE (I02,90006)                                                 01460300
      WRITE (I02,90008)                                                 01470300
      WRITE (I02,90004)                                                 01480300
      WRITE (I02,90010)                                                 01490300
      WRITE (I02,90004)                                                 01500300
      WRITE (I02,90016)                                                 01510300
      WRITE (I02,90001)                                                 01520300
      WRITE (I02,90004)                                                 01530300
      WRITE (I02,90012)                                                 01540300
      WRITE (I02,90014)                                                 01550300
      WRITE (I02,90004)                                                 01560300
C                                                                       01570300
C                                                                       01580300
C     ****  FCVS PROGRAM 300  -  TEST 001  ****                         01590300
C                                                                       01600300
C        THIS IS A TEST FOR EQUATING TWO INTEGER VARIABLES.             01610300
C                                                                       01620300
C                                                                       01630300
      IVTNUM =   1                                                      01640300
      IF (ICZERO) 30010, 0010, 30010                                    01650300
 0010 CONTINUE                                                          01660300
      IVCOMP = 0                                                        01670300
      IVOE01 = 5                                                        01680300
      IVOE02 = 7                                                        01690300
      IVCORR = 7                                                        01700300
      IVCOMP = IVOE01                                                   01710300
40010 IF (IVCOMP - 7) 20010,10010,20010                                 01720300
30010 IVDELE = IVDELE + 1                                               01730300
      WRITE (I02,80000) IVTNUM                                          01740300
      IF (ICZERO) 10010, 0021, 20010                                    01750300
10010 IVPASS = IVPASS + 1                                               01760300
      WRITE (I02,80002) IVTNUM                                          01770300
      GO TO 0021                                                        01780300
20010 IVFAIL = IVFAIL + 1                                               01790300
      WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR                          01800300
 0021 CONTINUE                                                          01810300
C                                                                       01820300
C     ****  FCVS PROGRAM 300  -  TEST 002  ****                         01830300
C                                                                       01840300
C        THIS IS A TEST FOR EQUATING TWO REAL VARIABLES.                01850300
C                                                                       01860300
C                                                                       01870300
      IVTNUM =   2                                                      01880300
      IF (ICZERO) 30020, 0020, 30020                                    01890300
 0020 CONTINUE                                                          01900300
      RVCOMP = 0.0                                                      01910300
      RVOE01 = 4.5                                                      01920300
      RVOE02 = 1.2                                                      01930300
      RVCORR = 1.2                                                      01940300
      RVCOMP = RVOE01                                                   01950300
40020 IF (RVCOMP - 1.1995) 20020,10020,40021                            01960300
40021 IF (RVCOMP - 1.2005) 10020,10020,20020                            01970300
30020 IVDELE = IVDELE + 1                                               01980300
      WRITE (I02,80000) IVTNUM                                          01990300
      IF (ICZERO) 10020, 0031, 20020                                    02000300
10020 IVPASS = IVPASS + 1                                               02010300
      WRITE (I02,80002) IVTNUM                                          02020300
      GO TO 0031                                                        02030300
20020 IVFAIL = IVFAIL + 1                                               02040300
      WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR                          02050300
 0031 CONTINUE                                                          02060300
C                                                                       02070300
C     ****  FCVS PROGRAM 300  -  TEST 003  ****                         02080300
C                                                                       02090300
C        THIS IS A TEST FOR EQUATING TWO LOGICAL VARIABLES.             02100300
C                                                                       02110300
C                                                                       02120300
      IVTNUM =   3                                                      02130300
      IF (ICZERO) 30030, 0030, 30030                                    02140300
 0030 CONTINUE                                                          02150300
      LVOE01 = .TRUE.                                                   02160300
      LVOE02 = .FALSE.                                                  02170300
      IVCORR = 0                                                        02180300
      IVCOMP = 0                                                        02190300
      IF (LVOE01) IVCOMP = 1                                            02200300
40030 IF (IVCOMP) 20030,10030,20030                                     02210300
30030 IVDELE = IVDELE + 1                                               02220300
      WRITE (I02,80000) IVTNUM                                          02230300
      IF (ICZERO) 10030, 0041, 20030                                    02240300
10030 IVPASS = IVPASS + 1                                               02250300
      WRITE (I02,80002) IVTNUM                                          02260300
      GO TO 0041                                                        02270300
20030 IVFAIL = IVFAIL + 1                                               02280300
      WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR                          02290300
 0041 CONTINUE                                                          02300300
C                                                                       02310300
C     ****  FCVS PROGRAM 300  -  TEST 004  ****                         02320300
C                                                                       02330300
C        THIS IS A TEST FOR EQUATING TWO CHARACTER VARIABLES.           02340300
C                                                                       02350300
C                                                                       02360300
      IVTNUM =   4                                                      02370300
      IF (ICZERO) 30040, 0040, 30040                                    02380300
 0040 CONTINUE                                                          02390300
      CVCOMP = '   '                                                    02400300
      CVTE01 = 'ABC'                                                    02410300
      CVTE02 = 'DEF'                                                    02420300
      CVCORR = 'DEF'                                                    02430300
      CVCOMP = CVTE01                                                   02440300
40040 IF (CVCOMP .EQ. 'DEF') GO TO 10040                                02450300
40041 GO TO 20040                                                       02460300
30040 IVDELE = IVDELE + 1                                               02470300
      WRITE (I02,80000) IVTNUM                                          02480300
      IF (ICZERO) 10040, 0051, 20040                                    02490300
10040 IVPASS = IVPASS + 1                                               02500300
      WRITE (I02,80002) IVTNUM                                          02510300
      GO TO 0051                                                        02520300
20040 IVFAIL = IVFAIL + 1                                               02530300
      WRITE (I02,80018) IVTNUM, CVCOMP, CVCORR                          02540300
 0051 CONTINUE                                                          02550300
C                                                                       02560300
C     ****  FCVS PROGRAM 300  -  TEST 005  ****                         02570300
C                                                                       02580300
C     THIS IS A TEST FOR EQUATING THREE INTEGER VARIABLES.              02590300
C                                                                       02600300
C                                                                       02610300
      IVTNUM =   5                                                      02620300
      IF (ICZERO) 30050, 0050, 30050                                    02630300
 0050 CONTINUE                                                          02640300
      IVCOMP = 0                                                        02650300
      IVOE03 = 3                                                        02660300
      IVOE04 = 4                                                        02670300
      IVOE05 = 5                                                        02680300
      IVCORR = 5                                                        02690300
      IVCOMP = IVOE03                                                   02700300
40050 IF (IVCOMP - 5) 20050,40051,20050                                 02710300
40051 IVCOMP = IVOE04                                                   02720300
40052 IF (IVCOMP - 5) 20050,10050,20050                                 02730300
30050 IVDELE = IVDELE + 1                                               02740300
      WRITE (I02,80000) IVTNUM                                          02750300
      IF (ICZERO) 10050, 0061, 20050                                    02760300
10050 IVPASS = IVPASS + 1                                               02770300
      WRITE (I02,80002) IVTNUM                                          02780300
      GO TO 0061                                                        02790300
20050 IVFAIL = IVFAIL + 1                                               02800300
      WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR                          02810300
 0061 CONTINUE                                                          02820300
C                                                                       02830300
C     ****  FCVS PROGRAM 300  -  TEST 006  ****                         02840300
C                                                                       02850300
C        THIS IS A TEST FOR EQUATING TWO INTEGER VARIABLES AND ONE      02860300
C     REAL VARIABLE WITHIN ONE EQUIVALENCE STATEMENT LIST OF NAMES.  THE02870300
C     VALUE OF THE REAL VARIABLE IS NOT TESTED.                         02880300
C                                                                       02890300
C                                                                       02900300
      IVTNUM =   6                                                      02910300
      IF (ICZERO) 30060, 0060, 30060                                    02920300
 0060 CONTINUE                                                          02930300
      IVCOMP = 0                                                        02940300
      RVOE03 = 3.445                                                    02950300
      IVOE06 = 6                                                        02960300
      IVOE07 = 7                                                        02970300
      IVCORR = 7                                                        02980300
      IVCOMP = IVOE06                                                   02990300
40060 IF (IVCOMP - 7) 20060,10060,20060                                 03000300
30060 IVDELE = IVDELE + 1                                               03010300
      WRITE (I02,80000) IVTNUM                                          03020300
      IF (ICZERO) 10060, 0071, 20060                                    03030300
10060 IVPASS = IVPASS + 1                                               03040300
      WRITE (I02,80002) IVTNUM                                          03050300
      GO TO 0071                                                        03060300
20060 IVFAIL = IVFAIL + 1                                               03070300
      WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR                          03080300
 0071 CONTINUE                                                          03090300
C                                                                       03100300
C     ****  FCVS PROGRAM 300  -  TEST 007  ****                         03110300
C                                                                       03120300
C        THIS IS A TEST FOR EQUATING INTEGER VARIABLES USING TWO LISTS  03130300
C     OF NAMES IN ONE EQUIVALENCE STATEMENT.  NAMES SPECIFIED IN THE    03140300
C     FIRST LIST ARE NOT EQUATED TO NAMES IN THE SECOND LIST.  THIS     03150300
C     TEST CHECKS THE EQUIVALINCE OF THE VARIABLES IN THE FIRST LIST.   03160300
C                                                                       03170300
C                                                                       03180300
      IVTNUM =   7                                                      03190300
      IF (ICZERO) 30070, 0070, 30070                                    03200300
 0070 CONTINUE                                                          03210300
      IVCOMP = 0                                                        03220300
      IVOE08 = 8                                                        03230300
      IVOE09 = 9                                                        03240300
      IVOE10 = 10                                                       03250300
      IVOE11 = 11                                                       03260300
      IVCORR = 9                                                        03270300
      IVCOMP = IVOE08                                                   03280300
40070 IF (IVCOMP - 9) 20070,10070,20070                                 03290300
30070 IVDELE = IVDELE + 1                                               03300300
      WRITE (I02,80000) IVTNUM                                          03310300
      IF (ICZERO) 10070, 0081, 20070                                    03320300
10070 IVPASS = IVPASS + 1                                               03330300
      WRITE (I02,80002) IVTNUM                                          03340300
      GO TO 0081                                                        03350300
20070 IVFAIL = IVFAIL + 1                                               03360300
      WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR                          03370300
 0081 CONTINUE                                                          03380300
C                                                                       03390300
C     ****  FCVS PROGRAM 300  -  TEST 008  ****                         03400300
C                                                                       03410300
C        THIS TEST CHECKS THE EQUIVALENCE OF THE VARIABLES IN THE       03420300
C     SECOND LIST.                                                      03430300
C                                                                       03440300
C                                                                       03450300
      IVTNUM =   8                                                      03460300
      IF (ICZERO) 30080, 0080, 30080                                    03470300
 0080 CONTINUE                                                          03480300
      IVCOMP = 0                                                        03490300
      IVCORR = 11                                                       03500300
      IVCOMP = IVOE10                                                   03510300
40080 IF (IVCOMP - 11) 20080,10080,20080                                03520300
30080 IVDELE = IVDELE + 1                                               03530300
      WRITE (I02,80000) IVTNUM                                          03540300
      IF (ICZERO) 10080, 0091, 20080                                    03550300
10080 IVPASS = IVPASS + 1                                               03560300
      WRITE (I02,80002) IVTNUM                                          03570300
      GO TO 0091                                                        03580300
20080 IVFAIL = IVFAIL + 1                                               03590300
      WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR                          03600300
 0091 CONTINUE                                                          03610300
C                                                                       03620300
C     ****  FCVS PROGRAM 300  -  TEST 009  ****                         03630300
C                                                                       03640300
C        THIS IS A TEST FOR EQUATING INTEGER VARIABLES IN ONE LIST      03650300
C     WITH INTEGER VARIABLES IN A SECOND LIST OF THE SAME EQUIVALENCE   03660300
C     STATEMENT.  ALL VARIABLES SHOULD BE EQUATED AND SHARE THE SAME    03670300
C     STORAGE UNIT.                                                     03680300
C                                                                       03690300
C                                                                       03700300
      IVTNUM =   9                                                      03710300
      IF (ICZERO) 30090, 0090, 30090                                    03720300
 0090 CONTINUE                                                          03730300
      IVCOMP = 0                                                        03740300
      IVOE12 = 12                                                       03750300
      IVOE13 = 13                                                       03760300
      IVOE14 = 14                                                       03770300
      IVCORR = 14                                                       03780300
      IVCOMP = IVOE13                                                   03790300
40090 IF (IVCOMP - 14) 20090,40091,20090                                03800300
40091 IVCOMP = IVOE12                                                   03810300
40092 IF (IVCOMP - 14) 20090,10090,20090                                03820300
30090 IVDELE = IVDELE + 1                                               03830300
      WRITE (I02,80000) IVTNUM                                          03840300
      IF (ICZERO) 10090, 0101, 20090                                    03850300
10090 IVPASS = IVPASS + 1                                               03860300
      WRITE (I02,80002) IVTNUM                                          03870300
      GO TO 0101                                                        03880300
20090 IVFAIL = IVFAIL + 1                                               03890300
      WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR                          03900300
 0101 CONTINUE                                                          03910300
C                                                                       03920300
C     ****  FCVS PROGRAM 300  -  TEST 010  ****                         03930300
C                                                                       03940300
C        THIS IS A TEST FOR EQUATING INTEGER VARIABLES SPECIFIED IN ONE 03950300
C     EQUIVALENCE STATEMENT WITH INTEGER VARIABLES SPECIFIED IN A       03960300
C     SECOND EQUIVALENCE STATEMENT.  ONE VARIABLE IS SPECIFIED IN BOTH  03970300
C     STATEMENTS, THEREFORE ALL VARIABLES SHOULD BE EQUATED AND SHARE   03980300
C     THE SAME STORAGE UNIT.                                            03990300
C                                                                       04000300
C                                                                       04010300
      IVTNUM =  10                                                      04020300
      IF (ICZERO) 30100, 0100, 30100                                    04030300
 0100 CONTINUE                                                          04040300
      IVCOMP = 0                                                        04050300
      IVOE15 = 15                                                       04060300
      IVOE16 = 16                                                       04070300
      IVOE17 = 17                                                       04080300
      IVCORR = 17                                                       04090300
      IVCOMP = IVOE16                                                   04100300
40100 IF (IVCOMP - 17) 20100,40101,20100                                04110300
40101 IVCOMP = IVOE15                                                   04120300
40102 IF (IVCOMP - 17) 20100,10100,20100                                04130300
30100 IVDELE = IVDELE + 1                                               04140300
      WRITE (I02,80000) IVTNUM                                          04150300
      IF (ICZERO) 10100, 0111, 20100                                    04160300
10100 IVPASS = IVPASS + 1                                               04170300
      WRITE (I02,80002) IVTNUM                                          04180300
      GO TO 0111                                                        04190300
20100 IVFAIL = IVFAIL + 1                                               04200300
      WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR                          04210300
 0111 CONTINUE                                                          04220300
C                                                                       04230300
C     ****  FCVS PROGRAM 300  -  TEST 011  ****                         04240300
C                                                                       04250300
C        THIS IS A TEST FOR EQUATING TWO INTEGER ARRAYS UNQUALIFIED     04260300
C     BY A SUBSCRIPT IN THE EQUIVALENCE STATEMENT.  ALL ARRAY ELEMENTS  04270300
C     SPECIFIED BY THE SAME SUBSCRIPT VALUE, BEGINNING WITH THE FIRST   04280300
C     ARRAY ELEMENT, SHOULD BE EQUATED AND SHARE THE SAME STORAGE UNIT. 04290300
C     THIS TEST CHECKS THE EQUIVALENCE OF THE FIRST ARRAY ELEMENTS.     04300300
C                                                                       04310300
C                                                                       04320300
      IVTNUM =  11                                                      04330300
      IF (ICZERO) 30110, 0110, 30110                                    04340300
 0110 CONTINUE                                                          04350300
      IVCOMP = 0                                                        04360300
      IADE11(1) = 111                                                   04370300
      IADE11(2) = 112                                                   04380300
      IADE12(1) = 121                                                   04390300
      IADE12(2) = 122                                                   04400300
      IADE12(3) = 123                                                   04410300
      IVCORR = 121                                                      04420300
      IVCOMP = IADE11(1)                                                04430300
40110 IF (IVCOMP - 121) 20110,10110,20110                               04440300
30110 IVDELE = IVDELE + 1                                               04450300
      WRITE (I02,80000) IVTNUM                                          04460300
      IF (ICZERO) 10110, 0121, 20110                                    04470300
10110 IVPASS = IVPASS + 1                                               04480300
      WRITE (I02,80002) IVTNUM                                          04490300
      GO TO 0121                                                        04500300
20110 IVFAIL = IVFAIL + 1                                               04510300
      WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR                          04520300
 0121 CONTINUE                                                          04530300
C                                                                       04540300
C     ****  FCVS PROGRAM 300  -  TEST 012  ****                         04550300
C                                                                       04560300
C        THIS TEST CHECKS THE EQUIVALENCE OF THE SECOND ARRAY ELEMENTS. 04570300
C                                                                       04580300
C                                                                       04590300
      IVTNUM =  12                                                      04600300
      IF (ICZERO) 30120, 0120, 30120                                    04610300
 0120 CONTINUE                                                          04620300
      IVCOMP = 0                                                        04630300
      IVCORR = 122                                                      04640300
      IVCOMP = IADE11(2)                                                04650300
40120 IF (IVCOMP - 122) 20120,10120,20120                               04660300
30120 IVDELE = IVDELE + 1                                               04670300
      WRITE (I02,80000) IVTNUM                                          04680300
      IF (ICZERO) 10120, 0131, 20120                                    04690300
10120 IVPASS = IVPASS + 1                                               04700300
      WRITE (I02,80002) IVTNUM                                          04710300
      GO TO 0131                                                        04720300
20120 IVFAIL = IVFAIL + 1                                               04730300
      WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR                          04740300
 0131 CONTINUE                                                          04750300
C                                                                       04760300
C     ****  FCVS PROGRAM 300  -  TEST 013  ****                         04770300
C                                                                       04780300
C        THIS IS A TEST FOR EQUATING TWO REAL ARRAY ELEMENTS.  THIS     04790300
C     TEST CHECKS THE EQUIVALENCE OF THE TWO ARRAY ELEMENTS SPECIFIED   04800300
C     IN THE EQUIVALENCE STATEMENT.                                     04810300
C                                                                       04820300
C                                                                       04830300
      IVTNUM =  13                                                      04840300
      IF (ICZERO) 30130, 0130, 30130                                    04850300
 0130 CONTINUE                                                          04860300
      RVCOMP = 0.0                                                      04870300
      RADE11(4) = 11.4                                                  04880300
      RADE12(2) = 1.22                                                  04890300
      RVCORR = 1.22                                                     04900300
      RVCOMP = RADE11(4)                                                04910300
40130 IF (RVCOMP - 1.2195) 20130,10130,40131                            04920300
40131 IF (RVCOMP - 1.2205) 10130,10130,20130                            04930300
30130 IVDELE = IVDELE + 1                                               04940300
      WRITE (I02,80000) IVTNUM                                          04950300
      IF (ICZERO) 10130, 0141, 20130                                    04960300
10130 IVPASS = IVPASS + 1                                               04970300
      WRITE (I02,80002) IVTNUM                                          04980300
      GO TO 0141                                                        04990300
20130 IVFAIL = IVFAIL + 1                                               05000300
      WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR                          05010300
 0141 CONTINUE                                                          05020300
C                                                                       05030300
C     ****  FCVS PROGRAM 300  -  TEST 014  ****                         05040300
C                                                                       05050300
C        THIS TEST CHECKS THE EQUIVALENCE OF THE ARRAY ELEMENTS         05060300
C     WITH A SUBSCRIPT VALUE ONE LESS THAN THOSE TESTED IN THE          05070300
C     PREVIOUS TEST.  THESE ELEMENTS SHOULD BE EQUATED AND SHARE THE    05080300
C     SAME STORAGE UNIT DUE TO THE WAY ARRAY ELEMENTS OCCUPY            05090300
C     CONSECUTIVE STORAGE UNITS.                                        05100300
C                                                                       05110300
C                                                                       05120300
      IVTNUM =  14                                                      05130300
      IF (ICZERO) 30140, 0140, 30140                                    05140300
 0140 CONTINUE                                                          05150300
      RVCOMP = 0.0                                                      05160300
      RADE11(3) = .113                                                  05170300
      RADE12(1) = 122.                                                  05180300
      RVCORR = 122.                                                     05190300
      RVCOMP = RADE11(3)                                                05200300
40140 IF (RVCOMP - 121.95) 20140,10140,40141                            05210300
40141 IF (RVCOMP - 122.05) 10140,10140,20140                            05220300
30140 IVDELE = IVDELE + 1                                               05230300
      WRITE (I02,80000) IVTNUM                                          05240300
      IF (ICZERO) 10140, 0151, 20140                                    05250300
10140 IVPASS = IVPASS + 1                                               05260300
      WRITE (I02,80002) IVTNUM                                          05270300
      GO TO 0151                                                        05280300
20140 IVFAIL = IVFAIL + 1                                               05290300
      WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR                          05300300
 0151 CONTINUE                                                          05310300
C                                                                       05320300
C     ****  FCVS PROGRAM 300  -  TEST 015  ****                         05330300
C                                                                       05340300
C        THIS IS A TEST TO EQUATE AN ARRAY NAME TO AN ARRAY ELEMENT     05350300
C     NAME.                                                             05360300
C                                                                       05370300
C                                                                       05380300
      IVTNUM =  15                                                      05390300
      IF (ICZERO) 30150, 0150, 30150                                    05400300
 0150 CONTINUE                                                          05410300
      IVCOMP = 0                                                        05420300
      IADE13(1) = 131                                                   05430300
      IADE14(3) = 143                                                   05440300
      IVCORR = 143                                                      05450300
      IVCOMP = IADE13(1)                                                05460300
40150 IF (IVCOMP - 143) 20150,10150,20150                               05470300
30150 IVDELE = IVDELE + 1                                               05480300
      WRITE (I02,80000) IVTNUM                                          05490300
      IF (ICZERO) 10150, 0161, 20150                                    05500300
10150 IVPASS = IVPASS + 1                                               05510300
      WRITE (I02,80002) IVTNUM                                          05520300
      GO TO 0161                                                        05530300
20150 IVFAIL = IVFAIL + 1                                               05540300
      WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR                          05550300
 0161 CONTINUE                                                          05560300
C                                                                       05570300
C     ****  FCVS PROGRAM 300  -  TEST 016  ****                         05580300
C                                                                       05590300
C        THIS IS A TEST TO EQUATE AN ARRAY ELEMENT TO AN INTEGER        05600300
C     VARIABLE.                                                         05610300
C                                                                       05620300
C                                                                       05630300
      IVTNUM =  16                                                      05640300
      IF (ICZERO) 30160, 0160, 30160                                    05650300
 0160 CONTINUE                                                          05660300
      IVCOMP = 0                                                        05670300
      IADE15(2) = 152                                                   05680300
      IVOE18 = 18                                                       05690300
      IVCORR = 18                                                       05700300
      IVCOMP = IADE15(2)                                                05710300
40160 IF (IVCOMP - 18) 20160,10160,20160                                05720300
30160 IVDELE = IVDELE + 1                                               05730300
      WRITE (I02,80000) IVTNUM                                          05740300
      IF (ICZERO) 10160, 0171, 20160                                    05750300
10160 IVPASS = IVPASS + 1                                               05760300
      WRITE (I02,80002) IVTNUM                                          05770300
      GO TO 0171                                                        05780300
20160 IVFAIL = IVFAIL + 1                                               05790300
      WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR                          05800300
 0171 CONTINUE                                                          05810300
C                                                                       05820300
C     ****  FCVS PROGRAM 300  -  TEST 017  ****                         05830300
C                                                                       05840300
C        THIS IS A TEST TO EQUATE A ONE DIMENSIONAL ARRAY TO A TWO      05850300
C     DIMENSIONAL ARRAY.  THIS TEST CHECKS THE SECOND ARRAY ELEMENTS.   05860300
C                                                                       05870300
C                                                                       05880300
      IVTNUM =  17                                                      05890300
      IF (ICZERO) 30170, 0170, 30170                                    05900300
 0170 CONTINUE                                                          05910300
      IVCOMP = 0                                                        05920300
      IADE21(2,1) = 212                                                 05930300
      IADE16(2) = 162                                                   05940300
      IVCORR = 162                                                      05950300
      IVCOMP = IADE21(2,1)                                              05960300
40170 IF (IVCOMP - 162) 20170,10170,20170                               05970300
30170 IVDELE = IVDELE + 1                                               05980300
      WRITE (I02,80000) IVTNUM                                          05990300
      IF (ICZERO) 10170, 0181, 20170                                    06000300
10170 IVPASS = IVPASS + 1                                               06010300
      WRITE (I02,80002) IVTNUM                                          06020300
      GO TO 0181                                                        06030300
20170 IVFAIL = IVFAIL + 1                                               06040300
      WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR                          06050300
 0181 CONTINUE                                                          06060300
C                                                                       06070300
C     ****  FCVS PROGRAM 300  -  TEST 018  ****                         06080300
C                                                                       06090300
C        THIS TEST CHECKS THE THIRD ARRAY ELEMENTS FROM THE PREVIOUS    06100300
C     TEST.                                                             06110300
C                                                                       06120300
C                                                                       06130300
      IVTNUM =  18                                                      06140300
      IF (ICZERO) 30180, 0180, 30180                                    06150300
 0180 CONTINUE                                                          06160300
      IVCOMP = 0                                                        06170300
      IADE21(1,2) = 2112                                                06180300
      IADE16(3) = 163                                                   06190300
      IVCORR = 163                                                      06200300
      IVCOMP = IADE21(1,2)                                              06210300
40180 IF (IVCOMP - 163) 20180,10180,20180                               06220300
30180 IVDELE = IVDELE + 1                                               06230300
      WRITE (I02,80000) IVTNUM                                          06240300
      IF (ICZERO) 10180, 0191, 20180                                    06250300
10180 IVPASS = IVPASS + 1                                               06260300
      WRITE (I02,80002) IVTNUM                                          06270300
      GO TO 0191                                                        06280300
20180 IVFAIL = IVFAIL + 1                                               06290300
      WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR                          06300300
 0191 CONTINUE                                                          06310300
C                                                                       06320300
C     ****  FCVS PROGRAM 300  -  TEST 019  ****                         06330300
C                                                                       06340300
C        THIS IS A TEST TO EQUATE TWO INTEGER VARIABLES ONE OF WHICH    06350300
C     IS INITIALIZED IN A DATA STATEMENT.                               06360300
C                                                                       06370300
C                                                                       06380300
      IVTNUM =  19                                                      06390300
      IF (ICZERO) 30190, 0190, 30190                                    06400300
 0190 CONTINUE                                                          06410300
      IVCOMP = 0                                                        06420300
      IVCORR = 19                                                       06430300
      IVCOMP = IVOE20                                                   06440300
40190 IF (IVCOMP - 19) 20190,10190,20190                                06450300
30190 IVDELE = IVDELE + 1                                               06460300
      WRITE (I02,80000) IVTNUM                                          06470300
      IF (ICZERO) 10190, 0201, 20190                                    06480300
10190 IVPASS = IVPASS + 1                                               06490300
      WRITE (I02,80002) IVTNUM                                          06500300
      GO TO 0201                                                        06510300
20190 IVFAIL = IVFAIL + 1                                               06520300
      WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR                          06530300
 0201 CONTINUE                                                          06540300
C                                                                       06550300
C                                                                       06560300
C     WRITE OUT TEST SUMMARY                                            06570300
C                                                                       06580300
      WRITE (I02,90004)                                                 06590300
      WRITE (I02,90014)                                                 06600300
      WRITE (I02,90004)                                                 06610300
      WRITE (I02,90000)                                                 06620300
      WRITE (I02,90004)                                                 06630300
      WRITE (I02,90020) IVFAIL                                          06640300
      WRITE (I02,90022) IVPASS                                          06650300
      WRITE (I02,90024) IVDELE                                          06660300
      STOP                                                              06670300
90001 FORMAT (" ",24X,"FM300")                                          06680300
90000 FORMAT (" ",20X,"END OF PROGRAM FM300" )                          06690300
C                                                                       06700300
C     FORMATS FOR TEST DETAIL LINES                                     06710300
C                                                                       06720300
80000 FORMAT (" ",4X,I5,6X,"DELETED")                                   06730300
80002 FORMAT (" ",4X,I5,7X,"PASS")                                      06740300
80010 FORMAT (" ",4X,I5,7X,"FAIL",10X,I6,9X,I6)                         06750300
80012 FORMAT (" ",4X,I5,7X,"FAIL",4X,E12.5,3X,E12.5)                    06760300
80018 FORMAT (" ",4X,I5,7X,"FAIL",2X,A14,1X,A14)                        06770300
C                                                                       06780300
C     FORMAT STATEMENTS FOR PAGE HEADERS                                06790300
C                                                                       06800300
90002 FORMAT ("1")                                                      06810300
90004 FORMAT (" ")                                                      06820300
90006 FORMAT (" ",10X,"FORTRAN COMPILER VALIDATION SYSTEM" )            06830300
90008 FORMAT (" ",21X,"VERSION 2.1" )                                   06840300
90010 FORMAT (" ",8X,"FOR OFFICIAL USE ONLY - COPYRIGHT 1978" )         06850300
90012 FORMAT (" ",5X,"TEST",5X,"PASS/FAIL",5X,"COMPUTED",8X,"CORRECT")  06860300
90014 FORMAT (" ",5X,"----------------------------------------------" ) 06870300
90016 FORMAT (" ",18X,"SUBSET LEVEL TEST" )                             06880300
C                                                                       06890300
C     FORMAT STATEMENTS FOR RUN SUMMARY                                 06900300
C                                                                       06910300
90020 FORMAT (" ",19X,I5," TESTS FAILED" )                              06920300
90022 FORMAT (" ",19X,I5," TESTS PASSED" )                              06930300
90024 FORMAT (" ",19X,I5," TESTS DELETED" )                             06940300
      END                                                               06950300