blob: c7537801c72bd28fad6e74ecef936543e7aefc4c [file] [log] [blame]
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