| PROGRAM FM030 |
| |
| C COMMENT SECTION. 00010030 |
| C 00020030 |
| C FM030 00030030 |
| C 00040030 |
| C THIS ROUTINE TESTS ARITHMETIC ASSIGNMENT STATEMENTS OF THE 00050030 |
| C FORM 00060030 |
| C INTEGER VARIABLE = ARITHMETIC EXPRESSION 00070030 |
| C WHERE THE ARITHMETIC EXPRESSION IS FORMED WITH THE ARITHMETIC 00080030 |
| C OPERATOR -, INTEGER CONSTANTS AND INTEGER VARIABLES. 00090030 |
| C SOME OF THE TESTS USE PARENTHESES TO GROUP ELEMENTS IN THE 00100030 |
| C ARITHMETIC EXPRESSION. 00110030 |
| C 00120030 |
| C THERE ARE TESTS WHERE THE ARITHMETIC EXPRESSION CONTAINS 00130030 |
| C (1) INTEGER CONSTANT - INTEGER CONSTANT 00140030 |
| C (2) INTEGER CONSTANT - INTEGER CONSTANT - INTEGER CONSTANT00150030 |
| C (3) SAME AS (2) BUT WITH PARENTHESES TO GROUP ELEMENTS 00160030 |
| C (4) INTEGER VARIABLE - INTEGER CONSTANT 00170030 |
| C INTEGER CONSTANT - INTEGER VARIABLE 00180030 |
| C 00190030 |
| C REFERENCES 00200030 |
| C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, 00210030 |
| C X3.9-1978 00220030 |
| C 00230030 |
| C SECTION 4.3, INTEGER TYPE 00240030 |
| C SECTION 4.3.1, INTEGER CONSTANT 00250030 |
| C SECTION 6.1, ARITHMETIC EXPRESSIONS 00260030 |
| C SECTION 10.1, ARITHMETIC ASSIGNMENT STATEMENT 00270030 |
| C 00280030 |
| C 00290030 |
| C ********************************************************** 00300030 |
| C 00310030 |
| C A COMPILER VALIDATION SYSTEM FOR THE FORTRAN LANGUAGE 00320030 |
| C BASED ON SPECIFICATIONS AS DEFINED IN AMERICAN NATIONAL STANDARD 00330030 |
| C PROGRAMMING LANGUAGE FORTRAN X3.9-1978, HAS BEEN DEVELOPED BY THE 00340030 |
| C FEDERAL COBOL COMPILER TESTING SERVICE. THE FORTRAN COMPILER 00350030 |
| C VALIDATION SYSTEM (FCVS) CONSISTS OF AUDIT ROUTINES, THEIR RELATED00360030 |
| C DATA, AND AN EXECUTIVE SYSTEM. EACH AUDIT ROUTINE IS A FORTRAN 00370030 |
| C PROGRAM, SUBPROGRAM OR FUNCTION WHICH INCLUDES TESTS OF SPECIFIC 00380030 |
| C LANGUAGE ELEMENTS AND SUPPORTING PROCEDURES INDICATING THE RESULT 00390030 |
| C OF EXECUTING THESE TESTS. 00400030 |
| C 00410030 |
| C THIS PARTICULAR PROGRAM/SUBPROGRAM/FUNCTION CONTAINS FEATURES 00420030 |
| C FOUND ONLY IN THE SUBSET AS DEFINED IN X3.9-1978. 00430030 |
| C 00440030 |
| C SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO - 00450030 |
| C 00460030 |
| C NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY 00470030 |
| C SOFTWARE STANDARDS VALIDATION GROUP 00480030 |
| C BUILDING 225 RM A266 00490030 |
| C GAITHERSBURG, MD 20899 00500030 |
| C ********************************************************** 00510030 |
| C 00520030 |
| C 00530030 |
| C 00540030 |
| C INITIALIZATION SECTION 00550030 |
| C 00560030 |
| C INITIALIZE CONSTANTS 00570030 |
| C ************** 00580030 |
| C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. 00590030 |
| I01 = 5 00600030 |
| C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. 00610030 |
| I02 = 6 00620030 |
| C SYSTEM ENVIRONMENT SECTION 00630030 |
| C 00640030 |
| CX010 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-010 CONTROL CARD. 00650030 |
| C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 00660030 |
| C (UNIT NUMBER FOR CARD READER). 00670030 |
| CX011 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-011 CONTROL CARD. 00680030 |
| C THE CX011 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL 00690030 |
| C FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX010 ABOVE. 00700030 |
| C 00710030 |
| CX020 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-020 CONTROL CARD. 00720030 |
| C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02 = 6 00730030 |
| C (UNIT NUMBER FOR PRINTER). 00740030 |
| CX021 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-021 CONTROL CARD. 00750030 |
| C THE CX021 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL 00760030 |
| C FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX020 ABOVE. 00770030 |
| C 00780030 |
| IVPASS=0 00790030 |
| IVFAIL=0 00800030 |
| IVDELE=0 00810030 |
| ICZERO=0 00820030 |
| C 00830030 |
| C WRITE PAGE HEADERS 00840030 |
| WRITE (I02,90000) 00850030 |
| WRITE (I02,90001) 00860030 |
| WRITE (I02,90002) 00870030 |
| WRITE (I02, 90002) 00880030 |
| WRITE (I02,90003) 00890030 |
| WRITE (I02,90002) 00900030 |
| WRITE (I02,90004) 00910030 |
| WRITE (I02,90002) 00920030 |
| WRITE (I02,90011) 00930030 |
| WRITE (I02,90002) 00940030 |
| WRITE (I02,90002) 00950030 |
| WRITE (I02,90005) 00960030 |
| WRITE (I02,90006) 00970030 |
| WRITE (I02,90002) 00980030 |
| C TEST SECTION 00990030 |
| C 01000030 |
| C ARITHMETIC ASSIGNMENT STATEMENT 01010030 |
| C 01020030 |
| C TEST 265 THROUGH TEST 270 CONTAIN TWO INTEGER CONSTANTS AND 01030030 |
| C OPERATOR - IN AN ARITHMETIC EXPRESSION. THE FORM TESTED IS 01040030 |
| C INTEGER VARIABLE = INTEGER CONSTANT - INTEGER CONSTANT 01050030 |
| C 01060030 |
| 2651 CONTINUE 01070030 |
| IVTNUM = 265 01080030 |
| C 01090030 |
| C **** TEST 265 **** 01100030 |
| C 01110030 |
| IF (ICZERO) 32650, 2650, 32650 01120030 |
| 2650 CONTINUE 01130030 |
| IVCOMP = 3-2 01140030 |
| GO TO 42650 01150030 |
| 32650 IVDELE = IVDELE + 1 01160030 |
| WRITE (I02,80003) IVTNUM 01170030 |
| IF (ICZERO) 42650, 2661, 42650 01180030 |
| 42650 IF (IVCOMP - 1) 22650,12650,22650 01190030 |
| 12650 IVPASS = IVPASS + 1 01200030 |
| WRITE (I02,80001) IVTNUM 01210030 |
| GO TO 2661 01220030 |
| 22650 IVFAIL = IVFAIL + 1 01230030 |
| IVCORR = 1 01240030 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 01250030 |
| 2661 CONTINUE 01260030 |
| IVTNUM = 266 01270030 |
| C 01280030 |
| C **** TEST 266 **** 01290030 |
| C 01300030 |
| IF (ICZERO) 32660, 2660, 32660 01310030 |
| 2660 CONTINUE 01320030 |
| IVCOMP = 51 - 52 01330030 |
| GO TO 42660 01340030 |
| 32660 IVDELE = IVDELE + 1 01350030 |
| WRITE (I02,80003) IVTNUM 01360030 |
| IF (ICZERO) 42660, 2671, 42660 01370030 |
| 42660 IF (IVCOMP +1) 22660,12660,22660 01380030 |
| 12660 IVPASS = IVPASS + 1 01390030 |
| WRITE (I02,80001) IVTNUM 01400030 |
| GO TO 2671 01410030 |
| 22660 IVFAIL = IVFAIL + 1 01420030 |
| IVCORR = -1 01430030 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 01440030 |
| 2671 CONTINUE 01450030 |
| IVTNUM = 267 01460030 |
| C 01470030 |
| C **** TEST 267 *** 01480030 |
| C 01490030 |
| IF (ICZERO) 32670, 2670, 32670 01500030 |
| 2670 CONTINUE 01510030 |
| IVCOMP = 865 - 189 01520030 |
| GO TO 42670 01530030 |
| 32670 IVDELE = IVDELE + 1 01540030 |
| WRITE (I02,80003) IVTNUM 01550030 |
| IF (ICZERO) 42670, 2681, 42670 01560030 |
| 42670 IF (IVCOMP -676) 22670,12670,22670 01570030 |
| 12670 IVPASS = IVPASS + 1 01580030 |
| WRITE (I02,80001) IVTNUM 01590030 |
| GO TO 2681 01600030 |
| 22670 IVFAIL = IVFAIL + 1 01610030 |
| IVCORR = 676 01620030 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 01630030 |
| 2681 CONTINUE 01640030 |
| IVTNUM = 268 01650030 |
| C 01660030 |
| C **** TEST 268 **** 01670030 |
| C 01680030 |
| IF (ICZERO) 32680, 2680, 32680 01690030 |
| 2680 CONTINUE 01700030 |
| IVCOMP =1358-9359 01710030 |
| GO TO 42680 01720030 |
| 32680 IVDELE = IVDELE + 1 01730030 |
| WRITE (I02,80003) IVTNUM 01740030 |
| IF (ICZERO) 42680, 2691, 42680 01750030 |
| 42680 IF (IVCOMP+8001) 22680,12680,22680 01760030 |
| 12680 IVPASS = IVPASS + 1 01770030 |
| WRITE (I02,80001) IVTNUM 01780030 |
| GO TO 2691 01790030 |
| 22680 IVFAIL = IVFAIL + 1 01800030 |
| IVCORR = -8001 01810030 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 01820030 |
| 2691 CONTINUE 01830030 |
| IVTNUM = 269 01840030 |
| C 01850030 |
| C **** TEST 269 **** 01860030 |
| C 01870030 |
| IF (ICZERO) 32690, 2690, 32690 01880030 |
| 2690 CONTINUE 01890030 |
| IVCOMP =21113-10001 01900030 |
| GO TO 42690 01910030 |
| 32690 IVDELE = IVDELE + 1 01920030 |
| WRITE (I02,80003) IVTNUM 01930030 |
| IF (ICZERO) 42690, 2701, 42690 01940030 |
| 42690 IF (IVCOMP-11112) 22690,12690,22690 01950030 |
| 12690 IVPASS = IVPASS + 1 01960030 |
| WRITE (I02,80001) IVTNUM 01970030 |
| GO TO 2701 01980030 |
| 22690 IVFAIL = IVFAIL + 1 01990030 |
| IVCORR=11112 02000030 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 02010030 |
| 2701 CONTINUE 02020030 |
| IVTNUM = 270 02030030 |
| C 02040030 |
| C **** TEST 270 **** 02050030 |
| C 02060030 |
| IF (ICZERO) 32700, 2700, 32700 02070030 |
| 2700 CONTINUE 02080030 |
| IVCOMP = 32767-1 02090030 |
| GO TO 42700 02100030 |
| 32700 IVDELE = IVDELE + 1 02110030 |
| WRITE (I02,80003) IVTNUM 02120030 |
| IF (ICZERO) 42700, 2711, 42700 02130030 |
| 42700 IF (IVCOMP -32766) 22700,12700,22700 02140030 |
| 12700 IVPASS = IVPASS + 1 02150030 |
| WRITE (I02,80001) IVTNUM 02160030 |
| GO TO 2711 02170030 |
| 22700 IVFAIL = IVFAIL + 1 02180030 |
| IVCORR = 32766 02190030 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 02200030 |
| C 02210030 |
| C TEST 271 THROUGH TEST 274 CONTAIN THREE INTEGER CONSTANTS 02220030 |
| C AND OPERATOR - IN AN ARITHMETIC EXPRESSION. THE FORM TESTED IS 02230030 |
| C IV = IC - IC - IC 02240030 |
| C 02250030 |
| 2711 CONTINUE 02260030 |
| IVTNUM = 271 02270030 |
| C 02280030 |
| C **** TEST 271 **** 02290030 |
| C 02300030 |
| IF (ICZERO) 32710, 2710, 32710 02310030 |
| 2710 CONTINUE 02320030 |
| IVCOMP=9-4-3 02330030 |
| GO TO 42710 02340030 |
| 32710 IVDELE = IVDELE + 1 02350030 |
| WRITE (I02,80003) IVTNUM 02360030 |
| IF (ICZERO) 42710, 2721, 42710 02370030 |
| 42710 IF (IVCOMP -2) 22710,12710,22710 02380030 |
| 12710 IVPASS = IVPASS + 1 02390030 |
| WRITE (I02,80001) IVTNUM 02400030 |
| GO TO 2721 02410030 |
| 22710 IVFAIL = IVFAIL + 1 02420030 |
| IVCORR =2 02430030 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 02440030 |
| 2721 CONTINUE 02450030 |
| IVTNUM = 272 02460030 |
| C 02470030 |
| C **** TEST 272 **** 02480030 |
| C 02490030 |
| IF (ICZERO) 32720, 2720, 32720 02500030 |
| 2720 CONTINUE 02510030 |
| IVCOMP = 51-52-53 02520030 |
| GO TO 42720 02530030 |
| 32720 IVDELE = IVDELE + 1 02540030 |
| WRITE (I02,80003) IVTNUM 02550030 |
| IF (ICZERO) 42720, 2731, 42720 02560030 |
| 42720 IF (IVCOMP +54) 22720,12720,22720 02570030 |
| 12720 IVPASS = IVPASS + 1 02580030 |
| WRITE (I02,80001) IVTNUM 02590030 |
| GO TO 2731 02600030 |
| 22720 IVFAIL = IVFAIL + 1 02610030 |
| IVCORR = -54 02620030 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 02630030 |
| 2731 CONTINUE 02640030 |
| IVTNUM = 273 02650030 |
| C 02660030 |
| C **** TEST 273 **** 02670030 |
| C 02680030 |
| IF (ICZERO) 32730, 2730, 32730 02690030 |
| 2730 CONTINUE 02700030 |
| IVCOMP = 966 -676 -189 02710030 |
| GO TO 42730 02720030 |
| 32730 IVDELE = IVDELE + 1 02730030 |
| WRITE (I02,80003) IVTNUM 02740030 |
| IF (ICZERO) 42730, 2741, 42730 02750030 |
| 42730 IF (IVCOMP -101) 22730,12730,22730 02760030 |
| 12730 IVPASS = IVPASS + 1 02770030 |
| WRITE (I02,80001) IVTNUM 02780030 |
| GO TO 2741 02790030 |
| 22730 IVFAIL = IVFAIL + 1 02800030 |
| IVCORR = 101 02810030 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 02820030 |
| 2741 CONTINUE 02830030 |
| IVTNUM = 274 02840030 |
| C 02850030 |
| C **** TEST 274 **** 02860030 |
| C 02870030 |
| IF (ICZERO) 32740, 2740, 32740 02880030 |
| 2740 CONTINUE 02890030 |
| IVCOMP = 1358-8001-2188 02900030 |
| GO TO 42740 02910030 |
| 32740 IVDELE = IVDELE + 1 02920030 |
| WRITE (I02,80003) IVTNUM 02930030 |
| IF (ICZERO) 42740, 2751, 42740 02940030 |
| 42740 IF (IVCOMP + 8831) 22740,12740,22740 02950030 |
| 12740 IVPASS = IVPASS + 1 02960030 |
| WRITE (I02,80001) IVTNUM 02970030 |
| GO TO 2751 02980030 |
| 22740 IVFAIL = IVFAIL + 1 02990030 |
| IVCORR = -8831 03000030 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 03010030 |
| C 03020030 |
| C TEST 275 THROUGH TEST 282 ARE THE SAME AS TESTS 271-274 EXCEPT 03030030 |
| C PARENTHESES ARE USED TO GROUP THE CONSTANTS. 03040030 |
| C 03050030 |
| 2751 CONTINUE 03060030 |
| IVTNUM = 275 03070030 |
| C 03080030 |
| C **** TEST 275 **** 03090030 |
| C 03100030 |
| IF (ICZERO) 32750, 2750, 32750 03110030 |
| 2750 CONTINUE 03120030 |
| IVCOMP =(9-4)-3 03130030 |
| GO TO 42750 03140030 |
| 32750 IVDELE = IVDELE + 1 03150030 |
| WRITE (I02,80003) IVTNUM 03160030 |
| IF (ICZERO) 42750, 2761, 42750 03170030 |
| 42750 IF (IVCOMP -2) 22750,12750,22750 03180030 |
| 12750 IVPASS = IVPASS + 1 03190030 |
| WRITE (I02,80001) IVTNUM 03200030 |
| GO TO 2761 03210030 |
| 22750 IVFAIL = IVFAIL + 1 03220030 |
| IVCORR = 2 03230030 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 03240030 |
| 2761 CONTINUE 03250030 |
| IVTNUM = 276 03260030 |
| C 03270030 |
| C **** TEST 276 **** 03280030 |
| C 03290030 |
| IF (ICZERO) 32760, 2760, 32760 03300030 |
| 2760 CONTINUE 03310030 |
| IVCOMP =9-(4-3) 03320030 |
| GO TO 42760 03330030 |
| 32760 IVDELE = IVDELE + 1 03340030 |
| WRITE (I02,80003) IVTNUM 03350030 |
| IF (ICZERO) 42760, 2771, 42760 03360030 |
| 42760 IF (IVCOMP -8) 22760,12760,22760 03370030 |
| 12760 IVPASS = IVPASS + 1 03380030 |
| WRITE (I02,80001) IVTNUM 03390030 |
| GO TO 2771 03400030 |
| 22760 IVFAIL = IVFAIL + 1 03410030 |
| IVCORR =8 03420030 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 03430030 |
| 2771 CONTINUE 03440030 |
| IVTNUM = 277 03450030 |
| C 03460030 |
| C **** TEST 277 **** 03470030 |
| C 03480030 |
| IF (ICZERO) 32770, 2770, 32770 03490030 |
| 2770 CONTINUE 03500030 |
| IVCOMP =(51-52)-53 03510030 |
| GO TO 42770 03520030 |
| 32770 IVDELE = IVDELE + 1 03530030 |
| WRITE (I02,80003) IVTNUM 03540030 |
| IF (ICZERO) 42770, 2781, 42770 03550030 |
| 42770 IF (IVCOMP +54) 22770,12770,22770 03560030 |
| 12770 IVPASS = IVPASS + 1 03570030 |
| WRITE (I02,80001) IVTNUM 03580030 |
| GO TO 2781 03590030 |
| 22770 IVFAIL = IVFAIL + 1 03600030 |
| IVCORR = -54 03610030 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 03620030 |
| 2781 CONTINUE 03630030 |
| IVTNUM = 278 03640030 |
| C 03650030 |
| C **** TEST 278 **** 03660030 |
| C 03670030 |
| IF (ICZERO) 32780, 2780, 32780 03680030 |
| 2780 CONTINUE 03690030 |
| IVCOMP=51-(52-53) 03700030 |
| GO TO 42780 03710030 |
| 32780 IVDELE = IVDELE + 1 03720030 |
| WRITE (I02,80003) IVTNUM 03730030 |
| IF (ICZERO) 42780, 2791, 42780 03740030 |
| 42780 IF (IVCOMP-52) 22780,12780,22780 03750030 |
| 12780 IVPASS = IVPASS + 1 03760030 |
| WRITE (I02,80001) IVTNUM 03770030 |
| GO TO 2791 03780030 |
| 22780 IVFAIL = IVFAIL + 1 03790030 |
| IVCORR = 52 03800030 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 03810030 |
| 2791 CONTINUE 03820030 |
| IVTNUM = 279 03830030 |
| C 03840030 |
| C **** TEST 279 **** 03850030 |
| C 03860030 |
| IF (ICZERO) 32790, 2790, 32790 03870030 |
| 2790 CONTINUE 03880030 |
| IVCOMP =(966-676)-189 03890030 |
| GO TO 42790 03900030 |
| 32790 IVDELE = IVDELE + 1 03910030 |
| WRITE (I02,80003) IVTNUM 03920030 |
| IF (ICZERO) 42790, 2801, 42790 03930030 |
| 42790 IF (IVCOMP - 101) 22790,12790,22790 03940030 |
| 12790 IVPASS = IVPASS + 1 03950030 |
| WRITE (I02,80001) IVTNUM 03960030 |
| GO TO 2801 03970030 |
| 22790 IVFAIL = IVFAIL + 1 03980030 |
| IVCORR = 101 03990030 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 04000030 |
| 2801 CONTINUE 04010030 |
| IVTNUM = 280 04020030 |
| C 04030030 |
| C **** TEST 280 **** 04040030 |
| C 04050030 |
| IF (ICZERO) 32800, 2800, 32800 04060030 |
| 2800 CONTINUE 04070030 |
| IVCOMP =966-(676-189) 04080030 |
| GO TO 42800 04090030 |
| 32800 IVDELE = IVDELE + 1 04100030 |
| WRITE (I02,80003) IVTNUM 04110030 |
| IF (ICZERO) 42800, 2811, 42800 04120030 |
| 42800 IF (IVCOMP - 479) 22800,12800,22800 04130030 |
| 12800 IVPASS = IVPASS + 1 04140030 |
| WRITE (I02,80001) IVTNUM 04150030 |
| GO TO 2811 04160030 |
| 22800 IVFAIL = IVFAIL + 1 04170030 |
| IVCORR = 479 04180030 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 04190030 |
| 2811 CONTINUE 04200030 |
| IVTNUM = 281 04210030 |
| C 04220030 |
| C **** TEST 281 **** 04230030 |
| C 04240030 |
| IF (ICZERO) 32810, 2810, 32810 04250030 |
| 2810 CONTINUE 04260030 |
| IVCOMP = (1358-8001)-2188 04270030 |
| GO TO 42810 04280030 |
| 32810 IVDELE = IVDELE + 1 04290030 |
| WRITE (I02,80003) IVTNUM 04300030 |
| IF (ICZERO) 42810, 2821, 42810 04310030 |
| 42810 IF (IVCOMP + 8831) 22810,12810,22810 04320030 |
| 12810 IVPASS = IVPASS + 1 04330030 |
| WRITE (I02,80001) IVTNUM 04340030 |
| GO TO 2821 04350030 |
| 22810 IVFAIL = IVFAIL + 1 04360030 |
| IVCORR = -8831 04370030 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 04380030 |
| 2821 CONTINUE 04390030 |
| IVTNUM = 282 04400030 |
| C 04410030 |
| C **** TEST 282 **** 04420030 |
| C 04430030 |
| IF (ICZERO) 32820, 2820, 32820 04440030 |
| 2820 CONTINUE 04450030 |
| IVCOMP = 1358-(8001-2188) 04460030 |
| GO TO 42820 04470030 |
| 32820 IVDELE = IVDELE + 1 04480030 |
| WRITE (I02,80003) IVTNUM 04490030 |
| IF (ICZERO) 42820, 2831, 42820 04500030 |
| 42820 IF (IVCOMP + 4455) 22820,12820,22820 04510030 |
| 12820 IVPASS = IVPASS + 1 04520030 |
| WRITE (I02,80001) IVTNUM 04530030 |
| GO TO 2831 04540030 |
| 22820 IVFAIL = IVFAIL + 1 04550030 |
| IVCORR = -4455 04560030 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 04570030 |
| C 04580030 |
| C TEST 283 THROUGH TEST 299 CONTAIN INTEGER VARIABLE, INTEGER 04590030 |
| C CONSTANT AND OPERATOR - IN ARITHMETIC EXPRESSION. THE INTEGER 04600030 |
| C VARIABLE CONTAINS BOTH POSITIVE AND NEGATIVE VALUES. 04610030 |
| C THE FORMS TESTED ARE 04620030 |
| C INTEGER VARIABLE = INTEGER VARIABLE - INTEGER CONSTANT 04630030 |
| C INTEGER VARIABLE = INTEGER CONSTANT - INTEGER VARIABLE 04640030 |
| C 04650030 |
| 2831 CONTINUE 04660030 |
| IVTNUM = 283 04670030 |
| C 04680030 |
| C **** TEST 283 **** 04690030 |
| C 04700030 |
| IF (ICZERO) 32830, 2830, 32830 04710030 |
| 2830 CONTINUE 04720030 |
| IVON01 = 3 04730030 |
| IVCOMP = IVON01 - 2 04740030 |
| GO TO 42830 04750030 |
| 32830 IVDELE = IVDELE + 1 04760030 |
| WRITE (I02,80003) IVTNUM 04770030 |
| IF (ICZERO) 42830, 2841, 42830 04780030 |
| 42830 IF (IVCOMP - 1) 22830,12830,22830 04790030 |
| 12830 IVPASS = IVPASS + 1 04800030 |
| WRITE (I02,80001) IVTNUM 04810030 |
| GO TO 2841 04820030 |
| 22830 IVFAIL = IVFAIL + 1 04830030 |
| IVCORR = 1 04840030 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 04850030 |
| 2841 CONTINUE 04860030 |
| IVTNUM = 284 04870030 |
| C 04880030 |
| C **** TEST 284 **** 04890030 |
| C 04900030 |
| IF (ICZERO) 32840, 2840, 32840 04910030 |
| 2840 CONTINUE 04920030 |
| IVON01 = 2 04930030 |
| IVCOMP = IVON01 -3 04940030 |
| GO TO 42840 04950030 |
| 32840 IVDELE = IVDELE + 1 04960030 |
| WRITE (I02,80003) IVTNUM 04970030 |
| IF (ICZERO) 42840, 2851, 42840 04980030 |
| 42840 IF (IVCOMP +1) 22840,12840,22840 04990030 |
| 12840 IVPASS = IVPASS + 1 05000030 |
| WRITE (I02,80001) IVTNUM 05010030 |
| GO TO 2851 05020030 |
| 22840 IVFAIL = IVFAIL + 1 05030030 |
| IVCORR = -1 05040030 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 05050030 |
| 2851 CONTINUE 05060030 |
| IVTNUM = 285 05070030 |
| C 05080030 |
| C **** TEST 285 **** 05090030 |
| C 05100030 |
| IF (ICZERO) 32850, 2850, 32850 05110030 |
| 2850 CONTINUE 05120030 |
| IVON01 =-3 05130030 |
| IVCOMP = IVON01 -2 05140030 |
| GO TO 42850 05150030 |
| 32850 IVDELE = IVDELE + 1 05160030 |
| WRITE (I02,80003) IVTNUM 05170030 |
| IF (ICZERO) 42850, 2861, 42850 05180030 |
| 42850 IF (IVCOMP +5) 22850,12850,22850 05190030 |
| 12850 IVPASS = IVPASS + 1 05200030 |
| WRITE (I02,80001) IVTNUM 05210030 |
| GO TO 2861 05220030 |
| 22850 IVFAIL = IVFAIL + 1 05230030 |
| IVCORR =-5 05240030 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 05250030 |
| 2861 CONTINUE 05260030 |
| IVTNUM = 286 05270030 |
| C 05280030 |
| C **** TEST 286 **** 05290030 |
| C 05300030 |
| IF (ICZERO) 32860, 2860, 32860 05310030 |
| 2860 CONTINUE 05320030 |
| IVON02 =2 05330030 |
| IVCOMP = 3 - IVON02 05340030 |
| GO TO 42860 05350030 |
| 32860 IVDELE = IVDELE + 1 05360030 |
| WRITE (I02,80003) IVTNUM 05370030 |
| IF (ICZERO) 42860, 2871, 42860 05380030 |
| 42860 IF (IVCOMP -1) 22860,12860,22860 05390030 |
| 12860 IVPASS = IVPASS + 1 05400030 |
| WRITE (I02,80001) IVTNUM 05410030 |
| GO TO 2871 05420030 |
| 22860 IVFAIL = IVFAIL + 1 05430030 |
| IVCORR = 1 05440030 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 05450030 |
| 2871 CONTINUE 05460030 |
| IVTNUM = 287 05470030 |
| C 05480030 |
| C **** TEST 287 **** 05490030 |
| C 05500030 |
| IF (ICZERO) 32870, 2870, 32870 05510030 |
| 2870 CONTINUE 05520030 |
| IVON02 =3 05530030 |
| IVCOMP = 2 -IVON02 05540030 |
| GO TO 42870 05550030 |
| 32870 IVDELE = IVDELE + 1 05560030 |
| WRITE (I02,80003) IVTNUM 05570030 |
| IF (ICZERO) 42870, 2881, 42870 05580030 |
| 42870 IF (IVCOMP +1) 22870,12870,22870 05590030 |
| 12870 IVPASS = IVPASS + 1 05600030 |
| WRITE (I02,80001) IVTNUM 05610030 |
| GO TO 2881 05620030 |
| 22870 IVFAIL = IVFAIL + 1 05630030 |
| IVCORR =-1 05640030 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 05650030 |
| 2881 CONTINUE 05660030 |
| IVTNUM = 288 05670030 |
| C 05680030 |
| C **** TEST 288 **** 05690030 |
| C 05700030 |
| IF (ICZERO) 32880, 2880, 32880 05710030 |
| 2880 CONTINUE 05720030 |
| IVON02 = -2 05730030 |
| IVCOMP = 3 - IVON02 05740030 |
| GO TO 42880 05750030 |
| 32880 IVDELE = IVDELE + 1 05760030 |
| WRITE (I02,80003) IVTNUM 05770030 |
| IF (ICZERO) 42880, 2891, 42880 05780030 |
| 42880 IF (IVCOMP -5) 22880,12880,22880 05790030 |
| 12880 IVPASS = IVPASS + 1 05800030 |
| WRITE (I02,80001) IVTNUM 05810030 |
| GO TO 2891 05820030 |
| 22880 IVFAIL = IVFAIL + 1 05830030 |
| IVCORR =5 05840030 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 05850030 |
| 2891 CONTINUE 05860030 |
| IVTNUM = 289 05870030 |
| C 05880030 |
| C **** TEST 289 **** 05890030 |
| C 05900030 |
| IF (ICZERO) 32890, 2890, 32890 05910030 |
| 2890 CONTINUE 05920030 |
| IVON01 =51 05930030 |
| IVCOMP = IVON01 - 52 05940030 |
| GO TO 42890 05950030 |
| 32890 IVDELE = IVDELE + 1 05960030 |
| WRITE (I02,80003) IVTNUM 05970030 |
| IF (ICZERO) 42890, 2901, 42890 05980030 |
| 42890 IF (IVCOMP + 1) 22890,12890,22890 05990030 |
| 12890 IVPASS = IVPASS + 1 06000030 |
| WRITE (I02,80001) IVTNUM 06010030 |
| GO TO 2901 06020030 |
| 22890 IVFAIL = IVFAIL + 1 06030030 |
| IVCORR = -1 06040030 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 06050030 |
| 2901 CONTINUE 06060030 |
| IVTNUM = 290 06070030 |
| C 06080030 |
| C **** TEST 290 **** 06090030 |
| C 06100030 |
| IF (ICZERO) 32900, 2900, 32900 06110030 |
| 2900 CONTINUE 06120030 |
| IVON01 =51 06130030 |
| IVCOMP = IVON01 -51 06140030 |
| GO TO 42900 06150030 |
| 32900 IVDELE = IVDELE + 1 06160030 |
| WRITE (I02,80003) IVTNUM 06170030 |
| IF (ICZERO) 42900, 2911, 42900 06180030 |
| 42900 IF (IVCOMP) 22900,12900,22900 06190030 |
| 12900 IVPASS = IVPASS + 1 06200030 |
| WRITE (I02,80001) IVTNUM 06210030 |
| GO TO 2911 06220030 |
| 22900 IVFAIL = IVFAIL + 1 06230030 |
| IVCORR =0 06240030 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 06250030 |
| 2911 CONTINUE 06260030 |
| IVTNUM = 291 06270030 |
| C 06280030 |
| C **** TEST 291 **** 06290030 |
| C 06300030 |
| IF (ICZERO) 32910, 2910, 32910 06310030 |
| 2910 CONTINUE 06320030 |
| IVON01 =53 06330030 |
| IVCOMP =IVON01 -52 06340030 |
| GO TO 42910 06350030 |
| 32910 IVDELE = IVDELE + 1 06360030 |
| WRITE (I02,80003) IVTNUM 06370030 |
| IF (ICZERO) 42910, 2921, 42910 06380030 |
| 42910 IF (IVCOMP -1) 22910,12910,22910 06390030 |
| 12910 IVPASS = IVPASS + 1 06400030 |
| WRITE (I02,80001) IVTNUM 06410030 |
| GO TO 2921 06420030 |
| 22910 IVFAIL = IVFAIL + 1 06430030 |
| IVCORR = 1 06440030 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 06450030 |
| 2921 CONTINUE 06460030 |
| IVTNUM = 292 06470030 |
| C 06480030 |
| C **** TEST 292 **** 06490030 |
| C 06500030 |
| IF (ICZERO) 32920, 2920, 32920 06510030 |
| 2920 CONTINUE 06520030 |
| IVON02 = 676 06530030 |
| IVCOMP = 189 - IVON02 06540030 |
| GO TO 42920 06550030 |
| 32920 IVDELE = IVDELE + 1 06560030 |
| WRITE (I02,80003) IVTNUM 06570030 |
| IF (ICZERO) 42920, 2931, 42920 06580030 |
| 42920 IF (IVCOMP + 487) 22920,12920,22920 06590030 |
| 12920 IVPASS = IVPASS + 1 06600030 |
| WRITE (I02,80001) IVTNUM 06610030 |
| GO TO 2931 06620030 |
| 22920 IVFAIL = IVFAIL + 1 06630030 |
| IVCORR = -487 06640030 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 06650030 |
| 2931 CONTINUE 06660030 |
| IVTNUM = 293 06670030 |
| C 06680030 |
| C **** TEST 293 **** 06690030 |
| C 06700030 |
| IF (ICZERO) 32930, 2930, 32930 06710030 |
| 2930 CONTINUE 06720030 |
| IVON02 = -676 06730030 |
| IVCOMP = 189 - IVON02 06740030 |
| GO TO 42930 06750030 |
| 32930 IVDELE = IVDELE + 1 06760030 |
| WRITE (I02,80003) IVTNUM 06770030 |
| IF (ICZERO) 42930, 2941, 42930 06780030 |
| 42930 IF (IVCOMP - 865) 22930,12930,22930 06790030 |
| 12930 IVPASS = IVPASS + 1 06800030 |
| WRITE (I02,80001) IVTNUM 06810030 |
| GO TO 2941 06820030 |
| 22930 IVFAIL = IVFAIL + 1 06830030 |
| IVCORR = 865 06840030 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 06850030 |
| 2941 CONTINUE 06860030 |
| IVTNUM = 294 06870030 |
| C 06880030 |
| C **** TEST 294 **** 06890030 |
| C 06900030 |
| IF (ICZERO) 32940, 2940, 32940 06910030 |
| 2940 CONTINUE 06920030 |
| IVON01 = 1358 06930030 |
| IVCOMP = IVON01 - 8001 06940030 |
| GO TO 42940 06950030 |
| 32940 IVDELE = IVDELE + 1 06960030 |
| WRITE (I02,80003) IVTNUM 06970030 |
| IF (ICZERO) 42940, 2951, 42940 06980030 |
| 42940 IF (IVCOMP + 6643) 22940,12940,22940 06990030 |
| 12940 IVPASS = IVPASS + 1 07000030 |
| WRITE (I02,80001) IVTNUM 07010030 |
| GO TO 2951 07020030 |
| 22940 IVFAIL = IVFAIL + 1 07030030 |
| IVCORR = -6643 07040030 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 07050030 |
| 2951 CONTINUE 07060030 |
| IVTNUM = 295 07070030 |
| C 07080030 |
| C **** TEST 295 **** 07090030 |
| C 07100030 |
| IF (ICZERO) 32950, 2950, 32950 07110030 |
| 2950 CONTINUE 07120030 |
| IVON01 = -1358 07130030 |
| IVCOMP = IVON01 - 8001 07140030 |
| GO TO 42950 07150030 |
| 32950 IVDELE = IVDELE + 1 07160030 |
| WRITE (I02,80003) IVTNUM 07170030 |
| IF (ICZERO) 42950, 2961, 42950 07180030 |
| 42950 IF (IVCOMP + 9359) 22950,12950,22950 07190030 |
| 12950 IVPASS = IVPASS + 1 07200030 |
| WRITE (I02,80001) IVTNUM 07210030 |
| GO TO 2961 07220030 |
| 22950 IVFAIL = IVFAIL + 1 07230030 |
| IVCORR = -9359 07240030 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 07250030 |
| 2961 CONTINUE 07260030 |
| IVTNUM = 296 07270030 |
| C 07280030 |
| C **** TEST 296 **** 07290030 |
| C 07300030 |
| IF (ICZERO) 32960, 2960, 32960 07310030 |
| 2960 CONTINUE 07320030 |
| IVON01 = 15 07330030 |
| IVCOMP = IVON01 - 32752 07340030 |
| GO TO 42960 07350030 |
| 32960 IVDELE = IVDELE + 1 07360030 |
| WRITE (I02,80003) IVTNUM 07370030 |
| IF (ICZERO) 42960, 2971, 42960 07380030 |
| 42960 IF (IVCOMP + 32737) 22960,12960,22960 07390030 |
| 12960 IVPASS = IVPASS + 1 07400030 |
| WRITE (I02,80001) IVTNUM 07410030 |
| GO TO 2971 07420030 |
| 22960 IVFAIL = IVFAIL + 1 07430030 |
| IVCORR = -32737 07440030 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 07450030 |
| 2971 CONTINUE 07460030 |
| IVTNUM = 297 07470030 |
| C 07480030 |
| C **** TEST 297 **** 07490030 |
| C 07500030 |
| IF (ICZERO) 32970, 2970, 32970 07510030 |
| 2970 CONTINUE 07520030 |
| IVON01 =-32751 07530030 |
| IVCOMP = IVON01 - 15 07540030 |
| GO TO 42970 07550030 |
| 32970 IVDELE = IVDELE + 1 07560030 |
| WRITE (I02,80003) IVTNUM 07570030 |
| IF (ICZERO) 42970, 2981, 42970 07580030 |
| 42970 IF (IVCOMP + 32766) 22970,12970,22970 07590030 |
| 12970 IVPASS = IVPASS + 1 07600030 |
| WRITE (I02,80001) IVTNUM 07610030 |
| GO TO 2981 07620030 |
| 22970 IVFAIL = IVFAIL + 1 07630030 |
| IVCORR = -32766 07640030 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 07650030 |
| 2981 CONTINUE 07660030 |
| IVTNUM = 298 07670030 |
| C 07680030 |
| C **** TEST 298 **** 07690030 |
| C 07700030 |
| IF (ICZERO) 32980, 2980, 32980 07710030 |
| 2980 CONTINUE 07720030 |
| IVON02 = -32752 07730030 |
| IVCOMP = 15 - IVON02 07740030 |
| GO TO 42980 07750030 |
| 32980 IVDELE = IVDELE + 1 07760030 |
| WRITE (I02,80003) IVTNUM 07770030 |
| IF (ICZERO) 42980, 2991, 42980 07780030 |
| 42980 IF (IVCOMP - 32767) 22980,12980,22980 07790030 |
| 12980 IVPASS = IVPASS + 1 07800030 |
| WRITE (I02,80001) IVTNUM 07810030 |
| GO TO 2991 07820030 |
| 22980 IVFAIL = IVFAIL + 1 07830030 |
| IVCORR = 32767 07840030 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 07850030 |
| 2991 CONTINUE 07860030 |
| IVTNUM = 299 07870030 |
| C 07880030 |
| C **** TEST 299 **** 07890030 |
| C 07900030 |
| IF (ICZERO) 32990, 2990, 32990 07910030 |
| 2990 CONTINUE 07920030 |
| IVON02 = 15 07930030 |
| IVCOMP = 32752 - IVON02 07940030 |
| GO TO 42990 07950030 |
| 32990 IVDELE = IVDELE + 1 07960030 |
| WRITE (I02,80003) IVTNUM 07970030 |
| IF (ICZERO) 42990, 3001, 42990 07980030 |
| 42990 IF (IVCOMP - 32737) 22990,12990,22990 07990030 |
| 12990 IVPASS = IVPASS + 1 08000030 |
| WRITE (I02,80001) IVTNUM 08010030 |
| GO TO 3001 08020030 |
| 22990 IVFAIL = IVFAIL + 1 08030030 |
| IVCORR = 32737 08040030 |
| WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 08050030 |
| 3001 CONTINUE 08060030 |
| C 08070030 |
| C WRITE PAGE FOOTINGS AND RUN SUMMARIES 08080030 |
| 99999 CONTINUE 08090030 |
| WRITE (I02,90002) 08100030 |
| WRITE (I02,90006) 08110030 |
| WRITE (I02,90002) 08120030 |
| WRITE (I02,90002) 08130030 |
| WRITE (I02,90007) 08140030 |
| WRITE (I02,90002) 08150030 |
| WRITE (I02,90008) IVFAIL 08160030 |
| WRITE (I02,90009) IVPASS 08170030 |
| WRITE (I02,90010) IVDELE 08180030 |
| C 08190030 |
| C 08200030 |
| C TERMINATE ROUTINE EXECUTION 08210030 |
| STOP 08220030 |
| C 08230030 |
| C FORMAT STATEMENTS FOR PAGE HEADERS 08240030 |
| 90000 FORMAT ("1") 08250030 |
| 90002 FORMAT (" ") 08260030 |
| 90001 FORMAT (" ",10X,"FORTRAN COMPILER VALIDATION SYSTEM" ) 08270030 |
| 90003 FORMAT (" ",21X,"VERSION 2.1" ) 08280030 |
| 90004 FORMAT (" ",10X,"FOR OFFICIAL USE ONLY - COPYRIGHT 1978" ) 08290030 |
| 90005 FORMAT (" ",5X,"TEST",5X,"PASS/FAIL", 5X,"COMPUTED",8X,"CORRECT") 08300030 |
| 90006 FORMAT (" ",5X,"----------------------------------------------" ) 08310030 |
| 90011 FORMAT (" ",18X,"SUBSET LEVEL TEST" ) 08320030 |
| C 08330030 |
| C FORMAT STATEMENTS FOR RUN SUMMARIES 08340030 |
| 90008 FORMAT (" ",15X,I5," ERRORS ENCOUNTERED" ) 08350030 |
| 90009 FORMAT (" ",15X,I5," TESTS PASSED" ) 08360030 |
| 90010 FORMAT (" ",15X,I5," TESTS DELETED" ) 08370030 |
| C 08380030 |
| C FORMAT STATEMENTS FOR TEST RESULTS 08390030 |
| 80001 FORMAT (" ",4X,I5,7X,"PASS") 08400030 |
| 80002 FORMAT (" ",4X,I5,7X,"FAIL") 08410030 |
| 80003 FORMAT (" ",4X,I5,7X,"DELETED") 08420030 |
| 80004 FORMAT (" ",4X,I5,7X,"FAIL",10X,I6,9X,I6) 08430030 |
| 80005 FORMAT (" ",4X,I5,7X,"FAIL",4X,E12.5,3X,E12.5) 08440030 |
| C 08450030 |
| 90007 FORMAT (" ",20X,"END OF PROGRAM FM030" ) 08460030 |
| END 08470030 |