PROGRAM FM036 C COMMENT SECTION 00010036 C 00020036 C FM036 00030036 C 00040036 C THIS ROUTINE TESTS ARITHMETIC ASIGNMENT STATEMENTS OF THE 00050036 C FORM 00060036 C INTEGER VARIABLE = ARITHMETIC EXPRESSION 00070036 C WHERE THE ARITHMETIC EXPRESSION IS FORMED WITH THE ARITHMETIC 00080036 C OPERATOR / AND INTEGER CONSTANTS. BOTH POSITIVE AND NEGATIVE 00090036 C CONSTANTS ARE USED IN THE ARITHMETIC EXPRESSION. 00100036 C 00110036 C THERE ARE TESTS WHICH REQUIRE NO TRUNCATION OF THE RESULT 00120036 C AND TESTS WHERE THE RESULT MUST BE TRUNCATED BEFORE BEING STORED 00130036 C IN THE RESULTANT INTEGER VARIABLE. THE STANDARD STATES 'THE VALUE00140036 C OF AN INTEGER FACTOR OR TERM IS THE NEAREST INTEGER WHOSE 00150036 C MAGNITUDE DOES NOT EXCEED THE MAGNITUDE OF THE MATHEMATICAL VALUE 00160036 C REPRESENTED BY THAT FACTOR OR TERM.' 00170036 C 00180036 C THERE ARE TESTS WHERE THE ARITHMETIC EXPRESSION CONTAINS 00190036 C (1) INTEGER CONSTANT/INTEGER CONSTANT 00200036 C NO TRUNCATION REQUIRED, 00210036 C (2) INTEGER CONSTANT/INTEGER CONSTANT 00220036 C TRUNCATION REQUIRED. 00230036 C 00240036 C REFERENCES 00250036 C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, 00260036 C X3.9-1978 00270036 C 00280036 C SECTION 4.3, INTEGER TYPE 00290036 C SECTION 4.3.1, INTEGER CONSTANT 00300036 C SECTION 6.1, ARITHMETIC EXPRESSIONS 00310036 C SECTION 6.6, EVALUATION OF EXPRESSIONS 00320036 C SECTION 10.1, ARITHMETIC ASSIGNMENT STATEMENT 00330036 C 00340036 C ********************************************************** 00350036 C 00360036 C A COMPILER VALIDATION SYSTEM FOR THE FORTRAN LANGUAGE 00370036 C BASED ON SPECIFICATIONS AS DEFINED IN AMERICAN NATIONAL STANDARD 00380036 C PROGRAMMING LANGUAGE FORTRAN X3.9-1978, HAS BEEN DEVELOPED BY THE 00390036 C FEDERAL COBOL COMPILER TESTING SERVICE. THE FORTRAN COMPILER 00400036 C VALIDATION SYSTEM (FCVS) CONSISTS OF AUDIT ROUTINES, THEIR RELATED00410036 C DATA, AND AN EXECUTIVE SYSTEM. EACH AUDIT ROUTINE IS A FORTRAN 00420036 C PROGRAM, SUBPROGRAM OR FUNCTION WHICH INCLUDES TESTS OF SPECIFIC 00430036 C LANGUAGE ELEMENTS AND SUPPORTING PROCEDURES INDICATING THE RESULT 00440036 C OF EXECUTING THESE TESTS. 00450036 C 00460036 C THIS PARTICULAR PROGRAM/SUBPROGRAM/FUNCTION CONTAINS FEATURES 00470036 C FOUND ONLY IN THE SUBSET AS DEFINED IN X3.9-1978. 00480036 C 00490036 C SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO - 00500036 C 00510036 C NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY 00520036 C SOFTWARE STANDARDS VALIDATION GROUP 00530036 C BUILDING 225 RM A266 00540036 C GAITHERSBURG, MD 20899 00550036 C ********************************************************** 00560036 C 00570036 C 00580036 C 00590036 C INITIALIZATION SECTION 00600036 C 00610036 C INITIALIZE CONSTANTS 00620036 C ************** 00630036 C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. 00640036 I01 = 5 00650036 C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. 00660036 I02 = 6 00670036 C SYSTEM ENVIRONMENT SECTION 00680036 C 00690036 CX010 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-010 CONTROL CARD. 00700036 C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 00710036 C (UNIT NUMBER FOR CARD READER). 00720036 CX011 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-011 CONTROL CARD. 00730036 C THE CX011 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL 00740036 C FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX010 ABOVE. 00750036 C 00760036 CX020 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-020 CONTROL CARD. 00770036 C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02 = 6 00780036 C (UNIT NUMBER FOR PRINTER). 00790036 CX021 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-021 CONTROL CARD. 00800036 C THE CX021 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL 00810036 C FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX020 ABOVE. 00820036 C 00830036 IVPASS=0 00840036 IVFAIL=0 00850036 IVDELE=0 00860036 ICZERO=0 00870036 C 00880036 C WRITE PAGE HEADERS 00890036 WRITE (I02,90000) 00900036 WRITE (I02,90001) 00910036 WRITE (I02,90002) 00920036 WRITE (I02, 90002) 00930036 WRITE (I02,90003) 00940036 WRITE (I02,90002) 00950036 WRITE (I02,90004) 00960036 WRITE (I02,90002) 00970036 WRITE (I02,90011) 00980036 WRITE (I02,90002) 00990036 WRITE (I02,90002) 01000036 WRITE (I02,90005) 01010036 WRITE (I02,90006) 01020036 WRITE (I02,90002) 01030036 C 01040036 C TEST SECTION 01050036 C ARITHMETIC ASSIGNMENT STATEMENT 01060036 C 01070036 C TEST 462 THROUGH TEST 490 CONTAIN TWO INTEGER CONSTANTS AND 01080036 C OPERATOR / IN AN ARITHMETIC EXPRESSION. THE FORM TESTED IS 01090036 C INTEGER VARIABLE = INTEGER CONSTANT/INTEGER CONSTANT 01100036 C 01110036 C TEST 462 THROUGH TEST 469 - POSITIVE CONSTANTS 01120036 C NO TRUNCATION REQUIRED 01130036 C 01140036 4621 CONTINUE 01150036 IVTNUM = 462 01160036 C 01170036 C **** TEST 462 **** 01180036 C 01190036 IF (ICZERO) 34620, 4620, 34620 01200036 4620 CONTINUE 01210036 IVCOMP = 4/2 01220036 GO TO 44620 01230036 34620 IVDELE = IVDELE + 1 01240036 WRITE (I02,80003) IVTNUM 01250036 IF (ICZERO) 44620, 4631, 44620 01260036 44620 IF (IVCOMP - 2) 24620,14620,24620 01270036 14620 IVPASS = IVPASS + 1 01280036 WRITE (I02,80001) IVTNUM 01290036 GO TO 4631 01300036 24620 IVFAIL = IVFAIL + 1 01310036 IVCORR = 2 01320036 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 01330036 4631 CONTINUE 01340036 IVTNUM = 463 01350036 C 01360036 C **** TEST 463 **** 01370036 C 01380036 IF (ICZERO) 34630, 4630, 34630 01390036 4630 CONTINUE 01400036 IVCOMP = 75 / 25 01410036 GO TO 44630 01420036 34630 IVDELE = IVDELE + 1 01430036 WRITE (I02,80003) IVTNUM 01440036 IF (ICZERO) 44630, 4641, 44630 01450036 44630 IF (IVCOMP - 3) 24630,14630,24630 01460036 14630 IVPASS = IVPASS + 1 01470036 WRITE (I02,80001) IVTNUM 01480036 GO TO 4641 01490036 24630 IVFAIL = IVFAIL + 1 01500036 IVCORR = 3 01510036 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 01520036 4641 CONTINUE 01530036 IVTNUM = 464 01540036 C 01550036 C **** TEST 464 **** 01560036 C 01570036 IF (ICZERO) 34640, 4640, 34640 01580036 4640 CONTINUE 01590036 IVCOMP = 3575/143 01600036 GO TO 44640 01610036 34640 IVDELE = IVDELE + 1 01620036 WRITE (I02,80003) IVTNUM 01630036 IF (ICZERO) 44640, 4651, 44640 01640036 44640 IF (IVCOMP - 25) 24640,14640,24640 01650036 14640 IVPASS = IVPASS + 1 01660036 WRITE (I02,80001) IVTNUM 01670036 GO TO 4651 01680036 24640 IVFAIL = IVFAIL + 1 01690036 IVCORR = 25 01700036 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 01710036 4651 CONTINUE 01720036 IVTNUM = 465 01730036 C 01740036 C **** TEST 465 **** 01750036 C 01760036 IF (ICZERO) 34650, 4650, 34650 01770036 4650 CONTINUE 01780036 IVCOMP = 3575/25 01790036 GO TO 44650 01800036 34650 IVDELE = IVDELE + 1 01810036 WRITE (I02,80003) IVTNUM 01820036 IF (ICZERO) 44650, 4661, 44650 01830036 44650 IF (IVCOMP - 143) 24650,14650,24650 01840036 14650 IVPASS = IVPASS + 1 01850036 WRITE (I02,80001) IVTNUM 01860036 GO TO 4661 01870036 24650 IVFAIL = IVFAIL + 1 01880036 IVCORR = 143 01890036 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 01900036 4661 CONTINUE 01910036 IVTNUM = 466 01920036 C 01930036 C **** TEST 466 **** 01940036 C 01950036 IF (ICZERO) 34660, 4660, 34660 01960036 4660 CONTINUE 01970036 IVCOMP = 6170/1234 01980036 GO TO 44660 01990036 34660 IVDELE = IVDELE + 1 02000036 WRITE (I02,80003) IVTNUM 02010036 IF (ICZERO) 44660, 4671, 44660 02020036 44660 IF (IVCOMP - 5) 24660,14660,24660 02030036 14660 IVPASS = IVPASS + 1 02040036 WRITE (I02,80001) IVTNUM 02050036 GO TO 4671 02060036 24660 IVFAIL = IVFAIL + 1 02070036 IVCORR = 5 02080036 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 02090036 4671 CONTINUE 02100036 IVTNUM = 467 02110036 C 02120036 C **** TEST 467 **** 02130036 C 02140036 IF (ICZERO) 34670, 4670, 34670 02150036 4670 CONTINUE 02160036 IVCOMP = 28600/8 02170036 GO TO 44670 02180036 34670 IVDELE = IVDELE + 1 02190036 WRITE (I02,80003) IVTNUM 02200036 IF (ICZERO) 44670, 4681, 44670 02210036 44670 IF (IVCOMP - 3575) 24670,14670,24670 02220036 14670 IVPASS = IVPASS + 1 02230036 WRITE (I02,80001) IVTNUM 02240036 GO TO 4681 02250036 24670 IVFAIL = IVFAIL + 1 02260036 IVCORR = 3575 02270036 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 02280036 4681 CONTINUE 02290036 IVTNUM = 468 02300036 C 02310036 C **** TEST 468 **** 02320036 C 02330036 IF (ICZERO) 34680, 4680, 34680 02340036 4680 CONTINUE 02350036 IVCOMP = 32766/2 02360036 GO TO 44680 02370036 34680 IVDELE = IVDELE + 1 02380036 WRITE (I02,80003) IVTNUM 02390036 IF (ICZERO) 44680, 4691, 44680 02400036 44680 IF (IVCOMP - 16383) 24680,14680,24680 02410036 14680 IVPASS = IVPASS + 1 02420036 WRITE (I02,80001) IVTNUM 02430036 GO TO 4691 02440036 24680 IVFAIL = IVFAIL + 1 02450036 IVCORR = 16383 02460036 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 02470036 4691 CONTINUE 02480036 IVTNUM = 469 02490036 C 02500036 C **** TEST 469 **** 02510036 C 02520036 IF (ICZERO) 34690, 4690, 34690 02530036 4690 CONTINUE 02540036 IVCOMP = 32767/1 02550036 GO TO 44690 02560036 34690 IVDELE = IVDELE + 1 02570036 WRITE (I02,80003) IVTNUM 02580036 IF (ICZERO) 44690, 4701, 44690 02590036 44690 IF (IVCOMP - 32767) 24690,14690,24690 02600036 14690 IVPASS = IVPASS + 1 02610036 WRITE (I02,80001) IVTNUM 02620036 GO TO 4701 02630036 24690 IVFAIL = IVFAIL + 1 02640036 IVCORR = 32767 02650036 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 02660036 C 02670036 C TEST 470 THROUGH TEST 478 - POSITIVE CONSTANTS 02680036 C TRUNCATION REQUIRED 02690036 C 02700036 4701 CONTINUE 02710036 IVTNUM = 470 02720036 C 02730036 C **** TEST 470 **** 02740036 C 02750036 IF (ICZERO) 34700, 4700, 34700 02760036 4700 CONTINUE 02770036 IVCOMP = 5/2 02780036 GO TO 44700 02790036 34700 IVDELE = IVDELE + 1 02800036 WRITE (I02,80003) IVTNUM 02810036 IF (ICZERO) 44700, 4711, 44700 02820036 44700 IF (IVCOMP - 2) 24700,14700,24700 02830036 14700 IVPASS = IVPASS + 1 02840036 WRITE (I02,80001) IVTNUM 02850036 GO TO 4711 02860036 24700 IVFAIL = IVFAIL + 1 02870036 IVCORR = 2 02880036 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 02890036 4711 CONTINUE 02900036 IVTNUM = 471 02910036 C 02920036 C **** TEST 471 **** 02930036 C 02940036 IF (ICZERO) 34710, 4710, 34710 02950036 4710 CONTINUE 02960036 IVCOMP = 2/3 02970036 GO TO 44710 02980036 34710 IVDELE = IVDELE + 1 02990036 WRITE (I02,80003) IVTNUM 03000036 IF (ICZERO) 44710, 4721, 44710 03010036 44710 IF (IVCOMP - 0) 24710,14710,24710 03020036 14710 IVPASS = IVPASS + 1 03030036 WRITE (I02,80001) IVTNUM 03040036 GO TO 4721 03050036 24710 IVFAIL = IVFAIL + 1 03060036 IVCORR = 0 03070036 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 03080036 4721 CONTINUE 03090036 IVTNUM = 472 03100036 C 03110036 C **** TEST 472 **** 03120036 C 03130036 IF (ICZERO) 34720, 4720, 34720 03140036 4720 CONTINUE 03150036 IVCOMP = 80/15 03160036 GO TO 44720 03170036 34720 IVDELE = IVDELE + 1 03180036 WRITE (I02,80003) IVTNUM 03190036 IF (ICZERO) 44720, 4731, 44720 03200036 44720 IF (IVCOMP - 5) 24720,14720,24720 03210036 14720 IVPASS = IVPASS + 1 03220036 WRITE (I02,80001) IVTNUM 03230036 GO TO 4731 03240036 24720 IVFAIL = IVFAIL + 1 03250036 IVCORR = 5 03260036 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 03270036 4731 CONTINUE 03280036 IVTNUM = 473 03290036 C 03300036 C **** TEST 473 **** 03310036 C 03320036 IF (ICZERO) 34730, 4730, 34730 03330036 4730 CONTINUE 03340036 IVCOMP = 959/120 03350036 GO TO 44730 03360036 34730 IVDELE = IVDELE + 1 03370036 WRITE (I02,80003) IVTNUM 03380036 IF (ICZERO) 44730, 4741, 44730 03390036 44730 IF (IVCOMP - 7) 24730,14730,24730 03400036 14730 IVPASS = IVPASS + 1 03410036 WRITE (I02,80001) IVTNUM 03420036 GO TO 4741 03430036 24730 IVFAIL = IVFAIL + 1 03440036 IVCORR = 7 03450036 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 03460036 4741 CONTINUE 03470036 IVTNUM = 474 03480036 C 03490036 C **** TEST 474 **** 03500036 C 03510036 IF (ICZERO) 34740, 4740, 34740 03520036 4740 CONTINUE 03530036 IVCOMP = 959 / 12 03540036 GO TO 44740 03550036 34740 IVDELE = IVDELE + 1 03560036 WRITE (I02,80003) IVTNUM 03570036 IF (ICZERO) 44740, 4751, 44740 03580036 44740 IF (IVCOMP - 79) 24740,14740,24740 03590036 14740 IVPASS = IVPASS + 1 03600036 WRITE (I02,80001) IVTNUM 03610036 GO TO 4751 03620036 24740 IVFAIL = IVFAIL + 1 03630036 IVCORR = 79 03640036 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 03650036 4751 CONTINUE 03660036 IVTNUM = 475 03670036 C 03680036 C **** TEST 475 **** 03690036 C 03700036 IF (ICZERO) 34750, 4750, 34750 03710036 4750 CONTINUE 03720036 IVCOMP = 959/6 03730036 GO TO 44750 03740036 34750 IVDELE = IVDELE + 1 03750036 WRITE (I02,80003) IVTNUM 03760036 IF (ICZERO) 44750, 4761, 44750 03770036 44750 IF (IVCOMP - 159) 24750,14750,24750 03780036 14750 IVPASS = IVPASS + 1 03790036 WRITE (I02,80001) IVTNUM 03800036 GO TO 4761 03810036 24750 IVFAIL = IVFAIL + 1 03820036 IVCORR = 159 03830036 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 03840036 4761 CONTINUE 03850036 IVTNUM = 476 03860036 C 03870036 C **** TEST 476 **** 03880036 C 03890036 IF (ICZERO) 34760, 4760, 34760 03900036 4760 CONTINUE 03910036 IVCOMP = 28606/8 03920036 GO TO 44760 03930036 34760 IVDELE = IVDELE + 1 03940036 WRITE (I02,80003) IVTNUM 03950036 IF (ICZERO) 44760, 4771, 44760 03960036 44760 IF (IVCOMP - 3575) 24760,14760,24760 03970036 14760 IVPASS = IVPASS + 1 03980036 WRITE (I02,80001) IVTNUM 03990036 GO TO 4771 04000036 24760 IVFAIL = IVFAIL + 1 04010036 IVCORR = 3575 04020036 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 04030036 4771 CONTINUE 04040036 IVTNUM = 477 04050036 C 04060036 C **** TEST 477 **** 04070036 C 04080036 IF (ICZERO) 34770, 4770, 34770 04090036 4770 CONTINUE 04100036 IVCOMP = 25603/2 04110036 GO TO 44770 04120036 34770 IVDELE = IVDELE + 1 04130036 WRITE (I02,80003) IVTNUM 04140036 IF (ICZERO) 44770, 4781, 44770 04150036 44770 IF (IVCOMP - 12801) 24770,14770,24770 04160036 14770 IVPASS = IVPASS + 1 04170036 WRITE (I02,80001) IVTNUM 04180036 GO TO 4781 04190036 24770 IVFAIL = IVFAIL + 1 04200036 IVCORR = 12801 04210036 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 04220036 4781 CONTINUE 04230036 IVTNUM = 478 04240036 C 04250036 C **** TEST 478 **** 04260036 C 04270036 IF (ICZERO) 34780, 4780, 34780 04280036 4780 CONTINUE 04290036 IVCOMP = 25603/10354 04300036 GO TO 44780 04310036 34780 IVDELE = IVDELE + 1 04320036 WRITE (I02,80003) IVTNUM 04330036 IF (ICZERO) 44780, 4791, 44780 04340036 44780 IF (IVCOMP - 2) 24780,14780,24780 04350036 14780 IVPASS = IVPASS + 1 04360036 WRITE (I02,80001) IVTNUM 04370036 GO TO 4791 04380036 24780 IVFAIL = IVFAIL + 1 04390036 IVCORR = 2 04400036 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 04410036 C 04420036 C TEST 479 THROUGH TEST 482 - NEGATIVE CONSTANTS INCLUDED 04430036 C NO TRUNCATION REQUIRED 04440036 C 04450036 4791 CONTINUE 04460036 IVTNUM = 479 04470036 C 04480036 C **** TEST 479 **** 04490036 C 04500036 IF (ICZERO) 34790, 4790, 34790 04510036 4790 CONTINUE 04520036 IVCOMP = -4/2 04530036 GO TO 44790 04540036 34790 IVDELE = IVDELE + 1 04550036 WRITE (I02,80003) IVTNUM 04560036 IF (ICZERO) 44790, 4801, 44790 04570036 44790 IF (IVCOMP + 2) 24790,14790,24790 04580036 14790 IVPASS = IVPASS + 1 04590036 WRITE (I02,80001) IVTNUM 04600036 GO TO 4801 04610036 24790 IVFAIL = IVFAIL + 1 04620036 IVCORR = -2 04630036 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 04640036 4801 CONTINUE 04650036 IVTNUM = 480 04660036 C 04670036 C **** TEST 480 **** 04680036 C 04690036 IF (ICZERO) 34800, 4800, 34800 04700036 4800 CONTINUE 04710036 IVCOMP = 75 / (-25) 04720036 GO TO 44800 04730036 34800 IVDELE = IVDELE + 1 04740036 WRITE (I02,80003) IVTNUM 04750036 IF (ICZERO) 44800, 4811, 44800 04760036 44800 IF (IVCOMP + 3) 24800,14800,24800 04770036 14800 IVPASS = IVPASS + 1 04780036 WRITE (I02,80001) IVTNUM 04790036 GO TO 4811 04800036 24800 IVFAIL = IVFAIL + 1 04810036 IVCORR = -3 04820036 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 04830036 4811 CONTINUE 04840036 IVTNUM = 481 04850036 C 04860036 C **** TEST 481 **** 04870036 C 04880036 IF (ICZERO) 34810, 4810, 34810 04890036 4810 CONTINUE 04900036 IVCOMP= (-6170) / (-1234) 04910036 GO TO 44810 04920036 34810 IVDELE = IVDELE + 1 04930036 WRITE (I02,80003) IVTNUM 04940036 IF (ICZERO) 44810, 4821, 44810 04950036 44810 IF (IVCOMP - 5) 24810,14810,24810 04960036 14810 IVPASS = IVPASS + 1 04970036 WRITE (I02,80001) IVTNUM 04980036 GO TO 4821 04990036 24810 IVFAIL = IVFAIL + 1 05000036 IVCORR = 5 05010036 05020036 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 05030036 4821 CONTINUE 05040036 IVTNUM = 482 05050036 C 05060036 C **** TEST 482 **** 05070036 C 05080036 IF (ICZERO) 34820, 4820, 34820 05090036 4820 CONTINUE 05100036 IVCOMP = -32766/(-2) 05110036 GO TO 44820 05120036 34820 IVDELE = IVDELE + 1 05130036 WRITE (I02,80003) IVTNUM 05140036 IF (ICZERO) 44820, 4831, 44820 05150036 44820 IF (IVCOMP - 16383) 24820,14820,24820 05160036 14820 IVPASS = IVPASS + 1 05170036 WRITE (I02,80001) IVTNUM 05180036 GO TO 4831 05190036 24820 IVFAIL = IVFAIL + 1 05200036 IVCORR = 16383 05210036 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 05220036 C 05230036 C TEST 483 THROUGH TEST 490 - NEGATIVE CONSTANTS INCLUDED 05240036 C TRUNCATION REQUIRED 05250036 C 05260036 4831 CONTINUE 05270036 IVTNUM = 483 05280036 C 05290036 C **** TEST 483 **** 05300036 C 05310036 IF (ICZERO) 34830, 4830, 34830 05320036 4830 CONTINUE 05330036 IVCOMP = -5/2 05340036 GO TO 44830 05350036 34830 IVDELE = IVDELE + 1 05360036 WRITE (I02,80003) IVTNUM 05370036 IF (ICZERO) 44830, 4841, 44830 05380036 44830 IF (IVCOMP +2) 24830,14830,24830 05390036 14830 IVPASS = IVPASS + 1 05400036 WRITE (I02,80001) IVTNUM 05410036 GO TO 4841 05420036 24830 IVFAIL = IVFAIL + 1 05430036 IVCORR = -2 05440036 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 05450036 4841 CONTINUE 05460036 IVTNUM = 484 05470036 C 05480036 C **** TEST 484 **** 05490036 C 05500036 IF (ICZERO) 34840, 4840, 34840 05510036 4840 CONTINUE 05520036 IVCOMP = -2/3 05530036 GO TO 44840 05540036 34840 IVDELE = IVDELE + 1 05550036 WRITE (I02,80003) IVTNUM 05560036 IF (ICZERO) 44840, 4851, 44840 05570036 44840 IF (IVCOMP) 24840,14840,24840 05580036 14840 IVPASS = IVPASS + 1 05590036 WRITE (I02,80001) IVTNUM 05600036 GO TO 4851 05610036 24840 IVFAIL = IVFAIL + 1 05620036 IVCORR = 0 05630036 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 05640036 4851 CONTINUE 05650036 IVTNUM = 485 05660036 C 05670036 C **** TEST 485 **** 05680036 C 05690036 IF (ICZERO) 34850, 4850, 34850 05700036 4850 CONTINUE 05710036 IVCOMP = 80/(-15) 05720036 GO TO 44850 05730036 34850 IVDELE = IVDELE + 1 05740036 WRITE (I02,80003) IVTNUM 05750036 IF (ICZERO) 44850, 4861, 44850 05760036 44850 IF (IVCOMP +5) 24850,14850,24850 05770036 14850 IVPASS = IVPASS + 1 05780036 WRITE (I02,80001) IVTNUM 05790036 GO TO 4861 05800036 24850 IVFAIL = IVFAIL + 1 05810036 IVCORR = -5 05820036 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 05830036 4861 CONTINUE 05840036 IVTNUM = 486 05850036 C 05860036 C **** TEST 486 **** 05870036 C 05880036 IF (ICZERO) 34860, 4860, 34860 05890036 4860 CONTINUE 05900036 IVCOMP = -959/(-120) 05910036 GO TO 44860 05920036 34860 IVDELE = IVDELE + 1 05930036 WRITE (I02,80003) IVTNUM 05940036 IF (ICZERO) 44860, 4871, 44860 05950036 44860 IF (IVCOMP - 7) 24860,14860,24860 05960036 14860 IVPASS = IVPASS + 1 05970036 WRITE (I02,80001) IVTNUM 05980036 GO TO 4871 05990036 24860 IVFAIL = IVFAIL + 1 06000036 IVCORR = 7 06010036 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 06020036 4871 CONTINUE 06030036 IVTNUM = 487 06040036 C 06050036 C **** TEST 487 **** 06060036 C 06070036 IF (ICZERO) 34870, 4870, 34870 06080036 4870 CONTINUE 06090036 IVCOMP = -959/6 06100036 GO TO 44870 06110036 34870 IVDELE = IVDELE + 1 06120036 WRITE (I02,80003) IVTNUM 06130036 IF (ICZERO) 44870, 4881, 44870 06140036 44870 IF (IVCOMP + 159) 24870,14870,24870 06150036 14870 IVPASS = IVPASS + 1 06160036 WRITE (I02,80001) IVTNUM 06170036 GO TO 4881 06180036 24870 IVFAIL = IVFAIL + 1 06190036 IVCORR = -159 06200036 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 06210036 4881 CONTINUE 06220036 IVTNUM = 488 06230036 C 06240036 C **** TEST 488 **** 06250036 C 06260036 IF (ICZERO) 34880, 4880, 34880 06270036 4880 CONTINUE 06280036 IVCOMP = -28606/(-8) 06290036 GO TO 44880 06300036 34880 IVDELE = IVDELE + 1 06310036 WRITE (I02,80003) IVTNUM 06320036 IF (ICZERO) 44880, 4891, 44880 06330036 44880 IF (IVCOMP - 3575) 24880,14880,24880 06340036 14880 IVPASS = IVPASS + 1 06350036 WRITE (I02,80001) IVTNUM 06360036 GO TO 4891 06370036 24880 IVFAIL = IVFAIL + 1 06380036 IVCORR = 3575 06390036 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 06400036 4891 CONTINUE 06410036 IVTNUM = 489 06420036 C 06430036 C **** TEST 489 **** 06440036 C 06450036 IF (ICZERO) 34890, 4890, 34890 06460036 4890 CONTINUE 06470036 IVCOMP = -25603/2 06480036 GO TO 44890 06490036 34890 IVDELE = IVDELE + 1 06500036 WRITE (I02,80003) IVTNUM 06510036 IF (ICZERO) 44890, 4901, 44890 06520036 44890 IF (IVCOMP + 12801) 24890,14890,24890 06530036 14890 IVPASS = IVPASS + 1 06540036 WRITE (I02,80001) IVTNUM 06550036 GO TO 4901 06560036 24890 IVFAIL = IVFAIL + 1 06570036 IVCORR = -12801 06580036 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 06590036 4901 CONTINUE 06600036 IVTNUM = 490 06610036 C 06620036 C **** TEST 490 **** 06630036 C 06640036 IF (ICZERO) 34900, 4900, 34900 06650036 4900 CONTINUE 06660036 IVCOMP = -25603/(-10354) 06670036 GO TO 44900 06680036 34900 IVDELE = IVDELE + 1 06690036 WRITE (I02,80003) IVTNUM 06700036 IF (ICZERO) 44900, 4911, 44900 06710036 44900 IF (IVCOMP - 2) 24900,14900,24900 06720036 14900 IVPASS = IVPASS + 1 06730036 WRITE (I02,80001) IVTNUM 06740036 GO TO 4911 06750036 24900 IVFAIL = IVFAIL + 1 06760036 IVCORR = 2 06770036 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 06780036 C 06790036 C **** END OF TESTS **** 06800036 4911 CONTINUE 06810036 C 06820036 C WRITE PAGE FOOTINGS AND RUN SUMMARIES 06830036 99999 CONTINUE 06840036 WRITE (I02,90002) 06850036 WRITE (I02,90006) 06860036 WRITE (I02,90002) 06870036 WRITE (I02,90002) 06880036 WRITE (I02,90007) 06890036 WRITE (I02,90002) 06900036 WRITE (I02,90008) IVFAIL 06910036 WRITE (I02,90009) IVPASS 06920036 WRITE (I02,90010) IVDELE 06930036 C 06940036 C 06950036 C TERMINATE ROUTINE EXECUTION 06960036 STOP 06970036 C 06980036 C FORMAT STATEMENTS FOR PAGE HEADERS 06990036 90000 FORMAT ("1") 07000036 90002 FORMAT (" ") 07010036 90001 FORMAT (" ",10X,"FORTRAN COMPILER VALIDATION SYSTEM" ) 07020036 90003 FORMAT (" ",21X,"VERSION 2.1" ) 07030036 90004 FORMAT (" ",10X,"FOR OFFICIAL USE ONLY - COPYRIGHT 1978" ) 07040036 90005 FORMAT (" ",5X,"TEST",5X,"PASS/FAIL", 5X,"COMPUTED",8X,"CORRECT") 07050036 90006 FORMAT (" ",5X,"----------------------------------------------" ) 07060036 90011 FORMAT (" ",18X,"SUBSET LEVEL TEST" ) 07070036 C 07080036 C FORMAT STATEMENTS FOR RUN SUMMARIES 07090036 90008 FORMAT (" ",15X,I5," ERRORS ENCOUNTERED" ) 07100036 90009 FORMAT (" ",15X,I5," TESTS PASSED" ) 07110036 90010 FORMAT (" ",15X,I5," TESTS DELETED" ) 07120036 C 07130036 C FORMAT STATEMENTS FOR TEST RESULTS 07140036 80001 FORMAT (" ",4X,I5,7X,"PASS") 07150036 80002 FORMAT (" ",4X,I5,7X,"FAIL") 07160036 80003 FORMAT (" ",4X,I5,7X,"DELETED") 07170036 80004 FORMAT (" ",4X,I5,7X,"FAIL",10X,I6,9X,I6) 07180036 80005 FORMAT (" ",4X,I5,7X,"FAIL",4X,E12.5,3X,E12.5) 07190036 C 07200036 90007 FORMAT (" ",20X,"END OF PROGRAM FM036" ) 07210036 END 07220036