PROGRAM FM040 C COMMENT SECTION 00010040 C 00020040 C FM040 00030040 C 00040040 C THIS ROUTINE TESTS ARITHMETIC ASSIGNMENT STATEMENTS OF THE 00050040 C FORM INTEGER VARIABLE = ARITHMETIC EXPRESSION 00060040 C WHERE THE ARITHMETIC EXPRESSION IS FORMED WITH THE ARITHMETIC 00070040 C OPERATOR /, INTEGER VARIABLES AND AN INTEGER CONSTANT. BOTH 00080040 C POSITIVE AND NEGATIVE VALUES ARE USED FOR THE INTEGER VARIABLES 00090040 C AND THE INTEGER CONSTANT. 00100040 C 00110040 C THERE ARE TESTS WHICH REQUIRE NO TRUNCATION OF THE RESULT AND 00120040 C TESTS WHERE THE RESULT MUST BE TRUNCATED BEFORE BEING STORED IN 00130040 C THE RESULTANT INTEGER VARIABLE. SOME OF THE TESTS USE PARENS 00140040 C TO GROUP ELEMENTS IN THE ARITHMETIC EXPRESSION. 00150040 C 00160040 C THERE ARE TESTS WHERE THE ARITHMETIC EXPRESSION CONTAINS 00170040 C (1) INTEGER VARIABLE/INTEGER VARIABLE 00180040 C (2) INTEGER VARIABLE/INTEGER VARIABLE/INTEGER CONSTANT 00190040 C INTEGER VARIABLE/INTEGER CONSTANT/INTEGER VARIABLE 00200040 C INTEGER CONSTANT/INTEGER VARIABLE/INTEGER VARIABLE 00210040 C (3) SAME AS (2) BUT WITH PARENTHESES TO GROUP ELEMENTS 00220040 C IN THE ARITHMETIC EXPRESSION. 00230040 C 00240040 C REFERENCES 00250040 C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, 00260040 C X3.9-1978 00270040 C 00280040 C SECTION 4.3, INTEGER TYPE 00290040 C SECTION 4.3.1, INTEGER CONSTANT 00300040 C SECTION 6.1, ARITHMETIC EXPRESSIONS 00310040 C SECTION 6.6, EVALUATION OF EXPRESSIONS 00320040 C SECTION 10.1, ARITHMETIC ASSIGNMENT STATEMENT 00330040 C 00340040 C ********************************************************** 00350040 C 00360040 C A COMPILER VALIDATION SYSTEM FOR THE FORTRAN LANGUAGE 00370040 C BASED ON SPECIFICATIONS AS DEFINED IN AMERICAN NATIONAL STANDARD 00380040 C PROGRAMMING LANGUAGE FORTRAN X3.9-1978, HAS BEEN DEVELOPED BY THE 00390040 C FEDERAL COBOL COMPILER TESTING SERVICE. THE FORTRAN COMPILER 00400040 C VALIDATION SYSTEM (FCVS) CONSISTS OF AUDIT ROUTINES, THEIR RELATED00410040 C DATA, AND AN EXECUTIVE SYSTEM. EACH AUDIT ROUTINE IS A FORTRAN 00420040 C PROGRAM, SUBPROGRAM OR FUNCTION WHICH INCLUDES TESTS OF SPECIFIC 00430040 C LANGUAGE ELEMENTS AND SUPPORTING PROCEDURES INDICATING THE RESULT 00440040 C OF EXECUTING THESE TESTS. 00450040 C 00460040 C THIS PARTICULAR PROGRAM/SUBPROGRAM/FUNCTION CONTAINS FEATURES 00470040 C FOUND ONLY IN THE SUBSET AS DEFINED IN X3.9-1978. 00480040 C 00490040 C SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO - 00500040 C 00510040 C NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY 00520040 C SOFTWARE STANDARDS VALIDATION GROUP 00530040 C BUILDING 225 RM A266 00540040 C GAITHERSBURG, MD 20899 00550040 C ********************************************************** 00560040 C 00570040 C 00580040 C 00590040 C INITIALIZATION SECTION 00600040 C 00610040 C INITIALIZE CONSTANTS 00620040 C ************** 00630040 C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. 00640040 I01 = 5 00650040 C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. 00660040 I02 = 6 00670040 C SYSTEM ENVIRONMENT SECTION 00680040 C 00690040 CX010 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-010 CONTROL CARD. 00700040 C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 00710040 C (UNIT NUMBER FOR CARD READER). 00720040 CX011 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-011 CONTROL CARD. 00730040 C THE CX011 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL 00740040 C FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX010 ABOVE. 00750040 C 00760040 CX020 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-020 CONTROL CARD. 00770040 C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02 = 6 00780040 C (UNIT NUMBER FOR PRINTER). 00790040 CX021 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-021 CONTROL CARD. 00800040 C THE CX021 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL 00810040 C FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX020 ABOVE. 00820040 C 00830040 IVPASS=0 00840040 IVFAIL=0 00850040 IVDELE=0 00860040 ICZERO=0 00870040 C 00880040 C WRITE PAGE HEADERS 00890040 WRITE (I02,90000) 00900040 WRITE (I02,90001) 00910040 WRITE (I02,90002) 00920040 WRITE (I02, 90002) 00930040 WRITE (I02,90003) 00940040 WRITE (I02,90002) 00950040 WRITE (I02,90004) 00960040 WRITE (I02,90002) 00970040 WRITE (I02,90011) 00980040 WRITE (I02,90002) 00990040 WRITE (I02,90002) 01000040 WRITE (I02,90005) 01010040 WRITE (I02,90006) 01020040 WRITE (I02,90002) 01030040 C 01040040 C TEST SECTION 01050040 C 01060040 C ARITHMETIC ASSIGNMENT STATEMENT 01070040 C 01080040 C TEST 582 THROUGH TEST 597 CONTAIN ARITHMETIC ASSIGNMENT STATEMENTS01090040 C OF THE FORM INTEGER VARIABLE=INTEGER VARIABLE/INTEGER VAR. 01100040 C 01110040 C TEST 582 THROUGH TEST 585 - POSITIVE VALUES 01120040 C NO TRUNCATION REQUIRED 01130040 C 01140040 5821 CONTINUE 01150040 IVTNUM = 582 01160040 C 01170040 C **** TEST 582 **** 01180040 C 01190040 IF (ICZERO) 35820, 5820, 35820 01200040 5820 CONTINUE 01210040 IVON01 = 4 01220040 IVON02 = 2 01230040 IVCOMP = IVON01 / IVON02 01240040 GO TO 45820 01250040 35820 IVDELE = IVDELE + 1 01260040 WRITE (I02,80003) IVTNUM 01270040 IF (ICZERO) 45820, 5831, 45820 01280040 45820 IF (IVCOMP -2) 25820,15820,25820 01290040 15820 IVPASS = IVPASS + 1 01300040 WRITE (I02,80001) IVTNUM 01310040 GO TO 5831 01320040 25820 IVFAIL = IVFAIL + 1 01330040 IVCORR = 2 01340040 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 01350040 5831 CONTINUE 01360040 IVTNUM = 583 01370040 C 01380040 C **** TEST 583 **** 01390040 C 01400040 IF (ICZERO) 35830, 5830, 35830 01410040 5830 CONTINUE 01420040 IVON01 = 3575 01430040 IVON02 = 25 01440040 IVCOMP = IVON01/IVON02 01450040 GO TO 45830 01460040 35830 IVDELE = IVDELE + 1 01470040 WRITE (I02,80003) IVTNUM 01480040 IF (ICZERO) 45830, 5841, 45830 01490040 45830 IF (IVCOMP - 143) 25830,15830,25830 01500040 15830 IVPASS = IVPASS + 1 01510040 WRITE (I02,80001) IVTNUM 01520040 GO TO 5841 01530040 25830 IVFAIL = IVFAIL + 1 01540040 IVCORR = 143 01550040 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 01560040 5841 CONTINUE 01570040 IVTNUM = 584 01580040 C 01590040 C **** TEST 584 **** 01600040 C 01610040 IF (ICZERO) 35840, 5840, 35840 01620040 5840 CONTINUE 01630040 IVON01 = 6170 01640040 IVON02 = 1234 01650040 IVCOMP = IVON01/IVON02 01660040 GO TO 45840 01670040 35840 IVDELE = IVDELE + 1 01680040 WRITE (I02,80003) IVTNUM 01690040 IF (ICZERO) 45840, 5851, 45840 01700040 45840 IF (IVCOMP - 5) 25840,15840,25840 01710040 15840 IVPASS = IVPASS + 1 01720040 WRITE (I02,80001) IVTNUM 01730040 GO TO 5851 01740040 25840 IVFAIL = IVFAIL + 1 01750040 IVCORR = 5 01760040 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 01770040 5851 CONTINUE 01780040 IVTNUM = 585 01790040 C 01800040 C **** TEST 585 **** 01810040 C 01820040 IF (ICZERO) 35850, 5850, 35850 01830040 5850 CONTINUE 01840040 IVON01 = 32767 01850040 IVON02 = 1 01860040 IVCOMP = IVON01/IVON02 01870040 GO TO 45850 01880040 35850 IVDELE = IVDELE + 1 01890040 WRITE (I02,80003) IVTNUM 01900040 IF (ICZERO) 45850, 5861, 45850 01910040 45850 IF (IVCOMP - 32767) 25850,15850,25850 01920040 15850 IVPASS = IVPASS + 1 01930040 WRITE (I02,80001) IVTNUM 01940040 GO TO 5861 01950040 25850 IVFAIL = IVFAIL + 1 01960040 IVCORR = 32767 01970040 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 01980040 C 01990040 C TEST 586 THROUGH TEST 589 - POSITIVE VALUES 02000040 C TRUNCATION OF RESULT REQUIRED 02010040 C 02020040 5861 CONTINUE 02030040 IVTNUM = 586 02040040 C 02050040 C **** TEST 586 **** 02060040 C 02070040 IF (ICZERO) 35860, 5860, 35860 02080040 5860 CONTINUE 02090040 IVON01 = 2 02100040 IVON02 = 3 02110040 IVCOMP = IVON01/IVON02 02120040 GO TO 45860 02130040 35860 IVDELE = IVDELE + 1 02140040 WRITE (I02,80003) IVTNUM 02150040 IF (ICZERO) 45860, 5871, 45860 02160040 45860 IF (IVCOMP) 25860,15860,25860 02170040 15860 IVPASS = IVPASS + 1 02180040 WRITE (I02,80001) IVTNUM 02190040 GO TO 5871 02200040 25860 IVFAIL = IVFAIL + 1 02210040 IVCORR = 0 02220040 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 02230040 5871 CONTINUE 02240040 IVTNUM = 587 02250040 C 02260040 C **** TEST 587 **** 02270040 C 02280040 IF (ICZERO) 35870, 5870, 35870 02290040 5870 CONTINUE 02300040 IVON01 = 959 02310040 IVON02 = 120 02320040 IVCOMP = IVON01/IVON02 02330040 GO TO 45870 02340040 35870 IVDELE = IVDELE + 1 02350040 WRITE (I02,80003) IVTNUM 02360040 IF (ICZERO) 45870, 5881, 45870 02370040 45870 IF (IVCOMP - 7) 25870,15870,25870 02380040 15870 IVPASS = IVPASS + 1 02390040 WRITE (I02,80001) IVTNUM 02400040 GO TO 5881 02410040 25870 IVFAIL = IVFAIL + 1 02420040 IVCORR = 7 02430040 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 02440040 5881 CONTINUE 02450040 IVTNUM = 588 02460040 C 02470040 C **** TEST 588 **** 02480040 C 02490040 IF (ICZERO) 35880, 5880, 35880 02500040 5880 CONTINUE 02510040 IVON01 = 26606 02520040 IVON02 = 8 02530040 IVCOMP = IVON01/IVON02 02540040 GO TO 45880 02550040 35880 IVDELE = IVDELE + 1 02560040 WRITE (I02,80003) IVTNUM 02570040 IF (ICZERO) 45880, 5891, 45880 02580040 45880 IF (IVCOMP - 3325) 25880,15880,25880 02590040 15880 IVPASS = IVPASS + 1 02600040 WRITE (I02,80001) IVTNUM 02610040 GO TO 5891 02620040 25880 IVFAIL = IVFAIL + 1 02630040 IVCORR = 3325 02640040 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 02650040 5891 CONTINUE 02660040 IVTNUM = 589 02670040 C 02680040 C **** TEST 589 **** 02690040 C 02700040 IF (ICZERO) 35890, 5890, 35890 02710040 5890 CONTINUE 02720040 IVON01 = 25603 02730040 IVON02 = 10354 02740040 IVCOMP = IVON01/IVON02 02750040 GO TO 45890 02760040 35890 IVDELE = IVDELE + 1 02770040 WRITE (I02,80003) IVTNUM 02780040 IF (ICZERO) 45890, 5901, 45890 02790040 45890 IF (IVCOMP - 2) 25890,15890,25890 02800040 15890 IVPASS = IVPASS + 1 02810040 WRITE (I02,80001) IVTNUM 02820040 GO TO 5901 02830040 25890 IVFAIL = IVFAIL + 1 02840040 IVCORR = 2 02850040 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 02860040 C 02870040 C TEST 590 THROUGH TEST 593 - NEGATIVE VALUES INCLUDED 02880040 C NO TRUNCATION REQUIRED 02890040 C 02900040 5901 CONTINUE 02910040 IVTNUM = 590 02920040 C 02930040 C **** TEST 590 **** 02940040 C 02950040 IF (ICZERO) 35900, 5900, 35900 02960040 5900 CONTINUE 02970040 IVON01 = 75 02980040 IVON02 = -25 02990040 IVCOMP = IVON01/IVON02 03000040 GO TO 45900 03010040 35900 IVDELE = IVDELE + 1 03020040 WRITE (I02,80003) IVTNUM 03030040 IF (ICZERO) 45900, 5911, 45900 03040040 45900 IF (IVCOMP + 3) 25900,15900,25900 03050040 15900 IVPASS = IVPASS + 1 03060040 WRITE (I02,80001) IVTNUM 03070040 GO TO 5911 03080040 25900 IVFAIL = IVFAIL + 1 03090040 IVCORR = -3 03100040 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 03110040 5911 CONTINUE 03120040 IVTNUM = 591 03130040 C 03140040 C **** TEST 591 **** 03150040 C 03160040 IF (ICZERO) 35910, 5910, 35910 03170040 5910 CONTINUE 03180040 IVON01 = -6170 03190040 IVON02 = -1234 03200040 IVCOMP = IVON01/IVON02 03210040 GO TO 45910 03220040 35910 IVDELE = IVDELE + 1 03230040 WRITE (I02,80003) IVTNUM 03240040 IF (ICZERO) 45910, 5921, 45910 03250040 45910 IF (IVCOMP -5) 25910,15910,25910 03260040 15910 IVPASS = IVPASS + 1 03270040 WRITE (I02,80001) IVTNUM 03280040 GO TO 5921 03290040 25910 IVFAIL = IVFAIL + 1 03300040 IVCORR = 5 03310040 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 03320040 5921 CONTINUE 03330040 IVTNUM = 592 03340040 C 03350040 C **** TEST 592 **** 03360040 C 03370040 IF (ICZERO) 35920, 5920, 35920 03380040 5920 CONTINUE 03390040 IVON01 = 32766 03400040 IVON02 = -2 03410040 IVCOMP =-IVON01/IVON02 03420040 GO TO 45920 03430040 35920 IVDELE = IVDELE + 1 03440040 WRITE (I02,80003) IVTNUM 03450040 IF (ICZERO) 45920, 5931, 45920 03460040 45920 IF (IVCOMP - 16383) 25920,15920,25920 03470040 15920 IVPASS = IVPASS + 1 03480040 WRITE (I02,80001) IVTNUM 03490040 GO TO 5931 03500040 25920 IVFAIL = IVFAIL + 1 03510040 IVCORR = 16383 03520040 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 03530040 5931 CONTINUE 03540040 IVTNUM = 593 03550040 C 03560040 C **** TEST 593 **** 03570040 C 03580040 IF (ICZERO) 35930, 5930, 35930 03590040 5930 CONTINUE 03600040 IVON01 = 4 03610040 IVON02 = 2 03620040 IVCOMP = IVON01/(-IVON02) 03630040 GO TO 45930 03640040 35930 IVDELE = IVDELE + 1 03650040 WRITE (I02,80003) IVTNUM 03660040 IF (ICZERO) 45930, 5941, 45930 03670040 45930 IF (IVCOMP + 2) 25930,15930,25930 03680040 15930 IVPASS = IVPASS + 1 03690040 WRITE (I02,80001) IVTNUM 03700040 GO TO 5941 03710040 25930 IVFAIL = IVFAIL + 1 03720040 IVCORR = -2 03730040 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 03740040 C 03750040 C TEST 594 THROUGH TEST 597 - NEGATIVE VALUES INCLUDED 03760040 C TRUNCATION OF RESULT REQUIRED 03770040 C 03780040 5941 CONTINUE 03790040 IVTNUM = 594 03800040 C 03810040 C **** TEST 594 **** 03820040 C 03830040 IF (ICZERO) 35940, 5940, 35940 03840040 5940 CONTINUE 03850040 IVON01 = -5 03860040 IVON02 = 2 03870040 IVCOMP = IVON01/IVON02 03880040 GO TO 45940 03890040 35940 IVDELE = IVDELE + 1 03900040 WRITE (I02,80003) IVTNUM 03910040 IF (ICZERO) 45940, 5951, 45940 03920040 45940 IF (IVCOMP + 2) 25940,15940,25940 03930040 15940 IVPASS = IVPASS + 1 03940040 WRITE (I02,80001) IVTNUM 03950040 GO TO 5951 03960040 25940 IVFAIL = IVFAIL + 1 03970040 IVCORR = -2 03980040 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 03990040 5951 CONTINUE 04000040 IVTNUM = 595 04010040 C 04020040 C **** TEST 595 **** 04030040 C 04040040 IF (ICZERO) 35950, 5950, 35950 04050040 5950 CONTINUE 04060040 IVON01 = -25603 04070040 IVON02 = -10354 04080040 IVCOMP = IVON01/IVON02 04090040 GO TO 45950 04100040 35950 IVDELE = IVDELE + 1 04110040 WRITE (I02,80003) IVTNUM 04120040 IF (ICZERO) 45950, 5961, 45950 04130040 45950 IF (IVCOMP -2) 25950,15950,25950 04140040 15950 IVPASS = IVPASS + 1 04150040 WRITE (I02,80001) IVTNUM 04160040 GO TO 5961 04170040 25950 IVFAIL = IVFAIL + 1 04180040 IVCORR =2 04190040 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 04200040 5961 CONTINUE 04210040 IVTNUM = 596 04220040 C 04230040 C **** TEST 596 **** 04240040 C 04250040 IF (ICZERO) 35960, 5960, 35960 04260040 5960 CONTINUE 04270040 IVON01 = 25603 04280040 IVON02 = 10354 04290040 IVCOMP = -IVON01/IVON02 04300040 GO TO 45960 04310040 35960 IVDELE = IVDELE + 1 04320040 WRITE (I02,80003) IVTNUM 04330040 IF (ICZERO) 45960, 5971, 45960 04340040 45960 IF (IVCOMP +2) 25960,15960,25960 04350040 15960 IVPASS = IVPASS + 1 04360040 WRITE (I02,80001) IVTNUM 04370040 GO TO 5971 04380040 25960 IVFAIL = IVFAIL + 1 04390040 IVCORR = -2 04400040 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 04410040 5971 CONTINUE 04420040 IVTNUM = 597 04430040 C 04440040 C **** TEST 597 **** 04450040 C 04460040 IF (ICZERO) 35970, 5970, 35970 04470040 5970 CONTINUE 04480040 IVON01 = 25603 04490040 IVON02 = -2 04500040 IVCOMP = -(IVON01/IVON02) 04510040 GO TO 45970 04520040 35970 IVDELE = IVDELE + 1 04530040 WRITE (I02,80003) IVTNUM 04540040 IF (ICZERO) 45970, 5981, 45970 04550040 45970 IF (IVCOMP - 12801) 25970,15970,25970 04560040 15970 IVPASS = IVPASS + 1 04570040 WRITE (I02,80001) IVTNUM 04580040 GO TO 5981 04590040 25970 IVFAIL = IVFAIL + 1 04600040 IVCORR = 12801 04610040 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 04620040 C 04630040 C TEST 598 THROUGH TEST 614 CONTAIN TWO INTEGER VARIABLES, AN 04640040 C INTEGER CONSTANT AND OPERATOR / IN AN ARITHMETIC EXPRESSION. 04650040 C 04660040 C TEST 598 THROUGH TEST 603 - NO PARENS TO GROUP ELEMENTS BUT 04670040 C THERE ARE PARENS SURROUNDING NEGATIVE CONSTANTS 04680040 C 04690040 C TEST 598 AND TEST 599 - IV = IV/IV/IC. 04700040 C 04710040 5981 CONTINUE 04720040 IVTNUM = 598 04730040 C 04740040 C **** TEST 598 **** 04750040 C 04760040 IF (ICZERO) 35980, 5980, 35980 04770040 5980 CONTINUE 04780040 IVON01 = 32766 04790040 IVON02 = 2 04800040 IVCOMP = IVON01/IVON02/3 04810040 GO TO 45980 04820040 35980 IVDELE = IVDELE + 1 04830040 WRITE (I02,80003) IVTNUM 04840040 IF (ICZERO) 45980, 5991, 45980 04850040 45980 IF (IVCOMP - 5461) 25980,15980,25980 04860040 15980 IVPASS = IVPASS + 1 04870040 WRITE (I02,80001) IVTNUM 04880040 GO TO 5991 04890040 25980 IVFAIL = IVFAIL + 1 04900040 IVCORR = 5461 04910040 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 04920040 5991 CONTINUE 04930040 IVTNUM = 599 04940040 C 04950040 C **** TEST 599 **** 04960040 C 04970040 IF (ICZERO) 35990, 5990, 35990 04980040 5990 CONTINUE 04990040 IVON01 = 7151 05000040 IVON02 = 3 05010040 IVCOMP = IVON01/IVON02/10 05020040 GO TO 45990 05030040 35990 IVDELE = IVDELE + 1 05040040 WRITE (I02,80003) IVTNUM 05050040 IF (ICZERO) 45990, 6001, 45990 05060040 45990 IF (IVCOMP -238) 25990,15990,25990 05070040 15990 IVPASS = IVPASS + 1 05080040 WRITE (I02,80001) IVTNUM 05090040 GO TO 6001 05100040 25990 IVFAIL = IVFAIL + 1 05110040 IVCORR = 238 05120040 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 05130040 C 05140040 C TEST 600 AND TEST 601 - IV= IV/IC/IV. 05150040 C 05160040 6001 CONTINUE 05170040 IVTNUM = 600 05180040 C 05190040 C **** TEST 600 **** 05200040 C 05210040 IF (ICZERO) 36000, 6000, 36000 05220040 6000 CONTINUE 05230040 IVON01 = -7150 05240040 IVON03 = -25 05250040 IVCOMP = IVON01/(-2)/IVON03 05260040 GO TO 46000 05270040 36000 IVDELE = IVDELE + 1 05280040 WRITE (I02,80003) IVTNUM 05290040 IF (ICZERO) 46000, 6011, 46000 05300040 46000 IF (IVCOMP + 143) 26000,16000,26000 05310040 16000 IVPASS = IVPASS + 1 05320040 WRITE (I02,80001) IVTNUM 05330040 GO TO 6011 05340040 26000 IVFAIL = IVFAIL + 1 05350040 IVCORR = -143 05360040 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 05370040 6011 CONTINUE 05380040 IVTNUM = 601 05390040 C 05400040 C **** TEST 601 **** 05410040 C 05420040 IF (ICZERO) 36010, 6010, 36010 05430040 6010 CONTINUE 05440040 IVON01 = 32767 05450040 IVON03 = -1 05460040 IVCOMP = IVON01/2/IVON03 05470040 GO TO 46010 05480040 36010 IVDELE = IVDELE + 1 05490040 WRITE (I02,80003) IVTNUM 05500040 IF (ICZERO) 46010, 6021, 46010 05510040 46010 IF (IVCOMP + 16383) 26010,16010,26010 05520040 16010 IVPASS = IVPASS + 1 05530040 WRITE (I02,80001) IVTNUM 05540040 GO TO 6021 05550040 26010 IVFAIL = IVFAIL + 1 05560040 IVCORR = -16383 05570040 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 05580040 6021 CONTINUE 05590040 IVTNUM = 602 05600040 C 05610040 C **** TEST 602 **** 05620040 C 05630040 C TEST 602 AND TEST 603 - IV=IC/IV/IV 05640040 C 05650040 C 05660040 IF (ICZERO) 36020, 6020, 36020 05670040 6020 CONTINUE 05680040 IVON02 = 13 05690040 IVON03 = 51 05700040 IVCOMP = 15249/IVON02/IVON03 05710040 GO TO 46020 05720040 36020 IVDELE = IVDELE + 1 05730040 WRITE (I02,80003) IVTNUM 05740040 IF (ICZERO) 46020, 6031, 46020 05750040 46020 IF (IVCOMP - 23) 26020,16020,26020 05760040 16020 IVPASS = IVPASS + 1 05770040 WRITE (I02,80001) IVTNUM 05780040 GO TO 6031 05790040 26020 IVFAIL = IVFAIL + 1 05800040 IVCORR = 23 05810040 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 05820040 6031 CONTINUE 05830040 IVTNUM = 603 05840040 C 05850040 C **** TEST 603 **** 05860040 C 05870040 IF (ICZERO) 36030, 6030, 36030 05880040 6030 CONTINUE 05890040 IVON02 = -13 05900040 IVON03 = -51 05910040 IVCOMP = -15249/IVON02/IVON03 05920040 GO TO 46030 05930040 36030 IVDELE = IVDELE + 1 05940040 WRITE (I02,80003) IVTNUM 05950040 IF (ICZERO) 46030, 6041, 46030 05960040 46030 IF (IVCOMP +23) 26030,16030,26030 05970040 16030 IVPASS = IVPASS + 1 05980040 WRITE (I02,80001) IVTNUM 05990040 GO TO 6041 06000040 26030 IVFAIL = IVFAIL + 1 06010040 IVCORR = -23 06020040 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 06030040 C 06040040 C TEST 604 THROUGH TEST 614 - PARENTHESES ARE USED TO GROUP 06050040 C ELEMENTS IN THE ARITHMETIC EXPRESSIONS. 06060040 C 06070040 C TEST 604 AND TEST 605 - IV=(IV/IV)/IC. 06080040 C 06090040 6041 CONTINUE 06100040 IVTNUM = 604 06110040 C 06120040 C **** TEST 604 **** 06130040 C 06140040 IF (ICZERO) 36040, 6040, 36040 06150040 6040 CONTINUE 06160040 IVON01 = 32766 06170040 IVON02 = 2 06180040 IVCOMP =(IVON01/IVON02)/3 06190040 GO TO 46040 06200040 36040 IVDELE = IVDELE + 1 06210040 WRITE (I02,80003) IVTNUM 06220040 IF (ICZERO) 46040, 6051, 46040 06230040 46040 IF (IVCOMP -5461) 26040,16040,26040 06240040 16040 IVPASS = IVPASS + 1 06250040 WRITE (I02,80001) IVTNUM 06260040 GO TO 6051 06270040 26040 IVFAIL = IVFAIL + 1 06280040 IVCORR = 5461 06290040 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 06300040 6051 CONTINUE 06310040 IVTNUM = 605 06320040 C 06330040 C **** TEST 605 **** 06340040 C 06350040 IF (ICZERO) 36050, 6050, 36050 06360040 6050 CONTINUE 06370040 IVON01 = 7151 06380040 IVON02 = 3 06390040 IVCOMP = (IVON01/IVON02)/10 06400040 GO TO 46050 06410040 36050 IVDELE = IVDELE + 1 06420040 WRITE (I02,80003) IVTNUM 06430040 IF (ICZERO) 46050, 6061, 46050 06440040 46050 IF (IVCOMP - 238) 26050,16050,26050 06450040 16050 IVPASS = IVPASS + 1 06460040 WRITE (I02,80001) IVTNUM 06470040 GO TO 6061 06480040 26050 IVFAIL = IVFAIL + 1 06490040 IVCORR = 238 06500040 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 06510040 C 06520040 C TEST 606 AND TEST 607 - IV=IV/(IV/IC). 06530040 C 06540040 6061 CONTINUE 06550040 IVTNUM = 606 06560040 C 06570040 C **** TEST 606 **** 06580040 C 06590040 IF (ICZERO) 36060, 6060, 36060 06600040 6060 CONTINUE 06610040 IVON01 = -7154 06620040 IVON02 = 26 06630040 IVCOMP = IVON01/(IVON02/5) 06640040 GO TO 46060 06650040 36060 IVDELE = IVDELE + 1 06660040 WRITE (I02,80003) IVTNUM 06670040 IF (ICZERO) 46060, 6071, 46060 06680040 46060 IF (IVCOMP + 1430) 26060,16060,26060 06690040 16060 IVPASS = IVPASS + 1 06700040 WRITE (I02,80001) IVTNUM 06710040 GO TO 6071 06720040 26060 IVFAIL = IVFAIL + 1 06730040 IVCORR = -1430 06740040 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 06750040 6071 CONTINUE 06760040 IVTNUM = 607 06770040 C 06780040 C **** TEST 607 **** 06790040 C 06800040 IF (ICZERO) 36070, 6070, 36070 06810040 6070 CONTINUE 06820040 IVON01 = 29 06830040 IVON02 = -5 06840040 IVCOMP = IVON01/(IVON02/2) 06850040 GO TO 46070 06860040 36070 IVDELE = IVDELE + 1 06870040 WRITE (I02,80003) IVTNUM 06880040 IF (ICZERO) 46070, 6081, 46070 06890040 46070 IF (IVCOMP + 14) 26070,16070,26070 06900040 16070 IVPASS = IVPASS + 1 06910040 WRITE (I02,80001) IVTNUM 06920040 GO TO 6081 06930040 26070 IVFAIL = IVFAIL + 1 06940040 IVCORR = -14 06950040 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 06960040 C 06970040 C TEST 608 AND TEST 609 - IV = (IV/IC)/IV. 06980040 C 06990040 6081 CONTINUE 07000040 IVTNUM = 608 07010040 C 07020040 C **** TEST 608 **** 07030040 C 07040040 IF (ICZERO) 36080, 6080, 36080 07050040 6080 CONTINUE 07060040 IVON01 = 24 07070040 IVON03 = 3 07080040 IVCOMP = (IVON01/3)/IVON03 07090040 GO TO 46080 07100040 36080 IVDELE = IVDELE + 1 07110040 WRITE (I02,80003) IVTNUM 07120040 IF (ICZERO) 46080, 6091, 46080 07130040 46080 IF (IVCOMP -2) 26080,16080,26080 07140040 16080 IVPASS = IVPASS + 1 07150040 WRITE (I02,80001) IVTNUM 07160040 GO TO 6091 07170040 26080 IVFAIL = IVFAIL + 1 07180040 IVCORR = 2 07190040 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 07200040 6091 CONTINUE 07210040 IVTNUM = 609 07220040 C 07230040 C **** TEST 609 **** 07240040 C 07250040 IF (ICZERO) 36090, 6090, 36090 07260040 6090 CONTINUE 07270040 IVON01 = 7151 07280040 IVON03 = 10 07290040 IVCOMP = (IVON01/(-3))/IVON03 07300040 GO TO 46090 07310040 36090 IVDELE = IVDELE + 1 07320040 WRITE (I02,80003) IVTNUM 07330040 IF (ICZERO) 46090, 6101, 46090 07340040 46090 IF (IVCOMP + 238) 26090,16090,26090 07350040 16090 IVPASS = IVPASS + 1 07360040 WRITE (I02,80001) IVTNUM 07370040 GO TO 6101 07380040 26090 IVFAIL = IVFAIL + 1 07390040 IVCORR = -238 07400040 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 07410040 C 07420040 C TEST 610 AND TEST 611 - IV=IV(IC/IV) 07430040 C 07440040 6101 CONTINUE 07450040 IVTNUM = 610 07460040 C 07470040 C **** TEST 610 **** 07480040 C 07490040 IF (ICZERO) 36100, 6100, 36100 07500040 6100 CONTINUE 07510040 IVON01 = -7154 07520040 IVON03 = -5 07530040 IVCOMP = IVON01/((-26)/IVON03) 07540040 GO TO 46100 07550040 36100 IVDELE = IVDELE + 1 07560040 WRITE (I02,80003) IVTNUM 07570040 IF (ICZERO) 46100, 6111, 46100 07580040 46100 IF (IVCOMP + 1430) 26100,16100,26100 07590040 16100 IVPASS = IVPASS + 1 07600040 WRITE (I02,80001) IVTNUM 07610040 GO TO 6111 07620040 26100 IVFAIL = IVFAIL + 1 07630040 IVCORR = -1430 07640040 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 07650040 6111 CONTINUE 07660040 IVTNUM = 611 07670040 C 07680040 C **** TEST 611 **** 07690040 C 07700040 IF (ICZERO) 36110, 6110, 36110 07710040 6110 CONTINUE 07720040 IVON01 = 7150 07730040 IVON03 = 5 07740040 IVCOMP = IVON01/((+25)/IVON03) 07750040 GO TO 46110 07760040 36110 IVDELE = IVDELE + 1 07770040 WRITE (I02,80003) IVTNUM 07780040 IF (ICZERO) 46110, 6121, 46110 07790040 46110 IF (IVCOMP -1430) 26110,16110,26110 07800040 16110 IVPASS = IVPASS + 1 07810040 WRITE (I02,80001) IVTNUM 07820040 GO TO 6121 07830040 26110 IVFAIL = IVFAIL + 1 07840040 IVCORR = 1430 07850040 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 07860040 6121 CONTINUE 07870040 IVTNUM = 612 07880040 C 07890040 C **** TEST 612 **** 07900040 C TEST 612 - IV= (IC/IV)/IV 07910040 C 07920040 IF (ICZERO) 36120, 6120, 36120 07930040 6120 CONTINUE 07940040 IVON02 = -3 07950040 IVON03 = -10 07960040 IVCOMP = (-7154/IVON02)/IVON03 07970040 GO TO 46120 07980040 36120 IVDELE = IVDELE + 1 07990040 WRITE (I02,80003) IVTNUM 08000040 IF (ICZERO) 46120, 6131, 46120 08010040 46120 IF (IVCOMP + 238) 26120,16120,26120 08020040 16120 IVPASS = IVPASS + 1 08030040 WRITE (I02,80001) IVTNUM 08040040 GO TO 6131 08050040 26120 IVFAIL = IVFAIL + 1 08060040 IVCORR = -238 08070040 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 08080040 C 08090040 C TEST 613 AND TEST 614 - IV=IC/(IV/IV) 08100040 C 08110040 6131 CONTINUE 08120040 IVTNUM = 613 08130040 C 08140040 C **** TEST 613 **** 08150040 C 08160040 IF (ICZERO) 36130, 6130, 36130 08170040 6130 CONTINUE 08180040 IVON02 = 8 08190040 IVON03 = 4 08200040 IVCOMP = 24/(IVON02/IVON03) 08210040 GO TO 46130 08220040 36130 IVDELE = IVDELE + 1 08230040 WRITE (I02,80003) IVTNUM 08240040 IF (ICZERO) 46130, 6141, 46130 08250040 46130 IF (IVCOMP - 12) 26130,16130,26130 08260040 16130 IVPASS = IVPASS + 1 08270040 WRITE (I02,80001) IVTNUM 08280040 GO TO 6141 08290040 26130 IVFAIL = IVFAIL + 1 08300040 IVCORR = 12 08310040 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 08320040 6141 CONTINUE 08330040 IVTNUM = 614 08340040 C 08350040 C **** TEST 614 **** 08360040 C 08370040 IF (ICZERO) 36140, 6140, 36140 08380040 6140 CONTINUE 08390040 IVON02 = 25 08400040 IVON03 = 5 08410040 IVCOMP = 7150/(-(IVON02/IVON03)) 08420040 GO TO 46140 08430040 36140 IVDELE = IVDELE + 1 08440040 WRITE (I02,80003) IVTNUM 08450040 IF (ICZERO) 46140, 6151, 46140 08460040 46140 IF (IVCOMP + 1430) 26140,16140,26140 08470040 16140 IVPASS = IVPASS + 1 08480040 WRITE (I02,80001) IVTNUM 08490040 GO TO 6151 08500040 26140 IVFAIL = IVFAIL + 1 08510040 IVCORR = -1430 08520040 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 08530040 C **** END OF TESTS **** 08540040 6151 CONTINUE 08550040 C 08560040 C WRITE PAGE FOOTINGS AND RUN SUMMARIES 08570040 99999 CONTINUE 08580040 WRITE (I02,90002) 08590040 WRITE (I02,90006) 08600040 WRITE (I02,90002) 08610040 WRITE (I02,90002) 08620040 WRITE (I02,90007) 08630040 WRITE (I02,90002) 08640040 WRITE (I02,90008) IVFAIL 08650040 WRITE (I02,90009) IVPASS 08660040 WRITE (I02,90010) IVDELE 08670040 C 08680040 C 08690040 C TERMINATE ROUTINE EXECUTION 08700040 STOP 08710040 C 08720040 C FORMAT STATEMENTS FOR PAGE HEADERS 08730040 90000 FORMAT ("1") 08740040 90002 FORMAT (" ") 08750040 90001 FORMAT (" ",10X,"FORTRAN COMPILER VALIDATION SYSTEM" ) 08760040 90003 FORMAT (" ",21X,"VERSION 2.1" ) 08770040 90004 FORMAT (" ",10X,"FOR OFFICIAL USE ONLY - COPYRIGHT 1978" ) 08780040 90005 FORMAT (" ",5X,"TEST",5X,"PASS/FAIL", 5X,"COMPUTED",8X,"CORRECT") 08790040 90006 FORMAT (" ",5X,"----------------------------------------------" ) 08800040 90011 FORMAT (" ",18X,"SUBSET LEVEL TEST" ) 08810040 C 08820040 C FORMAT STATEMENTS FOR RUN SUMMARIES 08830040 90008 FORMAT (" ",15X,I5," ERRORS ENCOUNTERED" ) 08840040 90009 FORMAT (" ",15X,I5," TESTS PASSED" ) 08850040 90010 FORMAT (" ",15X,I5," TESTS DELETED" ) 08860040 C 08870040 C FORMAT STATEMENTS FOR TEST RESULTS 08880040 80001 FORMAT (" ",4X,I5,7X,"PASS") 08890040 80002 FORMAT (" ",4X,I5,7X,"FAIL") 08900040 80003 FORMAT (" ",4X,I5,7X,"DELETED") 08910040 80004 FORMAT (" ",4X,I5,7X,"FAIL",10X,I6,9X,I6) 08920040 80005 FORMAT (" ",4X,I5,7X,"FAIL",4X,E12.5,3X,E12.5) 08930040 C 08940040 90007 FORMAT (" ",20X,"END OF PROGRAM FM040" ) 08950040 END 08960040