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