| PROGRAM FM037 |
| |
| C COMMENT SECTION 00010037 |
| C 00020037 |
| C FM037 00030037 |
| C 00040037 |
| C THIS ROUTINE TESTS ARITHMETIC ASSIGNMENT STATEMENTS OF THE 00050037 |
| C FORM 00060037 |
| C INTEGER VARIABLE = ARITHMETIC EXPRESSION 00070037 |
| C WHERE THE ARITHMETIC EXPRESSION IS FORMED WITH THREE INTEGER 00080037 |
| C CONSTANTS AND THE ARITHMETIC OPERATOR /. BOTH POSITIVE AND NEGA- 00090037 |
| C TIVE CONSTANTS ARE USED IN THE ARITHMETIC EXPRESSION. 00100037 |
| C 00110037 |
| C THERE ARE TESTS WHICH REQUIRE NO TRUNCATION OF THE RESULT 00120037 |
| C AND TESTS WHERE THE RESULT MUST BE TRUNCATED BEFORE BEING STORED 00130037 |
| C IN THE RESULTANT INTEGER VARIABLE. THE STANDARD STATES 'THE VALUE00140037 |
| C OF AN INTEGER FACTOR OR TERM IS THE NEAREST INTEGER WHOSE MAGNI- 00150037 |
| C TUDE DOES NOT EXCEED THE MAGNITUDE OF THE MATHEMATICAL VALUE 00160037 |
| C REPRESENTED BY THAT FACTOR OR TERM. THE ASSOCIATIVE AND COMMUTA- 00170037 |
| C TIVE LAWS DO NOT APPLY IN THE EVALUATION OF INTEGER TERMS CON- 00180037 |
| C TAINING DIVISION, HENCE THE EVALUATION OF SUCH TERMS MUST EFFEC- 00190037 |
| C TIVELY PROCEED FROM LEFT TO RIGHT.' 00200037 |
| C 00210037 |
| C THERE ARE TESTS WHERE THE ARITHMETIC EXPRESSION CONTAINS 00220037 |
| C (1) INTEGER CONSTANT/INTEGER CONSTANT/INTEGER CONSTANT 00230037 |
| C NO TRUNCATION REQUIRED 00240037 |
| C (2) INTEGER CONSTANT/INTEGER CONSTANT/INTEGER CONSTANT 00250037 |
| C TRUNCATION REQUIRED 00260037 |
| C 00270037 |
| C REFERENCES 00280037 |
| C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, 00290037 |
| C X3.9-1978 00300037 |
| C 00310037 |
| C SECTION 4.3, INTEGER TYPE 00320037 |
| C SECTION 4.3.1, INTEGER CONSTANT 00330037 |
| C SECTION 6.1, ARITHMETIC EXPRESSIONS 00340037 |
| C SECTION 6.6, EVALUATION OF EXPRESSIONS 00350037 |
| C SECTION 10.1, ARITHMETIC ASSIGNMENT STATEMENT 00360037 |
| C 00370037 |
| C ********************************************************** 00380037 |
| C 00390037 |
| C A COMPILER VALIDATION SYSTEM FOR THE FORTRAN LANGUAGE 00400037 |
| C BASED ON SPECIFICATIONS AS DEFINED IN AMERICAN NATIONAL STANDARD 00410037 |
| C PROGRAMMING LANGUAGE FORTRAN X3.9-1978, HAS BEEN DEVELOPED BY THE 00420037 |
| C FEDERAL COBOL COMPILER TESTING SERVICE. THE FORTRAN COMPILER 00430037 |
| C VALIDATION SYSTEM (FCVS) CONSISTS OF AUDIT ROUTINES, THEIR RELATED00440037 |
| C DATA, AND AN EXECUTIVE SYSTEM. EACH AUDIT ROUTINE IS A FORTRAN 00450037 |
| C PROGRAM, SUBPROGRAM OR FUNCTION WHICH INCLUDES TESTS OF SPECIFIC 00460037 |
| C LANGUAGE ELEMENTS AND SUPPORTING PROCEDURES INDICATING THE RESULT 00470037 |
| C OF EXECUTING THESE TESTS. 00480037 |
| C 00490037 |
| C THIS PARTICULAR PROGRAM/SUBPROGRAM/FUNCTION CONTAINS FEATURES 00500037 |
| C FOUND ONLY IN THE SUBSET AS DEFINED IN X3.9-1978. 00510037 |
| C 00520037 |
| C SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO - 00530037 |
| C 00540037 |
| C NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY 00550037 |
| C SOFTWARE STANDARDS VALIDATION GROUP 00560037 |
| C BUILDING 225 RM A266 00570037 |
| C GAITHERSBURG, MD 20899 00580037 |
| C ********************************************************** 00590037 |
| C 00600037 |
| C 00610037 |
| C 00620037 |
| C INITIALIZATION SECTION 00630037 |
| C 00640037 |
| C INITIALIZE CONSTANTS 00650037 |
| C ************** 00660037 |
| C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. 00670037 |
| I01 = 5 00680037 |
| C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. 00690037 |
| I02 = 6 00700037 |
| C SYSTEM ENVIRONMENT SECTION 00710037 |
| C 00720037 |
| CX010 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-010 CONTROL CARD. 00730037 |
| C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 00740037 |
| C (UNIT NUMBER FOR CARD READER). 00750037 |
| CX011 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-011 CONTROL CARD. 00760037 |
| C THE CX011 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL 00770037 |
| C FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX010 ABOVE. 00780037 |
| C 00790037 |
| CX020 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-020 CONTROL CARD. 00800037 |
| C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02 = 6 00810037 |
| C (UNIT NUMBER FOR PRINTER). 00820037 |
| CX021 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-021 CONTROL CARD. 00830037 |
| C THE CX021 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL 00840037 |
| C FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX020 ABOVE. 00850037 |
| C 00860037 |
| IVPASS=0 00870037 |
| IVFAIL=0 00880037 |
| IVDELE=0 00890037 |
| ICZERO=0 00900037 |
| C 00910037 |
| C WRITE PAGE HEADERS 00920037 |
| WRITE (I02,90000) 00930037 |
| WRITE (I02,90001) 00940037 |
| WRITE (I02,90002) 00950037 |
| WRITE (I02, 90002) 00960037 |
| WRITE (I02,90003) 00970037 |
| WRITE (I02,90002) 00980037 |
| WRITE (I02,90004) 00990037 |
| WRITE (I02,90002) 01000037 |
| WRITE (I02,90011) 01010037 |
| WRITE (I02,90002) 01020037 |
| WRITE (I02,90002) 01030037 |
| WRITE (I02,90005) 01040037 |
| WRITE (I02,90006) 01050037 |
| WRITE (I02,90002) 01060037 |
| C 01070037 |
| C TEST SECTION 01080037 |
| C 01090037 |
| C ARITHMETIC ASSIGNMENT STATEMENT 01100037 |
| C 01110037 |
| C TEST 491 THROUGH TEST 519 CONTAIN THREE INTEGER CONSTANTS AND 01120037 |
| C OPERATOR / IN AN ARITHMETIC EXPRESSION. THE FORM TESTED IS 01130037 |
| C INTEGER VARIABLE = INTEGER CONSTANT/INTEGER CONSTANT/INT.CON. 01140037 |
| C 01150037 |
| C 01160037 |
| C TEST 491 THROUGH TEST 496 - POSITIVE INTEGER CONSTANTS 01170037 |
| C NO TRUNCATION REQUIRED 01180037 |
| C 01190037 |
| 4911 CONTINUE 01200037 |
| IVTNUM = 491 01210037 |
| C 01220037 |
| C **** TEST 491 **** 01230037 |
| C 01240037 |
| IF (ICZERO) 34910, 4910, 34910 01250037 |
| 4910 CONTINUE 01260037 |
| IVCOMP = 24/3/4 01270037 |
| GO TO 44910 01280037 |
| 34910 IVDELE = IVDELE + 1 01290037 |
| WRITE (I02,80003) IVTNUM 01300037 |
| IF (ICZERO) 44910, 4921, 44910 01310037 |
| 44910 IF (IVCOMP - 2) 24910,14910,24910 01320037 |
| 14910 IVPASS = IVPASS + 1 01330037 |
| WRITE (I02,80001) IVTNUM 01340037 |
| GO TO 4921 01350037 |
| 24910 IVFAIL = IVFAIL + 1 01360037 |
| IVCORR = 2 01370037 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 01380037 |
| 4921 CONTINUE 01390037 |
| IVTNUM = 492 01400037 |
| C 01410037 |
| C **** TEST 492 **** 01420037 |
| C 01430037 |
| IF (ICZERO) 34920, 4920, 34920 01440037 |
| 4920 CONTINUE 01450037 |
| IVCOMP = 330/3/2 01460037 |
| GO TO 44920 01470037 |
| 34920 IVDELE = IVDELE + 1 01480037 |
| WRITE (I02,80003) IVTNUM 01490037 |
| IF (ICZERO) 44920, 4931, 44920 01500037 |
| 44920 IF (IVCOMP - 55) 24920,14920,24920 01510037 |
| 14920 IVPASS = IVPASS + 1 01520037 |
| WRITE (I02,80001) IVTNUM 01530037 |
| GO TO 4931 01540037 |
| 24920 IVFAIL = IVFAIL + 1 01550037 |
| IVCORR = 55 01560037 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 01570037 |
| 4931 CONTINUE 01580037 |
| IVTNUM = 493 01590037 |
| C 01600037 |
| C **** TEST 493 **** 01610037 |
| C 01620037 |
| IF (ICZERO) 34930, 4930, 34930 01630037 |
| 4930 CONTINUE 01640037 |
| IVCOMP = 15249/13/51 01650037 |
| GO TO 44930 01660037 |
| 34930 IVDELE = IVDELE + 1 01670037 |
| WRITE (I02,80003) IVTNUM 01680037 |
| IF (ICZERO) 44930, 4941, 44930 01690037 |
| 44930 IF (IVCOMP - 23) 24930,14930,24930 01700037 |
| 14930 IVPASS = IVPASS + 1 01710037 |
| WRITE (I02,80001) IVTNUM 01720037 |
| GO TO 4941 01730037 |
| 24930 IVFAIL = IVFAIL + 1 01740037 |
| IVCORR = 23 01750037 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 01760037 |
| 4941 CONTINUE 01770037 |
| IVTNUM = 494 01780037 |
| C 01790037 |
| C **** TEST 494 **** 01800037 |
| C 01810037 |
| IF (ICZERO) 34940, 4940, 34940 01820037 |
| 4940 CONTINUE 01830037 |
| IVCOMP = 7150/2/25 01840037 |
| GO TO 44940 01850037 |
| 34940 IVDELE = IVDELE + 1 01860037 |
| WRITE (I02,80003) IVTNUM 01870037 |
| IF (ICZERO) 44940, 4951, 44940 01880037 |
| 44940 IF (IVCOMP - 143) 24940,14940,24940 01890037 |
| 14940 IVPASS = IVPASS + 1 01900037 |
| WRITE (I02,80001) IVTNUM 01910037 |
| GO TO 4951 01920037 |
| 24940 IVFAIL = IVFAIL + 1 01930037 |
| IVCORR = 143 01940037 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 01950037 |
| 4951 CONTINUE 01960037 |
| IVTNUM = 495 01970037 |
| C 01980037 |
| C **** TEST 495 **** 01990037 |
| C 02000037 |
| IF (ICZERO) 34950, 4950, 34950 02010037 |
| 4950 CONTINUE 02020037 |
| IVCOMP = 32766/2/3 02030037 |
| GO TO 44950 02040037 |
| 34950 IVDELE = IVDELE + 1 02050037 |
| WRITE (I02,80003) IVTNUM 02060037 |
| IF (ICZERO) 44950, 4961, 44950 02070037 |
| 44950 IF (IVCOMP - 5461) 24950,14950,24950 02080037 |
| 14950 IVPASS = IVPASS + 1 02090037 |
| WRITE (I02,80001) IVTNUM 02100037 |
| GO TO 4961 02110037 |
| 24950 IVFAIL = IVFAIL + 1 02120037 |
| IVCORR = 5461 02130037 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 02140037 |
| 4961 CONTINUE 02150037 |
| IVTNUM = 496 02160037 |
| C 02170037 |
| C **** TEST 496 **** 02180037 |
| C 02190037 |
| IF (ICZERO) 34960, 4960, 34960 02200037 |
| 4960 CONTINUE 02210037 |
| IVCOMP = 32766/1/1 02220037 |
| GO TO 44960 02230037 |
| 34960 IVDELE = IVDELE + 1 02240037 |
| WRITE (I02,80003) IVTNUM 02250037 |
| IF (ICZERO) 44960, 4971, 44960 02260037 |
| 44960 IF (IVCOMP - 32766) 24960,14960,24960 02270037 |
| 14960 IVPASS = IVPASS + 1 02280037 |
| WRITE (I02,80001) IVTNUM 02290037 |
| GO TO 4971 02300037 |
| 24960 IVFAIL = IVFAIL + 1 02310037 |
| IVCORR = 32766 02320037 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 02330037 |
| C 02340037 |
| C TEST 497 THROUGH TEST 502 - POSITIVE INTEGER CONSTANTS 02350037 |
| C TRUNCATION REQUIRED 02360037 |
| C 02370037 |
| 4971 CONTINUE 02380037 |
| IVTNUM = 497 02390037 |
| C 02400037 |
| C **** TEST 497 **** 02410037 |
| C 02420037 |
| IF (ICZERO) 34970, 4970, 34970 02430037 |
| 4970 CONTINUE 02440037 |
| IVCOMP = 24/3/3 02450037 |
| GO TO 44970 02460037 |
| 34970 IVDELE = IVDELE + 1 02470037 |
| WRITE (I02,80003) IVTNUM 02480037 |
| IF (ICZERO) 44970, 4981, 44970 02490037 |
| 44970 IF (IVCOMP -2) 24970,14970,24970 02500037 |
| 14970 IVPASS = IVPASS + 1 02510037 |
| WRITE (I02,80001) IVTNUM 02520037 |
| GO TO 4981 02530037 |
| 24970 IVFAIL = IVFAIL + 1 02540037 |
| IVCORR = 2 02550037 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 02560037 |
| 4981 CONTINUE 02570037 |
| IVTNUM = 498 02580037 |
| C 02590037 |
| C **** TEST 498 **** 02600037 |
| C 02610037 |
| IF (ICZERO) 34980, 4980, 34980 02620037 |
| 4980 CONTINUE 02630037 |
| IVCOMP = 230/2/3 02640037 |
| GO TO 44980 02650037 |
| 34980 IVDELE = IVDELE + 1 02660037 |
| WRITE (I02,80003) IVTNUM 02670037 |
| IF (ICZERO) 44980, 4991, 44980 02680037 |
| 44980 IF (IVCOMP - 38) 24980,14980,24980 02690037 |
| 14980 IVPASS = IVPASS + 1 02700037 |
| WRITE (I02,80001) IVTNUM 02710037 |
| GO TO 4991 02720037 |
| 24980 IVFAIL = IVFAIL + 1 02730037 |
| IVCORR = 38 02740037 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 02750037 |
| 4991 CONTINUE 02760037 |
| IVTNUM = 499 02770037 |
| C 02780037 |
| C **** TEST 499 **** 02790037 |
| C 02800037 |
| IF (ICZERO) 34990, 4990, 34990 02810037 |
| 4990 CONTINUE 02820037 |
| IVCOMP = 7151/3/10 02830037 |
| GO TO 44990 02840037 |
| 34990 IVDELE = IVDELE + 1 02850037 |
| WRITE (I02,80003) IVTNUM 02860037 |
| IF (ICZERO) 44990, 5001, 44990 02870037 |
| 44990 IF (IVCOMP - 238) 24990,14990,24990 02880037 |
| 14990 IVPASS = IVPASS + 1 02890037 |
| WRITE (I02,80001) IVTNUM 02900037 |
| GO TO 5001 02910037 |
| 24990 IVFAIL = IVFAIL + 1 02920037 |
| IVCORR = 238 02930037 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 02940037 |
| 5001 CONTINUE 02950037 |
| IVTNUM = 500 02960037 |
| C 02970037 |
| C **** TEST 500 **** 02980037 |
| C 02990037 |
| IF (ICZERO) 35000, 5000, 35000 03000037 |
| 5000 CONTINUE 03010037 |
| IVCOMP = 15248/51/13 03020037 |
| GO TO 45000 03030037 |
| 35000 IVDELE = IVDELE + 1 03040037 |
| WRITE (I02,80003) IVTNUM 03050037 |
| IF (ICZERO) 45000, 5011, 45000 03060037 |
| 45000 IF (IVCOMP - 22) 25000,15000,25000 03070037 |
| 15000 IVPASS = IVPASS + 1 03080037 |
| WRITE (I02,80001) IVTNUM 03090037 |
| GO TO 5011 03100037 |
| 25000 IVFAIL = IVFAIL + 1 03110037 |
| IVCORR = 22 03120037 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 03130037 |
| 5011 CONTINUE 03140037 |
| IVTNUM = 501 03150037 |
| C 03160037 |
| C **** TEST 501 **** 03170037 |
| C 03180037 |
| IF (ICZERO) 35010, 5010, 35010 03190037 |
| 5010 CONTINUE 03200037 |
| IVCOMP = 27342/4/3 03210037 |
| GO TO 45010 03220037 |
| 35010 IVDELE = IVDELE + 1 03230037 |
| WRITE (I02,80003) IVTNUM 03240037 |
| IF (ICZERO) 45010, 5021, 45010 03250037 |
| 45010 IF (IVCOMP - 2278) 25010,15010,25010 03260037 |
| 15010 IVPASS = IVPASS + 1 03270037 |
| WRITE (I02,80001) IVTNUM 03280037 |
| GO TO 5021 03290037 |
| 25010 IVFAIL = IVFAIL + 1 03300037 |
| IVCORR = 2278 03310037 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 03320037 |
| 5021 CONTINUE 03330037 |
| IVTNUM = 502 03340037 |
| C 03350037 |
| C **** TEST 502 **** 03360037 |
| C 03370037 |
| IF (ICZERO) 35020, 5020, 35020 03380037 |
| 5020 CONTINUE 03390037 |
| IVCOMP = 32767/2/1 03400037 |
| GO TO 45020 03410037 |
| 35020 IVDELE = IVDELE + 1 03420037 |
| WRITE (I02,80003) IVTNUM 03430037 |
| IF (ICZERO) 45020, 5031, 45020 03440037 |
| 45020 IF (IVCOMP - 16383) 25020,15020,25020 03450037 |
| 15020 IVPASS = IVPASS + 1 03460037 |
| WRITE (I02,80001) IVTNUM 03470037 |
| GO TO 5031 03480037 |
| 25020 IVFAIL = IVFAIL + 1 03490037 |
| IVCORR = 16383 03500037 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 03510037 |
| C 03520037 |
| C TEST 503 THROUGH TEST 507 - NEGATIVE INTEGER CONSTANTS INCLUDED 03530037 |
| C NO TRUNCATION REQUIRED 03540037 |
| C 03550037 |
| 5031 CONTINUE 03560037 |
| IVTNUM = 503 03570037 |
| C 03580037 |
| C **** TEST 503 **** 03590037 |
| C 03600037 |
| IF (ICZERO) 35030, 5030, 35030 03610037 |
| 5030 CONTINUE 03620037 |
| IVCOMP = -24/3/4 03630037 |
| GO TO 45030 03640037 |
| 35030 IVDELE = IVDELE + 1 03650037 |
| WRITE (I02,80003) IVTNUM 03660037 |
| IF (ICZERO) 45030, 5041, 45030 03670037 |
| 45030 IF (IVCOMP +2) 25030,15030,25030 03680037 |
| 15030 IVPASS = IVPASS + 1 03690037 |
| WRITE (I02,80001) IVTNUM 03700037 |
| GO TO 5041 03710037 |
| 25030 IVFAIL = IVFAIL + 1 03720037 |
| IVCORR = -2 03730037 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 03740037 |
| 5041 CONTINUE 03750037 |
| IVTNUM = 504 03760037 |
| C 03770037 |
| C **** TEST 504 **** 03780037 |
| C 03790037 |
| IF (ICZERO) 35040, 5040, 35040 03800037 |
| 5040 CONTINUE 03810037 |
| IVCOMP = 330/(-3)/2 03820037 |
| GO TO 45040 03830037 |
| 35040 IVDELE = IVDELE + 1 03840037 |
| WRITE (I02,80003) IVTNUM 03850037 |
| IF (ICZERO) 45040, 5051, 45040 03860037 |
| 45040 IF (IVCOMP + 55) 25040,15040,25040 03870037 |
| 15040 IVPASS = IVPASS + 1 03880037 |
| WRITE (I02,80001) IVTNUM 03890037 |
| GO TO 5051 03900037 |
| 25040 IVFAIL = IVFAIL + 1 03910037 |
| IVCORR = -55 03920037 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 03930037 |
| 5051 CONTINUE 03940037 |
| IVTNUM = 505 03950037 |
| C 03960037 |
| C **** TEST 505 **** 03970037 |
| C 03980037 |
| IF (ICZERO) 35050, 5050, 35050 03990037 |
| 5050 CONTINUE 04000037 |
| IVCOMP = 15249/(-13)/(-51) 04010037 |
| GO TO 45050 04020037 |
| 35050 IVDELE = IVDELE + 1 04030037 |
| WRITE (I02,80003) IVTNUM 04040037 |
| IF (ICZERO) 45050, 5061, 45050 04050037 |
| 45050 IF (IVCOMP - 23) 25050,15050,25050 04060037 |
| 15050 IVPASS = IVPASS + 1 04070037 |
| WRITE (I02,80001) IVTNUM 04080037 |
| GO TO 5061 04090037 |
| 25050 IVFAIL = IVFAIL + 1 04100037 |
| IVCORR = 23 04110037 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 04120037 |
| 5061 CONTINUE 04130037 |
| IVTNUM = 506 04140037 |
| C 04150037 |
| C **** TEST 506 **** 04160037 |
| C 04170037 |
| IF (ICZERO) 35060, 5060, 35060 04180037 |
| 5060 CONTINUE 04190037 |
| IVCOMP = -7150/(-2)/(-25) 04200037 |
| GO TO 45060 04210037 |
| 35060 IVDELE = IVDELE + 1 04220037 |
| WRITE (I02,80003) IVTNUM 04230037 |
| IF (ICZERO) 45060, 5071, 45060 04240037 |
| 45060 IF (IVCOMP + 143) 25060,15060,25060 04250037 |
| 15060 IVPASS = IVPASS + 1 04260037 |
| WRITE (I02,80001) IVTNUM 04270037 |
| GO TO 5071 04280037 |
| 25060 IVFAIL = IVFAIL + 1 04290037 |
| IVCORR = -143 04300037 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 04310037 |
| 5071 CONTINUE 04320037 |
| IVTNUM = 507 04330037 |
| C 04340037 |
| C **** TEST 507 **** 04350037 |
| C 04360037 |
| IF (ICZERO) 35070, 5070, 35070 04370037 |
| 5070 CONTINUE 04380037 |
| IVCOMP = (-32766)/(-2)/(-3) 04390037 |
| GO TO 45070 04400037 |
| 35070 IVDELE = IVDELE + 1 04410037 |
| WRITE (I02,80003) IVTNUM 04420037 |
| IF (ICZERO) 45070, 5081, 45070 04430037 |
| 45070 IF (IVCOMP + 5461) 25070,15070,25070 04440037 |
| 15070 IVPASS = IVPASS + 1 04450037 |
| WRITE (I02,80001) IVTNUM 04460037 |
| GO TO 5081 04470037 |
| 25070 IVFAIL = IVFAIL + 1 04480037 |
| IVCORR = -5461 04490037 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 04500037 |
| C 04510037 |
| C TEST 508 THROUGH TEST 513 - NEGATIVE INTEGER CONSTANTS INCLUDED 04520037 |
| C TRUNCATION REQUIRED 04530037 |
| C 04540037 |
| 5081 CONTINUE 04550037 |
| IVTNUM = 508 04560037 |
| C 04570037 |
| C **** TEST 508 **** 04580037 |
| C 04590037 |
| IF (ICZERO) 35080, 5080, 35080 04600037 |
| 5080 CONTINUE 04610037 |
| IVCOMP = -24/3/3 04620037 |
| GO TO 45080 04630037 |
| 35080 IVDELE = IVDELE + 1 04640037 |
| WRITE (I02,80003) IVTNUM 04650037 |
| IF (ICZERO) 45080, 5091, 45080 04660037 |
| 45080 IF (IVCOMP + 2) 25080,15080,25080 04670037 |
| 15080 IVPASS = IVPASS + 1 04680037 |
| WRITE (I02,80001) IVTNUM 04690037 |
| GO TO 5091 04700037 |
| 25080 IVFAIL = IVFAIL + 1 04710037 |
| IVCORR = -2 04720037 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 04730037 |
| 5091 CONTINUE 04740037 |
| IVTNUM = 509 04750037 |
| C 04760037 |
| C **** TEST 509 **** 04770037 |
| C 04780037 |
| IF (ICZERO) 35090, 5090, 35090 04790037 |
| 5090 CONTINUE 04800037 |
| IVCOMP = 230/(-2)/3 04810037 |
| GO TO 45090 04820037 |
| 35090 IVDELE = IVDELE + 1 04830037 |
| WRITE (I02,80003) IVTNUM 04840037 |
| IF (ICZERO) 45090, 5101, 45090 04850037 |
| 45090 IF (IVCOMP + 38) 25090,15090,25090 04860037 |
| 15090 IVPASS = IVPASS + 1 04870037 |
| WRITE (I02,80001) IVTNUM 04880037 |
| GO TO 5101 04890037 |
| 25090 IVFAIL = IVFAIL + 1 04900037 |
| IVCORR = -38 04910037 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 04920037 |
| 5101 CONTINUE 04930037 |
| IVTNUM = 510 04940037 |
| C 04950037 |
| C **** TEST 510 **** 04960037 |
| C 04970037 |
| IF (ICZERO) 35100, 5100, 35100 04980037 |
| 5100 CONTINUE 04990037 |
| IVCOMP = 7151/(-3)/(-10) 05000037 |
| GO TO 45100 05010037 |
| 35100 IVDELE = IVDELE + 1 05020037 |
| WRITE (I02,80003) IVTNUM 05030037 |
| IF (ICZERO) 45100, 5111, 45100 05040037 |
| 45100 IF (IVCOMP - 238) 25100,15100,25100 05050037 |
| 15100 IVPASS = IVPASS + 1 05060037 |
| WRITE (I02,80001) IVTNUM 05070037 |
| GO TO 5111 05080037 |
| 25100 IVFAIL = IVFAIL + 1 05090037 |
| IVCORR = 238 05100037 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 05110037 |
| 5111 CONTINUE 05120037 |
| IVTNUM = 511 05130037 |
| C 05140037 |
| C **** TEST 511 **** 05150037 |
| C 05160037 |
| IF (ICZERO) 35110, 5110, 35110 05170037 |
| 5110 CONTINUE 05180037 |
| IVCOMP = -15248/(-51)/(-13) 05190037 |
| GO TO 45110 05200037 |
| 35110 IVDELE = IVDELE + 1 05210037 |
| WRITE (I02,80003) IVTNUM 05220037 |
| IF (ICZERO) 45110, 5121, 45110 05230037 |
| 45110 IF (IVCOMP + 22) 25110,15110,25110 05240037 |
| 15110 IVPASS = IVPASS + 1 05250037 |
| WRITE (I02,80001) IVTNUM 05260037 |
| GO TO 5121 05270037 |
| 25110 IVFAIL = IVFAIL + 1 05280037 |
| IVCORR = -22 05290037 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 05300037 |
| 5121 CONTINUE 05310037 |
| IVTNUM = 512 05320037 |
| C 05330037 |
| C **** TEST 512 **** 05340037 |
| C 05350037 |
| IF (ICZERO) 35120, 5120, 35120 05360037 |
| 5120 CONTINUE 05370037 |
| IVCOMP = (-27342)/(-4)/(-3) 05380037 |
| GO TO 45120 05390037 |
| 35120 IVDELE = IVDELE + 1 05400037 |
| WRITE (I02,80003) IVTNUM 05410037 |
| IF (ICZERO) 45120, 5131, 45120 05420037 |
| 45120 IF (IVCOMP + 2278) 25120,15120,25120 05430037 |
| 15120 IVPASS = IVPASS + 1 05440037 |
| WRITE (I02,80001) IVTNUM 05450037 |
| GO TO 5131 05460037 |
| 25120 IVFAIL = IVFAIL + 1 05470037 |
| IVCORR = -2278 05480037 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 05490037 |
| 5131 CONTINUE 05500037 |
| IVTNUM = 513 05510037 |
| C 05520037 |
| C **** TEST 513 **** 05530037 |
| C 05540037 |
| IF (ICZERO) 35130, 5130, 35130 05550037 |
| 5130 CONTINUE 05560037 |
| IVCOMP = 32767/2/(-1) 05570037 |
| GO TO 45130 05580037 |
| 35130 IVDELE = IVDELE + 1 05590037 |
| WRITE (I02,80003) IVTNUM 05600037 |
| IF (ICZERO) 45130, 5141, 45130 05610037 |
| 45130 IF (IVCOMP + 16383) 25130,15130,25130 05620037 |
| 15130 IVPASS = IVPASS + 1 05630037 |
| WRITE (I02,80001) IVTNUM 05640037 |
| GO TO 5141 05650037 |
| 25130 IVFAIL = IVFAIL + 1 05660037 |
| IVCORR = -16383 05670037 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 05680037 |
| C 05690037 |
| C TEST 514 THROUGH TEST 519 - POSITIVE AND NEGATIVE SIGNED INTEGER 05700037 |
| C CONSTANTS IN ARITHMETIC EXPRESSION. 05710037 |
| C 05720037 |
| 5141 CONTINUE 05730037 |
| IVTNUM = 514 05740037 |
| C 05750037 |
| C **** TEST 514 **** 05760037 |
| C 05770037 |
| IF (ICZERO) 35140, 5140, 35140 05780037 |
| 5140 CONTINUE 05790037 |
| IVCOMP = +24/(-3)/4 05800037 |
| GO TO 45140 05810037 |
| 35140 IVDELE = IVDELE + 1 05820037 |
| WRITE (I02,80003) IVTNUM 05830037 |
| IF (ICZERO) 45140, 5151, 45140 05840037 |
| 45140 IF (IVCOMP +2) 25140,15140,25140 05850037 |
| 15140 IVPASS = IVPASS + 1 05860037 |
| WRITE (I02,80001) IVTNUM 05870037 |
| GO TO 5151 05880037 |
| 25140 IVFAIL = IVFAIL + 1 05890037 |
| IVCORR = -2 05900037 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 05910037 |
| 5151 CONTINUE 05920037 |
| IVTNUM = 515 05930037 |
| C 05940037 |
| C **** TEST 515 **** 05950037 |
| C 05960037 |
| IF (ICZERO) 35150, 5150, 35150 05970037 |
| 5150 CONTINUE 05980037 |
| IVCOMP = 24/(+3)/(-4) 05990037 |
| GO TO 45150 06000037 |
| 35150 IVDELE = IVDELE + 1 06010037 |
| WRITE (I02,80003) IVTNUM 06020037 |
| IF (ICZERO) 45150, 5161, 45150 06030037 |
| 45150 IF (IVCOMP +2) 25150,15150,25150 06040037 |
| 15150 IVPASS = IVPASS + 1 06050037 |
| WRITE (I02,80001) IVTNUM 06060037 |
| GO TO 5161 06070037 |
| 25150 IVFAIL = IVFAIL + 1 06080037 |
| IVCORR = -2 06090037 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 06100037 |
| 5161 CONTINUE 06110037 |
| IVTNUM = 516 06120037 |
| C 06130037 |
| C **** TEST 516 **** 06140037 |
| C 06150037 |
| IF (ICZERO) 35160, 5160, 35160 06160037 |
| 5160 CONTINUE 06170037 |
| IVCOMP = -24/(-3)/(+4) 06180037 |
| GO TO 45160 06190037 |
| 35160 IVDELE = IVDELE + 1 06200037 |
| WRITE (I02,80003) IVTNUM 06210037 |
| IF (ICZERO) 45160, 5171, 45160 06220037 |
| 45160 IF (IVCOMP -2) 25160,15160,25160 06230037 |
| 15160 IVPASS = IVPASS + 1 06240037 |
| WRITE (I02,80001) IVTNUM 06250037 |
| GO TO 5171 06260037 |
| 25160 IVFAIL = IVFAIL + 1 06270037 |
| IVCORR = 2 06280037 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 06290037 |
| 5171 CONTINUE 06300037 |
| IVTNUM = 517 06310037 |
| C 06320037 |
| C **** TEST 517 **** 06330037 |
| C 06340037 |
| IF (ICZERO) 35170, 5170, 35170 06350037 |
| 5170 CONTINUE 06360037 |
| IVCOMP = -16811/(-16812)/(+1) 06370037 |
| GO TO 45170 06380037 |
| 35170 IVDELE = IVDELE + 1 06390037 |
| WRITE (I02,80003) IVTNUM 06400037 |
| IF (ICZERO) 45170, 5181, 45170 06410037 |
| 45170 IF (IVCOMP - 0) 25170,15170,25170 06420037 |
| 15170 IVPASS = IVPASS + 1 06430037 |
| WRITE (I02,80001) IVTNUM 06440037 |
| GO TO 5181 06450037 |
| 25170 IVFAIL = IVFAIL + 1 06460037 |
| IVCORR = 0 06470037 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 06480037 |
| 5181 CONTINUE 06490037 |
| IVTNUM = 518 06500037 |
| C 06510037 |
| C **** TEST 518 **** 06520037 |
| C 06530037 |
| IF (ICZERO) 35180, 5180, 35180 06540037 |
| 5180 CONTINUE 06550037 |
| IVCOMP = (-16811) / (+16811) / (+1) 06560037 |
| GO TO 45180 06570037 |
| 35180 IVDELE = IVDELE + 1 06580037 |
| WRITE (I02,80003) IVTNUM 06590037 |
| IF (ICZERO) 45180, 5191, 45180 06600037 |
| 45180 IF (IVCOMP +1) 25180,15180,25180 06610037 |
| 15180 IVPASS = IVPASS + 1 06620037 |
| WRITE (I02,80001) IVTNUM 06630037 |
| GO TO 5191 06640037 |
| 25180 IVFAIL = IVFAIL + 1 06650037 |
| IVCORR = -1 06660037 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 06670037 |
| 5191 CONTINUE 06680037 |
| IVTNUM = 519 06690037 |
| C 06700037 |
| C **** TEST 519 **** 06710037 |
| C 06720037 |
| IF (ICZERO) 35190, 5190, 35190 06730037 |
| 5190 CONTINUE 06740037 |
| IVCOMP = (-335)/(+168)/(+1) 06750037 |
| GO TO 45190 06760037 |
| 35190 IVDELE = IVDELE + 1 06770037 |
| WRITE (I02,80003) IVTNUM 06780037 |
| IF (ICZERO) 45190, 5201, 45190 06790037 |
| 45190 IF (IVCOMP + 1) 25190,15190,25190 06800037 |
| 15190 IVPASS = IVPASS + 1 06810037 |
| WRITE (I02,80001) IVTNUM 06820037 |
| GO TO 5201 06830037 |
| 25190 IVFAIL = IVFAIL + 1 06840037 |
| IVCORR = -1 06850037 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 06860037 |
| C **** END OF TESTS **** 06870037 |
| 5201 CONTINUE 06880037 |
| C 06890037 |
| C WRITE PAGE FOOTINGS AND RUN SUMMARIES 06900037 |
| 99999 CONTINUE 06910037 |
| WRITE (I02,90002) 06920037 |
| WRITE (I02,90006) 06930037 |
| WRITE (I02,90002) 06940037 |
| WRITE (I02,90002) 06950037 |
| WRITE (I02,90007) 06960037 |
| WRITE (I02,90002) 06970037 |
| WRITE (I02,90008) IVFAIL 06980037 |
| WRITE (I02,90009) IVPASS 06990037 |
| WRITE (I02,90010) IVDELE 07000037 |
| C 07010037 |
| C 07020037 |
| C TERMINATE ROUTINE EXECUTION 07030037 |
| STOP 07040037 |
| C 07050037 |
| C FORMAT STATEMENTS FOR PAGE HEADERS 07060037 |
| 90000 FORMAT ("1") 07070037 |
| 90002 FORMAT (" ") 07080037 |
| 90001 FORMAT (" ",10X,"FORTRAN COMPILER VALIDATION SYSTEM" ) 07090037 |
| 90003 FORMAT (" ",21X,"VERSION 2.1" ) 07100037 |
| 90004 FORMAT (" ",10X,"FOR OFFICIAL USE ONLY - COPYRIGHT 1978" ) 07110037 |
| 90005 FORMAT (" ",5X,"TEST",5X,"PASS/FAIL", 5X,"COMPUTED",8X,"CORRECT") 07120037 |
| 90006 FORMAT (" ",5X,"----------------------------------------------" ) 07130037 |
| 90011 FORMAT (" ",18X,"SUBSET LEVEL TEST" ) 07140037 |
| C 07150037 |
| C FORMAT STATEMENTS FOR RUN SUMMARIES 07160037 |
| 90008 FORMAT (" ",15X,I5," ERRORS ENCOUNTERED" ) 07170037 |
| 90009 FORMAT (" ",15X,I5," TESTS PASSED" ) 07180037 |
| 90010 FORMAT (" ",15X,I5," TESTS DELETED" ) 07190037 |
| C 07200037 |
| C FORMAT STATEMENTS FOR TEST RESULTS 07210037 |
| 80001 FORMAT (" ",4X,I5,7X,"PASS") 07220037 |
| 80002 FORMAT (" ",4X,I5,7X,"FAIL") 07230037 |
| 80003 FORMAT (" ",4X,I5,7X,"DELETED") 07240037 |
| 80004 FORMAT (" ",4X,I5,7X,"FAIL",10X,I6,9X,I6) 07250037 |
| 80005 FORMAT (" ",4X,I5,7X,"FAIL",4X,E12.5,3X,E12.5) 07260037 |
| C 07270037 |
| 90007 FORMAT (" ",20X,"END OF PROGRAM FM037" ) 07280037 |
| END 07290037 |