blob: 45c9b9b1c07bb6d5e5fa69782c56074d02df623c [file] [log] [blame]
PROGRAM FM060
C COMMENT SECTION 00010060
C 00020060
C FM060 00030060
C 00040060
C THIS ROUTINE CONTAINS BASIC ARITHMETIC IF STATEMENT TESTS FOR 00050060
C THE FORMAT 00060060
C 00070060
C IF (E) K1,K2,K3 00080060
C 00090060
C WHERE E IS A SIMPLE REAL EXPRESSION OF THE FORM 00100060
C 00110060
C REAL VARIABLE 00120060
C REAL VARIABLE - REAL CONSTANT 00130060
C REAL VARIABLE + REAL CONSTANT 00140060
C 00150060
C AND K1, K2 AND K3 ARE STATEMENT LABELS. 00160060
C 00170060
C THIS ROUTINE ALSO TESTS ARITHMETIC ASSIGNMENT STATEMENTS OF 00180060
C THE FORM 00190060
C REAL VARIABLE = REAL CONSTANT 00200060
C REAL VARIABLE = REAL VARIABLE 00210060
C REAL VARIABLE = -REAL VARIABLE 00220060
C 00230060
C THE REAL CONSTANTS AND REAL VARIABLES CONTAIN BOTH POSITIVE AND 00240060
C NEGATIVE VALUES. 00250060
C 00260060
C A REAL DATUM IS A PROCESSOR APPROXIMATION TO THE VALUE OF A 00270060
C REAL NUMBER. IT MAY ASSUME POSITIVE, NEGATIVE AND ZERO VALUES. 00280060
C 00290060
C A BASIC REAL CONSTANT IS WRITTEN AS AN INTEGER PART, A DECIMAL00300060
C POINT, AND A DECIMAL FRACTION PART IN THAT ORDER. BOTH THE 00310060
C INTEGER PART AND THE DECIMAL PART ARE STRINGS OF DIGITS; EITHER 00320060
C ONE OF THESE STRINGS MAY BE EMPTY BUT NOT BOTH. THE CONSTANT IS 00330060
C AN APPROXIMATION TO THE DIGIT STRING INTERPRETED AS A DECIMAL 00340060
C NUMERAL. 00350060
C 00360060
C A DECIMAL EXPONENT IS WRITTEN AS THE LETTER E, FOLLOWED BY AN 00370060
C OPTIONALLY SIGNED INTEGER CONSTANT. 00380060
C 00390060
C A REAL CONSTANT IS INDICATED BY WRITING A BASIC REAL CONSTANT,00400060
C A BASIC REAL CONSTANT FOLLOWED BY A DECIMAL EXPONENT, OR AN 00410060
C INTEGER CONSTANT FOLLOWED BY A DECIMAL EXPONENT. 00420060
C 00430060
C REFERENCES 00440060
C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, 00450060
C X3.9-1978 00460060
C 00470060
C SECTION 4.4, REAL TYPE 00480060
C SECTION 4.4.1, REAL CONSTANT 00490060
C SECTION 6.1, ARITHMETIC EXPRESSIONS 00500060
C SECTION 10.1, ARITHMETIC ASSIGNMENT STATEMENT 00510060
C SECTION 11.4, ARITHMETIC IF STATEMENT 00520060
C 00530060
C ********************************************************** 00540060
C 00550060
C A COMPILER VALIDATION SYSTEM FOR THE FORTRAN LANGUAGE 00560060
C BASED ON SPECIFICATIONS AS DEFINED IN AMERICAN NATIONAL STANDARD 00570060
C PROGRAMMING LANGUAGE FORTRAN X3.9-1978, HAS BEEN DEVELOPED BY THE 00580060
C FEDERAL COBOL COMPILER TESTING SERVICE. THE FORTRAN COMPILER 00590060
C VALIDATION SYSTEM (FCVS) CONSISTS OF AUDIT ROUTINES, THEIR RELATED00600060
C DATA, AND AN EXECUTIVE SYSTEM. EACH AUDIT ROUTINE IS A FORTRAN 00610060
C PROGRAM, SUBPROGRAM OR FUNCTION WHICH INCLUDES TESTS OF SPECIFIC 00620060
C LANGUAGE ELEMENTS AND SUPPORTING PROCEDURES INDICATING THE RESULT 00630060
C OF EXECUTING THESE TESTS. 00640060
C 00650060
C THIS PARTICULAR PROGRAM/SUBPROGRAM/FUNCTION CONTAINS FEATURES 00660060
C FOUND ONLY IN THE SUBSET AS DEFINED IN X3.9-1978. 00670060
C 00680060
C SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO - 00690060
C 00700060
C NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY 00710060
C SOFTWARE STANDARDS VALIDATION GROUP 00720060
C BUILDING 225 RM A266 00730060
C GAITHERSBURG, MD 20899 00740060
C ********************************************************** 00750060
C 00760060
C 00770060
C 00780060
C INITIALIZATION SECTION 00790060
C 00800060
C INITIALIZE CONSTANTS 00810060
C ************** 00820060
C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. 00830060
I01 = 5 00840060
C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. 00850060
I02 = 6 00860060
C SYSTEM ENVIRONMENT SECTION 00870060
C 00880060
CX010 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-010 CONTROL CARD. 00890060
C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 00900060
C (UNIT NUMBER FOR CARD READER). 00910060
CX011 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-011 CONTROL CARD. 00920060
C THE CX011 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL 00930060
C FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX010 ABOVE. 00940060
C 00950060
CX020 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-020 CONTROL CARD. 00960060
C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02 = 6 00970060
C (UNIT NUMBER FOR PRINTER). 00980060
CX021 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-021 CONTROL CARD. 00990060
C THE CX021 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL 01000060
C FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX020 ABOVE. 01010060
C 01020060
IVPASS=0 01030060
IVFAIL=0 01040060
IVDELE=0 01050060
ICZERO=0 01060060
C 01070060
C WRITE PAGE HEADERS 01080060
WRITE (I02,90000) 01090060
WRITE (I02,90001) 01100060
WRITE (I02,90002) 01110060
WRITE (I02, 90002) 01120060
WRITE (I02,90003) 01130060
WRITE (I02,90002) 01140060
WRITE (I02,90004) 01150060
WRITE (I02,90002) 01160060
WRITE (I02,90011) 01170060
WRITE (I02,90002) 01180060
WRITE (I02,90002) 01190060
WRITE (I02,90005) 01200060
WRITE (I02,90006) 01210060
WRITE (I02,90002) 01220060
C 01230060
C TEST SECTION 01240060
C 01250060
C ARITHMETIC IF STATEMENT 01260060
C 01270060
C TEST 1 THROUGH TEST 3 CONTAIN BASIC ARITHMETIC IF STATEMENT TESTS 01280060
C WITH A REAL VARIABLE AS ARITHMETIC EXPRESSION. 01290060
C 01300060
11 CONTINUE 01310060
IVTNUM = 1 01320060
C 01330060
C **** TEST 1 **** 01340060
C TEST 001 - LESS THAN ZERO BRANCH EXPECTED 01350060
C 01360060
IF (ICZERO) 30010, 10, 30010 01370060
10 CONTINUE 01380060
RVCOMP = 0.0 01390060
RVON01 = -1.0 01400060
IF (RVON01) 12,40010, 40010 01410060
12 RVCOMP = RVON01 01420060
GO TO 40010 01430060
30010 IVDELE = IVDELE + 1 01440060
WRITE (I02,80003) IVTNUM 01450060
IF (ICZERO) 40010, 21, 40010 01460060
40010 IF (RVCOMP) 10010,20010,20010 01470060
10010 IVPASS = IVPASS + 1 01480060
WRITE (I02,80001) IVTNUM 01490060
GO TO 21 01500060
20010 IVFAIL = IVFAIL + 1 01510060
RVCORR = -1.0 01520060
WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 01530060
21 CONTINUE 01540060
IVTNUM = 2 01550060
C 01560060
C **** TEST 2 **** 01570060
C TEST 002 - EQUAL TO ZERO BRANCH EXPECTED 01580060
C 01590060
IF (ICZERO) 30020, 20, 30020 01600060
20 CONTINUE 01610060
RVCOMP = 1.0 01620060
RVON01 = 0.0 01630060
IF (RVON01) 40020,22,40020 01640060
22 RVCOMP = RVON01 01650060
GO TO 40020 01660060
30020 IVDELE = IVDELE + 1 01670060
WRITE (I02,80003) IVTNUM 01680060
IF (ICZERO) 40020, 31, 40020 01690060
40020 IF (RVCOMP) 20020,10020,20020 01700060
10020 IVPASS = IVPASS + 1 01710060
WRITE (I02,80001) IVTNUM 01720060
GO TO 31 01730060
20020 IVFAIL = IVFAIL + 1 01740060
RVCORR = 0.0 01750060
WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 01760060
31 CONTINUE 01770060
IVTNUM = 3 01780060
C 01790060
C **** TEST 3 **** 01800060
C TEST 003 - GREATER THAN ZERO BRANCH EXPECTED 01810060
C 01820060
IF (ICZERO) 30030, 30, 30030 01830060
30 CONTINUE 01840060
RVCOMP = 0.0 01850060
RVON01 = 1.0 01860060
IF (RVON01) 40030,40030,32 01870060
32 RVCOMP = RVON01 01880060
GO TO 40030 01890060
30030 IVDELE = IVDELE + 1 01900060
WRITE (I02,80003) IVTNUM 01910060
IF (ICZERO) 40030, 41, 40030 01920060
40030 IF (RVCOMP) 20030,20030,10030 01930060
10030 IVPASS = IVPASS + 1 01940060
WRITE (I02,80001) IVTNUM 01950060
GO TO 41 01960060
20030 IVFAIL = IVFAIL + 1 01970060
RVCORR = 1.0 01980060
WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 01990060
41 CONTINUE 02000060
IVTNUM = 4 02010060
C 02020060
C **** TEST 4 **** 02030060
C TEST 004 - BASIC IF STATEMENTS TEST 02040060
C THESE IF STATEMENTS ARE USED IN REAL VARIABLE TEST 02050060
C VERIFICATION. THE ARITHMETIC EXPRESSIONS ARE OF THE FORM 02060060
C REAL VARIABLE - REAL CONSTANT 02070060
C 02080060
IF (ICZERO) 30040, 40, 30040 02090060
40 CONTINUE 02100060
RVCOMP = 4.0 02110060
RVON01 = 1.0 02120060
IF (RVON01 - .99995) 40040,42,42 02130060
42 IF (RVON01 - 1.0005) 43,43,40040 02140060
43 RVCOMP = 0.0 02150060
GO TO 40040 02160060
30040 IVDELE = IVDELE + 1 02170060
WRITE (I02,80003) IVTNUM 02180060
IF (ICZERO) 40040, 51, 40040 02190060
40040 IF (RVCOMP) 20040,10040,20040 02200060
10040 IVPASS = IVPASS + 1 02210060
WRITE (I02,80001) IVTNUM 02220060
GO TO 51 02230060
20040 IVFAIL = IVFAIL + 1 02240060
RVCORR = 0.0 02250060
WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 02260060
51 CONTINUE 02270060
IVTNUM = 5 02280060
C 02290060
C **** TEST 5 **** 02300060
C TEST 005 - BASIC IF STATEMENTS TEST 02310060
C THESE IF STATEMENTS ARE USED IN REAL VARIABLE TEST 02320060
C VERIFICATION. THE ARITHMETIC EXPRESSIONS ARE OF THE FORM 02330060
C REAL VARIABLE + REAL CONSTANT 02340060
C 02350060
IF (ICZERO) 30050, 50, 30050 02360060
50 CONTINUE 02370060
RVCOMP = -1.0 02380060
RVON01 = -1.0 02390060
IF (RVON01 + 1.0005) 40050,52,52 02400060
52 IF (RVON01 + .99995) 53,53,40050 02410060
53 RVCOMP = 0.0 02420060
GO TO 40050 02430060
30050 IVDELE = IVDELE + 1 02440060
WRITE (I02,80003) IVTNUM 02450060
IF (ICZERO) 40050, 61, 40050 02460060
40050 IF (RVCOMP) 20050,10050,20050 02470060
10050 IVPASS = IVPASS + 1 02480060
WRITE (I02,80001) IVTNUM 02490060
GO TO 61 02500060
20050 IVFAIL = IVFAIL + 1 02510060
RVCORR = 0.0 02520060
WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 02530060
C 02540060
C ARITHMETIC ASSIGNMENT STATEMENT 02550060
C 02560060
C 02570060
C TEST 006 THROUGH TEST 025 CONTAIN ARITHMETIC ASSIGNMENT 02580060
C STATEMENTS OF THE FORM 02590060
C REAL VARIABLE = REAL CONSTANT 02600060
C 02610060
C THE THREE TYPES OF REAL CONSTANTS ARE TESTED WITH POSITIVE 02620060
C AND NEGATIVE VALUES FOR THE CONSTANTS, AND POSITIVE AND NEGATIVE 02630060
C EXPONENTS. 02640060
C 02650060
C TEST 006 THROUGH TEST 011 - CONSTANT IS BASIC REAL CONSTANT 02660060
C 02670060
61 CONTINUE 02680060
IVTNUM = 6 02690060
C 02700060
C **** TEST 6 **** 02710060
C 02720060
IF (ICZERO) 30060, 60, 30060 02730060
60 CONTINUE 02740060
RVCOMP = 2.0 02750060
GO TO 40060 02760060
30060 IVDELE = IVDELE + 1 02770060
WRITE (I02,80003) IVTNUM 02780060
IF (ICZERO) 40060, 71, 40060 02790060
40060 IF (RVCOMP - 1.9995) 20060,10060,40061 02800060
40061 IF (RVCOMP - 2.0005) 10060,10060,20060 02810060
10060 IVPASS = IVPASS + 1 02820060
WRITE (I02,80001) IVTNUM 02830060
GO TO 71 02840060
20060 IVFAIL = IVFAIL + 1 02850060
RVCORR = 2.0 02860060
WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 02870060
71 CONTINUE 02880060
IVTNUM = 7 02890060
C 02900060
C **** TEST 7 **** 02910060
C 02920060
IF (ICZERO) 30070, 70, 30070 02930060
70 CONTINUE 02940060
RVCOMP = 44.5 02950060
GO TO 40070 02960060
30070 IVDELE = IVDELE + 1 02970060
WRITE (I02,80003) IVTNUM 02980060
IF (ICZERO) 40070, 81, 40070 02990060
40070 IF (RVCOMP - 44.495) 20070,10070,40071 03000060
40071 IF (RVCOMP - 45.505) 10070,10070,20070 03010060
10070 IVPASS = IVPASS + 1 03020060
WRITE (I02,80001) IVTNUM 03030060
GO TO 81 03040060
20070 IVFAIL = IVFAIL + 1 03050060
RVCORR = 44.5 03060060
WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 03070060
81 CONTINUE 03080060
IVTNUM = 8 03090060
C 03100060
C **** TEST 8 **** 03110060
C 03120060
IF (ICZERO) 30080, 80, 30080 03130060
80 CONTINUE 03140060
RVCOMP = -2.0 03150060
GO TO 40080 03160060
30080 IVDELE = IVDELE + 1 03170060
WRITE (I02,80003) IVTNUM 03180060
IF (ICZERO) 40080, 91, 40080 03190060
40080 IF (RVCOMP + 2.0005) 20080,10080,40081 03200060
40081 IF (RVCOMP + 1.9995) 10080,10080,20080 03210060
10080 IVPASS = IVPASS + 1 03220060
WRITE (I02,80001) IVTNUM 03230060
GO TO 91 03240060
20080 IVFAIL = IVFAIL + 1 03250060
RVCORR = -2.0 03260060
WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 03270060
91 CONTINUE 03280060
IVTNUM = 9 03290060
C 03300060
C **** TEST 9 **** 03310060
C 03320060
IF (ICZERO) 30090, 90, 30090 03330060
90 CONTINUE 03340060
RVCOMP = 65001. 03350060
GO TO 40090 03360060
30090 IVDELE = IVDELE + 1 03370060
WRITE (I02,80003) IVTNUM 03380060
IF (ICZERO) 40090, 101, 40090 03390060
40090 IF (RVCOMP - 64996.) 20090,10090,40091 03400060
40091 IF (RVCOMP - 65006.) 10090,10090,20090 03410060
10090 IVPASS = IVPASS + 1 03420060
WRITE (I02,80001) IVTNUM 03430060
GO TO 101 03440060
20090 IVFAIL = IVFAIL + 1 03450060
RVCORR = 65001. 03460060
WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 03470060
101 CONTINUE 03480060
IVTNUM = 10 03490060
C 03500060
C **** TEST 10 **** 03510060
C 03520060
IF (ICZERO) 30100, 100, 30100 03530060
100 CONTINUE 03540060
RVCOMP = .65001 03550060
GO TO 40100 03560060
30100 IVDELE = IVDELE + 1 03570060
WRITE (I02,80003) IVTNUM 03580060
IF (ICZERO) 40100, 111, 40100 03590060
40100 IF (RVCOMP - .64996) 20100,10100,40101 03600060
40101 IF (RVCOMP - .65006) 10100,10100,20100 03610060
10100 IVPASS = IVPASS + 1 03620060
WRITE (I02,80001) IVTNUM 03630060
GO TO 111 03640060
20100 IVFAIL = IVFAIL + 1 03650060
RVCORR = .65001 03660060
WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 03670060
111 CONTINUE 03680060
IVTNUM = 11 03690060
C 03700060
C **** TEST 11 **** 03710060
C 03720060
IF (ICZERO) 30110, 110, 30110 03730060
110 CONTINUE 03740060
RVCOMP = -.33333 03750060
GO TO 40110 03760060
30110 IVDELE = IVDELE + 1 03770060
WRITE (I02,80003) IVTNUM 03780060
IF (ICZERO) 40110, 121, 40110 03790060
40110 IF (RVCOMP + .33338) 20110,10110,40111 03800060
40111 IF (RVCOMP + .33328) 10110,10110,20110 03810060
10110 IVPASS = IVPASS + 1 03820060
WRITE (I02,80001) IVTNUM 03830060
GO TO 121 03840060
20110 IVFAIL = IVFAIL + 1 03850060
RVCORR = -.33333 03860060
WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 03870060
C 03880060
C TEST 012 THROUGH TEST 19 - REAL CONSTANT IS BASIC REAL CONSTANT 03890060
C - FOLLOWED BY DECIMAL EXPONENT 03900060
C 03910060
121 CONTINUE 03920060
IVTNUM = 12 03930060
C 03940060
C **** TEST 12 **** 03950060
C 03960060
IF (ICZERO) 30120, 120, 30120 03970060
120 CONTINUE 03980060
RVCOMP = .2E+1 03990060
GO TO 40120 04000060
30120 IVDELE = IVDELE + 1 04010060
WRITE (I02,80003) IVTNUM 04020060
IF (ICZERO) 40120, 131, 40120 04030060
40120 IF (RVCOMP - 1.9995) 20120,10120,40121 04040060
40121 IF (RVCOMP - 2.0005) 10120,10120,20120 04050060
10120 IVPASS = IVPASS + 1 04060060
WRITE (I02,80001) IVTNUM 04070060
GO TO 131 04080060
20120 IVFAIL = IVFAIL + 1 04090060
RVCORR = 2.0 04100060
WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 04110060
131 CONTINUE 04120060
IVTNUM = 13 04130060
C 04140060
C **** TEST 13 **** 04150060
C 04160060
IF (ICZERO) 30130, 130, 30130 04170060
130 CONTINUE 04180060
RVCOMP = 2.0E+0 04190060
GO TO 40130 04200060
30130 IVDELE = IVDELE + 1 04210060
WRITE (I02,80003) IVTNUM 04220060
IF (ICZERO) 40130, 141, 40130 04230060
40130 IF (RVCOMP - 1.9995) 20130,10130,40131 04240060
40131 IF (RVCOMP - 2.0005) 10130,10130,20130 04250060
10130 IVPASS = IVPASS + 1 04260060
WRITE (I02,80001) IVTNUM 04270060
GO TO 141 04280060
20130 IVFAIL = IVFAIL + 1 04290060
RVCORR = 2.0 04300060
WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 04310060
141 CONTINUE 04320060
IVTNUM = 14 04330060
C 04340060
C **** TEST 14 **** 04350060
C 04360060
IF (ICZERO) 30140, 140, 30140 04370060
140 CONTINUE 04380060
RVCOMP = 445.0E-01 04390060
GO TO 40140 04400060
30140 IVDELE = IVDELE + 1 04410060
WRITE (I02,80003) IVTNUM 04420060
IF (ICZERO) 40140, 151, 40140 04430060
40140 IF (RVCOMP - 44.495) 20140,10140,40141 04440060
40141 IF (RVCOMP - 44.505) 10140,10140,20140 04450060
10140 IVPASS = IVPASS + 1 04460060
WRITE (I02,80001) IVTNUM 04470060
GO TO 151 04480060
20140 IVFAIL = IVFAIL + 1 04490060
RVCORR = 44.5 04500060
WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 04510060
151 CONTINUE 04520060
IVTNUM = 15 04530060
C 04540060
C **** TEST 15 **** 04550060
C 04560060
IF (ICZERO) 30150, 150, 30150 04570060
150 CONTINUE 04580060
RVCOMP = 4.450E1 04590060
GO TO 40150 04600060
30150 IVDELE = IVDELE + 1 04610060
WRITE (I02,80003) IVTNUM 04620060
IF (ICZERO) 40150, 161, 40150 04630060
40150 IF (RVCOMP - 44.495) 20150,10150,40151 04640060
40151 IF (RVCOMP - 44.505) 10150,10150,20150 04650060
10150 IVPASS = IVPASS + 1 04660060
WRITE (I02,80001) IVTNUM 04670060
GO TO 161 04680060
20150 IVFAIL = IVFAIL + 1 04690060
RVCORR = 44.5 04700060
WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 04710060
161 CONTINUE 04720060
IVTNUM = 16 04730060
C 04740060
C **** TEST 16 **** 04750060
C 04760060
IF (ICZERO) 30160, 160, 30160 04770060
160 CONTINUE 04780060
RVCOMP = 2.E+15 04790060
GO TO 40160 04800060
30160 IVDELE = IVDELE + 1 04810060
WRITE (I02,80003) IVTNUM 04820060
IF (ICZERO) 40160, 171, 40160 04830060
40160 IF (RVCOMP - 1.9995E+15) 20160,10160,40161 04840060
40161 IF (RVCOMP - 2.0005E+15) 10160,10160,20160 04850060
10160 IVPASS = IVPASS + 1 04860060
WRITE (I02,80001) IVTNUM 04870060
GO TO 171 04880060
20160 IVFAIL = IVFAIL + 1 04890060
RVCORR = 2.0E+15 04900060
WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 04910060
171 CONTINUE 04920060
IVTNUM = 17 04930060
C 04940060
C **** TEST 17 **** 04950060
C 04960060
IF (ICZERO) 30170, 170, 30170 04970060
170 CONTINUE 04980060
RVCOMP = 44.5E-15 04990060
GO TO 40170 05000060
30170 IVDELE = IVDELE + 1 05010060
WRITE (I02,80003) IVTNUM 05020060
IF (ICZERO) 40170, 181, 40170 05030060
40170 IF (RVCOMP - 44.495E-15) 20170,10170,40171 05040060
40171 IF (RVCOMP - 44.505E-15) 10170,10170,20170 05050060
10170 IVPASS = IVPASS + 1 05060060
WRITE (I02,80001) IVTNUM 05070060
GO TO 181 05080060
20170 IVFAIL = IVFAIL + 1 05090060
RVCORR = 44.5E-15 05100060
WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 05110060
181 CONTINUE 05120060
IVTNUM = 18 05130060
C 05140060
C **** TEST 18 **** 05150060
C 05160060
IF (ICZERO) 30180, 180, 30180 05170060
180 CONTINUE 05180060
RVCOMP = -4.45E0 05190060
GO TO 40180 05200060
30180 IVDELE = IVDELE + 1 05210060
WRITE (I02,80003) IVTNUM 05220060
IF (ICZERO) 40180, 191, 40180 05230060
40180 IF (RVCOMP + 4.4505) 20180,10180,40181 05240060
40181 IF (RVCOMP + 4.4495) 10180,10180,20180 05250060
10180 IVPASS = IVPASS + 1 05260060
WRITE (I02,80001) IVTNUM 05270060
GO TO 191 05280060
20180 IVFAIL = IVFAIL + 1 05290060
RVCORR = -4.45 05300060
WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 05310060
191 CONTINUE 05320060
IVTNUM = 19 05330060
C 05340060
C **** TEST 19 **** 05350060
C 05360060
IF (ICZERO) 30190, 190, 30190 05370060
190 CONTINUE 05380060
RVCOMP = -6511.8E-0 05390060
GO TO 40190 05400060
30190 IVDELE = IVDELE + 1 05410060
WRITE (I02,80003) IVTNUM 05420060
IF (ICZERO) 40190, 201, 40190 05430060
40190 IF (RVCOMP + 6512.3) 20190,10190,40191 05440060
40191 IF (RVCOMP + 6511.3) 10190,10190,20190 05450060
10190 IVPASS = IVPASS + 1 05460060
WRITE (I02,80001) IVTNUM 05470060
GO TO 201 05480060
20190 IVFAIL = IVFAIL + 1 05490060
RVCORR = -6511.8 05500060
WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 05510060
C 05520060
C TEST 020 THROUGH TEST 025 - INTEGER CONSTANT FOLLOWED 05530060
C - BY A DECIMAL EXPONENT 05540060
C 05550060
201 CONTINUE 05560060
IVTNUM = 20 05570060
C 05580060
C **** TEST 20 **** 05590060
C 05600060
IF (ICZERO) 30200, 200, 30200 05610060
200 CONTINUE 05620060
RVCOMP = 2E+1 05630060
GO TO 40200 05640060
30200 IVDELE = IVDELE + 1 05650060
WRITE (I02,80003) IVTNUM 05660060
IF (ICZERO) 40200, 211, 40200 05670060
40200 IF (RVCOMP - 19.995) 20200,10200,40201 05680060
40201 IF (RVCOMP - 20.005) 10200,10200,20200 05690060
10200 IVPASS = IVPASS + 1 05700060
WRITE (I02,80001) IVTNUM 05710060
GO TO 211 05720060
20200 IVFAIL = IVFAIL + 1 05730060
RVCORR = 20.0 05740060
WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 05750060
211 CONTINUE 05760060
IVTNUM = 21 05770060
C 05780060
C **** TEST 21 **** 05790060
C 05800060
IF (ICZERO) 30210, 210, 30210 05810060
210 CONTINUE 05820060
RVCOMP = 445E-02 05830060
GO TO 40210 05840060
30210 IVDELE = IVDELE + 1 05850060
WRITE (I02,80003) IVTNUM 05860060
IF (ICZERO) 40210, 221, 40210 05870060
40210 IF (RVCOMP - 4.4495) 20210,10210,40211 05880060
40211 IF (RVCOMP - 4.4505) 10210,10210,20210 05890060
10210 IVPASS = IVPASS + 1 05900060
WRITE (I02,80001) IVTNUM 05910060
GO TO 221 05920060
20210 IVFAIL = IVFAIL + 1 05930060
RVCORR = 4.45 05940060
WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 05950060
221 CONTINUE 05960060
IVTNUM = 22 05970060
C 05980060
C **** TEST 22 **** 05990060
C 06000060
IF (ICZERO) 30220, 220, 30220 06010060
220 CONTINUE 06020060
RVCOMP = 7E3 06030060
GO TO 40220 06040060
30220 IVDELE = IVDELE + 1 06050060
WRITE (I02,80003) IVTNUM 06060060
IF (ICZERO) 40220, 231, 40220 06070060
40220 IF (RVCOMP - 6999.0) 20220,10220,40221 06080060
40221 IF (RVCOMP - 7001.0) 10220,10220,20220 06090060
10220 IVPASS = IVPASS + 1 06100060
WRITE (I02,80001) IVTNUM 06110060
GO TO 231 06120060
20220 IVFAIL = IVFAIL + 1 06130060
RVCORR = 7000.0 06140060
WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 06150060
231 CONTINUE 06160060
IVTNUM = 23 06170060
C 06180060
C **** TEST 23 **** 06190060
C 06200060
IF (ICZERO) 30230, 230, 30230 06210060
230 CONTINUE 06220060
RVCOMP = 214 E 0 06230060
GO TO 40230 06240060
30230 IVDELE = IVDELE + 1 06250060
WRITE (I02,80003) IVTNUM 06260060
IF (ICZERO) 40230, 241, 40230 06270060
40230 IF (RVCOMP - 213.95) 20230,10230,40231 06280060
40231 IF (RVCOMP - 214.05) 10230,10230,20230 06290060
10230 IVPASS = IVPASS + 1 06300060
WRITE (I02,80001) IVTNUM 06310060
GO TO 241 06320060
20230 IVFAIL = IVFAIL + 1 06330060
RVCORR = 214.0 06340060
WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 06350060
241 CONTINUE 06360060
IVTNUM = 24 06370060
C 06380060
C **** TEST 24 **** 06390060
C 06400060
IF (ICZERO) 30240, 240, 30240 06410060
240 CONTINUE 06420060
RVCOMP = -3276E+6 06430060
GO TO 40240 06440060
30240 IVDELE = IVDELE + 1 06450060
WRITE (I02,80003) IVTNUM 06460060
IF (ICZERO) 40240, 251, 40240 06470060
40240 IF (RVCOMP + .32765E+10) 20240,10240,40241 06480060
40241 IF (RVCOMP + .32755E+10) 10240,10240,20240 06490060
10240 IVPASS = IVPASS + 1 06500060
WRITE (I02,80001) IVTNUM 06510060
GO TO 251 06520060
20240 IVFAIL = IVFAIL + 1 06530060
RVCORR = -3276E+6 06540060
WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 06550060
251 CONTINUE 06560060
IVTNUM = 25 06570060
C 06580060
C **** TEST 25 **** 06590060
C 06600060
IF (ICZERO) 30250, 250, 30250 06610060
250 CONTINUE 06620060
RVCOMP = -7E3 06630060
GO TO 40250 06640060
30250 IVDELE = IVDELE + 1 06650060
WRITE (I02,80003) IVTNUM 06660060
IF (ICZERO) 40250, 261, 40250 06670060
40250 IF (RVCOMP + 7001.) 20250,10250,40251 06680060
40251 IF (RVCOMP + 6999.) 10250,10250,20250 06690060
10250 IVPASS = IVPASS + 1 06700060
WRITE (I02,80001) IVTNUM 06710060
GO TO 261 06720060
20250 IVFAIL = IVFAIL + 1 06730060
RVCORR = -7000.0 06740060
WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 06750060
C 06760060
C TEST 026 THROUGH TEST 028 CONTAIN ARITHMETIC ASSIGNMENT STATEMENT 06770060
C OF THE FORM REAL VARIABLE = REAL VARIABLE 06780060
C 06790060
261 CONTINUE 06800060
IVTNUM = 26 06810060
C 06820060
C **** TEST 26 **** 06830060
C 06840060
IF (ICZERO) 30260, 260, 30260 06850060
260 CONTINUE 06860060
RVON01 = .2E+1 06870060
RVCOMP = RVON01 06880060
GO TO 40260 06890060
30260 IVDELE = IVDELE + 1 06900060
WRITE (I02,80003) IVTNUM 06910060
IF (ICZERO) 40260, 271, 40260 06920060
40260 IF (RVCOMP - 1.9995) 20260,10260,40261 06930060
40261 IF (RVCOMP - 2.0005) 10260,10260,20260 06940060
10260 IVPASS = IVPASS + 1 06950060
WRITE (I02,80001) IVTNUM 06960060
GO TO 271 06970060
20260 IVFAIL = IVFAIL + 1 06980060
RVCORR = 20.0 06990060
WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 07000060
271 CONTINUE 07010060
IVTNUM = 27 07020060
C 07030060
C **** TEST 27 **** 07040060
C 07050060
IF (ICZERO) 30270, 270, 30270 07060060
270 CONTINUE 07070060
RVON01 = -445.E-01 07080060
RVCOMP = RVON01 07090060
GO TO 40270 07100060
30270 IVDELE = IVDELE + 1 07110060
WRITE (I02,80003) IVTNUM 07120060
IF (ICZERO) 40270, 281, 40270 07130060
40270 IF (RVCOMP + 44.505) 20270,10270,40271 07140060
40271 IF (RVCOMP + 44.495) 10270,10270,20270 07150060
10270 IVPASS = IVPASS + 1 07160060
WRITE (I02,80001) IVTNUM 07170060
GO TO 281 07180060
20270 IVFAIL = IVFAIL + 1 07190060
RVCORR = -44.5 07200060
WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 07210060
281 CONTINUE 07220060
IVTNUM = 28 07230060
C 07240060
C **** TEST 28 **** 07250060
C 07260060
IF (ICZERO) 30280, 280, 30280 07270060
280 CONTINUE 07280060
RVON01 = 7E3 07290060
RVCOMP = RVON01 07300060
GO TO 40280 07310060
30280 IVDELE = IVDELE + 1 07320060
WRITE (I02,80003) IVTNUM 07330060
IF (ICZERO) 40280, 291, 40280 07340060
40280 IF (RVCOMP - 6999.0) 20280,10280,40281 07350060
40281 IF (RVCOMP-7001.0) 10280,10280,20280 07360060
10280 IVPASS = IVPASS + 1 07370060
WRITE (I02,80001) IVTNUM 07380060
GO TO 291 07390060
20280 IVFAIL = IVFAIL + 1 07400060
RVCORR = 7000.0 07410060
C 07420060
C TEST 029 THROUGH TEST 031 CONTAIN ARITHMETIC ASSIGNMENT STATEMENT 07430060
C OF THE FORM REAL VARIABLE = - REAL VARIABLE 07440060
C 07450060
WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 07460060
291 CONTINUE 07470060
IVTNUM = 29 07480060
C 07490060
C **** TEST 29 **** 07500060
C 07510060
IF (ICZERO) 30290, 290, 30290 07520060
290 CONTINUE 07530060
RVON01 = .2E+1 07540060
RVCOMP = -RVON01 07550060
GO TO 40290 07560060
30290 IVDELE = IVDELE + 1 07570060
WRITE (I02,80003) IVTNUM 07580060
IF (ICZERO) 40290, 301, 40290 07590060
40290 IF (RVCOMP + 2.0005) 20290,10290,40291 07600060
40291 IF (RVCOMP + 1.9995) 10290,10290,20290 07610060
10290 IVPASS = IVPASS + 1 07620060
WRITE (I02,80001) IVTNUM 07630060
GO TO 301 07640060
20290 IVFAIL = IVFAIL + 1 07650060
RVCORR = -2.0 07660060
WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 07670060
301 CONTINUE 07680060
IVTNUM = 30 07690060
C 07700060
C **** TEST 30 **** 07710060
C 07720060
IF (ICZERO) 30300, 300, 30300 07730060
300 CONTINUE 07740060
RVON01 = -445.E-01 07750060
RVCOMP = -RVON01 07760060
GO TO 40300 07770060
30300 IVDELE = IVDELE + 1 07780060
WRITE (I02,80003) IVTNUM 07790060
IF (ICZERO) 40300, 311, 40300 07800060
40300 IF (RVCOMP - 44.495) 20300,10300,40301 07810060
40301 IF (RVCOMP - 44.505) 10300,10300,20300 07820060
10300 IVPASS = IVPASS + 1 07830060
WRITE (I02,80001) IVTNUM 07840060
GO TO 311 07850060
20300 IVFAIL = IVFAIL + 1 07860060
RVCORR = 44.5 07870060
WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 07880060
311 CONTINUE 07890060
IVTNUM = 31 07900060
C 07910060
C **** TEST 31 **** 07920060
C 07930060
IF (ICZERO) 30310, 310, 30310 07940060
310 CONTINUE 07950060
RVON01 = -.44559E1 07960060
RVCOMP = -RVON01 07970060
GO TO 40310 07980060
30310 IVDELE = IVDELE + 1 07990060
WRITE (I02,80003) IVTNUM 08000060
IF (ICZERO) 40310, 321, 40310 08010060
40310 IF (RVCOMP - 4.4554) 20310,10310,40311 08020060
40311 IF (RVCOMP - 4.4564) 10310,10310,20310 08030060
10310 IVPASS = IVPASS + 1 08040060
WRITE (I02,80001) IVTNUM 08050060
GO TO 321 08060060
20310 IVFAIL = IVFAIL + 1 08070060
RVCORR = 4.4559 08080060
WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 08090060
C **** END OF TESTS **** 08100060
321 CONTINUE 08110060
C 08120060
C WRITE PAGE FOOTINGS AND RUN SUMMARIES 08130060
99999 CONTINUE 08140060
WRITE (I02,90002) 08150060
WRITE (I02,90006) 08160060
WRITE (I02,90002) 08170060
WRITE (I02,90002) 08180060
WRITE (I02,90007) 08190060
WRITE (I02,90002) 08200060
WRITE (I02,90008) IVFAIL 08210060
WRITE (I02,90009) IVPASS 08220060
WRITE (I02,90010) IVDELE 08230060
C 08240060
C 08250060
C TERMINATE ROUTINE EXECUTION 08260060
STOP 08270060
C 08280060
C FORMAT STATEMENTS FOR PAGE HEADERS 08290060
90000 FORMAT ("1") 08300060
90002 FORMAT (" ") 08310060
90001 FORMAT (" ",10X,"FORTRAN COMPILER VALIDATION SYSTEM" ) 08320060
90003 FORMAT (" ",21X,"VERSION 2.1" ) 08330060
90004 FORMAT (" ",10X,"FOR OFFICIAL USE ONLY - COPYRIGHT 1978" ) 08340060
90005 FORMAT (" ",5X,"TEST",5X,"PASS/FAIL", 5X,"COMPUTED",8X,"CORRECT") 08350060
90006 FORMAT (" ",5X,"----------------------------------------------" ) 08360060
90011 FORMAT (" ",18X,"SUBSET LEVEL TEST" ) 08370060
C 08380060
C FORMAT STATEMENTS FOR RUN SUMMARIES 08390060
90008 FORMAT (" ",15X,I5," ERRORS ENCOUNTERED" ) 08400060
90009 FORMAT (" ",15X,I5," TESTS PASSED" ) 08410060
90010 FORMAT (" ",15X,I5," TESTS DELETED" ) 08420060
C 08430060
C FORMAT STATEMENTS FOR TEST RESULTS 08440060
80001 FORMAT (" ",4X,I5,7X,"PASS") 08450060
80002 FORMAT (" ",4X,I5,7X,"FAIL") 08460060
80003 FORMAT (" ",4X,I5,7X,"DELETED") 08470060
80004 FORMAT (" ",4X,I5,7X,"FAIL",10X,I6,9X,I6) 08480060
80005 FORMAT (" ",4X,I5,7X,"FAIL",4X,E12.5,3X,E12.5) 08490060
C 08500060
90007 FORMAT (" ",20X,"END OF PROGRAM FM060" ) 08510060
END 08520060