C COMMENT SECTION C C FM037 C C THIS ROUTINE TESTS ARITHMETIC ASSIGNMENT STATEMENTS OF THE C FORM C INTEGER VARIABLE = ARITHMETIC EXPRESSION C WHERE THE ARITHMETIC EXPRESSION IS FORMED WITH THREE INTEGER C CONSTANTS AND THE ARITHMETIC OPERATOR /. BOTH POSITIVE AND NEGA- C TIVE CONSTANTS ARE USED IN THE ARITHMETIC EXPRESSION. C C THERE ARE TESTS WHICH REQUIRE NO TRUNCATION OF THE RESULT C AND TESTS WHERE THE RESULT MUST BE TRUNCATED BEFORE BEING STORED C IN THE RESULTANT INTEGER VARIABLE. THE STANDARD STATES 'THE VALUE C OF AN INTEGER FACTOR OR TERM IS THE NEAREST INTEGER WHOSE MAGNI- C TUDE DOES NOT EXCEED THE MAGNITUDE OF THE MATHEMATICAL VALUE C REPRESENTED BY THAT FACTOR OR TERM. THE ASSOCIATIVE AND COMMUTA- C TIVE LAWS DO NOT APPLY IN THE EVALUATION OF INTEGER TERMS CON- C TAINING DIVISION, HENCE THE EVALUATION OF SUCH TERMS MUST EFFEC- C TIVELY PROCEED FROM LEFT TO RIGHT.' C C THERE ARE TESTS WHERE THE ARITHMETIC EXPRESSION CONTAINS C (1) INTEGER CONSTANT/INTEGER CONSTANT/INTEGER CONSTANT C NO TRUNCATION REQUIRED C (2) INTEGER CONSTANT/INTEGER CONSTANT/INTEGER CONSTANT C TRUNCATION REQUIRED C C REFERENCES C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, C X3.9-1978 C C SECTION 4.3, INTEGER TYPE C SECTION 4.3.1, INTEGER CONSTANT C SECTION 6.1, ARITHMETIC EXPRESSIONS C SECTION 6.6, EVALUATION OF EXPRESSIONS C SECTION 10.1, ARITHMETIC ASSIGNMENT STATEMENT C C ********************************************************** C C A COMPILER VALIDATION SYSTEM FOR THE FORTRAN LANGUAGE C BASED ON SPECIFICATIONS AS DEFINED IN AMERICAN NATIONAL STANDARD C PROGRAMMING LANGUAGE FORTRAN X3.9-1978, HAS BEEN DEVELOPED BY THE C FEDERAL COBOL COMPILER TESTING SERVICE. THE FORTRAN COMPILER C VALIDATION SYSTEM (FCVS) CONSISTS OF AUDIT ROUTINES, THEIR RELATED C DATA, AND AN EXECUTIVE SYSTEM. EACH AUDIT ROUTINE IS A FORTRAN C PROGRAM, SUBPROGRAM OR FUNCTION WHICH INCLUDES TESTS OF SPECIFIC C LANGUAGE ELEMENTS AND SUPPORTING PROCEDURES INDICATING THE RESULT C OF EXECUTING THESE TESTS. C C THIS PARTICULAR PROGRAM/SUBPROGRAM/FUNCTION CONTAINS FEATURES C FOUND ONLY IN THE SUBSET AS DEFINED IN X3.9-1978. C C SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO - C C DEPARTMENT OF THE NAVY C FEDERAL COBOL COMPILER TESTING SERVICE C WASHINGTON, D.C. 20376 C C ********************************************************** C C C C INITIALIZATION SECTION C C INITIALIZE CONSTANTS C ************** C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. I01 = 5 C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. I02 = 6 C SYSTEM ENVIRONMENT SECTION C CX010 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-010 CONTROL CARD. C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 C (UNIT NUMBER FOR CARD READER). CX011 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-011 CONTROL CARD. C THE CX011 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL C FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX010 ABOVE. C CX020 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-020 CONTROL CARD. C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02 = 6 C (UNIT NUMBER FOR PRINTER). CX021 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-021 CONTROL CARD. C THE CX021 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL C FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX020 ABOVE. C IVPASS=0 IVFAIL=0 IVDELE=0 ICZERO=0 C C WRITE PAGE HEADERS WRITE (I02,90000) WRITE (I02,90001) WRITE (I02,90002) WRITE (I02, 90002) WRITE (I02,90003) WRITE (I02,90002) WRITE (I02,90004) WRITE (I02,90002) WRITE (I02,90011) WRITE (I02,90002) WRITE (I02,90002) WRITE (I02,90005) WRITE (I02,90006) WRITE (I02,90002) C C TEST SECTION C C ARITHMETIC ASSIGNMENT STATEMENT C C TEST 491 THROUGH TEST 519 CONTAIN THREE INTEGER CONSTANTS AND C OPERATOR / IN AN ARITHMETIC EXPRESSION. THE FORM TESTED IS C INTEGER VARIABLE = INTEGER CONSTANT/INTEGER CONSTANT/INT.CON. C C C TEST 491 THROUGH TEST 496 - POSITIVE INTEGER CONSTANTS C NO TRUNCATION REQUIRED C 4911 CONTINUE IVTNUM = 491 C C **** TEST 491 **** C IF (ICZERO) 34910, 4910, 34910 4910 CONTINUE IVCOMP = 24/3/4 GO TO 44910 34910 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 44910, 4921, 44910 44910 IF (IVCOMP - 2) 24910,14910,24910 14910 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 4921 24910 IVFAIL = IVFAIL + 1 IVCORR = 2 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 4921 CONTINUE IVTNUM = 492 C C **** TEST 492 **** C IF (ICZERO) 34920, 4920, 34920 4920 CONTINUE IVCOMP = 330/3/2 GO TO 44920 34920 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 44920, 4931, 44920 44920 IF (IVCOMP - 55) 24920,14920,24920 14920 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 4931 24920 IVFAIL = IVFAIL + 1 IVCORR = 55 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 4931 CONTINUE IVTNUM = 493 C C **** TEST 493 **** C IF (ICZERO) 34930, 4930, 34930 4930 CONTINUE IVCOMP = 15249/13/51 GO TO 44930 34930 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 44930, 4941, 44930 44930 IF (IVCOMP - 23) 24930,14930,24930 14930 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 4941 24930 IVFAIL = IVFAIL + 1 IVCORR = 23 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 4941 CONTINUE IVTNUM = 494 C C **** TEST 494 **** C IF (ICZERO) 34940, 4940, 34940 4940 CONTINUE IVCOMP = 7150/2/25 GO TO 44940 34940 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 44940, 4951, 44940 44940 IF (IVCOMP - 143) 24940,14940,24940 14940 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 4951 24940 IVFAIL = IVFAIL + 1 IVCORR = 143 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 4951 CONTINUE IVTNUM = 495 C C **** TEST 495 **** C IF (ICZERO) 34950, 4950, 34950 4950 CONTINUE IVCOMP = 32766/2/3 GO TO 44950 34950 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 44950, 4961, 44950 44950 IF (IVCOMP - 5461) 24950,14950,24950 14950 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 4961 24950 IVFAIL = IVFAIL + 1 IVCORR = 5461 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 4961 CONTINUE IVTNUM = 496 C C **** TEST 496 **** C IF (ICZERO) 34960, 4960, 34960 4960 CONTINUE IVCOMP = 32766/1/1 GO TO 44960 34960 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 44960, 4971, 44960 44960 IF (IVCOMP - 32766) 24960,14960,24960 14960 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 4971 24960 IVFAIL = IVFAIL + 1 IVCORR = 32766 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR C C TEST 497 THROUGH TEST 502 - POSITIVE INTEGER CONSTANTS C TRUNCATION REQUIRED C 4971 CONTINUE IVTNUM = 497 C C **** TEST 497 **** C IF (ICZERO) 34970, 4970, 34970 4970 CONTINUE IVCOMP = 24/3/3 GO TO 44970 34970 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 44970, 4981, 44970 44970 IF (IVCOMP -2) 24970,14970,24970 14970 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 4981 24970 IVFAIL = IVFAIL + 1 IVCORR = 2 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 4981 CONTINUE IVTNUM = 498 C C **** TEST 498 **** C IF (ICZERO) 34980, 4980, 34980 4980 CONTINUE IVCOMP = 230/2/3 GO TO 44980 34980 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 44980, 4991, 44980 44980 IF (IVCOMP - 38) 24980,14980,24980 14980 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 4991 24980 IVFAIL = IVFAIL + 1 IVCORR = 38 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 4991 CONTINUE IVTNUM = 499 C C **** TEST 499 **** C IF (ICZERO) 34990, 4990, 34990 4990 CONTINUE IVCOMP = 7151/3/10 GO TO 44990 34990 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 44990, 5001, 44990 44990 IF (IVCOMP - 238) 24990,14990,24990 14990 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5001 24990 IVFAIL = IVFAIL + 1 IVCORR = 238 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5001 CONTINUE IVTNUM = 500 C C **** TEST 500 **** C IF (ICZERO) 35000, 5000, 35000 5000 CONTINUE IVCOMP = 15248/51/13 GO TO 45000 35000 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45000, 5011, 45000 45000 IF (IVCOMP - 22) 25000,15000,25000 15000 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5011 25000 IVFAIL = IVFAIL + 1 IVCORR = 22 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5011 CONTINUE IVTNUM = 501 C C **** TEST 501 **** C IF (ICZERO) 35010, 5010, 35010 5010 CONTINUE IVCOMP = 27342/4/3 GO TO 45010 35010 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45010, 5021, 45010 45010 IF (IVCOMP - 2278) 25010,15010,25010 15010 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5021 25010 IVFAIL = IVFAIL + 1 IVCORR = 2278 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5021 CONTINUE IVTNUM = 502 C C **** TEST 502 **** C IF (ICZERO) 35020, 5020, 35020 5020 CONTINUE IVCOMP = 32767/2/1 GO TO 45020 35020 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45020, 5031, 45020 45020 IF (IVCOMP - 16383) 25020,15020,25020 15020 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5031 25020 IVFAIL = IVFAIL + 1 IVCORR = 16383 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR C C TEST 503 THROUGH TEST 507 - NEGATIVE INTEGER CONSTANTS INCLUDED C NO TRUNCATION REQUIRED C 5031 CONTINUE IVTNUM = 503 C C **** TEST 503 **** C IF (ICZERO) 35030, 5030, 35030 5030 CONTINUE IVCOMP = -24/3/4 GO TO 45030 35030 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45030, 5041, 45030 45030 IF (IVCOMP +2) 25030,15030,25030 15030 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5041 25030 IVFAIL = IVFAIL + 1 IVCORR = -2 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5041 CONTINUE IVTNUM = 504 C C **** TEST 504 **** C IF (ICZERO) 35040, 5040, 35040 5040 CONTINUE IVCOMP = 330/(-3)/2 GO TO 45040 35040 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45040, 5051, 45040 45040 IF (IVCOMP + 55) 25040,15040,25040 15040 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5051 25040 IVFAIL = IVFAIL + 1 IVCORR = -55 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5051 CONTINUE IVTNUM = 505 C C **** TEST 505 **** C IF (ICZERO) 35050, 5050, 35050 5050 CONTINUE IVCOMP = 15249/(-13)/(-51) GO TO 45050 35050 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45050, 5061, 45050 45050 IF (IVCOMP - 23) 25050,15050,25050 15050 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5061 25050 IVFAIL = IVFAIL + 1 IVCORR = 23 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5061 CONTINUE IVTNUM = 506 C C **** TEST 506 **** C IF (ICZERO) 35060, 5060, 35060 5060 CONTINUE IVCOMP = -7150/(-2)/(-25) GO TO 45060 35060 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45060, 5071, 45060 45060 IF (IVCOMP + 143) 25060,15060,25060 15060 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5071 25060 IVFAIL = IVFAIL + 1 IVCORR = -143 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5071 CONTINUE IVTNUM = 507 C C **** TEST 507 **** C IF (ICZERO) 35070, 5070, 35070 5070 CONTINUE IVCOMP = (-32766)/(-2)/(-3) GO TO 45070 35070 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45070, 5081, 45070 45070 IF (IVCOMP + 5461) 25070,15070,25070 15070 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5081 25070 IVFAIL = IVFAIL + 1 IVCORR = -5461 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR C C TEST 508 THROUGH TEST 513 - NEGATIVE INTEGER CONSTANTS INCLUDED C TRUNCATION REQUIRED C 5081 CONTINUE IVTNUM = 508 C C **** TEST 508 **** C IF (ICZERO) 35080, 5080, 35080 5080 CONTINUE IVCOMP = -24/3/3 GO TO 45080 35080 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45080, 5091, 45080 45080 IF (IVCOMP + 2) 25080,15080,25080 15080 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5091 25080 IVFAIL = IVFAIL + 1 IVCORR = -2 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5091 CONTINUE IVTNUM = 509 C C **** TEST 509 **** C IF (ICZERO) 35090, 5090, 35090 5090 CONTINUE IVCOMP = 230/(-2)/3 GO TO 45090 35090 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45090, 5101, 45090 45090 IF (IVCOMP + 38) 25090,15090,25090 15090 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5101 25090 IVFAIL = IVFAIL + 1 IVCORR = -38 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5101 CONTINUE IVTNUM = 510 C C **** TEST 510 **** C IF (ICZERO) 35100, 5100, 35100 5100 CONTINUE IVCOMP = 7151/(-3)/(-10) GO TO 45100 35100 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45100, 5111, 45100 45100 IF (IVCOMP - 238) 25100,15100,25100 15100 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5111 25100 IVFAIL = IVFAIL + 1 IVCORR = 238 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5111 CONTINUE IVTNUM = 511 C C **** TEST 511 **** C IF (ICZERO) 35110, 5110, 35110 5110 CONTINUE IVCOMP = -15248/(-51)/(-13) GO TO 45110 35110 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45110, 5121, 45110 45110 IF (IVCOMP + 22) 25110,15110,25110 15110 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5121 25110 IVFAIL = IVFAIL + 1 IVCORR = -22 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5121 CONTINUE IVTNUM = 512 C C **** TEST 512 **** C IF (ICZERO) 35120, 5120, 35120 5120 CONTINUE IVCOMP = (-27342)/(-4)/(-3) GO TO 45120 35120 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45120, 5131, 45120 45120 IF (IVCOMP + 2278) 25120,15120,25120 15120 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5131 25120 IVFAIL = IVFAIL + 1 IVCORR = -2278 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5131 CONTINUE IVTNUM = 513 C C **** TEST 513 **** C IF (ICZERO) 35130, 5130, 35130 5130 CONTINUE IVCOMP = 32767/2/(-1) GO TO 45130 35130 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45130, 5141, 45130 45130 IF (IVCOMP + 16383) 25130,15130,25130 15130 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5141 25130 IVFAIL = IVFAIL + 1 IVCORR = -16383 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR C C TEST 514 THROUGH TEST 519 - POSITIVE AND NEGATIVE SIGNED INTEGER C CONSTANTS IN ARITHMETIC EXPRESSION. C 5141 CONTINUE IVTNUM = 514 C C **** TEST 514 **** C IF (ICZERO) 35140, 5140, 35140 5140 CONTINUE IVCOMP = +24/(-3)/4 GO TO 45140 35140 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45140, 5151, 45140 45140 IF (IVCOMP +2) 25140,15140,25140 15140 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5151 25140 IVFAIL = IVFAIL + 1 IVCORR = -2 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5151 CONTINUE IVTNUM = 515 C C **** TEST 515 **** C IF (ICZERO) 35150, 5150, 35150 5150 CONTINUE IVCOMP = 24/(+3)/(-4) GO TO 45150 35150 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45150, 5161, 45150 45150 IF (IVCOMP +2) 25150,15150,25150 15150 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5161 25150 IVFAIL = IVFAIL + 1 IVCORR = -2 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5161 CONTINUE IVTNUM = 516 C C **** TEST 516 **** C IF (ICZERO) 35160, 5160, 35160 5160 CONTINUE IVCOMP = -24/(-3)/(+4) GO TO 45160 35160 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45160, 5171, 45160 45160 IF (IVCOMP -2) 25160,15160,25160 15160 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5171 25160 IVFAIL = IVFAIL + 1 IVCORR = 2 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5171 CONTINUE IVTNUM = 517 C C **** TEST 517 **** C IF (ICZERO) 35170, 5170, 35170 5170 CONTINUE IVCOMP = -16811/(-16812)/(+1) GO TO 45170 35170 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45170, 5181, 45170 45170 IF (IVCOMP - 0) 25170,15170,25170 15170 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5181 25170 IVFAIL = IVFAIL + 1 IVCORR = 0 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5181 CONTINUE IVTNUM = 518 C C **** TEST 518 **** C IF (ICZERO) 35180, 5180, 35180 5180 CONTINUE IVCOMP = (-16811) / (+16811) / (+1) GO TO 45180 35180 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45180, 5191, 45180 45180 IF (IVCOMP +1) 25180,15180,25180 15180 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5191 25180 IVFAIL = IVFAIL + 1 IVCORR = -1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5191 CONTINUE IVTNUM = 519 C C **** TEST 519 **** C IF (ICZERO) 35190, 5190, 35190 5190 CONTINUE IVCOMP = (-335)/(+168)/(+1) GO TO 45190 35190 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45190, 5201, 45190 45190 IF (IVCOMP + 1) 25190,15190,25190 15190 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5201 25190 IVFAIL = IVFAIL + 1 IVCORR = -1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR C **** END OF TESTS **** 5201 CONTINUE C C WRITE PAGE FOOTINGS AND RUN SUMMARIES 99999 CONTINUE WRITE (I02,90002) WRITE (I02,90006) WRITE (I02,90002) WRITE (I02,90002) WRITE (I02,90007) WRITE (I02,90002) WRITE (I02,90008) IVFAIL WRITE (I02,90009) IVPASS WRITE (I02,90010) IVDELE C C C TERMINATE ROUTINE EXECUTION STOP C C FORMAT STATEMENTS FOR PAGE HEADERS 90000 FORMAT (1H1) 90002 FORMAT (1H ) 90001 FORMAT (1H ,10X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90003 FORMAT (1H ,21X,11HVERSION 1.0) 90004 FORMAT (1H ,10X,38HFOR OFFICIAL USE ONLY - COPYRIGHT 1978) 90005 FORMAT (1H ,5X,4HTEST,5X,9HPASS/FAIL, 5X,8HCOMPUTED,8X,7HCORRECT) 90006 FORMAT (1H ,5X,46H----------------------------------------------) 90011 FORMAT (1H ,18X,17HSUBSET LEVEL TEST) C C FORMAT STATEMENTS FOR RUN SUMMARIES 90008 FORMAT (1H ,15X,I5,19H ERRORS ENCOUNTERED) 90009 FORMAT (1H ,15X,I5,13H TESTS PASSED) 90010 FORMAT (1H ,15X,I5,14H TESTS DELETED) C C FORMAT STATEMENTS FOR TEST RESULTS 80001 FORMAT (1H ,4X,I5,7X,4HPASS) 80002 FORMAT (1H ,4X,I5,7X,4HFAIL) 80003 FORMAT (1H ,4X,I5,7X,7HDELETED) 80004 FORMAT (1H ,4X,I5,7X,4HFAIL,10X,I6,9X,I6) 80005 FORMAT (1H ,4X,I5,7X,4HFAIL,4X,E12.5,3X,E12.5) C 90007 FORMAT (1H ,20X,20HEND OF PROGRAM FM037) END