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