blob: aeb1514ff1c393a90963693b3b5f056ea6e507f3 [file] [log] [blame]
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