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