| 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 |