blob: 3e7f2794254d1e6a056b66ecf91353024ec4b831 [file] [log] [blame]
PROGRAM FM201 00010201
C 00020201
C 00030201
C THIS ROUTINE VERIFIES THAT 00040201
C 00050201
C (1) THE VALUE OF A SIGNED ZERO IS THE SAME AS THE VALUE OF 00060201
C AN UNSIGNED ZERO FOR INTEGER AND REAL VARIABLES. 00070201
C 00080201
C (2) A BASIC REAL CONSTANT MAY BE WRITTEN WITH MORE DIGITS 00090201
C THAN A PROCESSOR WILL USE TO APPROXIMATE THE VALUE OF 00100201
C THE CONSTANT. 00110201
C 00120201
C (3) AN IMPLICIT STATEMENT CAN BE USED TO CHANGE THE DEFAULT 00130201
C IMPLICIT INTEGER AND REAL TYPING. 00140201
C 00150201
C (4) THE IMPLICIT INTEGER AND REAL TYPING OF AN IMPLICIT 00160201
C STATEMENT MAY BE OVERRIDDEN BY THE APPEARANCE OF A 00170201
C VARIABLE NAME IN A TYPE-STATEMENT. 00180201
C 00190201
C REFERENCES 00200201
C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, 00210201
C X3.9-1978 00220201
C 00230201
C SECTION 4.1.3, DATA TYPE PROPERTIES 00240201
C SECTION 4.4.1, BASIC REAL CONSTANT 00250201
C SECTION 6.1.5, INTEGER DIVISION 00260201
C SECTION 8.4, TYPE-STATEMENTS 00270201
C SECTION 8.5, IMPLICIT STATEMENT 00280201
C 00290201
C 00300201
C ******************************************************************00310201
C A COMPILER VALIDATION SYSTEM FOR THE FORTRAN LANGUAGE 00320201
C BASED ON SPECIFICATIONS AS DEFINED IN AMERICAN STANDARD FORTRAN 00330201
C X3.9-1978, HAS BEEN DEVELOPED BY THE DEPARTMENT OF THE NAVY. THE 00340201
C FORTRAN COMPILER VALIDATION SYSTEM (FCVS) CONSISTS OF AUDIT 00350201
C ROUTINES, THEIR RELATED DATA, AND AN EXECUTIVE SYSTEM. EACH AUDIT00360201
C ROUTINE IS A FORTRAN PROGRAM OR SUBPROGRAM WHICH INCLUDES TESTS 00370201
C OF SPECIFIC LANGUAGE ELEMENTS AND SUPPORTING PROCEDURES INDICATING00380201
C THE RESULT OF EXECUTING THESE TESTS. 00390201
C 00400201
C THIS PARTICULAR PROGRAM OR SUBPROGRAM CONTAINS ONLY FEATURES 00410201
C FOUND IN THE SUBSET LEVEL OF THE STANDARD. 00420201
C 00430201
C SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO 00440201
C NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY 00450201
C SOFTWARE STANDARDS VALIDATION GROUP 00460201
C BUILDING 225 RM A266 00470201
C GAITHERSBURG, MD 20899 00480201
C ******************************************************************00490201
C 00500201
C 00510201
IMPLICIT LOGICAL (L) 00520201
IMPLICIT CHARACTER*14 (C) 00530201
C 00540201
IMPLICIT INTEGER (Y, V-X), REAL (M) 00550201
REAL RVTN01, RVTN02, RVTN03, YVTN02 00560201
INTEGER IVTN01, IVTN02, MVTN02 00570201
C THE ABOVE THREE STATEMENTS ARE REFERENCED IN TESTS 29 THRU 35. 00580201
C 00590201
C 00600201
C 00610201
C INITIALIZATION SECTION. 00620201
C 00630201
C INITIALIZE CONSTANTS 00640201
C ******************** 00650201
C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER 00660201
I01 = 5 00670201
C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER 00680201
I02 = 6 00690201
C SYSTEM ENVIRONMENT SECTION 00700201
C 00710201
CX010 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-010 CONTROL CARD.00720201
C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 00730201
C (UNIT NUMBER FOR CARD READER). 00740201
CX011 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-011 CONTROL CARD00750201
C THE CX011 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL 00760201
C FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX010 ABOVE. 00770201
C 00780201
CX020 THIS CARD IS PEPLACED BY CONTENTS OF FEXEC X-020 CONTROL CARD.00790201
C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02 = 6 00800201
C (UNIT NUMBER FOR PRINTER). 00810201
CX021 THIS CARD IS PEPLACED BY CONTENTS OF FEXEC X-021 CONTROL CARD.00820201
C THE CX021 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL 00830201
C FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX020 ABOVE. 00840201
C 00850201
IVPASS = 0 00860201
IVFAIL = 0 00870201
IVDELE = 0 00880201
ICZERO = 0 00890201
C 00900201
C WRITE OUT PAGE HEADERS 00910201
C 00920201
WRITE (I02,90002) 00930201
WRITE (I02,90006) 00940201
WRITE (I02,90008) 00950201
WRITE (I02,90004) 00960201
WRITE (I02,90010) 00970201
WRITE (I02,90004) 00980201
WRITE (I02,90016) 00990201
WRITE (I02,90001) 01000201
WRITE (I02,90004) 01010201
WRITE (I02,90012) 01020201
WRITE (I02,90014) 01030201
WRITE (I02,90004) 01040201
C 01050201
C 01060201
C TEST 14 THROUGH TEST 17 COMPARE INTEGER VARIABLES WHICH ARE 01070201
C SET TO SIGNED ZERO AND UNSIGNED ZERO VALUES BY THE FOLLOWING 01080201
C STATEMENTS 01090201
C 01100201
IVON01 = 0 01110201
IVON02 = -0 01120201
IVON03 = +0 01130201
C 01140201
C REFERENCE X3.9-1978, SECTION 4.1.3, DATA TYPE PROPERTIES 01150201
C 01160201
C **** FCVS PROGRAM 201 - TEST 014 **** 01170201
C 01180201
C COMPARE 0 TO -0 01190201
C 01200201
IVTNUM = 14 01210201
IF (ICZERO) 30140, 0140, 30140 01220201
0140 CONTINUE 01230201
IVCOMP = 1 01240201
IVCORR = 0 01250201
IF (IVON01 .EQ. IVON02) IVCOMP = 0 01260201
40140 IF (IVCOMP) 20140, 10140, 20140 01270201
30140 IVDELE = IVDELE + 1 01280201
WRITE (I02,80000) IVTNUM 01290201
IF (ICZERO) 10140, 0151, 20140 01300201
10140 IVPASS = IVPASS + 1 01310201
WRITE (I02,80002) IVTNUM 01320201
GO TO 0151 01330201
20140 IVFAIL = IVFAIL + 1 01340201
WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 01350201
0151 CONTINUE 01360201
C 01370201
C **** FCVS PROGRAM 201 - TEST 015 **** 01380201
C 01390201
C COMPARE 0 TO +0 01400201
C 01410201
IVTNUM = 15 01420201
IF (ICZERO) 30150, 0150, 30150 01430201
0150 CONTINUE 01440201
IVCOMP = 1 01450201
IVCORR = 0 01460201
IF (IVON01 .EQ. IVON03) IVCOMP = 0 01470201
40150 IF (IVCOMP) 20150, 10150, 20150 01480201
30150 IVDELE = IVDELE + 1 01490201
WRITE (I02,80000) IVTNUM 01500201
IF (ICZERO) 10150, 0161, 20150 01510201
10150 IVPASS = IVPASS + 1 01520201
WRITE (I02,80002) IVTNUM 01530201
GO TO 0161 01540201
20150 IVFAIL = IVFAIL + 1 01550201
WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 01560201
0161 CONTINUE 01570201
C 01580201
C **** FCVS PROGRAM 201 - TEST 016 **** 01590201
C 01600201
C COMPARE -0 TO +0 01610201
C 01620201
IVTNUM = 16 01630201
IF (ICZERO) 30160, 0160, 30160 01640201
0160 CONTINUE 01650201
IVCOMP = 1 01660201
IVCORR = 0 01670201
IF (IVON02 .EQ. IVON03) IVCOMP = 0 01680201
40160 IF (IVCOMP) 20160, 10160, 20160 01690201
30160 IVDELE = IVDELE + 1 01700201
WRITE (I02,80000) IVTNUM 01710201
IF (ICZERO) 10160, 0171, 20160 01720201
10160 IVPASS = IVPASS + 1 01730201
WRITE (I02,80002) IVTNUM 01740201
GO TO 0171 01750201
20160 IVFAIL = IVFAIL + 1 01760201
WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 01770201
0171 CONTINUE 01780201
C 01790201
C **** FCVS PROGRAM 201 - TEST 017 **** 01800201
C 01810201
C MINUS ZERO (-0) SHOULD NOT BE LESS THAN PLUS ZERO (+0) 01820201
C 01830201
IVTNUM = 17 01840201
IF (ICZERO) 30170, 0170, 30170 01850201
0170 CONTINUE 01860201
IVCOMP = 1 01870201
IVCORR = 0 01880201
IF (IVON02 .LT. IVON03) GO TO 20170 01890201
IVCOMP = 0 01900201
GO TO 10170 01910201
30170 IVDELE = IVDELE + 1 01920201
WRITE (I02,80000) IVTNUM 01930201
IF (ICZERO) 10170, 0181, 20170 01940201
10170 IVPASS = IVPASS + 1 01950201
WRITE (I02,80002) IVTNUM 01960201
GO TO 0181 01970201
20170 IVFAIL = IVFAIL + 1 01980201
WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 01990201
0181 CONTINUE 02000201
C 02010201
C TEST 18 THROUGH TEST 24 COMPARE REAL VARIABLES WHICH ARE SET 02020201
C TO SIGNED ZERO AND UNSIGNED ZERO VALUES BY THE FOLLOWING 02030201
C STATEMENTS 02040201
C 02050201
RVON01 = 0.0 02060201
RVON02 = -0.0 02070201
RVON03 = +0.0 02080201
RVON04 = -0.0E+01 02090201
RVON05 = -0E+10 02100201
C 02110201
C REFERENCE X3.9-1978, SECTION 4.1.3, DATA TYPE PROPERTIES 02120201
C 02130201
C **** FCVS PROGRAM 201 - TEST 018 **** 02140201
C 02150201
C COMPARE 0.0 TO -0.0 02160201
C 02170201
IVTNUM = 18 02180201
IF (ICZERO) 30180, 0180, 30180 02190201
0180 CONTINUE 02200201
IVCOMP = 1 02210201
IVCORR = 0 02220201
IF (RVON01 .EQ. RVON02) IVCOMP = 0 02230201
40180 IF (IVCOMP) 20180, 10180, 20180 02240201
30180 IVDELE = IVDELE + 1 02250201
WRITE (I02,80000) IVTNUM 02260201
IF (ICZERO) 10180, 0191, 20180 02270201
10180 IVPASS = IVPASS + 1 02280201
WRITE (I02,80002) IVTNUM 02290201
GO TO 0191 02300201
20180 IVFAIL = IVFAIL + 1 02310201
WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 02320201
0191 CONTINUE 02330201
C 02340201
C **** FCVS PROGRAM 201 - TEST 019 **** 02350201
C 02360201
C COMPARE 0.0 TO +0.0 02370201
C 02380201
IVTNUM = 19 02390201
IF (ICZERO) 30190, 0190, 30190 02400201
0190 CONTINUE 02410201
IVCOMP = 1 02420201
IVCORR = 0 02430201
IF (RVON01 .EQ. RVON03) IVCOMP = 0 02440201
40190 IF (IVCOMP) 20190, 10190, 20190 02450201
30190 IVDELE = IVDELE + 1 02460201
WRITE (I02,80000) IVTNUM 02470201
IF (ICZERO) 10190, 0201, 20190 02480201
10190 IVPASS = IVPASS + 1 02490201
WRITE (I02,80002) IVTNUM 02500201
GO TO 0201 02510201
20190 IVFAIL = IVFAIL + 1 02520201
WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 02530201
0201 CONTINUE 02540201
C 02550201
C **** FCVS PROGRAM 201 - TEST 020 **** 02560201
C 02570201
C COMPARE -0.0 TO +0.0 02580201
C 02590201
IVTNUM = 20 02600201
IF (ICZERO) 30200, 0200, 30200 02610201
0200 CONTINUE 02620201
IVCOMP = 1 02630201
IVCORR = 0 02640201
IF (RVON02 .EQ. RVON03) IVCOMP = 0 02650201
40200 IF (IVCOMP) 20200, 10200, 20200 02660201
30200 IVDELE = IVDELE + 1 02670201
WRITE (I02,80000) IVTNUM 02680201
IF (ICZERO) 10200, 0211, 20200 02690201
10200 IVPASS = IVPASS + 1 02700201
WRITE (I02,80002) IVTNUM 02710201
GO TO 0211 02720201
20200 IVFAIL = IVFAIL + 1 02730201
WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 02740201
0211 CONTINUE 02750201
C 02760201
C **** FCVS PROGRAM 201 - TEST 021 **** 02770201
C 02780201
C MINUS ZERO (-0.0) SHOULD NOT BE LESS THAN PLUS ZERO (+0.0) 02790201
C 02800201
IVTNUM = 21 02810201
IF (ICZERO) 30210, 0210, 30210 02820201
0210 CONTINUE 02830201
IVCOMP = 1 02840201
IVCORR = 0 02850201
IF (RVON02 .LT. RVON03) GO TO 20210 02860201
IVCOMP = 0 02870201
GO TO 10210 02880201
30210 IVDELE = IVDELE + 1 02890201
WRITE (I02,80000) IVTNUM 02900201
IF (ICZERO) 10210, 0221, 20210 02910201
10210 IVPASS = IVPASS + 1 02920201
WRITE (I02,80002) IVTNUM 02930201
GO TO 0221 02940201
20210 IVFAIL = IVFAIL + 1 02950201
WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 02960201
0221 CONTINUE 02970201
C 02980201
C **** FCVS PROGRAM 201 - TEST 022 **** 02990201
C 03000201
C COMPARE -0.0E+01 TO 0.0 03010201
C 03020201
IVTNUM = 22 03030201
IF (ICZERO) 30220, 0220, 30220 03040201
0220 CONTINUE 03050201
IVCOMP = 1 03060201
IVCORR = 0 03070201
IF (RVON04 .EQ. RVON01) IVCOMP = 0 03080201
40220 IF (IVCOMP) 20220, 10220, 20220 03090201
30220 IVDELE = IVDELE + 1 03100201
WRITE (I02,80000) IVTNUM 03110201
IF (ICZERO) 10220, 0231, 20220 03120201
10220 IVPASS = IVPASS + 1 03130201
WRITE (I02,80002) IVTNUM 03140201
GO TO 0231 03150201
20220 IVFAIL = IVFAIL + 1 03160201
WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 03170201
0231 CONTINUE 03180201
C 03190201
C **** FCVS PROGRAM 201 - TEST 023 **** 03200201
C 03210201
C COMPARE -0E+10 TO 0.0 03220201
C 03230201
IVTNUM = 23 03240201
IF (ICZERO) 30230, 0230, 30230 03250201
0230 CONTINUE 03260201
IVCOMP = 1 03270201
IVCORR = 0 03280201
IF (RVON05 .EQ. RVON01) IVCOMP = 0 03290201
40230 IF (IVCOMP) 20230, 10230, 20230 03300201
30230 IVDELE = IVDELE + 1 03310201
WRITE (I02,80000) IVTNUM 03320201
IF (ICZERO) 10230, 0241, 20230 03330201
10230 IVPASS = IVPASS + 1 03340201
WRITE (I02,80002) IVTNUM 03350201
GO TO 0241 03360201
20230 IVFAIL = IVFAIL + 1 03370201
WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 03380201
0241 CONTINUE 03390201
C 03400201
C **** FCVS PROGRAM 201 - TEST 024 **** 03410201
C 03420201
C COMPARE -0E+10 TO +0.0 03430201
C 03440201
IVTNUM = 24 03450201
IF (ICZERO) 30240, 0240, 30240 03460201
0240 CONTINUE 03470201
IVCOMP = 1 03480201
IVCORR = 0 03490201
IF (RVON05 .NE. RVON03) GO TO 20240 03500201
IVCOMP = 0 03510201
GO TO 10240 03520201
30240 IVDELE = IVDELE + 1 03530201
WRITE (I02,80000) IVTNUM 03540201
IF (ICZERO) 10240, 0251, 20240 03550201
10240 IVPASS = IVPASS + 1 03560201
WRITE (I02,80002) IVTNUM 03570201
GO TO 0251 03580201
20240 IVFAIL = IVFAIL + 1 03590201
WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 03600201
0251 CONTINUE 03610201
C 03620201
C TEST 25 THROUGH TEST 28 VERIFY THAT A BASIC REAL CONSTANT MAY 03630201
C BE WRITTEN WITH MORE DIGITS THAN A PROCESSOR WILL USE TO APPROXI- 03640201
C MATE THE VALUE OF THE CONSTANT. 03650201
C 03660201
C REFERENCE X3.9-1978, SECTION 4.4.1, BASIC REAL CONSTANT 03670201
C 03680201
C 03690201
C **** FCVS PROGRAM 201 - TEST 025 **** 03700201
C 03710201
C EIGHT DIGITS IN BASIC REAL CONSTANT 03720201
C 03730201
IVTNUM = 25 03740201
IF (ICZERO) 30250, 0250, 30250 03750201
0250 CONTINUE 03760201
RVON06 = 0.0 03770201
RVCOMP = 0.0 03780201
RVON06 = 3.1561234 03790201
RVCOMP = RVON06 03800201
RVCORR = 3.1561 03810201
40250 IF (RVCOMP - 3.1556) 20250, 10250, 40251 03820201
40251 IF (RVCOMP - 3.1566) 10250, 10250, 20250 03830201
30250 IVDELE = IVDELE + 1 03840201
WRITE (I02,80000) IVTNUM 03850201
IF (ICZERO) 10250, 0261, 20250 03860201
10250 IVPASS = IVPASS + 1 03870201
WRITE (I02,80002) IVTNUM 03880201
GO TO 0261 03890201
20250 IVFAIL = IVFAIL + 1 03900201
WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 03910201
0261 CONTINUE 03920201
C 03930201
C **** FCVS PROGRAM 201 - TEST 026 **** 03940201
C 03950201
C EIGHT DIGITS IN BASIC REAL CONSTANT PLUS A REAL EXPONENT. 03960201
C 03970201
IVTNUM = 26 03980201
IF (ICZERO) 30260, 0260, 30260 03990201
0260 CONTINUE 04000201
RVON06 = 0.0 04010201
RVCOMP = 0.0 04020201
RVON06 = .31561234E+01 04030201
RVCOMP = RVON06 04040201
RVCORR = 3.1561 04050201
40260 IF (RVCOMP - 3.1556) 20260, 10260, 40261 04060201
40261 IF (RVCOMP - 3.1566) 10260, 10260, 20260 04070201
30260 IVDELE = IVDELE + 1 04080201
WRITE (I02,80000) IVTNUM 04090201
IF (ICZERO) 10260, 0271, 20260 04100201
10260 IVPASS = IVPASS + 1 04110201
WRITE (I02,80002) IVTNUM 04120201
GO TO 0271 04130201
20260 IVFAIL = IVFAIL + 1 04140201
WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 04150201
0271 CONTINUE 04160201
C 04170201
C **** FCVS PROGRAM 201 - TEST 027 **** 04180201
C 04190201
C TWELVE DIGITS IN BASIC REAL CONSTANT. 04200201
C 04210201
IVTNUM = 27 04220201
IF (ICZERO) 30270, 0270, 30270 04230201
0270 CONTINUE 04240201
RVON06 = 0.0 04250201
RVCOMP = 0.0 04260201
RVON06 = 315612347833 E-11 04270201
RVCOMP = RVON06 04280201
RVCORR = 3.1561 04290201
40270 IF (RVCOMP - 3.1556) 20270, 10270, 40271 04300201
40271 IF (RVCOMP - 3.1566) 10270, 10270, 20270 04310201
30270 IVDELE = IVDELE + 1 04320201
WRITE (I02,80000) IVTNUM 04330201
IF (ICZERO) 10270, 0281, 20270 04340201
10270 IVPASS = IVPASS + 1 04350201
WRITE (I02,80002) IVTNUM 04360201
GO TO 0281 04370201
20270 IVFAIL = IVFAIL + 1 04380201
WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 04390201
0281 CONTINUE 04400201
C 04410201
C **** FCVS PROGRAM 201 - TEST 028 **** 04420201
C 04430201
C TWENTY-FIVE DIGITS IN BASIC REAL CONSTANT. 04440201
C 04450201
IVTNUM = 28 04460201
IF (ICZERO) 30280, 0280, 30280 04470201
0280 CONTINUE 04480201
RVON06 = 0.0 04490201
RVCOMP = 0.0 04500201
RVON06 = 31.56123478334867532834672E-1 04510201
RVCOMP = RVON06 04520201
RVCORR = 3.1561 04530201
40280 IF (RVCOMP - 3.1556) 20280, 10280, 40281 04540201
40281 IF (RVCOMP - 3.1566) 10280, 10280, 20280 04550201
30280 IVDELE = IVDELE + 1 04560201
WRITE (I02,80000) IVTNUM 04570201
IF (ICZERO) 10280, 0291, 20280 04580201
10280 IVPASS = IVPASS + 1 04590201
WRITE (I02,80002) IVTNUM 04600201
GO TO 0291 04610201
20280 IVFAIL = IVFAIL + 1 04620201
WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 04630201
0291 CONTINUE 04640201
C 04650201
C TEST 29 THROUGH TEST 33 REFERENCE VARIABLES WHOSE TYPE WAS 04660201
C SPECIFIED BY AN IMPLICIT STATEMENT. DIVISION IS USED TO VERIFY 04670201
C THAT THE TYPE IS INTEGER OR REAL. 04680201
C 04690201
C REFERENCE X3.9-1978, SECTION 8.5, IMPLICIT STATEMENT 04700201
C 04710201
C 04720201
C **** FCVS PROGRAM 201 - TEST 029 **** 04730201
C 04740201
C VERIFY YVIN01 IS AN INTEGER VARIABLE. 04750201
C 04760201
IVTNUM = 29 04770201
IF (ICZERO) 30290, 0290, 30290 04780201
0290 CONTINUE 04790201
RVCOMP = 10.0 04800201
YVIN01 = 4.0 04810201
RVCOMP = YVIN01/5 04820201
RVCORR = 0.0 04830201
40290 IF (RVCOMP) 20290, 10290, 20290 04840201
30290 IVDELE = IVDELE + 1 04850201
WRITE (I02,80000) IVTNUM 04860201
IF (ICZERO) 10290, 0301, 20290 04870201
10290 IVPASS = IVPASS + 1 04880201
WRITE (I02,80002) IVTNUM 04890201
GO TO 0301 04900201
20290 IVFAIL = IVFAIL + 1 04910201
WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 04920201
0301 CONTINUE 04930201
C 04940201
C **** FCVS PROGRAM 201 - TEST 030 **** 04950201
C 04960201
C VERIFY VVIN01 IS AN INTEGER VARIABLE 04970201
C 04980201
IVTNUM = 30 04990201
IF (ICZERO) 30300, 0300, 30300 05000201
0300 CONTINUE 05010201
RVCOMP = 10.0 05020201
VVIN01 = 4.0 05030201
RVCOMP = VVIN01/5 05040201
RVCORR = 0.0 05050201
40300 IF (RVCOMP) 20300, 10300, 20300 05060201
30300 IVDELE = IVDELE + 1 05070201
WRITE (I02,80000) IVTNUM 05080201
IF (ICZERO) 10300, 0311, 20300 05090201
10300 IVPASS = IVPASS + 1 05100201
WRITE (I02,80002) IVTNUM 05110201
GO TO 0311 05120201
20300 IVFAIL = IVFAIL + 1 05130201
WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 05140201
0311 CONTINUE 05150201
C 05160201
C **** FCVS PROGRAM 201 - TEST 031 **** 05170201
C 05180201
C VERIFY WVIN01 IS AN INTEGER VARIABLE. 05190201
C 05200201
IVTNUM = 31 05210201
IF (ICZERO) 30310, 0310, 30310 05220201
0310 CONTINUE 05230201
RVCOMP = 10.0 05240201
WVIN01 = 4.0 05250201
RVCOMP = WVIN01/5 05260201
RVCORR = 0.0 05270201
40310 IF (RVCOMP) 20310, 10310, 20310 05280201
30310 IVDELE = IVDELE + 1 05290201
WRITE (I02,80000) IVTNUM 05300201
IF (ICZERO) 10310, 0321, 20310 05310201
10310 IVPASS = IVPASS + 1 05320201
WRITE (I02,80002) IVTNUM 05330201
GO TO 0321 05340201
20310 IVFAIL = IVFAIL + 1 05350201
WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 05360201
0321 CONTINUE 05370201
C 05380201
C **** FCVS PROGRAM 201 - TEST 032 **** 05390201
C 05400201
C VERIFY XVIN01 IS AN INTEGER VARIABLE. 05410201
C 05420201
IVTNUM = 32 05430201
IF (ICZERO) 30320, 0320, 30320 05440201
0320 CONTINUE 05450201
XVIN01 = 4 05460201
RVCOMP = 10.0 05470201
RVCOMP = XVIN01/5 05480201
RVCORR = 0.0 05490201
40320 IF (RVCOMP) 20320, 10320, 20320 05500201
30320 IVDELE = IVDELE + 1 05510201
WRITE (I02,80000) IVTNUM 05520201
IF (ICZERO) 10320, 0331, 20320 05530201
10320 IVPASS = IVPASS + 1 05540201
WRITE (I02,80002) IVTNUM 05550201
GO TO 0331 05560201
20320 IVFAIL = IVFAIL + 1 05570201
WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 05580201
0331 CONTINUE 05590201
C 05600201
C **** FCVS PROGRAM 201 - TEST 033 **** 05610201
C 05620201
C VERIFY MVIN01 IS A REAL VARIABLE. 05630201
C 05640201
IVTNUM = 33 05650201
IF (ICZERO) 30330, 0330, 30330 05660201
0330 CONTINUE 05670201
RVCOMP = 10.0 05680201
MVIN01 = 4 05690201
RVCOMP = MVIN01/5 05700201
RVCORR = 0.8 05710201
40330 IF (RVCOMP - 0.79995) 20330, 10330, 40331 05720201
40331 IF (RVCOMP - 0.80005) 10330, 10330, 20330 05730201
30330 IVDELE = IVDELE + 1 05740201
WRITE (I02,80000) IVTNUM 05750201
IF (ICZERO) 10330, 0341, 20330 05760201
10330 IVPASS = IVPASS + 1 05770201
WRITE (I02,80002) IVTNUM 05780201
GO TO 0341 05790201
20330 IVFAIL = IVFAIL + 1 05800201
WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 05810201
0341 CONTINUE 05820201
C 05830201
C TEST 34 AND TEST 35 VERIFY THAT THE IMPLICIT TYPE SPECIFICA- 05840201
C TION FOR A VARIABLE IS OVERRIDDEN BY THE APPEARANCE OF THAT 05850201
C VARIABLE NAME IN A TYPE-STATEMENT. 05860201
C 05870201
C REFERENCE X3.9-1977, SECTION 8.4, TYPE-STATEMENTS 05880201
C SECTION 8.5, IMPLICIT STATEMENT 05890201
C 05900201
C 05910201
C **** FCVS PROGRAM 201 - TEST 034 **** 05920201
C 05930201
C VERIFY YVTN02 IS A REAL VARIABLE. 05940201
C 05950201
IVTNUM = 34 05960201
IF (ICZERO) 30340, 0340, 30340 05970201
0340 CONTINUE 05980201
RVCOMP = 10.0 05990201
YVTN02 = 4 06000201
RVCOMP = YVTN02/5 06010201
RVCORR = 0.8 06020201
40340 IF (RVCOMP - 0.79995) 20340, 10340, 40341 06030201
40341 IF (RVCOMP - 0.80005) 10340, 10340, 20340 06040201
30340 IVDELE = IVDELE + 1 06050201
WRITE (I02,80000) IVTNUM 06060201
IF (ICZERO) 10340, 0351, 20340 06070201
10340 IVPASS = IVPASS + 1 06080201
WRITE (I02,80002) IVTNUM 06090201
GO TO 0351 06100201
20340 IVFAIL = IVFAIL + 1 06110201
WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 06120201
0351 CONTINUE 06130201
C 06140201
C **** FCVS PROGRAM 201 - TEST 035 **** 06150201
C 06160201
C VERIFY MVTN02 IS AN INTEGER VARIABLE. 06170201
C 06180201
IVTNUM = 35 06190201
IF (ICZERO) 30350, 0350, 30350 06200201
0350 CONTINUE 06210201
RVCOMP = 10.0 06220201
MVTN02 = 4.0 06230201
RVCOMP = MVTN02/5 06240201
RVCORR = 0.0 06250201
40350 IF (RVCOMP) 20350, 10350, 20350 06260201
30350 IVDELE = IVDELE + 1 06270201
WRITE (I02,80000) IVTNUM 06280201
IF (ICZERO) 10350, 0361, 20350 06290201
10350 IVPASS = IVPASS + 1 06300201
WRITE (I02,80002) IVTNUM 06310201
GO TO 0361 06320201
20350 IVFAIL = IVFAIL + 1 06330201
WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 06340201
0361 CONTINUE 06350201
C 06360201
C 06370201
C WRITE OUT TEST SUMMARY 06380201
C 06390201
WRITE (I02,90004) 06400201
WRITE (I02,90014) 06410201
WRITE (I02,90004) 06420201
WRITE (I02,90000) 06430201
WRITE (I02,90004) 06440201
WRITE (I02,90020) IVFAIL 06450201
WRITE (I02,90022) IVPASS 06460201
WRITE (I02,90024) IVDELE 06470201
STOP 06480201
90001 FORMAT (" ",24X,"FM201") 06490201
90000 FORMAT (" ",20X,"END OF PROGRAM FM201" ) 06500201
C 06510201
C FORMATS FOR TEST DETAIL LINES 06520201
C 06530201
80000 FORMAT (" ",4X,I5,6X,"DELETED") 06540201
80002 FORMAT (" ",4X,I5,7X,"PASS") 06550201
80010 FORMAT (" ",4X,I5,7X,"FAIL",10X,I6,9X,I6) 06560201
80012 FORMAT (" ",4X,I5,7X,"FAIL",4X,E12.5,3X,E12.5) 06570201
80018 FORMAT (" ",4X,I5,7X,"FAIL",2X,A14,1X,A14) 06580201
C 06590201
C FORMAT STATEMENTS FOR PAGE HEADERS 06600201
C 06610201
90002 FORMAT ("1") 06620201
90004 FORMAT (" ") 06630201
90006 FORMAT (" ",10X,"FORTRAN COMPILER VALIDATION SYSTEM" ) 06640201
90008 FORMAT (" ",21X,"VERSION 2.1" ) 06650201
90010 FORMAT (" ",8X,"FOR OFFICIAL USE ONLY - COPYRIGHT 1978" ) 06660201
90012 FORMAT (" ",5X,"TEST",5X,"PASS/FAIL",5X,"COMPUTED",8X,"CORRECT") 06670201
90014 FORMAT (" ",5X,"----------------------------------------------" ) 06680201
90016 FORMAT (" ",18X,"SUBSET LEVEL TEST" ) 06690201
C 06700201
C FORMAT STATEMENTS FOR RUN SUMMARY 06710201
C 06720201
90020 FORMAT (" ",19X,I5," TESTS FAILED" ) 06730201
90022 FORMAT (" ",19X,I5," TESTS PASSED" ) 06740201
90024 FORMAT (" ",19X,I5," TESTS DELETED" ) 06750201
END 06760201