| PROGRAM FM039 |
| |
| C COMMENT SECTION 00010039 |
| C 00020039 |
| C FM039 00030039 |
| C 00040039 |
| C THIS ROUTINE TESTS ARITHMETIC ASSIGNMENT STATEMENTS OF THE 00050039 |
| C FORM INTEGER VARIABLE = ARITHMETIC EXPRESSION 00060039 |
| C WHERE THE ARITHMETIC EXPRESSION IS FORMED WITH THE ARITHMETIC 00070039 |
| C OPERATOR /, INTEGER CONSTANTS AND AN INTEGER VARIABLE. BOTH 00080039 |
| C POSITIVE AND NEGATIVE VALUES ARE USED FOR THE INTEGER CONSTANTS 00090039 |
| C AND THE INTEGER VARIABLE. 00100039 |
| C 00110039 |
| C THERE ARE TESTS WHICH REQUIRE NO TRUNCATION OF THE RESULT 00120039 |
| C AND TESTS WHERE THE RESULT MUST BE TRUNCATED BEFORE BEING STORED 00130039 |
| C IN THE RESULTANT INTEGER VARIABLE. SOME OF THE TESTS USE PARENS 00140039 |
| C TO GROUP ELEMENTS IN THE ARITHMETIC EXPRESSION. 00150039 |
| C 00160039 |
| C THERE ARE TESTS WHERE THE ARITHMETIC EXPRESSION CONTAINS 00170039 |
| C (1) INTEGER VARIABLE/INTEGER CONSTANT/INTEGER CONSTANT 00180039 |
| C INTEGER CONSTANT/INTEGER VARIABLE/INTEGER CONSTANT 00190039 |
| C INTEGER CONSTANT/INTEGER CONSTANT/INTEGER VARIABLE 00200039 |
| C (2) SAME AS (1) BUT WITH PARENTHESES TO GROUP ELEMENTS 00210039 |
| C IN THE ARITHMETIC EXPRESSION. 00220039 |
| C 00230039 |
| C REFERENCES 00240039 |
| C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, 00250039 |
| C X3.9-1978 00260039 |
| C 00270039 |
| C SECTION 4.3, INTEGER TYPE 00280039 |
| C SECTION 4.3.1, INTEGER CONSTANT 00290039 |
| C SECTION 6.1, ARITHMETIC EXPRESSIONS 00300039 |
| C SECTION 6.6, EVALUATION OF EXPRESSIONS 00310039 |
| C SECTION 10.1, ARITHMETIC ASSIGNMENT STATEMENT 00320039 |
| C 00330039 |
| C ********************************************************** 00340039 |
| C 00350039 |
| C A COMPILER VALIDATION SYSTEM FOR THE FORTRAN LANGUAGE 00360039 |
| C BASED ON SPECIFICATIONS AS DEFINED IN AMERICAN NATIONAL STANDARD 00370039 |
| C PROGRAMMING LANGUAGE FORTRAN X3.9-1978, HAS BEEN DEVELOPED BY THE 00380039 |
| C FEDERAL COBOL COMPILER TESTING SERVICE. THE FORTRAN COMPILER 00390039 |
| C VALIDATION SYSTEM (FCVS) CONSISTS OF AUDIT ROUTINES, THEIR RELATED00400039 |
| C DATA, AND AN EXECUTIVE SYSTEM. EACH AUDIT ROUTINE IS A FORTRAN 00410039 |
| C PROGRAM, SUBPROGRAM OR FUNCTION WHICH INCLUDES TESTS OF SPECIFIC 00420039 |
| C LANGUAGE ELEMENTS AND SUPPORTING PROCEDURES INDICATING THE RESULT 00430039 |
| C OF EXECUTING THESE TESTS. 00440039 |
| C 00450039 |
| C THIS PARTICULAR PROGRAM/SUBPROGRAM/FUNCTION CONTAINS FEATURES 00460039 |
| C FOUND ONLY IN THE SUBSET AS DEFINED IN X3.9-1978. 00470039 |
| C 00480039 |
| C SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO - 00490039 |
| C 00500039 |
| C NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY 00510039 |
| C SOFTWARE STANDARDS VALIDATION GROUP 00520039 |
| C BUILDING 225 RM A266 00530039 |
| C GAITHERSBURG, MD 20899 00540039 |
| C ********************************************************** 00550039 |
| C 00560039 |
| C 00570039 |
| C 00580039 |
| C INITIALIZATION SECTION 00590039 |
| C 00600039 |
| C INITIALIZE CONSTANTS 00610039 |
| C ************** 00620039 |
| C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. 00630039 |
| I01 = 5 00640039 |
| C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. 00650039 |
| I02 = 6 00660039 |
| C SYSTEM ENVIRONMENT SECTION 00670039 |
| C 00680039 |
| CX010 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-010 CONTROL CARD. 00690039 |
| C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 00700039 |
| C (UNIT NUMBER FOR CARD READER). 00710039 |
| CX011 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-011 CONTROL CARD. 00720039 |
| C THE CX011 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL 00730039 |
| C FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX010 ABOVE. 00740039 |
| C 00750039 |
| CX020 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-020 CONTROL CARD. 00760039 |
| C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02 = 6 00770039 |
| C (UNIT NUMBER FOR PRINTER). 00780039 |
| CX021 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-021 CONTROL CARD. 00790039 |
| C THE CX021 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL 00800039 |
| C FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX020 ABOVE. 00810039 |
| C 00820039 |
| IVPASS=0 00830039 |
| IVFAIL=0 00840039 |
| IVDELE=0 00850039 |
| ICZERO=0 00860039 |
| C 00870039 |
| C WRITE PAGE HEADERS 00880039 |
| WRITE (I02,90000) 00890039 |
| WRITE (I02,90001) 00900039 |
| WRITE (I02,90002) 00910039 |
| WRITE (I02, 90002) 00920039 |
| WRITE (I02,90003) 00930039 |
| WRITE (I02,90002) 00940039 |
| WRITE (I02,90004) 00950039 |
| WRITE (I02,90002) 00960039 |
| WRITE (I02,90011) 00970039 |
| WRITE (I02,90002) 00980039 |
| WRITE (I02,90002) 00990039 |
| WRITE (I02,90005) 01000039 |
| WRITE (I02,90006) 01010039 |
| WRITE (I02,90002) 01020039 |
| C 01030039 |
| C TEST SECTION 01040039 |
| C 01050039 |
| C ARITHMETIC ASSIGNMENT STATEMENT 01060039 |
| C 01070039 |
| C TEST 552 THROUGH TEST 557 CONTAIN ARITHMETIC ASSIGNMENT STATEMENTS01080039 |
| C OF THE FORM IV = IV/IC/IC. 01090039 |
| C 01100039 |
| 5521 CONTINUE 01110039 |
| IVTNUM = 552 01120039 |
| C 01130039 |
| C **** TEST 552 **** 01140039 |
| C 01150039 |
| IF (ICZERO) 35520, 5520, 35520 01160039 |
| 5520 CONTINUE 01170039 |
| IVON01 = 24 01180039 |
| IVCOMP = IVON01/3/4 01190039 |
| GO TO 45520 01200039 |
| 35520 IVDELE = IVDELE + 1 01210039 |
| WRITE (I02,80003) IVTNUM 01220039 |
| IF (ICZERO) 45520, 5531, 45520 01230039 |
| 45520 IF (IVCOMP - 2) 25520,15520,25520 01240039 |
| 15520 IVPASS = IVPASS + 1 01250039 |
| WRITE (I02,80001) IVTNUM 01260039 |
| GO TO 5531 01270039 |
| 25520 IVFAIL = IVFAIL + 1 01280039 |
| IVCORR = 2 01290039 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 01300039 |
| 5531 CONTINUE 01310039 |
| IVTNUM = 553 01320039 |
| C 01330039 |
| C **** TEST 553 **** 01340039 |
| C 01350039 |
| IF (ICZERO) 35530, 5530, 35530 01360039 |
| 5530 CONTINUE 01370039 |
| IVON01 = 7151 01380039 |
| IVCOMP = IVON01/3/10 01390039 |
| GO TO 45530 01400039 |
| 35530 IVDELE = IVDELE + 1 01410039 |
| WRITE (I02,80003) IVTNUM 01420039 |
| IF (ICZERO) 45530, 5541, 45530 01430039 |
| 45530 IF (IVCOMP - 238) 25530,15530,25530 01440039 |
| 15530 IVPASS = IVPASS + 1 01450039 |
| WRITE (I02,80001) IVTNUM 01460039 |
| GO TO 5541 01470039 |
| 25530 IVFAIL = IVFAIL + 1 01480039 |
| IVCORR = 238 01490039 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 01500039 |
| 5541 CONTINUE 01510039 |
| IVTNUM = 554 01520039 |
| C 01530039 |
| C **** TEST 554 **** 01540039 |
| C 01550039 |
| IF (ICZERO) 35540, 5540, 35540 01560039 |
| 5540 CONTINUE 01570039 |
| IVON01 = -330 01580039 |
| IVCOMP = IVON01/3/2 01590039 |
| GO TO 45540 01600039 |
| 35540 IVDELE = IVDELE + 1 01610039 |
| WRITE (I02,80003) IVTNUM 01620039 |
| IF (ICZERO) 45540, 5551, 45540 01630039 |
| 45540 IF (IVCOMP + 55) 25540,15540,25540 01640039 |
| 15540 IVPASS = IVPASS + 1 01650039 |
| WRITE (I02,80001) IVTNUM 01660039 |
| GO TO 5551 01670039 |
| 25540 IVFAIL = IVFAIL + 1 01680039 |
| IVCORR = -55 01690039 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 01700039 |
| 5551 CONTINUE 01710039 |
| IVTNUM = 555 01720039 |
| C 01730039 |
| C **** TEST 555 **** 01740039 |
| C 01750039 |
| IF (ICZERO) 35550, 5550, 35550 01760039 |
| 5550 CONTINUE 01770039 |
| IVON01 = 15249 01780039 |
| IVCOMP = IVON01/(-13)/51 01790039 |
| GO TO 45550 01800039 |
| 35550 IVDELE = IVDELE + 1 01810039 |
| WRITE (I02,80003) IVTNUM 01820039 |
| IF (ICZERO) 45550, 5561, 45550 01830039 |
| 45550 IF (IVCOMP + 23) 25550,15550,25550 01840039 |
| 15550 IVPASS = IVPASS + 1 01850039 |
| WRITE (I02,80001) IVTNUM 01860039 |
| GO TO 5561 01870039 |
| 25550 IVFAIL = IVFAIL + 1 01880039 |
| IVCORR = -23 01890039 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 01900039 |
| 5561 CONTINUE 01910039 |
| IVTNUM = 556 01920039 |
| C 01930039 |
| C **** TEST 556 **** 01940039 |
| C 01950039 |
| IF (ICZERO) 35560, 5560, 35560 01960039 |
| 5560 CONTINUE 01970039 |
| IVON01 = -27342 01980039 |
| IVCOMP = IVON01/(-4)/(-3) 01990039 |
| GO TO 45560 02000039 |
| 35560 IVDELE = IVDELE + 1 02010039 |
| WRITE (I02,80003) IVTNUM 02020039 |
| IF (ICZERO) 45560, 5571, 45560 02030039 |
| 45560 IF (IVCOMP + 2278) 25560,15560,25560 02040039 |
| 15560 IVPASS = IVPASS + 1 02050039 |
| WRITE (I02,80001) IVTNUM 02060039 |
| GO TO 5571 02070039 |
| 25560 IVFAIL = IVFAIL + 1 02080039 |
| IVCORR = -2278 02090039 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 02100039 |
| 5571 CONTINUE 02110039 |
| IVTNUM = 557 02120039 |
| C 02130039 |
| C **** TEST 557 **** 02140039 |
| C 02150039 |
| IF (ICZERO) 35570, 5570, 35570 02160039 |
| 5570 CONTINUE 02170039 |
| IVON01 = -27342 02180039 |
| IVCOMP = -IVON01/4/(-3) 02190039 |
| GO TO 45570 02200039 |
| 35570 IVDELE = IVDELE + 1 02210039 |
| WRITE (I02,80003) IVTNUM 02220039 |
| IF (ICZERO) 45570, 5581, 45570 02230039 |
| 45570 IF (IVCOMP + 2278) 25570,15570,25570 02240039 |
| 15570 IVPASS = IVPASS + 1 02250039 |
| WRITE (I02,80001) IVTNUM 02260039 |
| GO TO 5581 02270039 |
| 25570 IVFAIL = IVFAIL + 1 02280039 |
| IVCORR = -2278 02290039 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 02300039 |
| C 02310039 |
| C TEST 558 THROUGH TEST 563 CONTAIN ARITHMETIC ASSIGNMENT STATEMENTS02320039 |
| C OF THE FORM IV=IC/IV/IC. 02330039 |
| C 02340039 |
| 5581 CONTINUE 02350039 |
| IVTNUM = 558 02360039 |
| C 02370039 |
| C **** TEST 558 **** 02380039 |
| C 02390039 |
| IF (ICZERO) 35580, 5580, 35580 02400039 |
| 5580 CONTINUE 02410039 |
| IVON02 = 3 02420039 |
| IVCOMP = 24/IVON02/4 02430039 |
| GO TO 45580 02440039 |
| 35580 IVDELE = IVDELE + 1 02450039 |
| WRITE (I02,80003) IVTNUM 02460039 |
| IF (ICZERO) 45580, 5591, 45580 02470039 |
| 45580 IF (IVCOMP - 2) 25580,15580,25580 02480039 |
| 15580 IVPASS = IVPASS + 1 02490039 |
| WRITE (I02,80001) IVTNUM 02500039 |
| GO TO 5591 02510039 |
| 25580 IVFAIL = IVFAIL + 1 02520039 |
| IVCORR = 2 02530039 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 02540039 |
| 5591 CONTINUE 02550039 |
| IVTNUM = 559 02560039 |
| C 02570039 |
| C **** TEST 559 **** 02580039 |
| C 02590039 |
| IF (ICZERO) 35590, 5590, 35590 02600039 |
| 5590 CONTINUE 02610039 |
| IVON02 = 3 02620039 |
| IVCOMP = 7151/IVON02/10 02630039 |
| GO TO 45590 02640039 |
| 35590 IVDELE = IVDELE + 1 02650039 |
| WRITE (I02,80003) IVTNUM 02660039 |
| IF (ICZERO) 45590, 5601, 45590 02670039 |
| 45590 IF (IVCOMP - 238) 25590,15590,25590 02680039 |
| 15590 IVPASS = IVPASS + 1 02690039 |
| WRITE (I02,80001) IVTNUM 02700039 |
| GO TO 5601 02710039 |
| 25590 IVFAIL = IVFAIL + 1 02720039 |
| IVCORR = 238 02730039 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 02740039 |
| 5601 CONTINUE 02750039 |
| IVTNUM = 560 02760039 |
| C 02770039 |
| C **** TEST 560 **** 02780039 |
| C 02790039 |
| IF (ICZERO) 35600, 5600, 35600 02800039 |
| 5600 CONTINUE 02810039 |
| IVON02 = -3 02820039 |
| IVCOMP = 330/IVON02/2 02830039 |
| GO TO 45600 02840039 |
| 35600 IVDELE = IVDELE + 1 02850039 |
| WRITE (I02,80003) IVTNUM 02860039 |
| IF (ICZERO) 45600, 5611, 45600 02870039 |
| 45600 IF (IVCOMP +55) 25600,15600,25600 02880039 |
| 15600 IVPASS = IVPASS + 1 02890039 |
| WRITE (I02,80001) IVTNUM 02900039 |
| GO TO 5611 02910039 |
| 25600 IVFAIL = IVFAIL + 1 02920039 |
| IVCORR = -55 02930039 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 02940039 |
| 5611 CONTINUE 02950039 |
| IVTNUM = 561 02960039 |
| C 02970039 |
| C **** TEST 561 **** 02980039 |
| C 02990039 |
| IF (ICZERO) 35610, 5610, 35610 03000039 |
| 5610 CONTINUE 03010039 |
| IVON02 = +13 03020039 |
| IVCOMP = 15249/IVON02/(-51) 03030039 |
| GO TO 45610 03040039 |
| 35610 IVDELE = IVDELE + 1 03050039 |
| WRITE (I02,80003) IVTNUM 03060039 |
| IF (ICZERO) 45610, 5621, 45610 03070039 |
| 45610 IF (IVCOMP + 23) 25610,15610,25610 03080039 |
| 15610 IVPASS = IVPASS + 1 03090039 |
| WRITE (I02,80001) IVTNUM 03100039 |
| GO TO 5621 03110039 |
| 25610 IVFAIL = IVFAIL + 1 03120039 |
| IVCORR = -23 03130039 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 03140039 |
| 5621 CONTINUE 03150039 |
| IVTNUM = 562 03160039 |
| C 03170039 |
| C **** TEST 562 **** 03180039 |
| C 03190039 |
| IF (ICZERO) 35620, 5620, 35620 03200039 |
| 5620 CONTINUE 03210039 |
| IVON02 = -4 03220039 |
| IVCOMP = (-27342)/IVON02/(-3) 03230039 |
| GO TO 45620 03240039 |
| 35620 IVDELE = IVDELE + 1 03250039 |
| WRITE (I02,80003) IVTNUM 03260039 |
| IF (ICZERO) 45620, 5631, 45620 03270039 |
| 45620 IF (IVCOMP + 2278) 25620,15620,25620 03280039 |
| 15620 IVPASS = IVPASS + 1 03290039 |
| WRITE (I02,80001) IVTNUM 03300039 |
| GO TO 5631 03310039 |
| 25620 IVFAIL = IVFAIL + 1 03320039 |
| IVCORR = -2278 03330039 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 03340039 |
| 5631 CONTINUE 03350039 |
| IVTNUM = 563 03360039 |
| C 03370039 |
| C **** TEST 563 **** 03380039 |
| C 03390039 |
| IF (ICZERO) 35630, 5630, 35630 03400039 |
| 5630 CONTINUE 03410039 |
| IVON02 = -4 03420039 |
| IVCOMP = -27342/(-IVON02)/(-3) 03430039 |
| GO TO 45630 03440039 |
| 35630 IVDELE = IVDELE + 1 03450039 |
| WRITE (I02,80003) IVTNUM 03460039 |
| IF (ICZERO) 45630, 5641, 45630 03470039 |
| 45630 IF (IVCOMP - 2278) 25630,15630,25630 03480039 |
| 15630 IVPASS = IVPASS + 1 03490039 |
| WRITE (I02,80001) IVTNUM 03500039 |
| GO TO 5641 03510039 |
| 25630 IVFAIL = IVFAIL + 1 03520039 |
| IVCORR = 2278 03530039 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 03540039 |
| C 03550039 |
| C TEST 564 THROUGH TEST 569 CONTAIN ARITHMETIC ASSIGNMENT STATEMENTS03560039 |
| C OF THE FORM IV = IC/IC/IV. 03570039 |
| C 03580039 |
| 5641 CONTINUE 03590039 |
| IVTNUM = 564 03600039 |
| C 03610039 |
| C **** TEST 564 **** 03620039 |
| C 03630039 |
| IF (ICZERO) 35640, 5640, 35640 03640039 |
| 5640 CONTINUE 03650039 |
| IVON03 = 4 03660039 |
| IVCOMP = 24/3/IVON03 03670039 |
| GO TO 45640 03680039 |
| 35640 IVDELE = IVDELE + 1 03690039 |
| WRITE (I02,80003) IVTNUM 03700039 |
| IF (ICZERO) 45640, 5651, 45640 03710039 |
| 45640 IF (IVCOMP -2) 25640,15640,25640 03720039 |
| 15640 IVPASS = IVPASS + 1 03730039 |
| WRITE (I02,80001) IVTNUM 03740039 |
| GO TO 5651 03750039 |
| 25640 IVFAIL = IVFAIL + 1 03760039 |
| IVCORR = 2 03770039 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 03780039 |
| 5651 CONTINUE 03790039 |
| IVTNUM = 565 03800039 |
| C 03810039 |
| C **** TEST 565 **** 03820039 |
| C 03830039 |
| IF (ICZERO) 35650, 5650, 35650 03840039 |
| 5650 CONTINUE 03850039 |
| IVON03 = 10 03860039 |
| IVCOMP = 7151/3/IVON03 03870039 |
| GO TO 45650 03880039 |
| 35650 IVDELE = IVDELE + 1 03890039 |
| WRITE (I02,80003) IVTNUM 03900039 |
| IF (ICZERO) 45650, 5661, 45650 03910039 |
| 45650 IF (IVCOMP - 238) 25650,15650,25650 03920039 |
| 15650 IVPASS = IVPASS + 1 03930039 |
| WRITE (I02,80001) IVTNUM 03940039 |
| GO TO 5661 03950039 |
| 25650 IVFAIL = IVFAIL + 1 03960039 |
| IVCORR = 238 03970039 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 03980039 |
| 5661 CONTINUE 03990039 |
| IVTNUM = 566 04000039 |
| C 04010039 |
| C **** TEST 566 **** 04020039 |
| C 04030039 |
| IF (ICZERO) 35660, 5660, 35660 04040039 |
| 5660 CONTINUE 04050039 |
| IVON03 = -2 04060039 |
| IVCOMP = 330/3/IVON03 04070039 |
| GO TO 45660 04080039 |
| 35660 IVDELE = IVDELE + 1 04090039 |
| WRITE (I02,80003) IVTNUM 04100039 |
| IF (ICZERO) 45660, 5671, 45660 04110039 |
| 45660 IF (IVCOMP + 55) 25660,15660,25660 04120039 |
| 15660 IVPASS = IVPASS + 1 04130039 |
| WRITE (I02,80001) IVTNUM 04140039 |
| GO TO 5671 04150039 |
| 25660 IVFAIL = IVFAIL + 1 04160039 |
| IVCORR = -55 04170039 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 04180039 |
| 5671 CONTINUE 04190039 |
| IVTNUM = 567 04200039 |
| C 04210039 |
| C **** TEST 567 **** 04220039 |
| C 04230039 |
| IF (ICZERO) 35670, 5670, 35670 04240039 |
| 5670 CONTINUE 04250039 |
| IVON03 = +51 04260039 |
| IVCOMP = 15249/(-13)/IVON03 04270039 |
| GO TO 45670 04280039 |
| 35670 IVDELE = IVDELE + 1 04290039 |
| WRITE (I02,80003) IVTNUM 04300039 |
| IF (ICZERO) 45670, 5681, 45670 04310039 |
| 45670 IF (IVCOMP + 23) 25670,15670,25670 04320039 |
| 15670 IVPASS = IVPASS + 1 04330039 |
| WRITE (I02,80001) IVTNUM 04340039 |
| GO TO 5681 04350039 |
| 25670 IVFAIL = IVFAIL + 1 04360039 |
| IVCORR = -23 04370039 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 04380039 |
| 5681 CONTINUE 04390039 |
| IVTNUM = 568 04400039 |
| C 04410039 |
| C **** TEST 568 **** 04420039 |
| C 04430039 |
| IF (ICZERO) 35680, 5680, 35680 04440039 |
| 5680 CONTINUE 04450039 |
| IVON03 = -3 04460039 |
| IVCOMP = (-27342)/(-4)/IVON03 04470039 |
| GO TO 45680 04480039 |
| 35680 IVDELE = IVDELE + 1 04490039 |
| WRITE (I02,80003) IVTNUM 04500039 |
| IF (ICZERO) 45680, 5691, 45680 04510039 |
| 45680 IF (IVCOMP + 2278) 25680,15680,25680 04520039 |
| 15680 IVPASS = IVPASS + 1 04530039 |
| WRITE (I02,80001) IVTNUM 04540039 |
| GO TO 5691 04550039 |
| 25680 IVFAIL = IVFAIL + 1 04560039 |
| IVCORR = -2278 04570039 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 04580039 |
| 5691 CONTINUE 04590039 |
| IVTNUM = 569 04600039 |
| C 04610039 |
| C **** TEST 569 **** 04620039 |
| C 04630039 |
| IF (ICZERO) 35690, 5690, 35690 04640039 |
| 5690 CONTINUE 04650039 |
| IVON03 = -3 04660039 |
| IVCOMP = -27342/(-4)/(-IVON03) 04670039 |
| GO TO 45690 04680039 |
| 35690 IVDELE = IVDELE + 1 04690039 |
| WRITE (I02,80003) IVTNUM 04700039 |
| IF (ICZERO) 45690, 5701, 45690 04710039 |
| 45690 IF (IVCOMP - 2278) 25690,15690,25690 04720039 |
| 15690 IVPASS = IVPASS + 1 04730039 |
| WRITE (I02,80001) IVTNUM 04740039 |
| GO TO 5701 04750039 |
| 25690 IVFAIL = IVFAIL + 1 04760039 |
| IVCORR = 2278 04770039 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 04780039 |
| C 04790039 |
| C TEST 570 AND TEST 571 - IV =(IV/IC)/IC 04800039 |
| C 04810039 |
| 5701 CONTINUE 04820039 |
| IVTNUM = 570 04830039 |
| C 04840039 |
| C **** TEST 570 **** 04850039 |
| C 04860039 |
| IF (ICZERO) 35700, 5700, 35700 04870039 |
| 5700 CONTINUE 04880039 |
| IVON01 = 24 04890039 |
| IVCOMP = (IVON01/3)/4 04900039 |
| GO TO 45700 04910039 |
| 35700 IVDELE = IVDELE + 1 04920039 |
| WRITE (I02,80003) IVTNUM 04930039 |
| IF (ICZERO) 45700, 5711, 45700 04940039 |
| 45700 IF (IVCOMP -2) 25700,15700,25700 04950039 |
| 15700 IVPASS = IVPASS + 1 04960039 |
| WRITE (I02,80001) IVTNUM 04970039 |
| GO TO 5711 04980039 |
| 25700 IVFAIL = IVFAIL + 1 04990039 |
| IVCORR = 2 05000039 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 05010039 |
| 5711 CONTINUE 05020039 |
| IVTNUM = 571 05030039 |
| C 05040039 |
| C **** TEST 571 **** 05050039 |
| C 05060039 |
| IF (ICZERO) 35710, 5710, 35710 05070039 |
| 5710 CONTINUE 05080039 |
| IVON01 = -330 05090039 |
| IVCOMP = (IVON01/(-3))/4 05100039 |
| GO TO 45710 05110039 |
| 35710 IVDELE = IVDELE + 1 05120039 |
| WRITE (I02,80003) IVTNUM 05130039 |
| IF (ICZERO) 45710, 5721, 45710 05140039 |
| 45710 IF (IVCOMP - 27) 25710,15710,25710 05150039 |
| 15710 IVPASS = IVPASS + 1 05160039 |
| WRITE (I02,80001) IVTNUM 05170039 |
| GO TO 5721 05180039 |
| 25710 IVFAIL = IVFAIL + 1 05190039 |
| IVCORR = 27 05200039 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 05210039 |
| C 05220039 |
| C TEST 572 AND TEST 573 - IV= IV/(IC/IC) 05230039 |
| C 05240039 |
| 5721 CONTINUE 05250039 |
| IVTNUM = 572 05260039 |
| C 05270039 |
| C **** TEST 572 **** 05280039 |
| C 05290039 |
| IF (ICZERO) 35720, 5720, 35720 05300039 |
| 5720 CONTINUE 05310039 |
| IVON01 = 24 05320039 |
| IVCOMP = IVON01/(8/4) 05330039 |
| GO TO 45720 05340039 |
| 35720 IVDELE = IVDELE + 1 05350039 |
| WRITE (I02,80003) IVTNUM 05360039 |
| IF (ICZERO) 45720, 5731, 45720 05370039 |
| 45720 IF (IVCOMP - 12) 25720,15720,25720 05380039 |
| 15720 IVPASS = IVPASS + 1 05390039 |
| WRITE (I02,80001) IVTNUM 05400039 |
| GO TO 5731 05410039 |
| 25720 IVFAIL = IVFAIL + 1 05420039 |
| IVCORR = 12 05430039 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 05440039 |
| 5731 CONTINUE 05450039 |
| IVTNUM = 573 05460039 |
| C 05470039 |
| C **** TEST 573 **** 05480039 |
| C 05490039 |
| IF (ICZERO) 35730, 5730, 35730 05500039 |
| 5730 CONTINUE 05510039 |
| IVON01 = -7154 05520039 |
| IVCOMP = -IVON01/((-26)/5) 05530039 |
| GO TO 45730 05540039 |
| 35730 IVDELE = IVDELE + 1 05550039 |
| WRITE (I02,80003) IVTNUM 05560039 |
| IF (ICZERO) 45730, 5741, 45730 05570039 |
| 45730 IF (IVCOMP + 1430) 25730,15730,25730 05580039 |
| 15730 IVPASS = IVPASS + 1 05590039 |
| WRITE (I02,80001) IVTNUM 05600039 |
| GO TO 5741 05610039 |
| 25730 IVFAIL = IVFAIL + 1 05620039 |
| IVCORR = -1430 05630039 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 05640039 |
| C 05650039 |
| C TEST 574 AND TEST 575 - IV=(IC/IV)/IC 05660039 |
| C 05670039 |
| 5741 CONTINUE 05680039 |
| IVTNUM = 574 05690039 |
| C 05700039 |
| C **** TEST 574 **** 05710039 |
| C 05720039 |
| IF (ICZERO) 35740, 5740, 35740 05730039 |
| 5740 CONTINUE 05740039 |
| IVON02 = 3 05750039 |
| IVCOMP = (24/IVON02)/4 05760039 |
| GO TO 45740 05770039 |
| 35740 IVDELE = IVDELE + 1 05780039 |
| WRITE (I02,80003) IVTNUM 05790039 |
| IF (ICZERO) 45740, 5751, 45740 05800039 |
| 45740 IF (IVCOMP -2) 25740,15740,25740 05810039 |
| 15740 IVPASS = IVPASS + 1 05820039 |
| WRITE (I02,80001) IVTNUM 05830039 |
| GO TO 5751 05840039 |
| 25740 IVFAIL = IVFAIL + 1 05850039 |
| IVCORR = 2 05860039 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 05870039 |
| 5751 CONTINUE 05880039 |
| IVTNUM = 575 05890039 |
| C 05900039 |
| C **** TEST 575 **** 05910039 |
| C 05920039 |
| IF (ICZERO) 35750, 5750, 35750 05930039 |
| 5750 CONTINUE 05940039 |
| IVON02 = -3 05950039 |
| IVCOMP = (-330/IVON02)/(-4) 05960039 |
| GO TO 45750 05970039 |
| 35750 IVDELE = IVDELE + 1 05980039 |
| WRITE (I02,80003) IVTNUM 05990039 |
| IF (ICZERO) 45750, 5761, 45750 06000039 |
| 45750 IF (IVCOMP + 27) 25750,15750,25750 06010039 |
| 15750 IVPASS = IVPASS + 1 06020039 |
| WRITE (I02,80001) IVTNUM 06030039 |
| GO TO 5761 06040039 |
| 25750 IVFAIL = IVFAIL + 1 06050039 |
| IVCORR = -27 06060039 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 06070039 |
| C 06080039 |
| C TEST 576 AND TEST 577 - IV=IC/(IV/IC) 06090039 |
| C 06100039 |
| 5761 CONTINUE 06110039 |
| IVTNUM = 576 06120039 |
| C 06130039 |
| C **** TEST 576 **** 06140039 |
| C 06150039 |
| IF (ICZERO) 35760, 5760, 35760 06160039 |
| 5760 CONTINUE 06170039 |
| IVON02 = 8 06180039 |
| IVCOMP = 24/(IVON02/4) 06190039 |
| GO TO 45760 06200039 |
| 35760 IVDELE = IVDELE + 1 06210039 |
| WRITE (I02,80003) IVTNUM 06220039 |
| IF (ICZERO) 45760, 5771, 45760 06230039 |
| 45760 IF (IVCOMP - 12) 25760,15760,25760 06240039 |
| 15760 IVPASS = IVPASS + 1 06250039 |
| WRITE (I02,80001) IVTNUM 06260039 |
| GO TO 5771 06270039 |
| 25760 IVFAIL = IVFAIL + 1 06280039 |
| IVCORR = 12 06290039 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 06300039 |
| 5771 CONTINUE 06310039 |
| IVTNUM = 577 06320039 |
| C 06330039 |
| C **** TEST 577 **** 06340039 |
| C 06350039 |
| IF (ICZERO) 35770, 5770, 35770 06360039 |
| 5770 CONTINUE 06370039 |
| IVON02 = -26 06380039 |
| IVCOMP = 7154/((-IVON02)/(-5)) 06390039 |
| GO TO 45770 06400039 |
| 35770 IVDELE = IVDELE + 1 06410039 |
| WRITE (I02,80003) IVTNUM 06420039 |
| IF (ICZERO) 45770, 5781, 45770 06430039 |
| 45770 IF (IVCOMP + 1430) 25770,15770,25770 06440039 |
| 15770 IVPASS = IVPASS + 1 06450039 |
| WRITE (I02,80001) IVTNUM 06460039 |
| GO TO 5781 06470039 |
| 25770 IVFAIL = IVFAIL + 1 06480039 |
| IVCORR = -1430 06490039 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 06500039 |
| C 06510039 |
| C TEST 578 AND TEST 579 - IV=(IC/IC)/IV 06520039 |
| C 06530039 |
| 5781 CONTINUE 06540039 |
| IVTNUM = 578 06550039 |
| C 06560039 |
| C **** TEST 578 **** 06570039 |
| C 06580039 |
| IF (ICZERO) 35780, 5780, 35780 06590039 |
| 5780 CONTINUE 06600039 |
| IVON03 = 4 06610039 |
| IVCOMP = (24/3)/IVON03 06620039 |
| GO TO 45780 06630039 |
| 35780 IVDELE = IVDELE + 1 06640039 |
| WRITE (I02,80003) IVTNUM 06650039 |
| IF (ICZERO) 45780, 5791, 45780 06660039 |
| 45780 IF (IVCOMP - 2) 25780,15780,25780 06670039 |
| 15780 IVPASS = IVPASS + 1 06680039 |
| WRITE (I02,80001) IVTNUM 06690039 |
| GO TO 5791 06700039 |
| 25780 IVFAIL = IVFAIL + 1 06710039 |
| IVCORR = 2 06720039 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 06730039 |
| 5791 CONTINUE 06740039 |
| IVTNUM = 579 06750039 |
| C 06760039 |
| C **** TEST 579 **** 06770039 |
| C 06780039 |
| IF (ICZERO) 35790, 5790, 35790 06790039 |
| 5790 CONTINUE 06800039 |
| IVON03 = -4 06810039 |
| IVCOMP = (330/(-3))/IVON03 06820039 |
| GO TO 45790 06830039 |
| 35790 IVDELE = IVDELE + 1 06840039 |
| WRITE (I02,80003) IVTNUM 06850039 |
| IF (ICZERO) 45790, 5801, 45790 06860039 |
| 45790 IF (IVCOMP - 27) 25790,15790,25790 06870039 |
| 15790 IVPASS = IVPASS + 1 06880039 |
| WRITE (I02,80001) IVTNUM 06890039 |
| GO TO 5801 06900039 |
| 25790 IVFAIL = IVFAIL + 1 06910039 |
| IVCORR = 27 06920039 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 06930039 |
| C 06940039 |
| C TEST 580 AND TEST 581 - IV= IC/(IC/IV) 06950039 |
| C 06960039 |
| 5801 CONTINUE 06970039 |
| IVTNUM = 580 06980039 |
| C 06990039 |
| C **** TEST 580 **** 07000039 |
| C 07010039 |
| IF (ICZERO) 35800, 5800, 35800 07020039 |
| 5800 CONTINUE 07030039 |
| IVON03 = 4 07040039 |
| IVCOMP = 24/(8/IVON03) 07050039 |
| GO TO 45800 07060039 |
| 35800 IVDELE = IVDELE + 1 07070039 |
| WRITE (I02,80003) IVTNUM 07080039 |
| IF (ICZERO) 45800, 5811, 45800 07090039 |
| 45800 IF (IVCOMP - 12) 25800,15800,25800 07100039 |
| 15800 IVPASS = IVPASS + 1 07110039 |
| WRITE (I02,80001) IVTNUM 07120039 |
| GO TO 5811 07130039 |
| 25800 IVFAIL = IVFAIL + 1 07140039 |
| IVCORR = 12 07150039 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 07160039 |
| 5811 CONTINUE 07170039 |
| IVTNUM = 581 07180039 |
| C 07190039 |
| C **** TEST 581 **** 07200039 |
| C 07210039 |
| IF (ICZERO) 35810, 5810, 35810 07220039 |
| 5810 CONTINUE 07230039 |
| IVON03 = -5 07240039 |
| IVCOMP = -7154/((-26)/IVON03) 07250039 |
| GO TO 45810 07260039 |
| 35810 IVDELE = IVDELE + 1 07270039 |
| WRITE (I02,80003) IVTNUM 07280039 |
| IF (ICZERO) 45810, 5821, 45810 07290039 |
| 45810 IF (IVCOMP + 1430) 25810,15810,25810 07300039 |
| 15810 IVPASS = IVPASS + 1 07310039 |
| WRITE (I02,80001) IVTNUM 07320039 |
| GO TO 5821 07330039 |
| 25810 IVFAIL = IVFAIL + 1 07340039 |
| IVCORR = -1430 07350039 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 07360039 |
| C 07370039 |
| C **** END OF TESTS **** 07380039 |
| 5821 CONTINUE 07390039 |
| C 07400039 |
| C WRITE PAGE FOOTINGS AND RUN SUMMARIES 07410039 |
| 99999 CONTINUE 07420039 |
| WRITE (I02,90002) 07430039 |
| WRITE (I02,90006) 07440039 |
| WRITE (I02,90002) 07450039 |
| WRITE (I02,90002) 07460039 |
| WRITE (I02,90007) 07470039 |
| WRITE (I02,90002) 07480039 |
| WRITE (I02,90008) IVFAIL 07490039 |
| WRITE (I02,90009) IVPASS 07500039 |
| WRITE (I02,90010) IVDELE 07510039 |
| C 07520039 |
| C 07530039 |
| C TERMINATE ROUTINE EXECUTION 07540039 |
| STOP 07550039 |
| C 07560039 |
| C FORMAT STATEMENTS FOR PAGE HEADERS 07570039 |
| 90000 FORMAT ("1") 07580039 |
| 90002 FORMAT (" ") 07590039 |
| 90001 FORMAT (" ",10X,"FORTRAN COMPILER VALIDATION SYSTEM" ) 07600039 |
| 90003 FORMAT (" ",21X,"VERSION 2.1" ) 07610039 |
| 90004 FORMAT (" ",10X,"FOR OFFICIAL USE ONLY - COPYRIGHT 1978" ) 07620039 |
| 90005 FORMAT (" ",5X,"TEST",5X,"PASS/FAIL", 5X,"COMPUTED",8X,"CORRECT") 07630039 |
| 90006 FORMAT (" ",5X,"----------------------------------------------" ) 07640039 |
| 90011 FORMAT (" ",18X,"SUBSET LEVEL TEST" ) 07650039 |
| C 07660039 |
| C FORMAT STATEMENTS FOR RUN SUMMARIES 07670039 |
| 90008 FORMAT (" ",15X,I5," ERRORS ENCOUNTERED" ) 07680039 |
| 90009 FORMAT (" ",15X,I5," TESTS PASSED" ) 07690039 |
| 90010 FORMAT (" ",15X,I5," TESTS DELETED" ) 07700039 |
| C 07710039 |
| C FORMAT STATEMENTS FOR TEST RESULTS 07720039 |
| 80001 FORMAT (" ",4X,I5,7X,"PASS") 07730039 |
| 80002 FORMAT (" ",4X,I5,7X,"FAIL") 07740039 |
| 80003 FORMAT (" ",4X,I5,7X,"DELETED") 07750039 |
| 80004 FORMAT (" ",4X,I5,7X,"FAIL",10X,I6,9X,I6) 07760039 |
| 80005 FORMAT (" ",4X,I5,7X,"FAIL",4X,E12.5,3X,E12.5) 07770039 |
| C 07780039 |
| 90007 FORMAT (" ",20X,"END OF PROGRAM FM039" ) 07790039 |
| END 07800039 |