blob: 00a487c216095c7c1ce70d90de125189c152aef3 [file] [log] [blame]
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