PROGRAM FM038 C COMMENT SECTION 00010038 C 00020038 C FM038 00030038 C 00040038 C THIS ROUTINE TESTS ARITHMETIC ASSIGNMENT STATEMENTS OF THE 00050038 C FORM INTEGER VARIABLE = ARITHMETIC EXPRESSION 00060038 C WHERE THE ARITHMETIC EXPRESSION IS FORMED WITH THE ARITHMETIC 00070038 C OPERATOR /, INTEGER CONSTANTS AND AN INTEGER VARIABLE. BOTH 00080038 C POSITIVE AND NEGATIVE VALUES ARE USED FOR THE INTEGER CONSTANTS 00090038 C AND THE INTEGER VARIABLE. 00100038 C 00110038 C THERE ARE TESTS WHICH REQUIRE NO TRUNCATION OF THE RESULT 00120038 C AND TESTS WHERE THE RESULT MUST BE TRUNCATED BEFORE BEING STORED 00130038 C IN THE RESULTANT INTEGER VARIABLE. SOME OF THE TESTS USE PARENS 00140038 C TO GROUP ELEMENTS IN THE ARITHMETIC EXPRESSION. 00150038 C 00160038 C THERE ARE TESTS WHERE THE ARITHMETIC EXPRESSION CONTAINS 00170038 C (1) (INTEGER CONSTANT/INTEGER CONSTANT)/INTEGER CONSTANT 00180038 C (2) INTEGER CONSTANT/(INTEGER CONSTANT/INTEGER CONSTANT) 00190038 C (3) INTEGER VARIABLE/INTEGER CONSTANT 00200038 C (4) INTEGER CONSTANT/INTEGER VARIABLE 00210038 C 00220038 C REFERENCES 00230038 C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, 00240038 C X3.9-1978 00250038 C 00260038 C SECTION 4.3, INTEGER TYPE 00270038 C SECTION 4.3.1, INTEGER CONSTANT 00280038 C SECTION 6.1, ARITHMETIC EXPRESSIONS 00290038 C SECTION 6.6, EVALUATION OF EXPRESSIONS 00300038 C SECTION 10.1, ARITHMETIC ASSIGNMENT STATEMENT 00310038 C 00320038 C ********************************************************** 00330038 C 00340038 C A COMPILER VALIDATION SYSTEM FOR THE FORTRAN LANGUAGE 00350038 C BASED ON SPECIFICATIONS AS DEFINED IN AMERICAN NATIONAL STANDARD 00360038 C PROGRAMMING LANGUAGE FORTRAN X3.9-1978, HAS BEEN DEVELOPED BY THE 00370038 C FEDERAL COBOL COMPILER TESTING SERVICE. THE FORTRAN COMPILER 00380038 C VALIDATION SYSTEM (FCVS) CONSISTS OF AUDIT ROUTINES, THEIR RELATED00390038 C DATA, AND AN EXECUTIVE SYSTEM. EACH AUDIT ROUTINE IS A FORTRAN 00400038 C PROGRAM, SUBPROGRAM OR FUNCTION WHICH INCLUDES TESTS OF SPECIFIC 00410038 C LANGUAGE ELEMENTS AND SUPPORTING PROCEDURES INDICATING THE RESULT 00420038 C OF EXECUTING THESE TESTS. 00430038 C 00440038 C THIS PARTICULAR PROGRAM/SUBPROGRAM/FUNCTION CONTAINS FEATURES 00450038 C FOUND ONLY IN THE SUBSET AS DEFINED IN X3.9-1978. 00460038 C 00470038 C SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO - 00480038 C 00490038 C NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY 00500038 C SOFTWARE STANDARDS VALIDATION GROUP 00510038 C BUILDING 225 RM A266 00520038 C GAITHERSBURG, MD 20899 00530038 C ********************************************************** 00540038 C 00550038 C 00560038 C 00570038 C INITIALIZATION SECTION 00580038 C 00590038 C INITIALIZE CONSTANTS 00600038 C ************** 00610038 C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. 00620038 I01 = 5 00630038 C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. 00640038 I02 = 6 00650038 C SYSTEM ENVIRONMENT SECTION 00660038 C 00670038 CX010 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-010 CONTROL CARD. 00680038 C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 00690038 C (UNIT NUMBER FOR CARD READER). 00700038 CX011 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-011 CONTROL CARD. 00710038 C THE CX011 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL 00720038 C FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX010 ABOVE. 00730038 C 00740038 CX020 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-020 CONTROL CARD. 00750038 C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02 = 6 00760038 C (UNIT NUMBER FOR PRINTER). 00770038 CX021 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-021 CONTROL CARD. 00780038 C THE CX021 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL 00790038 C FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX020 ABOVE. 00800038 C 00810038 IVPASS=0 00820038 IVFAIL=0 00830038 IVDELE=0 00840038 ICZERO=0 00850038 C 00860038 C WRITE PAGE HEADERS 00870038 WRITE (I02,90000) 00880038 WRITE (I02,90001) 00890038 WRITE (I02,90002) 00900038 WRITE (I02, 90002) 00910038 WRITE (I02,90003) 00920038 WRITE (I02,90002) 00930038 WRITE (I02,90004) 00940038 WRITE (I02,90002) 00950038 WRITE (I02,90011) 00960038 WRITE (I02,90002) 00970038 WRITE (I02,90002) 00980038 WRITE (I02,90005) 00990038 WRITE (I02,90006) 01000038 WRITE (I02,90002) 01010038 C 01020038 C TEST SECTION 01030038 C 01040038 C ARITHMETIC ASSIGNMENT STATEMENT 01050038 C 01060038 C TEST 520 THROUGH TEST 525 CONTAIN ARITHMETIC ASSIGNMENT STATEMENTS01070038 C OF THE FORM INTEGER VARIABLE = (INT.CON./INT.CON.)/INT.CON. 01080038 C NO TRUNCATION OF THE RESULT IS REQUIRED. BOTH POSITIVE AND 01090038 C NEGATIVE CONSTANTS ARE INCLUDED. 01100038 C 01110038 5201 CONTINUE 01120038 IVTNUM = 520 01130038 C 01140038 C **** TEST 520 **** 01150038 C 01160038 IF (ICZERO) 35200, 5200, 35200 01170038 5200 CONTINUE 01180038 IVCOMP = (24/3)/4 01190038 GO TO 45200 01200038 35200 IVDELE = IVDELE + 1 01210038 WRITE (I02,80003) IVTNUM 01220038 IF (ICZERO) 45200, 5211, 45200 01230038 45200 IF (IVCOMP - 2) 25200,15200,25200 01240038 15200 IVPASS = IVPASS + 1 01250038 WRITE (I02,80001) IVTNUM 01260038 GO TO 5211 01270038 25200 IVFAIL = IVFAIL + 1 01280038 IVCORR = 2 01290038 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 01300038 5211 CONTINUE 01310038 IVTNUM = 521 01320038 C 01330038 C **** TEST 521 **** 01340038 C 01350038 IF (ICZERO) 35210, 5210, 35210 01360038 5210 CONTINUE 01370038 IVCOMP = (7150/2)/25 01380038 GO TO 45210 01390038 35210 IVDELE = IVDELE + 1 01400038 WRITE (I02,80003) IVTNUM 01410038 IF (ICZERO) 45210, 5221, 45210 01420038 45210 IF (IVCOMP - 143) 25210,15210,25210 01430038 15210 IVPASS = IVPASS + 1 01440038 WRITE (I02,80001) IVTNUM 01450038 GO TO 5221 01460038 25210 IVFAIL = IVFAIL + 1 01470038 IVCORR = 143 01480038 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 01490038 5221 CONTINUE 01500038 IVTNUM = 522 01510038 C 01520038 C **** TEST 522 **** 01530038 C 01540038 IF (ICZERO) 35220, 5220, 35220 01550038 01560038 5220 CONTINUE 01570038 IVCOMP = (-24/3)/4 01580038 GO TO 45220 01590038 35220 IVDELE = IVDELE + 1 01600038 WRITE (I02,80003) IVTNUM 01610038 IF (ICZERO) 45220, 5231, 45220 01620038 45220 IF (IVCOMP + 2) 25220,15220,25220 01630038 15220 IVPASS = IVPASS + 1 01640038 WRITE (I02,80001) IVTNUM 01650038 GO TO 5231 01660038 25220 IVFAIL = IVFAIL + 1 01670038 IVCORR = -2 01680038 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 01690038 5231 CONTINUE 01700038 IVTNUM = 523 01710038 C 01720038 C **** TEST 523 **** 01730038 C 01740038 IF (ICZERO) 35230, 5230, 35230 01750038 5230 CONTINUE 01760038 IVCOMP = (330/(-3))/2 01770038 GO TO 45230 01780038 35230 IVDELE = IVDELE + 1 01790038 WRITE (I02,80003) IVTNUM 01800038 IF (ICZERO) 45230, 5241, 45230 01810038 45230 IF (IVCOMP + 55) 25230,15230,25230 01820038 15230 IVPASS = IVPASS + 1 01830038 WRITE (I02,80001) IVTNUM 01840038 GO TO 5241 01850038 25230 IVFAIL = IVFAIL + 1 01860038 IVCORR = -55 01870038 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 01880038 5241 CONTINUE 01890038 IVTNUM = 524 01900038 C 01910038 C **** TEST 524 **** 01920038 C 01930038 IF (ICZERO) 35240, 5240, 35240 01940038 5240 CONTINUE 01950038 IVCOMP = ((-7150)/(-2))/(-25) 01960038 GO TO 45240 01970038 35240 IVDELE = IVDELE + 1 01980038 WRITE (I02,80003) IVTNUM 01990038 IF (ICZERO) 45240, 5251, 45240 02000038 45240 IF (IVCOMP + 143) 25240,15240,25240 02010038 15240 IVPASS = IVPASS + 1 02020038 WRITE (I02,80001) IVTNUM 02030038 GO TO 5251 02040038 25240 IVFAIL = IVFAIL + 1 02050038 IVCORR = -143 02060038 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 02070038 5251 CONTINUE 02080038 IVTNUM = 525 02090038 C 02100038 C **** TEST 525 **** 02110038 C 02120038 IF (ICZERO) 35250, 5250, 35250 02130038 5250 CONTINUE 02140038 IVCOMP = (15249/(-13))/(-51) 02150038 GO TO 45250 02160038 35250 IVDELE = IVDELE + 1 02170038 WRITE (I02,80003) IVTNUM 02180038 IF (ICZERO) 45250, 5261, 45250 02190038 45250 IF (IVCOMP - 23) 25250,15250,25250 02200038 15250 IVPASS = IVPASS + 1 02210038 WRITE (I02,80001) IVTNUM 02220038 GO TO 5261 02230038 25250 IVFAIL = IVFAIL + 1 02240038 IVCORR = 23 02250038 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 02260038 C 02270038 C TEST 526 THROUGH TEST 531 CONTAIN ARITHMETIC ASSIGNMENT STATEMENTS02280038 C OF THE FORM IV = (IC/IC)/IC. 02290038 C TRUNCATION OF THE RESULT IS REQUIRED. BOTH POSITIVE AND 02300038 C NEGATIVE CONSTANTS ARE INCLUDED. 02310038 C 02320038 5261 CONTINUE 02330038 IVTNUM = 526 02340038 C 02350038 C **** TEST 526 **** 02360038 C 02370038 IF (ICZERO) 35260, 5260, 35260 02380038 5260 CONTINUE 02390038 IVCOMP = (24/3)/3 02400038 GO TO 45260 02410038 35260 IVDELE = IVDELE + 1 02420038 WRITE (I02,80003) IVTNUM 02430038 IF (ICZERO) 45260, 5271, 45260 02440038 45260 IF (IVCOMP - 2) 25260,15260,25260 02450038 15260 IVPASS = IVPASS + 1 02460038 WRITE (I02,80001) IVTNUM 02470038 GO TO 5271 02480038 25260 IVFAIL = IVFAIL + 1 02490038 IVCORR = 2 02500038 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 02510038 5271 CONTINUE 02520038 IVTNUM = 527 02530038 C 02540038 C **** TEST 527 **** 02550038 C 02560038 IF (ICZERO) 35270, 5270, 35270 02570038 5270 CONTINUE 02580038 IVCOMP = (7151/3)/10 02590038 GO TO 45270 02600038 35270 IVDELE = IVDELE + 1 02610038 WRITE (I02,80003) IVTNUM 02620038 IF (ICZERO) 45270, 5281, 45270 02630038 45270 IF (IVCOMP - 238) 25270,15270,25270 02640038 15270 IVPASS = IVPASS + 1 02650038 WRITE (I02,80001) IVTNUM 02660038 GO TO 5281 02670038 25270 IVFAIL = IVFAIL + 1 02680038 IVCORR = 238 02690038 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 02700038 5281 CONTINUE 02710038 IVTNUM = 528 02720038 C 02730038 C **** TEST 528 **** 02740038 C 02750038 IF (ICZERO) 35280, 5280, 35280 02760038 5280 CONTINUE 02770038 IVCOMP = (-24/3)/3 02780038 GO TO 45280 02790038 35280 IVDELE = IVDELE + 1 02800038 WRITE (I02,80003) IVTNUM 02810038 IF (ICZERO) 45280, 5291, 45280 02820038 45280 IF (IVCOMP + 2) 25280,15280,25280 02830038 15280 IVPASS = IVPASS + 1 02840038 WRITE (I02,80001) IVTNUM 02850038 GO TO 5291 02860038 25280 IVFAIL = IVFAIL + 1 02870038 IVCORR = -2 02880038 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 02890038 5291 CONTINUE 02900038 IVTNUM = 529 02910038 C 02920038 C **** TEST 529 **** 02930038 C 02940038 IF (ICZERO) 35290, 5290, 35290 02950038 5290 CONTINUE 02960038 IVCOMP = (7151/(-3))/10 02970038 GO TO 45290 02980038 35290 IVDELE = IVDELE + 1 02990038 WRITE (I02,80003) IVTNUM 03000038 IF (ICZERO) 45290, 5301, 45290 03010038 45290 IF (IVCOMP + 238) 25290,15290,25290 03020038 15290 IVPASS = IVPASS + 1 03030038 WRITE (I02,80001) IVTNUM 03040038 GO TO 5301 03050038 25290 IVFAIL = IVFAIL + 1 03060038 IVCORR = -238 03070038 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 03080038 5301 CONTINUE 03090038 IVTNUM = 530 03100038 C 03110038 C **** TEST 530 **** 03120038 C 03130038 IF (ICZERO) 35300, 5300, 35300 03140038 5300 CONTINUE 03150038 IVCOMP = (15248/(-51))/(-23) 03160038 GO TO 45300 03170038 35300 IVDELE = IVDELE + 1 03180038 WRITE (I02,80003) IVTNUM 03190038 IF (ICZERO) 45300, 5311, 45300 03200038 45300 IF (IVCOMP - 12) 25300,15300,25300 03210038 15300 IVPASS = IVPASS + 1 03220038 WRITE (I02,80001) IVTNUM 03230038 GO TO 5311 03240038 25300 IVFAIL = IVFAIL + 1 03250038 IVCORR = 12 03260038 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 03270038 5311 CONTINUE 03280038 IVTNUM = 531 03290038 C 03300038 C **** TEST 531 **** 03310038 C 03320038 IF (ICZERO) 35310, 5310, 35310 03330038 5310 CONTINUE 03340038 IVCOMP = ((-27342)/(-4))/(-3) 03350038 GO TO 45310 03360038 35310 IVDELE = IVDELE + 1 03370038 WRITE (I02,80003) IVTNUM 03380038 IF (ICZERO) 45310, 5321, 45310 03390038 45310 IF (IVCOMP + 2278) 25310,15310,25310 03400038 15310 IVPASS = IVPASS + 1 03410038 WRITE (I02,80001) IVTNUM 03420038 GO TO 5321 03430038 25310 IVFAIL = IVFAIL + 1 03440038 IVCORR = -2278 03450038 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 03460038 C 03470038 C TEST 532 THROUGH TEST 537 CONTAIN ARITHMETIC ASSIGNMENT STATEMENTS03480038 C OF THE FORM IV = IC/(IC/IC). 03490038 C NO TRUNCATION OF THE RESULT IS REQUIRED. BOTH POSITIVE AND 03500038 C NEGATIVE CONSTANTS ARE INCLUDED. 03510038 C 03520038 5321 CONTINUE 03530038 IVTNUM = 532 03540038 C 03550038 C **** TEST 532 **** 03560038 C 03570038 IF (ICZERO) 35320, 5320, 35320 03580038 5320 CONTINUE 03590038 IVCOMP = 24/(8/4) 03600038 GO TO 45320 03610038 35320 IVDELE = IVDELE + 1 03620038 WRITE (I02,80003) IVTNUM 03630038 IF (ICZERO) 45320, 5331, 45320 03640038 45320 IF (IVCOMP - 12) 25320,15320,25320 03650038 15320 IVPASS = IVPASS + 1 03660038 WRITE (I02,80001) IVTNUM 03670038 GO TO 5331 03680038 25320 IVFAIL = IVFAIL + 1 03690038 IVCORR = 12 03700038 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 03710038 5331 CONTINUE 03720038 IVTNUM = 533 03730038 C 03740038 C **** TEST 533 **** 03750038 C 03760038 IF (ICZERO) 35330, 5330, 35330 03770038 5330 CONTINUE 03780038 IVCOMP = 7150/(25/5) 03790038 GO TO 45330 03800038 35330 IVDELE = IVDELE + 1 03810038 WRITE (I02,80003) IVTNUM 03820038 IF (ICZERO) 45330, 5341, 45330 03830038 45330 IF (IVCOMP - 1430) 25330,15330,25330 03840038 15330 IVPASS = IVPASS + 1 03850038 WRITE (I02,80001) IVTNUM 03860038 GO TO 5341 03870038 25330 IVFAIL = IVFAIL + 1 03880038 IVCORR = 1430 03890038 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 03900038 5341 CONTINUE 03910038 IVTNUM = 534 03920038 C 03930038 C **** TEST 534 **** 03940038 C 03950038 IF (ICZERO) 35340, 5340, 35340 03960038 5340 CONTINUE 03970038 IVCOMP = -24/(8/4) 03980038 GO TO 45340 03990038 35340 IVDELE = IVDELE + 1 04000038 WRITE (I02,80003) IVTNUM 04010038 IF (ICZERO) 45340, 5351, 45340 04020038 45340 IF (IVCOMP + 12) 25340,15340,25340 04030038 15340 IVPASS = IVPASS + 1 04040038 WRITE (I02,80001) IVTNUM 04050038 GO TO 5351 04060038 25340 IVFAIL = IVFAIL + 1 04070038 IVCORR = -12 04080038 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 04090038 5351 CONTINUE 04100038 IVTNUM = 535 04110038 C 04120038 C **** TEST 535 **** 04130038 C 04140038 IF (ICZERO) 35350, 5350, 35350 04150038 5350 CONTINUE 04160038 IVCOMP = 24/((-8)/4) 04170038 GO TO 45350 04180038 35350 IVDELE = IVDELE + 1 04190038 WRITE (I02,80003) IVTNUM 04200038 IF (ICZERO) 45350, 5361, 45350 04210038 45350 IF (IVCOMP + 12) 25350,15350,25350 04220038 15350 IVPASS = IVPASS + 1 04230038 WRITE (I02,80001) IVTNUM 04240038 GO TO 5361 04250038 25350 IVFAIL = IVFAIL + 1 04260038 IVCORR = -12 04270038 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 04280038 5361 CONTINUE 04290038 IVTNUM = 536 04300038 C 04310038 C **** TEST 536 **** 04320038 C 04330038 IF (ICZERO) 35360, 5360, 35360 04340038 5360 CONTINUE 04350038 IVCOMP = (-7150)/((-25)/(-5)) 04360038 GO TO 45360 04370038 35360 IVDELE = IVDELE + 1 04380038 WRITE (I02,80003) IVTNUM 04390038 IF (ICZERO) 45360, 5371, 45360 04400038 45360 IF (IVCOMP + 1430) 25360,15360,25360 04410038 15360 IVPASS = IVPASS + 1 04420038 WRITE (I02,80001) IVTNUM 04430038 GO TO 5371 04440038 25360 IVFAIL = IVFAIL + 1 04450038 IVCORR = -1430 04460038 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 04470038 5371 CONTINUE 04480038 IVTNUM = 537 04490038 C 04500038 C **** TEST 537 **** 04510038 C 04520038 IF (ICZERO) 35370, 5370, 35370 04530038 5370 CONTINUE 04540038 IVCOMP = -7150/(25/(-5)) 04550038 GO TO 45370 04560038 35370 IVDELE = IVDELE + 1 04570038 WRITE (I02,80003) IVTNUM 04580038 IF (ICZERO) 45370, 5381, 45370 04590038 45370 IF (IVCOMP - 1430) 25370,15370,25370 04600038 15370 IVPASS = IVPASS + 1 04610038 WRITE (I02,80001) IVTNUM 04620038 GO TO 5381 04630038 25370 IVFAIL = IVFAIL + 1 04640038 IVCORR = 1430 04650038 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 04660038 C 04670038 C TEST 538 THROUGH TEST 543 CONTAIN ARITHMETIC ASSIGMMENT STATEMENTS04680038 C OF THE FORM IV = IC/(IC/IC). 04690038 C TRUNCATION OF THE RESULT IS REQUIRED. BOTH POSITIVE AND 04700038 C NEGATIVE CONSTANTS ARE INCLUDED. 04710038 C 04720038 5381 CONTINUE 04730038 IVTNUM = 538 04740038 C 04750038 C **** TEST 538 **** 04760038 C 04770038 IF (ICZERO) 35380, 5380, 35380 04780038 5380 CONTINUE 04790038 IVCOMP = 29/(5/2) 04800038 GO TO 45380 04810038 35380 IVDELE = IVDELE + 1 04820038 WRITE (I02,80003) IVTNUM 04830038 IF (ICZERO) 45380, 5391, 45380 04840038 45380 IF (IVCOMP - 14) 25380,15380,25380 04850038 15380 IVPASS = IVPASS + 1 04860038 WRITE (I02,80001) IVTNUM 04870038 GO TO 5391 04880038 25380 IVFAIL = IVFAIL + 1 04890038 IVCORR = 14 04900038 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 04910038 5391 CONTINUE 04920038 IVTNUM = 539 04930038 C 04940038 C **** TEST 539 **** 04950038 C 04960038 IF (ICZERO) 35390, 5390, 35390 04970038 5390 CONTINUE 04980038 IVCOMP = 7154/(26/5) 04990038 GO TO 45390 05000038 35390 IVDELE = IVDELE + 1 05010038 WRITE (I02,80003) IVTNUM 05020038 IF (ICZERO) 45390, 5401, 45390 05030038 45390 IF (IVCOMP - 1430) 25390,15390,25390 05040038 15390 IVPASS = IVPASS + 1 05050038 WRITE (I02,80001) IVTNUM 05060038 GO TO 5401 05070038 25390 IVFAIL = IVFAIL + 1 05080038 IVCORR = 1430 05090038 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 05100038 5401 CONTINUE 05110038 IVTNUM = 540 05120038 C 05130038 C **** TEST 540 **** 05140038 C 05150038 IF (ICZERO) 35400, 5400, 35400 05160038 5400 CONTINUE 05170038 IVCOMP = -7154/(26/5) 05180038 GO TO 45400 05190038 35400 IVDELE = IVDELE + 1 05200038 WRITE (I02,80003) IVTNUM 05210038 IF (ICZERO) 45400, 5411, 45400 05220038 45400 IF (IVCOMP + 1430) 25400,15400,25400 05230038 15400 IVPASS = IVPASS + 1 05240038 WRITE (I02,80001) IVTNUM 05250038 GO TO 5411 05260038 25400 IVFAIL = IVFAIL + 1 05270038 IVCORR = -1430 05280038 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 05290038 5411 CONTINUE 05300038 IVTNUM = 541 05310038 C 05320038 C **** TEST 541 **** 05330038 C 05340038 IF (ICZERO) 35410, 5410, 35410 05350038 5410 CONTINUE 05360038 IVCOMP = (-7154)/((-26)/5) 05370038 GO TO 45410 05380038 35410 IVDELE = IVDELE + 1 05390038 WRITE (I02,80003) IVTNUM 05400038 IF (ICZERO) 45410, 5421, 45410 05410038 45410 IF (IVCOMP - 1430) 25410,15410,25410 05420038 15410 IVPASS = IVPASS + 1 05430038 WRITE (I02,80001) IVTNUM 05440038 GO TO 5421 05450038 25410 IVFAIL = IVFAIL + 1 05460038 IVCORR = 1430 05470038 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 05480038 5421 CONTINUE 05490038 IVTNUM = 542 05500038 C 05510038 C **** TEST 542 **** 05520038 C 05530038 IF (ICZERO) 35420, 5420, 35420 05540038 5420 CONTINUE 05550038 IVCOMP = 7154/((-26)/(-5)) 05560038 GO TO 45420 05570038 35420 IVDELE = IVDELE + 1 05580038 WRITE (I02,80003) IVTNUM 05590038 IF (ICZERO) 45420, 5431, 45420 05600038 45420 IF (IVCOMP - 1430) 25420,15420,25420 05610038 15420 IVPASS = IVPASS + 1 05620038 WRITE (I02,80001) IVTNUM 05630038 GO TO 5431 05640038 25420 IVFAIL = IVFAIL + 1 05650038 IVCORR = 1430 05660038 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 05670038 5431 CONTINUE 05680038 IVTNUM = 543 05690038 C 05700038 C **** TEST 543 **** 05710038 C 05720038 IF (ICZERO) 35430, 5430, 35430 05730038 5430 CONTINUE 05740038 IVCOMP = (-7154)/((-26)/(-5)) 05750038 GO TO 45430 05760038 35430 IVDELE = IVDELE + 1 05770038 WRITE (I02,80003) IVTNUM 05780038 IF (ICZERO) 45430, 5441, 45430 05790038 45430 IF (IVCOMP + 1430) 25430,15430,25430 05800038 15430 IVPASS = IVPASS + 1 05810038 WRITE (I02,80001) IVTNUM 05820038 GO TO 5441 05830038 25430 IVFAIL = IVFAIL + 1 05840038 IVCORR = -1430 05850038 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 05860038 C 05870038 C TEST 544 THROUGH TEST 547 CONTAIN ARITHMETIC ASSIGNMENT STATEMENTS05880038 C OF THE FORM INTEGER VARIABLE = INTEGER VARIABLE/INTEGER CONSTANT05890038 C 05900038 5441 CONTINUE 05910038 IVTNUM = 544 05920038 C 05930038 C **** TEST 544 **** 05940038 C 05950038 IF (ICZERO) 35440, 5440, 35440 05960038 5440 CONTINUE 05970038 IVON01 = 75 05980038 IVCOMP = IVON01/25 05990038 GO TO 45440 06000038 35440 IVDELE = IVDELE + 1 06010038 WRITE (I02,80003) IVTNUM 06020038 IF (ICZERO) 45440, 5451, 45440 06030038 45440 IF (IVCOMP - 3) 25440,15440,25440 06040038 15440 IVPASS = IVPASS + 1 06050038 WRITE (I02,80001) IVTNUM 06060038 GO TO 5451 06070038 25440 IVFAIL = IVFAIL + 1 06080038 IVCORR = 3 06090038 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 06100038 5451 CONTINUE 06110038 IVTNUM = 545 06120038 C 06130038 C **** TEST 545 **** 06140038 C 06150038 IF (ICZERO) 35450, 5450, 35450 06160038 5450 CONTINUE 06170038 IVON01 = -3575 06180038 IVCOMP = IVON01/25 06190038 GO TO 45450 06200038 35450 IVDELE = IVDELE + 1 06210038 WRITE (I02,80003) IVTNUM 06220038 IF (ICZERO) 45450, 5461, 45450 06230038 45450 IF (IVCOMP + 143) 25450,15450,25450 06240038 15450 IVPASS = IVPASS + 1 06250038 WRITE (I02,80001) IVTNUM 06260038 GO TO 5461 06270038 25450 IVFAIL = IVFAIL + 1 06280038 IVCORR = -143 06290038 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 06300038 5461 CONTINUE 06310038 IVTNUM = 546 06320038 C 06330038 C **** TEST 546 **** 06340038 C 06350038 IF (ICZERO) 35460, 5460, 35460 06360038 5460 CONTINUE 06370038 IVON01 = 3575 06380038 IVCOMP = IVON01/(-143) 06390038 GO TO 45460 06400038 35460 IVDELE = IVDELE + 1 06410038 WRITE (I02,80003) IVTNUM 06420038 IF (ICZERO) 45460, 5471, 45460 06430038 45460 IF (IVCOMP + 25) 25460,15460,25460 06440038 15460 IVPASS = IVPASS + 1 06450038 WRITE (I02,80001) IVTNUM 06460038 GO TO 5471 06470038 25460 IVFAIL = IVFAIL + 1 06480038 IVCORR = -25 06490038 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 06500038 5471 CONTINUE 06510038 IVTNUM = 547 06520038 C 06530038 C **** TEST 547 **** 06540038 C 06550038 IF (ICZERO) 35470, 5470, 35470 06560038 5470 CONTINUE 06570038 IVON01 = 959 06580038 IVCOMP = IVON01/120 06590038 GO TO 45470 06600038 35470 IVDELE = IVDELE + 1 06610038 WRITE (I02,80003) IVTNUM 06620038 IF (ICZERO) 45470, 5481, 45470 06630038 45470 IF (IVCOMP -7) 25470,15470,25470 06640038 15470 IVPASS = IVPASS + 1 06650038 WRITE (I02,80001) IVTNUM 06660038 GO TO 5481 06670038 25470 IVFAIL = IVFAIL + 1 06680038 IVCORR = 7 06690038 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 06700038 C 06710038 C TEST 548 THROUGH TEST 551 CONTAIN ARITHMETIC ASSIGNMENT STATEMENTS06720038 C OF THE FORM INTEGER VARIABLE =INTEGER CONSTANT/INTEGER VARIABLE.06730038 C 06740038 5481 CONTINUE 06750038 IVTNUM = 548 06760038 C 06770038 C **** TEST 548 **** 06780038 C 06790038 IF (ICZERO) 35480, 5480, 35480 06800038 5480 CONTINUE 06810038 IVON02 = 25 06820038 IVCOMP = 75/IVON02 06830038 GO TO 45480 06840038 35480 IVDELE = IVDELE + 1 06850038 WRITE (I02,80003) IVTNUM 06860038 IF (ICZERO) 45480, 5491, 45480 06870038 45480 IF (IVCOMP - 3) 25480,15480,25480 06880038 15480 IVPASS = IVPASS + 1 06890038 WRITE (I02,80001) IVTNUM 06900038 GO TO 5491 06910038 25480 IVFAIL = IVFAIL + 1 06920038 IVCORR = 3 06930038 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 06940038 5491 CONTINUE 06950038 IVTNUM = 549 06960038 C 06970038 C **** TEST 549 **** 06980038 C 06990038 IF (ICZERO) 35490, 5490, 35490 07000038 5490 CONTINUE 07010038 IVON02 = -25 07020038 IVCOMP = 3579/IVON02 07030038 GO TO 45490 07040038 35490 IVDELE = IVDELE + 1 07050038 WRITE (I02,80003) IVTNUM 07060038 IF (ICZERO) 45490, 5501, 45490 07070038 45490 IF (IVCOMP + 143) 25490,15490,25490 07080038 15490 IVPASS = IVPASS + 1 07090038 WRITE (I02,80001) IVTNUM 07100038 GO TO 5501 07110038 25490 IVFAIL = IVFAIL + 1 07120038 IVCORR = -143 07130038 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 07140038 5501 CONTINUE 07150038 IVTNUM = 550 07160038 C 07170038 C **** TEST 550 **** 07180038 C 07190038 IF (ICZERO) 35500, 5500, 35500 07200038 5500 CONTINUE 07210038 IVON02 = -143 07220038 IVCOMP = (-3575)/IVON02 07230038 GO TO 45500 07240038 35500 IVDELE = IVDELE + 1 07250038 WRITE (I02,80003) IVTNUM 07260038 IF (ICZERO) 45500, 5511, 45500 07270038 45500 IF (IVCOMP - 25) 25500,15500,25500 07280038 15500 IVPASS = IVPASS + 1 07290038 WRITE (I02,80001) IVTNUM 07300038 GO TO 5511 07310038 25500 IVFAIL = IVFAIL + 1 07320038 IVCORR = 25 07330038 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 07340038 5511 CONTINUE 07350038 IVTNUM = 551 07360038 C 07370038 C **** TEST 551 **** 07380038 C 07390038 IF (ICZERO) 35510, 5510, 35510 07400038 5510 CONTINUE 07410038 IVON02 = 120 07420038 IVCOMP = -959/IVON02 07430038 GO TO 45510 07440038 35510 IVDELE = IVDELE + 1 07450038 WRITE (I02,80003) IVTNUM 07460038 IF (ICZERO) 45510, 5521, 45510 07470038 45510 IF (IVCOMP + 7) 25510,15510,25510 07480038 15510 IVPASS = IVPASS + 1 07490038 WRITE (I02,80001) IVTNUM 07500038 GO TO 5521 07510038 25510 IVFAIL = IVFAIL + 1 07520038 IVCORR = -7 07530038 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 07540038 C **** END OF TESTS **** 07550038 5521 CONTINUE 07560038 C 07570038 C WRITE PAGE FOOTINGS AND RUN SUMMARIES 07580038 99999 CONTINUE 07590038 WRITE (I02,90002) 07600038 WRITE (I02,90006) 07610038 WRITE (I02,90002) 07620038 WRITE (I02,90002) 07630038 WRITE (I02,90007) 07640038 WRITE (I02,90002) 07650038 WRITE (I02,90008) IVFAIL 07660038 WRITE (I02,90009) IVPASS 07670038 WRITE (I02,90010) IVDELE 07680038 C 07690038 C 07700038 C TERMINATE ROUTINE EXECUTION 07710038 STOP 07720038 C 07730038 C FORMAT STATEMENTS FOR PAGE HEADERS 07740038 90000 FORMAT ("1") 07750038 90002 FORMAT (" ") 07760038 90001 FORMAT (" ",10X,"FORTRAN COMPILER VALIDATION SYSTEM" ) 07770038 90003 FORMAT (" ",21X,"VERSION 2.1" ) 07780038 90004 FORMAT (" ",10X,"FOR OFFICIAL USE ONLY - COPYRIGHT 1978" ) 07790038 90005 FORMAT (" ",5X,"TEST",5X,"PASS/FAIL", 5X,"COMPUTED",8X,"CORRECT") 07800038 90006 FORMAT (" ",5X,"----------------------------------------------" ) 07810038 90011 FORMAT (" ",18X,"SUBSET LEVEL TEST" ) 07820038 C 07830038 C FORMAT STATEMENTS FOR RUN SUMMARIES 07840038 90008 FORMAT (" ",15X,I5," ERRORS ENCOUNTERED" ) 07850038 90009 FORMAT (" ",15X,I5," TESTS PASSED" ) 07860038 90010 FORMAT (" ",15X,I5," TESTS DELETED" ) 07870038 C 07880038 C FORMAT STATEMENTS FOR TEST RESULTS 07890038 80001 FORMAT (" ",4X,I5,7X,"PASS") 07900038 80002 FORMAT (" ",4X,I5,7X,"FAIL") 07910038 80003 FORMAT (" ",4X,I5,7X,"DELETED") 07920038 80004 FORMAT (" ",4X,I5,7X,"FAIL",10X,I6,9X,I6) 07930038 80005 FORMAT (" ",4X,I5,7X,"FAIL",4X,E12.5,3X,E12.5) 07940038 C 07950038 90007 FORMAT (" ",20X,"END OF PROGRAM FM038" ) 07960038 END 07970038