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