| 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 |