| PROGRAM FM008 |
| |
| C COMMENT SECTION. 00010008 |
| C 00020008 |
| C FM008 00030008 |
| C 00040008 |
| C THIS ROUTINE TESTS ARITHMETIC ASSIGNMENT STATEMENTS OF THE 00050008 |
| C FORM INTEGER VARIABLE = ARITHMETIC EXPRESSION 00060008 |
| C WHERE THE ARITHMETIC EXPRESSION IS FORMED WITH THE ARITHMETIC 00070008 |
| C OPERATOR + INTEGER CONSTANTS AND POSITIVE INTEGER VARIABLES. 00080008 |
| C SOME OF THE TESTS USE PARENTHESES TO GROUP ELEMENTS IN THE 00090008 |
| C ARITHMETIC EXPRESSION. 00100008 |
| C 00110008 |
| C THERE ARE TESTS WHERE THE ARITHMETIC EXPRESSION CONTAINS 00120008 |
| C (1) TWO INTEGER CONSTANTS, 00130008 |
| C (2) THREE INTEGER CONSTANTS, 00140008 |
| C (3) THREE INTEGER CONSTANTS WITH PARENTHESES TO GROUP 00150008 |
| C ELEMENTS, 00160008 |
| C (4) ONE INTEGER VARIABLE AND ONE INTEGER CONSTANT, 00170008 |
| C (5) ONE INTEGER VARIABLE AND TWO INTEGER CONSTANTS, 00180008 |
| C (6) ONE INTEGER VARIABLE AND TWO INTEGER CONSTANTS WITH 00190008 |
| C PARENTHESES TO GROUP ELEMENTS. 00200008 |
| C 00210008 |
| C 00220008 |
| C REFERENCES 00230008 |
| C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, 00240008 |
| C X3.9-1978 00250008 |
| C 00260008 |
| C SECTION 4.3, INTEGER TYPE 00270008 |
| C SECTION 4.3.1, INTEGER CONSTANT 00280008 |
| C SECTION 6.1, ARITHMETIC EXPRESSIONS 00290008 |
| C SECTION 10.1, ARITHMETIC ASSIGNMENT STATEMENTS 00300008 |
| C 00310008 |
| C 00320008 |
| C ********************************************************** 00330008 |
| C 00340008 |
| C A COMPILER VALIDATION SYSTEM FOR THE FORTRAN LANGUAGE 00350008 |
| C BASED ON SPECIFICATIONS AS DEFINED IN AMERICAN NATIONAL STANDARD 00360008 |
| C PROGRAMMING LANGUAGE FORTRAN X3.9-1978, HAS BEEN DEVELOPED BY THE 00370008 |
| C FEDERAL COBOL COMPILER TESTING SERVICE. THE FORTRAN COMPILER 00380008 |
| C VALIDATION SYSTEM (FCVS) CONSISTS OF AUDIT ROUTINES, THEIR RELATED00390008 |
| C DATA, AND AN EXECUTIVE SYSTEM. EACH AUDIT ROUTINE IS A FORTRAN 00400008 |
| C PROGRAM, SUBPROGRAM OR FUNCTION WHICH INCLUDES TESTS OF SPECIFIC 00410008 |
| C LANGUAGE ELEMENTS AND SUPPORTING PROCEDURES INDICATING THE RESULT 00420008 |
| C OF EXECUTING THESE TESTS. 00430008 |
| C 00440008 |
| C THIS PARTICULAR PROGRAM/SUBPROGRAM/FUNCTION CONTAINS FEATURES 00450008 |
| C FOUND ONLY IN THE SUBSET AS DEFINED IN X3.9-1978. 00460008 |
| C 00470008 |
| C SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO - 00480008 |
| C 00490008 |
| C NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY 00500008 |
| C SOFTWARE STANDARDS VALIDATION GROUP 00510008 |
| C BUILDING 225 RM A266 00520008 |
| C GAITHERSBURG, MD 20899 00530008 |
| C ********************************************************** 00540008 |
| C 00550008 |
| C 00560008 |
| C 00570008 |
| C INITIALIZATION SECTION 00580008 |
| C 00590008 |
| C INITIALIZE CONSTANTS 00600008 |
| C ************** 00610008 |
| C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. 00620008 |
| I01 = 5 00630008 |
| C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. 00640008 |
| I02 = 6 00650008 |
| C SYSTEM ENVIRONMENT SECTION 00660008 |
| C 00670008 |
| CX010 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-010 CONTROL CARD. 00680008 |
| C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 00690008 |
| C (UNIT NUMBER FOR CARD READER). 00700008 |
| CX011 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-011 CONTROL CARD. 00710008 |
| C THE CX011 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL 00720008 |
| C FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX010 ABOVE. 00730008 |
| C 00740008 |
| CX020 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-020 CONTROL CARD. 00750008 |
| C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02 = 6 00760008 |
| C (UNIT NUMBER FOR PRINTER). 00770008 |
| CX021 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-021 CONTROL CARD. 00780008 |
| C THE CX021 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL 00790008 |
| C FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX020 ABOVE. 00800008 |
| C 00810008 |
| IVPASS=0 00820008 |
| IVFAIL=0 00830008 |
| IVDELE=0 00840008 |
| ICZERO=0 00850008 |
| C 00860008 |
| C WRITE PAGE HEADERS 00870008 |
| WRITE (I02,90000) 00880008 |
| WRITE (I02,90001) 00890008 |
| WRITE (I02,90002) 00900008 |
| WRITE (I02, 90002) 00910008 |
| WRITE (I02,90003) 00920008 |
| WRITE (I02,90002) 00930008 |
| WRITE (I02,90004) 00940008 |
| WRITE (I02,90002) 00950008 |
| WRITE (I02,90011) 00960008 |
| WRITE (I02,90002) 00970008 |
| WRITE (I02,90002) 00980008 |
| WRITE (I02,90005) 00990008 |
| WRITE (I02,90006) 01000008 |
| WRITE (I02,90002) 01010008 |
| C TEST SECTION 01020008 |
| C 01030008 |
| C ARITHMETIC ASSIGNMENT STATEMENT 01040008 |
| C 01050008 |
| C TEST 200 THROUGH TEST 214 CONTAIN INTEGER CONSTANTS AND OPERATOR +01060008 |
| C IN ARITHMETIC EXPRESSION. 01070008 |
| C 01080008 |
| C TEST 200 THROUGH TEST 206 - TWO INTEGER CONSTANTS 01090008 |
| C 01100008 |
| 2001 CONTINUE 01110008 |
| IVTNUM = 200 01120008 |
| C 01130008 |
| C **** TEST 200 **** 01140008 |
| C 01150008 |
| IF (ICZERO) 32000, 2000, 32000 01160008 |
| 2000 CONTINUE 01170008 |
| IVCOMP = 2+3 01180008 |
| GO TO 42000 01190008 |
| 32000 IVDELE = IVDELE + 1 01200008 |
| WRITE (I02,80003) IVTNUM 01210008 |
| IF (ICZERO) 42000, 2011, 42000 01220008 |
| 42000 IF (IVCOMP - 5) 22000,12000,22000 01230008 |
| 12000 IVPASS = IVPASS + 1 01240008 |
| WRITE (I02,80001) IVTNUM 01250008 |
| GO TO 2011 01260008 |
| 22000 IVFAIL = IVFAIL + 1 01270008 |
| IVCORR = 5 01280008 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 01290008 |
| 2011 CONTINUE 01300008 |
| IVTNUM = 201 01310008 |
| C 01320008 |
| C **** TEST 201 **** 01330008 |
| C 01340008 |
| IF (ICZERO) 32010, 2010, 32010 01350008 |
| 2010 CONTINUE 01360008 |
| IVCOMP = 51 + 52 01370008 |
| GO TO 42010 01380008 |
| 32010 IVDELE = IVDELE + 1 01390008 |
| WRITE (I02,80003) IVTNUM 01400008 |
| IF (ICZERO) 42010, 2021, 42010 01410008 |
| 42010 IF (IVCOMP - 103) 22010,12010,22010 01420008 |
| 12010 IVPASS = IVPASS + 1 01430008 |
| WRITE (I02,80001) IVTNUM 01440008 |
| GO TO 2021 01450008 |
| 22010 IVFAIL = IVFAIL + 1 01460008 |
| IVCORR = 103 01470008 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 01480008 |
| 2021 CONTINUE 01490008 |
| IVTNUM = 202 01500008 |
| C 01510008 |
| C **** TEST 202 **** 01520008 |
| C 01530008 |
| IF (ICZERO) 32020, 2020, 32020 01540008 |
| 2020 CONTINUE 01550008 |
| IVCOMP = 189 + 676 01560008 |
| GO TO 42020 01570008 |
| 32020 IVDELE = IVDELE + 1 01580008 |
| WRITE (I02,80003) IVTNUM 01590008 |
| IF (ICZERO) 42020, 2031, 42020 01600008 |
| 42020 IF (IVCOMP - 865) 22020,12020,22020 01610008 |
| 12020 IVPASS = IVPASS + 1 01620008 |
| WRITE (I02,80001) IVTNUM 01630008 |
| GO TO 2031 01640008 |
| 22020 IVFAIL = IVFAIL + 1 01650008 |
| IVCORR = 865 01660008 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 01670008 |
| 2031 CONTINUE 01680008 |
| IVTNUM = 203 01690008 |
| C 01700008 |
| C **** TEST 203 **** 01710008 |
| C 01720008 |
| IF (ICZERO) 32030, 2030, 32030 01730008 |
| 2030 CONTINUE 01740008 |
| IVCOMP = 1358 + 8001 01750008 |
| GO TO 42030 01760008 |
| 32030 IVDELE = IVDELE + 1 01770008 |
| WRITE (I02,80003) IVTNUM 01780008 |
| IF (ICZERO) 42030, 2041, 42030 01790008 |
| 42030 IF (IVCOMP - 9359) 22030, 12030, 22030 01800008 |
| 12030 IVPASS = IVPASS + 1 01810008 |
| WRITE (I02,80001) IVTNUM 01820008 |
| GO TO 2041 01830008 |
| 22030 IVFAIL = IVFAIL + 1 01840008 |
| IVCORR = 9359 01850008 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 01860008 |
| 2041 CONTINUE 01870008 |
| IVTNUM = 204 01880008 |
| C 01890008 |
| C **** TEST 204 **** 01900008 |
| C 01910008 |
| IF (ICZERO) 32040, 2040, 32040 01920008 |
| 2040 CONTINUE 01930008 |
| IVCOMP = 11112 + 10001 01940008 |
| GO TO 42040 01950008 |
| 32040 IVDELE = IVDELE + 1 01960008 |
| WRITE (I02,80003) IVTNUM 01970008 |
| IF (ICZERO) 42040, 2051, 42040 01980008 |
| 42040 IF (IVCOMP - 21113) 22040, 12040, 22040 01990008 |
| 12040 IVPASS = IVPASS + 1 02000008 |
| WRITE (I02,80001) IVTNUM 02010008 |
| GO TO 2051 02020008 |
| 22040 IVFAIL = IVFAIL + 1 02030008 |
| IVCORR=21113 02040008 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 02050008 |
| 2051 CONTINUE 02060008 |
| IVTNUM = 205 02070008 |
| C 02080008 |
| C **** TEST 205 **** 02090008 |
| C 02100008 |
| IF (ICZERO) 32050, 2050, 32050 02110008 |
| 2050 CONTINUE 02120008 |
| IVCOMP = 189 + 9876 02130008 |
| GO TO 42050 02140008 |
| 32050 IVDELE = IVDELE + 1 02150008 |
| WRITE (I02,80003) IVTNUM 02160008 |
| IF (ICZERO) 42050, 2061, 42050 02170008 |
| 42050 IF (IVCOMP - 10065) 22050,12050,22050 02180008 |
| 12050 IVPASS = IVPASS + 1 02190008 |
| WRITE (I02,80001) IVTNUM 02200008 |
| GO TO 2061 02210008 |
| 22050 IVFAIL = IVFAIL + 1 02220008 |
| IVCORR = 10065 02230008 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 02240008 |
| 2061 CONTINUE 02250008 |
| IVTNUM = 206 02260008 |
| C 02270008 |
| C **** TEST 206 **** 02280008 |
| C REQUIRES 32767 02290008 |
| C 02300008 |
| IF (ICZERO) 32060, 2060, 32060 02310008 |
| 2060 CONTINUE 02320008 |
| IVCOMP = 32752 + 15 02330008 |
| GO TO 42060 02340008 |
| 32060 IVDELE = IVDELE + 1 02350008 |
| WRITE (I02,80003) IVTNUM 02360008 |
| IF (ICZERO) 42060, 2071, 42060 02370008 |
| 42060 IF (IVCOMP - 32767) 22060,12060,22060 02380008 |
| 12060 IVPASS = IVPASS + 1 02390008 |
| WRITE (I02,80001) IVTNUM 02400008 |
| GO TO 2071 02410008 |
| 22060 IVFAIL = IVFAIL + 1 02420008 |
| IVCORR = 32767 02430008 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 02440008 |
| C 02450008 |
| C TEST 207 THROUGH TEST 210 - THREE INTEGER CONSTANTS 02460008 |
| C 02470008 |
| 2071 CONTINUE 02480008 |
| IVTNUM = 207 02490008 |
| C 02500008 |
| C **** TEST 207 **** 02510008 |
| C 02520008 |
| IF (ICZERO) 32070, 2070, 32070 02530008 |
| 2070 CONTINUE 02540008 |
| IVCOMP = 2+3+4 02550008 |
| GO TO 42070 02560008 |
| 32070 IVDELE = IVDELE + 1 02570008 |
| WRITE (I02,80003) IVTNUM 02580008 |
| IF (ICZERO) 42070, 2081, 42070 02590008 |
| 42070 IF (IVCOMP - 9) 22070,12070,22070 02600008 |
| 12070 IVPASS = IVPASS + 1 02610008 |
| WRITE (I02,80001) IVTNUM 02620008 |
| GO TO 2081 02630008 |
| 22070 IVFAIL = IVFAIL + 1 02640008 |
| IVCORR = 9 02650008 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 02660008 |
| 2081 CONTINUE 02670008 |
| IVTNUM = 208 02680008 |
| C 02690008 |
| C **** TEST 208 **** 02700008 |
| C 02710008 |
| IF (ICZERO) 32080, 2080, 32080 02720008 |
| 2080 CONTINUE 02730008 |
| IVCOMP = 51 + 52 + 53 02740008 |
| GO TO 42080 02750008 |
| 32080 IVDELE = IVDELE + 1 02760008 |
| WRITE (I02,80003) IVTNUM 02770008 |
| IF (ICZERO) 42080, 2091, 42080 02780008 |
| 42080 IF (IVCOMP - 156) 22080,12080,22080 02790008 |
| 12080 IVPASS = IVPASS + 1 02800008 |
| WRITE (I02,80001) IVTNUM 02810008 |
| GO TO 2091 02820008 |
| 22080 IVFAIL = IVFAIL + 1 02830008 |
| IVCORR = 156 02840008 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 02850008 |
| 2091 CONTINUE 02860008 |
| IVTNUM = 209 02870008 |
| C 02880008 |
| C **** TEST 209 **** 02890008 |
| C 02900008 |
| IF (ICZERO) 32090, 2090, 32090 02910008 |
| 2090 CONTINUE 02920008 |
| IVCOMP = 189 +676+101 02930008 |
| GO TO 42090 02940008 |
| 32090 IVDELE = IVDELE + 1 02950008 |
| WRITE (I02,80003) IVTNUM 02960008 |
| IF (ICZERO) 42090, 2101, 42090 02970008 |
| 42090 IF (IVCOMP - 966) 22090,12090,22090 02980008 |
| 12090 IVPASS = IVPASS + 1 02990008 |
| WRITE (I02,80001) IVTNUM 03000008 |
| GO TO 2101 03010008 |
| 22090 IVFAIL = IVFAIL + 1 03020008 |
| IVCORR = 966 03030008 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 03040008 |
| 2101 CONTINUE 03050008 |
| IVTNUM = 210 03060008 |
| C 03070008 |
| C **** TEST 210 **** 03080008 |
| C 03090008 |
| IF (ICZERO) 32100, 2100, 32100 03100008 |
| 2100 CONTINUE 03110008 |
| IVCOMP = 1358 + 8001 + 2189 03120008 |
| GO TO 42100 03130008 |
| 32100 IVDELE = IVDELE + 1 03140008 |
| WRITE (I02,80003) IVTNUM 03150008 |
| IF (ICZERO) 42100, 2111, 42100 03160008 |
| 42100 IF (IVCOMP - 11548) 22100,12100,22100 03170008 |
| 12100 IVPASS = IVPASS + 1 03180008 |
| WRITE (I02,80001) IVTNUM 03190008 |
| GO TO 2111 03200008 |
| 22100 IVFAIL = IVFAIL + 1 03210008 |
| IVCORR = 11548 03220008 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 03230008 |
| C 03240008 |
| C TESTS 211 THROUGH 214 ARE THE SAME AS 207 THROUGH 210 EXCEPT 03250008 |
| C PARENTHESES ARE USED TO GROUP THE CONSTANTS. 03260008 |
| C 03270008 |
| 2111 CONTINUE 03280008 |
| IVTNUM = 211 03290008 |
| C 03300008 |
| C **** TEST 211 **** 03310008 |
| C 03320008 |
| IF (ICZERO) 32110, 2110, 32110 03330008 |
| 2110 CONTINUE 03340008 |
| IVCOMP = (2+3)+4 03350008 |
| GO TO 42110 03360008 |
| 32110 IVDELE = IVDELE + 1 03370008 |
| WRITE (I02,80003) IVTNUM 03380008 |
| IF (ICZERO) 42110, 2121, 42110 03390008 |
| 42110 IF (IVCOMP -9) 22110,12110,22110 03400008 |
| 12110 IVPASS = IVPASS + 1 03410008 |
| WRITE (I02,80001) IVTNUM 03420008 |
| GO TO 2121 03430008 |
| 22110 IVFAIL = IVFAIL + 1 03440008 |
| IVCORR = 9 03450008 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 03460008 |
| 2121 CONTINUE 03470008 |
| IVTNUM = 212 03480008 |
| C 03490008 |
| C **** TEST 212 **** 03500008 |
| C 03510008 |
| IF (ICZERO) 32120, 2120, 32120 03520008 |
| 2120 CONTINUE 03530008 |
| IVCOMP = 51+(52+53) 03540008 |
| GO TO 42120 03550008 |
| 32120 IVDELE = IVDELE + 1 03560008 |
| WRITE (I02,80003) IVTNUM 03570008 |
| IF (ICZERO) 42120, 2131, 42120 03580008 |
| 42120 IF (IVCOMP - 156) 22120,12120,22120 03590008 |
| 12120 IVPASS = IVPASS + 1 03600008 |
| WRITE (I02,80001) IVTNUM 03610008 |
| GO TO 2131 03620008 |
| 22120 IVFAIL = IVFAIL + 1 03630008 |
| IVCORR = 156 03640008 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 03650008 |
| 2131 CONTINUE 03660008 |
| IVTNUM = 213 03670008 |
| C 03680008 |
| C **** TEST 213 **** 03690008 |
| C 03700008 |
| IF (ICZERO) 32130, 2130, 32130 03710008 |
| 2130 CONTINUE 03720008 |
| IVCOMP = 189 +(676+101) 03730008 |
| GO TO 42130 03740008 |
| 32130 IVDELE = IVDELE + 1 03750008 |
| WRITE (I02,80003) IVTNUM 03760008 |
| IF (ICZERO) 42130, 2141, 42130 03770008 |
| 42130 IF (IVCOMP - 966) 22130,12130,22130 03780008 |
| 12130 IVPASS = IVPASS + 1 03790008 |
| WRITE (I02,80001) IVTNUM 03800008 |
| GO TO 2141 03810008 |
| 22130 IVFAIL = IVFAIL + 1 03820008 |
| IVCORR = 966 03830008 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 03840008 |
| 2141 CONTINUE 03850008 |
| IVTNUM = 214 03860008 |
| C 03870008 |
| C **** TEST 214 **** 03880008 |
| C 03890008 |
| IF (ICZERO) 32140, 2140, 32140 03900008 |
| 2140 CONTINUE 03910008 |
| IVCOMP = (1358+2189) + 8001 03920008 |
| GO TO 42140 03930008 |
| 32140 IVDELE = IVDELE + 1 03940008 |
| WRITE (I02,80003) IVTNUM 03950008 |
| IF (ICZERO) 42140, 2151, 42140 03960008 |
| 42140 IF (IVCOMP - 11548) 22140,12140,22140 03970008 |
| 12140 IVPASS = IVPASS + 1 03980008 |
| WRITE (I02,80001) IVTNUM 03990008 |
| GO TO 2151 04000008 |
| 22140 IVFAIL = IVFAIL + 1 04010008 |
| IVCORR = 11548 04020008 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 04030008 |
| C 04040008 |
| C TEST 215 THROUGH TEST 234 CONTAIN INTEGER VARIABLES, INTEGER 04050008 |
| C CONSTANTS AND THE OPERATOR + IN ARITHMETIC EXPRESSION. 04060008 |
| C 04070008 |
| C TEST 215 THROUGH TEST 219 - ONE INTEGER VARIABLE AND ONE INTEGER 04080008 |
| C CONSTANT IN ARITHMETIC EXPRESSION. 04090008 |
| C 04100008 |
| 2151 CONTINUE 04110008 |
| IVTNUM = 215 04120008 |
| C 04130008 |
| C **** TEST 215 **** 04140008 |
| C 04150008 |
| IF (ICZERO) 32150, 2150, 32150 04160008 |
| 2150 CONTINUE 04170008 |
| IVON01 = 2 04180008 |
| IVCOMP = IVON01 + 3 04190008 |
| GO TO 42150 04200008 |
| 32150 IVDELE = IVDELE + 1 04210008 |
| WRITE (I02,80003) IVTNUM 04220008 |
| IF (ICZERO) 42150, 2161, 42150 04230008 |
| 42150 IF (IVCOMP - 5) 22150,12150,22150 04240008 |
| 12150 IVPASS = IVPASS + 1 04250008 |
| WRITE (I02,80001) IVTNUM 04260008 |
| GO TO 2161 04270008 |
| 22150 IVFAIL = IVFAIL + 1 04280008 |
| IVCORR=5 04290008 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 04300008 |
| 2161 CONTINUE 04310008 |
| IVTNUM = 216 04320008 |
| C 04330008 |
| C **** TEST 216 **** 04340008 |
| C 04350008 |
| IF (ICZERO) 32160, 2160, 32160 04360008 |
| 2160 CONTINUE 04370008 |
| IVON01 = 3 04380008 |
| IVCOMP = 2 + IVON01 04390008 |
| GO TO 42160 04400008 |
| 32160 IVDELE = IVDELE + 1 04410008 |
| WRITE (I02,80003) IVTNUM 04420008 |
| IF (ICZERO) 42160, 2171, 42160 04430008 |
| 42160 IF (IVCOMP - 5) 22160,12160,22160 04440008 |
| 12160 IVPASS = IVPASS + 1 04450008 |
| WRITE (I02,80001) IVTNUM 04460008 |
| GO TO 2171 04470008 |
| 22160 IVFAIL = IVFAIL + 1 04480008 |
| IVCORR = 5 04490008 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 04500008 |
| 2171 CONTINUE 04510008 |
| IVTNUM = 217 04520008 |
| C 04530008 |
| C **** TEST 217 **** 04540008 |
| C 04550008 |
| IF (ICZERO) 32170, 2170, 32170 04560008 |
| 2170 CONTINUE 04570008 |
| IVON01 = 51 04580008 |
| IVCOMP = IVON01 +52 04590008 |
| GO TO 42170 04600008 |
| 32170 IVDELE = IVDELE + 1 04610008 |
| WRITE (I02,80003) IVTNUM 04620008 |
| IF (ICZERO) 42170, 2181, 42170 04630008 |
| 42170 IF (IVCOMP - 103) 22170,12170,22170 04640008 |
| 12170 IVPASS = IVPASS + 1 04650008 |
| WRITE (I02,80001) IVTNUM 04660008 |
| GO TO 2181 04670008 |
| 22170 IVFAIL = IVFAIL + 1 04680008 |
| IVCORR = 103 04690008 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 04700008 |
| 2181 CONTINUE 04710008 |
| IVTNUM = 218 04720008 |
| C 04730008 |
| C **** TEST 218 **** 04740008 |
| C 04750008 |
| IF (ICZERO) 32180, 2180, 32180 04760008 |
| 2180 CONTINUE 04770008 |
| IVON01 = 676 04780008 |
| IVCOMP = 189 + IVON01 04790008 |
| GO TO 42180 04800008 |
| 32180 IVDELE = IVDELE + 1 04810008 |
| WRITE (I02,80003) IVTNUM 04820008 |
| IF (ICZERO) 42180, 2191, 42180 04830008 |
| 42180 IF (IVCOMP - 865) 22180,12180,22180 04840008 |
| 12180 IVPASS = IVPASS + 1 04850008 |
| WRITE (I02,80001) IVTNUM 04860008 |
| GO TO 2191 04870008 |
| 22180 IVFAIL = IVFAIL + 1 04880008 |
| IVCORR = 865 04890008 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 04900008 |
| 2191 CONTINUE 04910008 |
| IVTNUM = 219 04920008 |
| C 04930008 |
| C **** TEST 219 **** 04940008 |
| C 04950008 |
| IF (ICZERO) 32190, 2190, 32190 04960008 |
| 2190 CONTINUE 04970008 |
| IVON01 = 1358 04980008 |
| IVCOMP = IVON01 + 8001 04990008 |
| GO TO 42190 05000008 |
| 32190 IVDELE = IVDELE + 1 05010008 |
| WRITE (I02,80003) IVTNUM 05020008 |
| IF (ICZERO) 42190, 2201, 42190 05030008 |
| 42190 IF (IVCOMP - 9359) 22190,12190,22190 05040008 |
| 12190 IVPASS = IVPASS + 1 05050008 |
| WRITE (I02,80001) IVTNUM 05060008 |
| GO TO 2201 05070008 |
| 22190 IVFAIL = IVFAIL + 1 05080008 |
| IVCORR = 9359 05090008 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 05100008 |
| C 05110008 |
| C TEST 220 THROUGH TEST 224 - ONE INTEGER VARIABLE, TWO INTEGER 05120008 |
| C CONSTANTS IN ARITHMETIC EXPRESSION. 05130008 |
| C 05140008 |
| 2201 CONTINUE 05150008 |
| IVTNUM = 220 05160008 |
| C 05170008 |
| C **** TEST 220 **** 05180008 |
| C 05190008 |
| IF (ICZERO) 32200, 2200, 32200 05200008 |
| 2200 CONTINUE 05210008 |
| IVON01 = 2 05220008 |
| IVCOMP = IVON01 +3 +4 05230008 |
| GO TO 42200 05240008 |
| 32200 IVDELE = IVDELE + 1 05250008 |
| WRITE (I02,80003) IVTNUM 05260008 |
| IF (ICZERO) 42200, 2211, 42200 05270008 |
| 42200 IF (IVCOMP - 9) 22200,12200,22200 05280008 |
| 12200 IVPASS = IVPASS + 1 05290008 |
| WRITE (I02,80001) IVTNUM 05300008 |
| GO TO 2211 05310008 |
| 22200 IVFAIL = IVFAIL + 1 05320008 |
| IVCORR = 9 05330008 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 05340008 |
| 2211 CONTINUE 05350008 |
| IVTNUM = 221 05360008 |
| C 05370008 |
| C **** TEST 221 **** 05380008 |
| C 05390008 |
| IF (ICZERO) 32210, 2210, 32210 05400008 |
| 2210 CONTINUE 05410008 |
| IVON01 = 3 05420008 |
| IVCOMP = 2+IVON01+4 05430008 |
| GO TO 42210 05440008 |
| 32210 IVDELE = IVDELE + 1 05450008 |
| WRITE (I02,80003) IVTNUM 05460008 |
| IF (ICZERO) 42210, 2221, 42210 05470008 |
| 42210 IF (IVCOMP - 9) 22210,12210,22210 05480008 |
| 12210 IVPASS = IVPASS + 1 05490008 |
| WRITE (I02,80001) IVTNUM 05500008 |
| GO TO 2221 05510008 |
| 22210 IVFAIL = IVFAIL + 1 05520008 |
| IVCORR = 9 05530008 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 05540008 |
| 2221 CONTINUE 05550008 |
| IVTNUM = 222 05560008 |
| C 05570008 |
| C **** TEST 222 **** 05580008 |
| C 05590008 |
| IF (ICZERO) 32220, 2220, 32220 05600008 |
| 2220 CONTINUE 05610008 |
| IVON01 = 4 05620008 |
| IVCOMP= 2+3+IVON01 05630008 |
| GO TO 42220 05640008 |
| 32220 IVDELE = IVDELE + 1 05650008 |
| WRITE (I02,80003) IVTNUM 05660008 |
| IF (ICZERO) 42220, 2231, 42220 05670008 |
| 42220 IF (IVCOMP - 9) 22220,12220,22220 05680008 |
| 12220 IVPASS = IVPASS + 1 05690008 |
| WRITE (I02,80001) IVTNUM 05700008 |
| GO TO 2231 05710008 |
| 22220 IVFAIL = IVFAIL + 1 05720008 |
| IVCORR = 9 05730008 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 05740008 |
| 2231 CONTINUE 05750008 |
| IVTNUM = 223 05760008 |
| C 05770008 |
| C **** TEST 223 **** 05780008 |
| C 05790008 |
| IF (ICZERO) 32230, 2230, 32230 05800008 |
| 2230 CONTINUE 05810008 |
| IVON01 = 2189 05820008 |
| IVCOMP = 1358+IVON01+8001 05830008 |
| GO TO 42230 05840008 |
| 32230 IVDELE = IVDELE + 1 05850008 |
| WRITE (I02,80003) IVTNUM 05860008 |
| IF (ICZERO) 42230, 2241, 42230 05870008 |
| 42230 IF (IVCOMP - 11548) 22230,12230,22230 05880008 |
| 12230 IVPASS = IVPASS + 1 05890008 |
| WRITE (I02,80001) IVTNUM 05900008 |
| GO TO 2241 05910008 |
| 22230 IVFAIL = IVFAIL + 1 05920008 |
| IVCORR=11548 05930008 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 05940008 |
| 2241 CONTINUE 05950008 |
| IVTNUM = 224 05960008 |
| C 05970008 |
| C **** TEST 224 **** 05980008 |
| C 05990008 |
| IF (ICZERO) 32240, 2240, 32240 06000008 |
| 2240 CONTINUE 06010008 |
| IVON01 = 11111 06020008 |
| IVCOMP = 11111 + IVON01 + 10111 06030008 |
| GO TO 42240 06040008 |
| 32240 IVDELE = IVDELE + 1 06050008 |
| WRITE (I02,80003) IVTNUM 06060008 |
| IF (ICZERO) 42240, 2251, 42240 06070008 |
| 42240 IF (IVCOMP - 32333) 22240,12240,22240 06080008 |
| 12240 IVPASS = IVPASS + 1 06090008 |
| WRITE (I02,80001) IVTNUM 06100008 |
| GO TO 2251 06110008 |
| 22240 IVFAIL = IVFAIL + 1 06120008 |
| IVCORR = 32333 06130008 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 06140008 |
| C 06150008 |
| C TEST 225 THROUGH TEST 234 USE PARENTHESES TO GROUP ELEMENTS IN 06160008 |
| C AN ARITHMETIC EXPRESSION. THE RESULTS ARE THE SAME AS TESTS 06170008 |
| C 220 THROUGH 224. 06180008 |
| C 06190008 |
| 2251 CONTINUE 06200008 |
| IVTNUM = 225 06210008 |
| C 06220008 |
| C **** TEST 225 **** 06230008 |
| C 06240008 |
| IF (ICZERO) 32250, 2250, 32250 06250008 |
| 2250 CONTINUE 06260008 |
| IVON01 = 2 06270008 |
| IVCOMP = (IVON01 +3) + 4 06280008 |
| GO TO 42250 06290008 |
| 32250 IVDELE = IVDELE + 1 06300008 |
| WRITE (I02,80003) IVTNUM 06310008 |
| IF (ICZERO) 42250, 2261, 42250 06320008 |
| 42250 IF (IVCOMP -9) 22250,12250,22250 06330008 |
| 12250 IVPASS = IVPASS + 1 06340008 |
| WRITE (I02,80001) IVTNUM 06350008 |
| GO TO 2261 06360008 |
| 22250 IVFAIL = IVFAIL + 1 06370008 |
| IVCORR = 9 06380008 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 06390008 |
| 2261 CONTINUE 06400008 |
| IVTNUM = 226 06410008 |
| C 06420008 |
| C **** TEST 226 **** 06430008 |
| C 06440008 |
| IF (ICZERO) 32260, 2260, 32260 06450008 |
| 2260 CONTINUE 06460008 |
| IVON01 = 2 06470008 |
| IVCOMP = IVON01 + (3+4) 06480008 |
| GO TO 42260 06490008 |
| 32260 IVDELE = IVDELE + 1 06500008 |
| WRITE (I02,80003) IVTNUM 06510008 |
| IF (ICZERO) 42260, 2271, 42260 06520008 |
| 42260 IF (IVCOMP - 9) 22260,12260,22260 06530008 |
| 12260 IVPASS = IVPASS + 1 06540008 |
| WRITE (I02,80001) IVTNUM 06550008 |
| GO TO 2271 06560008 |
| 22260 IVFAIL = IVFAIL + 1 06570008 |
| IVCORR = 9 06580008 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 06590008 |
| 2271 CONTINUE 06600008 |
| IVTNUM = 227 06610008 |
| C 06620008 |
| C **** TEST 227 **** 06630008 |
| C 06640008 |
| IF (ICZERO) 32270, 2270, 32270 06650008 |
| 2270 CONTINUE 06660008 |
| IVON01 = 3 06670008 |
| IVCOMP = (2+IVON01) + 4 06680008 |
| GO TO 42270 06690008 |
| 32270 IVDELE = IVDELE + 1 06700008 |
| WRITE (I02,80003) IVTNUM 06710008 |
| IF (ICZERO) 42270, 2281, 42270 06720008 |
| 42270 IF (IVCOMP - 9) 22270,12270,22270 06730008 |
| 12270 IVPASS = IVPASS + 1 06740008 |
| WRITE (I02,80001) IVTNUM 06750008 |
| GO TO 2281 06760008 |
| 22270 IVFAIL = IVFAIL + 1 06770008 |
| IVCORR = 9 06780008 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 06790008 |
| 2281 CONTINUE 06800008 |
| IVTNUM = 228 06810008 |
| C 06820008 |
| C **** TEST 228 **** 06830008 |
| C 06840008 |
| IF (ICZERO) 32280, 2280, 32280 06850008 |
| 2280 CONTINUE 06860008 |
| IVON01 = 3 06870008 |
| IVCOMP = 2 +(IVON01+4) 06880008 |
| GO TO 42280 06890008 |
| 32280 IVDELE = IVDELE + 1 06900008 |
| WRITE (I02,80003) IVTNUM 06910008 |
| IF (ICZERO) 42280, 2291, 42280 06920008 |
| 42280 IF (IVCOMP - 9) 22280, 12280, 22280 06930008 |
| 12280 IVPASS = IVPASS + 1 06940008 |
| WRITE (I02,80001) IVTNUM 06950008 |
| GO TO 2291 06960008 |
| 22280 IVFAIL = IVFAIL + 1 06970008 |
| IVCORR = 9 06980008 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 06990008 |
| 2291 CONTINUE 07000008 |
| IVTNUM = 229 07010008 |
| C 07020008 |
| C **** TEST 229 **** 07030008 |
| C 07040008 |
| IF (ICZERO) 32290, 2290, 32290 07050008 |
| 2290 CONTINUE 07060008 |
| IVON01 = 4 07070008 |
| IVCOMP = (2+3)+IVON01 07080008 |
| GO TO 42290 07090008 |
| 32290 IVDELE = IVDELE + 1 07100008 |
| WRITE (I02,80003) IVTNUM 07110008 |
| IF (ICZERO) 42290, 2301, 42290 07120008 |
| 42290 IF (IVCOMP - 9) 22290,12290,22290 07130008 |
| 12290 IVPASS = IVPASS + 1 07140008 |
| WRITE (I02,80001) IVTNUM 07150008 |
| GO TO 2301 07160008 |
| 22290 IVFAIL = IVFAIL + 1 07170008 |
| IVCORR = 9 07180008 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 07190008 |
| 2301 CONTINUE 07200008 |
| IVTNUM = 230 07210008 |
| C 07220008 |
| C **** TEST 230 **** 07230008 |
| C 07240008 |
| IF (ICZERO) 32300, 2300, 32300 07250008 |
| 2300 CONTINUE 07260008 |
| IVON01 = 2189 07270008 |
| IVCOMP = 1358 + (IVON01+8001) 07280008 |
| GO TO 42300 07290008 |
| 32300 IVDELE = IVDELE + 1 07300008 |
| WRITE (I02,80003) IVTNUM 07310008 |
| IF (ICZERO) 42300, 2311, 42300 07320008 |
| 42300 IF (IVCOMP - 11548) 22300,12300,22300 07330008 |
| 12300 IVPASS = IVPASS + 1 07340008 |
| WRITE (I02,80001) IVTNUM 07350008 |
| GO TO 2311 07360008 |
| 22300 IVFAIL = IVFAIL + 1 07370008 |
| IVCORR = 11548 07380008 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 07390008 |
| 2311 CONTINUE 07400008 |
| IVTNUM = 231 07410008 |
| C 07420008 |
| C **** TEST 231 **** 07430008 |
| C 07440008 |
| IF (ICZERO) 32310, 2310, 32310 07450008 |
| 2310 CONTINUE 07460008 |
| IVON01 = 2189 07470008 |
| IVCOMP = (1358+IVON01) + 8001 07480008 |
| GO TO 42310 07490008 |
| 32310 IVDELE = IVDELE + 1 07500008 |
| WRITE (I02,80003) IVTNUM 07510008 |
| IF (ICZERO) 42310, 2321, 42310 07520008 |
| 42310 IF (IVCOMP - 11548) 22310,12310,22310 07530008 |
| 12310 IVPASS = IVPASS + 1 07540008 |
| WRITE (I02,80001) IVTNUM 07550008 |
| GO TO 2321 07560008 |
| 22310 IVFAIL = IVFAIL + 1 07570008 |
| IVCORR = 11548 07580008 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 07590008 |
| 2321 CONTINUE 07600008 |
| IVTNUM = 232 07610008 |
| C 07620008 |
| C **** TEST 232 **** 07630008 |
| C 07640008 |
| IF (ICZERO) 32320, 2320, 32320 07650008 |
| 2320 CONTINUE 07660008 |
| IVON01 = 11111 07670008 |
| IVCOMP = (11111 + IVON01) + 10111 07680008 |
| GO TO 42320 07690008 |
| 32320 IVDELE = IVDELE + 1 07700008 |
| WRITE (I02,80003) IVTNUM 07710008 |
| IF (ICZERO) 42320, 2331, 42320 07720008 |
| 42320 IF (IVCOMP - 32333) 22320,12320,22320 07730008 |
| 12320 IVPASS = IVPASS + 1 07740008 |
| WRITE (I02,80001) IVTNUM 07750008 |
| GO TO 2331 07760008 |
| 22320 IVFAIL = IVFAIL + 1 07770008 |
| IVCORR = 32333 07780008 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 07790008 |
| 2331 CONTINUE 07800008 |
| IVTNUM = 233 07810008 |
| C 07820008 |
| C **** TEST 233 **** 07830008 |
| C 07840008 |
| IF (ICZERO) 32330, 2330, 32330 07850008 |
| 2330 CONTINUE 07860008 |
| IVON01 = 11111 07870008 |
| IVCOMP = (IVON01 + 10111) + 11111 07880008 |
| GO TO 42330 07890008 |
| 32330 IVDELE = IVDELE + 1 07900008 |
| WRITE (I02,80003) IVTNUM 07910008 |
| IF (ICZERO) 42330, 2341, 42330 07920008 |
| 42330 IF (IVCOMP - 32333) 22330,12330,22330 07930008 |
| 12330 IVPASS = IVPASS + 1 07940008 |
| WRITE (I02,80001) IVTNUM 07950008 |
| GO TO 2341 07960008 |
| 22330 IVFAIL = IVFAIL + 1 07970008 |
| IVCORR = 32333 07980008 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 07990008 |
| 2341 CONTINUE 08000008 |
| IVTNUM = 234 08010008 |
| C 08020008 |
| C **** TEST 234 **** 08030008 |
| C 08040008 |
| IF (ICZERO) 32340, 2340, 32340 08050008 |
| 2340 CONTINUE 08060008 |
| IVON01 = 10111 08070008 |
| IVCOMP = 11111 + (11111+IVON01) 08080008 |
| GO TO 42340 08090008 |
| 32340 IVDELE = IVDELE + 1 08100008 |
| WRITE (I02,80003) IVTNUM 08110008 |
| IF (ICZERO) 42340, 2351, 42340 08120008 |
| 42340 IF (IVCOMP - 32333) 22340,12340,22340 08130008 |
| 12340 IVPASS = IVPASS + 1 08140008 |
| WRITE (I02,80001) IVTNUM 08150008 |
| GO TO 2351 08160008 |
| 22340 IVFAIL = IVFAIL + 1 08170008 |
| IVCORR = 32333 08180008 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 08190008 |
| 2351 CONTINUE 08200008 |
| C 08210008 |
| C WRITE PAGE FOOTINGS AND RUN SUMMARIES 08220008 |
| 99999 CONTINUE 08230008 |
| WRITE (I02,90002) 08240008 |
| WRITE (I02,90006) 08250008 |
| WRITE (I02,90002) 08260008 |
| WRITE (I02,90002) 08270008 |
| WRITE (I02,90007) 08280008 |
| WRITE (I02,90002) 08290008 |
| WRITE (I02,90008) IVFAIL 08300008 |
| WRITE (I02,90009) IVPASS 08310008 |
| WRITE (I02,90010) IVDELE 08320008 |
| C 08330008 |
| C 08340008 |
| C TERMINATE ROUTINE EXECUTION 08350008 |
| STOP 08360008 |
| C 08370008 |
| C FORMAT STATEMENTS FOR PAGE HEADERS 08380008 |
| 90000 FORMAT ("1") 08390008 |
| 90002 FORMAT (" ") 08400008 |
| 90001 FORMAT (" ",10X,"FORTRAN COMPILER VALIDATION SYSTEM" ) 08410008 |
| 90003 FORMAT (" ",21X,"VERSION 2.1" ) 08420008 |
| 90004 FORMAT (" ",10X,"FOR OFFICIAL USE ONLY - COPYRIGHT 1978" ) 08430008 |
| 90005 FORMAT (" ",5X,"TEST",5X,"PASS/FAIL", 5X,"COMPUTED",8X,"CORRECT") 08440008 |
| 90006 FORMAT (" ",5X,"----------------------------------------------" ) 08450008 |
| 90011 FORMAT (" ",18X,"SUBSET LEVEL TEST" ) 08460008 |
| C 08470008 |
| C FORMAT STATEMENTS FOR RUN SUMMARIES 08480008 |
| 90008 FORMAT (" ",15X,I5," ERRORS ENCOUNTERED" ) 08490008 |
| 90009 FORMAT (" ",15X,I5," TESTS PASSED" ) 08500008 |
| 90010 FORMAT (" ",15X,I5," TESTS DELETED" ) 08510008 |
| C 08520008 |
| C FORMAT STATEMENTS FOR TEST RESULTS 08530008 |
| 80001 FORMAT (" ",4X,I5,7X,"PASS") 08540008 |
| 80002 FORMAT (" ",4X,I5,7X,"FAIL") 08550008 |
| 80003 FORMAT (" ",4X,I5,7X,"DELETED") 08560008 |
| 80004 FORMAT (" ",4X,I5,7X,"FAIL",10X,I6,9X,I6) 08570008 |
| 80005 FORMAT (" ",4X,I5,7X,"FAIL",4X,E12.5,3X,E12.5) 08580008 |
| C 08590008 |
| 90007 FORMAT (" ",20X,"END OF PROGRAM FM008" ) 08600008 |
| END 08610008 |