PROGRAM FM061 C COMMENT SECTION 00010061 C 00020061 C FM061 00030061 C 00040061 C THIS ROUTINE TESTS ARITHMETIC ASSIGNMENT STATEMENTS OF THE 00050061 C FORM 00060061 C INTEGER VARIABLE = REAL CONSTANT 00070061 C INTEGER VARIABLE = REAL VARIABLE 00080061 C REAL VARIABLE = INTEGER VARIABLE 00090061 C REAL VARIABLE = INTEGER CONSTANT 00100061 C 00110061 C THE CONSTANTS AND VARIABLES CONTAIN BOTH POSITIVE AND NEGATIVE 00120061 C VALUES. 00130061 C 00140061 C A REAL DATUM IS A PROCESSOR APPROXIMATION TO THE VALUE OF A 00150061 C REAL NUMBER. IT MAY ASSUME POSITIVE, NEGATIVE AND ZERO VALUES. 00160061 C 00170061 C A BASIC REAL CONSTANT IS WRITTEN AS AN INTEGER PART, A 00180061 C DECIMAL POINT, AND A DECIMAL FRACTION PART IN THAT ORDER. BOTH 00190061 C THE INTEGER PART AND THE DECIMAL PART ARE STRINGS OF DIGITS; 00200061 C EITHER ONE OF THESE STRINGS MAY BE EMPTY BUT NOT BOTH. THE 00210061 C CONSTANT IS AN APPROXIMATION TO THE DIGIT STRING INTERPRETED AS A 00220061 C DECIMAL NUMERAL. 00230061 C 00240061 C A DECIMAL EXPONENT IS WRITTEN AS THE LETTER E, FOLLOWED BY AN 00250061 C OPTIONALLY SIGNED INTEGER CONSTANT. 00260061 C 00270061 C A REAL CONSTANT IS INDICATED BY WRITING A BASIC REAL CONSTANT,00280061 C A BASIC REAL CONSTANT FOLLOWED BY A DECIMAL EXPONENT, OR AN 00290061 C INTEGER CONSTANT FOLLOWED BY A DECIMAL EXPONENT. 00300061 C 00310061 C REFERENCES 00320061 C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, 00330061 C X3.9-1978 00340061 C 00350061 C SECTION 4.4, REAL TYPE 00360061 C SECTION 4.4.1, REAL CONSTANT 00370061 C SECTION 6.1, ARITHMETIC EXPRESSIONS 00380061 C SECTION 6.6, EVALUATION OF EXPRESSIONS 00390061 C SECTION 10.1, ARITHMETIC ASSIGNMENT STATEMENT 00400061 C SECTION 11.4, ARITHMETIC IF STATEMENT 00410061 C 00420061 C ********************************************************** 00430061 C 00440061 C A COMPILER VALIDATION SYSTEM FOR THE FORTRAN LANGUAGE 00450061 C BASED ON SPECIFICATIONS AS DEFINED IN AMERICAN NATIONAL STANDARD 00460061 C PROGRAMMING LANGUAGE FORTRAN X3.9-1978, HAS BEEN DEVELOPED BY THE 00470061 C FEDERAL COBOL COMPILER TESTING SERVICE. THE FORTRAN COMPILER 00480061 C VALIDATION SYSTEM (FCVS) CONSISTS OF AUDIT ROUTINES, THEIR RELATED00490061 C DATA, AND AN EXECUTIVE SYSTEM. EACH AUDIT ROUTINE IS A FORTRAN 00500061 C PROGRAM, SUBPROGRAM OR FUNCTION WHICH INCLUDES TESTS OF SPECIFIC 00510061 C LANGUAGE ELEMENTS AND SUPPORTING PROCEDURES INDICATING THE RESULT 00520061 C OF EXECUTING THESE TESTS. 00530061 C 00540061 C THIS PARTICULAR PROGRAM/SUBPROGRAM/FUNCTION CONTAINS FEATURES 00550061 C FOUND ONLY IN THE SUBSET AS DEFINED IN X3.9-1978. 00560061 C 00570061 C SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO - 00580061 C 00590061 C NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY 00600061 C SOFTWARE STANDARDS VALIDATION GROUP 00610061 C BUILDING 225 RM A266 00620061 C GAITHERSBURG, MD 20899 00630061 C ********************************************************** 00640061 C 00650061 C 00660061 C 00670061 C INITIALIZATION SECTION 00680061 C 00690061 C INITIALIZE CONSTANTS 00700061 C ************** 00710061 C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. 00720061 I01 = 5 00730061 C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. 00740061 I02 = 6 00750061 C SYSTEM ENVIRONMENT SECTION 00760061 C 00770061 CX010 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-010 CONTROL CARD. 00780061 C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 00790061 C (UNIT NUMBER FOR CARD READER). 00800061 CX011 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-011 CONTROL CARD. 00810061 C THE CX011 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL 00820061 C FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX010 ABOVE. 00830061 C 00840061 CX020 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-020 CONTROL CARD. 00850061 C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02 = 6 00860061 C (UNIT NUMBER FOR PRINTER). 00870061 CX021 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-021 CONTROL CARD. 00880061 C THE CX021 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL 00890061 C FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX020 ABOVE. 00900061 C 00910061 IVPASS=0 00920061 IVFAIL=0 00930061 IVDELE=0 00940061 ICZERO=0 00950061 C 00960061 C WRITE PAGE HEADERS 00970061 WRITE (I02,90000) 00980061 WRITE (I02,90001) 00990061 WRITE (I02,90002) 01000061 WRITE (I02, 90002) 01010061 WRITE (I02,90003) 01020061 WRITE (I02,90002) 01030061 WRITE (I02,90004) 01040061 WRITE (I02,90002) 01050061 WRITE (I02,90011) 01060061 WRITE (I02,90002) 01070061 WRITE (I02,90002) 01080061 WRITE (I02,90005) 01090061 WRITE (I02,90006) 01100061 WRITE (I02,90002) 01110061 C 01120061 C TEST SECTION 01130061 C 01140061 C TEST 32 THROUGH TEST 42 CONTAIN ARITHMETIC ASSIGNMENT 01150061 C STATEMENTS OF THE FORM 01160061 C 01170061 C INTEGER VARIABLE = REAL VARIABLE 01180061 C 01190061 IVTNUM = 32 01200061 C 01210061 C **** TEST 32 **** 01220061 C 01230061 IF (ICZERO) 30320, 320, 30320 01240061 320 CONTINUE 01250061 RVON01 = 44.5 01260061 IVCOMP = RVON01 01270061 GO TO 40320 01280061 30320 IVDELE = IVDELE + 1 01290061 WRITE (I02,80003) IVTNUM 01300061 IF (ICZERO) 40320, 331, 40320 01310061 40320 IF (IVCOMP - 44) 20320,10320,20320 01320061 10320 IVPASS = IVPASS + 1 01330061 WRITE (I02,80001) IVTNUM 01340061 GO TO 331 01350061 20320 IVFAIL = IVFAIL + 1 01360061 IVCORR = 44 01370061 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 01380061 331 CONTINUE 01390061 IVTNUM = 33 01400061 C 01410061 C **** TEST 33 **** 01420061 C 01430061 IF (ICZERO) 30330, 330, 30330 01440061 330 CONTINUE 01450061 RVON01 = -2.0005 01460061 IVCOMP = RVON01 01470061 GO TO 40330 01480061 30330 IVDELE = IVDELE + 1 01490061 WRITE (I02,80003) IVTNUM 01500061 IF (ICZERO) 40330, 341, 40330 01510061 40330 IF (IVCOMP + 2) 20330,10330,20330 01520061 10330 IVPASS = IVPASS + 1 01530061 WRITE (I02,80001) IVTNUM 01540061 GO TO 341 01550061 20330 IVFAIL = IVFAIL + 1 01560061 IVCORR = -2 01570061 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 01580061 341 CONTINUE 01590061 IVTNUM = 34 01600061 C 01610061 C **** TEST 34 **** 01620061 C 01630061 IF (ICZERO) 30340, 340, 30340 01640061 340 CONTINUE 01650061 RVON01 = .32767 01660061 IVCOMP = RVON01 01670061 GO TO 40340 01680061 30340 IVDELE = IVDELE + 1 01690061 WRITE (I02,80003) IVTNUM 01700061 IF (ICZERO) 40340, 351, 40340 01710061 40340 IF (IVCOMP) 20340,10340,20340 01720061 10340 IVPASS = IVPASS + 1 01730061 WRITE (I02,80001) IVTNUM 01740061 GO TO 351 01750061 20340 IVFAIL = IVFAIL + 1 01760061 IVCORR = 0 01770061 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 01780061 351 CONTINUE 01790061 IVTNUM = 35 01800061 C 01810061 C **** TEST 35 **** 01820061 C 01830061 IF (ICZERO) 30350, 350, 30350 01840061 350 CONTINUE 01850061 RVON01 = 1.999 01860061 IVCOMP = RVON01 01870061 GO TO 40350 01880061 30350 IVDELE = IVDELE + 1 01890061 WRITE (I02,80003) IVTNUM 01900061 IF (ICZERO) 40350, 361, 40350 01910061 40350 IF (IVCOMP - 1) 20350,10350,20350 01920061 10350 IVPASS = IVPASS + 1 01930061 WRITE (I02,80001) IVTNUM 01940061 GO TO 361 01950061 20350 IVFAIL = IVFAIL + 1 01960061 IVCORR = 1 01970061 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 01980061 361 CONTINUE 01990061 IVTNUM = 36 02000061 C 02010061 C **** TEST 36 **** 02020061 C 02030061 IF (ICZERO) 30360, 360, 30360 02040061 360 CONTINUE 02050061 RVON01 = .25E+1 02060061 IVCOMP = RVON01 02070061 GO TO 40360 02080061 30360 IVDELE = IVDELE + 1 02090061 WRITE (I02,80003) IVTNUM 02100061 IF (ICZERO) 40360, 371, 40360 02110061 40360 IF (IVCOMP - 2) 20360,10360,20360 02120061 10360 IVPASS = IVPASS + 1 02130061 WRITE (I02,80001) IVTNUM 02140061 GO TO 371 02150061 20360 IVFAIL = IVFAIL + 1 02160061 IVCORR = 2 02170061 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 02180061 371 CONTINUE 02190061 IVTNUM = 37 02200061 C 02210061 C **** TEST 37 **** 02220061 C 02230061 IF (ICZERO) 30370, 370, 30370 02240061 370 CONTINUE 02250061 RVON01 = 445.0E-01 02260061 IVCOMP = RVON01 02270061 GO TO 40370 02280061 30370 IVDELE = IVDELE + 1 02290061 WRITE (I02,80003) IVTNUM 02300061 IF (ICZERO) 40370, 381, 40370 02310061 40370 IF (IVCOMP - 44) 20370,10370,20370 02320061 10370 IVPASS = IVPASS + 1 02330061 WRITE (I02,80001) IVTNUM 02340061 GO TO 381 02350061 20370 IVFAIL = IVFAIL + 1 02360061 IVCORR = 44 02370061 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 02380061 381 CONTINUE 02390061 IVTNUM = 38 02400061 C 02410061 C **** TEST 38 **** 02420061 C 02430061 IF (ICZERO) 30380, 380, 30380 02440061 380 CONTINUE 02450061 RVON01 = -651.1E-0 02460061 IVCOMP = RVON01 02470061 GO TO 40380 02480061 30380 IVDELE = IVDELE + 1 02490061 WRITE (I02,80003) IVTNUM 02500061 IF (ICZERO) 40380, 391, 40380 02510061 40380 IF (IVCOMP + 651) 20380,10380,20380 02520061 10380 IVPASS = IVPASS + 1 02530061 WRITE (I02,80001) IVTNUM 02540061 GO TO 391 02550061 20380 IVFAIL = IVFAIL + 1 02560061 IVCORR = -651 02570061 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 02580061 391 CONTINUE 02590061 IVTNUM = 39 02600061 C 02610061 C **** TEST 39 **** 02620061 C 02630061 IF (ICZERO) 30390, 390, 30390 02640061 390 CONTINUE 02650061 RVON01 = .3266E4 02660061 IVCOMP = RVON01 02670061 GO TO 40390 02680061 30390 IVDELE = IVDELE + 1 02690061 WRITE (I02,80003) IVTNUM 02700061 IF (ICZERO) 40390, 401, 40390 02710061 40390 IF (IVCOMP - 3266) 20390,10390,20390 02720061 10390 IVPASS = IVPASS + 1 02730061 WRITE (I02,80001) IVTNUM 02740061 GO TO 401 02750061 20390 IVFAIL = IVFAIL + 1 02760061 IVCORR = 3266 02770061 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 02780061 401 CONTINUE 02790061 IVTNUM = 40 02800061 C 02810061 C **** TEST 40 **** 02820061 C 02830061 IF (ICZERO) 30400, 400, 30400 02840061 400 CONTINUE 02850061 RVON01 = 35.43E-01 02860061 IVCOMP = RVON01 02870061 GO TO 40400 02880061 30400 IVDELE = IVDELE + 1 02890061 WRITE (I02,80003) IVTNUM 02900061 IF (ICZERO) 40400, 411, 40400 02910061 40400 IF (IVCOMP - 3) 20400,10400,20400 02920061 10400 IVPASS = IVPASS + 1 02930061 WRITE (I02,80001) IVTNUM 02940061 GO TO 411 02950061 20400 IVFAIL = IVFAIL + 1 02960061 IVCORR = 3 02970061 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 02980061 411 CONTINUE 02990061 IVTNUM = 41 03000061 C 03010061 C **** TEST 41 **** 03020061 C 03030061 IF (ICZERO) 30410, 410, 30410 03040061 410 CONTINUE 03050061 RVON01 = -7.001E2 03060061 IVCOMP = RVON01 03070061 GO TO 40410 03080061 30410 IVDELE = IVDELE + 1 03090061 WRITE (I02,80003) IVTNUM 03100061 IF (ICZERO) 40410, 421, 40410 03110061 40410 IF (IVCOMP + 700) 20410,10410,20410 03120061 10410 IVPASS = IVPASS + 1 03130061 WRITE (I02,80001) IVTNUM 03140061 GO TO 421 03150061 20410 IVFAIL = IVFAIL + 1 03160061 IVCORR = -700 03170061 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 03180061 421 CONTINUE 03190061 IVTNUM = 42 03200061 C 03210061 C **** TEST 42 **** 03220061 C 03230061 IF (ICZERO) 30420, 420, 30420 03240061 420 CONTINUE 03250061 RVON01 = 4.45E-02 03260061 IVCOMP = RVON01 03270061 GO TO 40420 03280061 30420 IVDELE = IVDELE + 1 03290061 WRITE (I02,80003) IVTNUM 03300061 IF (ICZERO) 40420, 431, 40420 03310061 40420 IF (IVCOMP) 20420,10420,20420 03320061 10420 IVPASS = IVPASS + 1 03330061 WRITE (I02,80001) IVTNUM 03340061 GO TO 431 03350061 20420 IVFAIL = IVFAIL + 1 03360061 IVCORR = 0 03370061 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 03380061 C TEST 43 THROUGH TEST 48 CONTAIN ARITHMETIC ASSIGNMENT 03390061 C STATEMENTS OF THE FORM 03400061 C 03410061 C REAL VARIABLE = INTEGER VARIABLE 03420061 C 03430061 431 CONTINUE 03440061 IVTNUM = 43 03450061 C 03460061 C **** TEST 43 **** 03470061 C 03480061 IF (ICZERO) 30430, 430, 30430 03490061 430 CONTINUE 03500061 IVON01 = 2 03510061 RVCOMP = IVON01 03520061 GO TO 40430 03530061 30430 IVDELE = IVDELE + 1 03540061 WRITE (I02,80003) IVTNUM 03550061 IF (ICZERO) 40430, 441, 40430 03560061 40430 IF (RVCOMP - 1.9995) 20430,10430,40431 03570061 40431 IF (RVCOMP - 2.0005) 10430,10430,20430 03580061 10430 IVPASS = IVPASS + 1 03590061 WRITE (I02,80001) IVTNUM 03600061 GO TO 441 03610061 20430 IVFAIL = IVFAIL + 1 03620061 RVCORR = 2.0000 03630061 WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 03640061 441 CONTINUE 03650061 IVTNUM = 44 03660061 C 03670061 C **** TEST 44 **** 03680061 C 03690061 IF (ICZERO) 30440, 440, 30440 03700061 440 CONTINUE 03710061 IVON01 = 25 03720061 RVCOMP = IVON01 03730061 GO TO 40440 03740061 30440 IVDELE = IVDELE + 1 03750061 WRITE (I02,80003) IVTNUM 03760061 IF (ICZERO) 40440, 451, 40440 03770061 40440 IF (RVCOMP - 24.995) 20440,10440,40441 03780061 40441 IF (RVCOMP - 25.005) 10440,10440,20440 03790061 10440 IVPASS = IVPASS + 1 03800061 WRITE (I02,80001) IVTNUM 03810061 GO TO 451 03820061 20440 IVFAIL = IVFAIL + 1 03830061 RVCORR = 25.000 03840061 WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 03850061 451 CONTINUE 03860061 IVTNUM = 45 03870061 C 03880061 C **** TEST 45 **** 03890061 C 03900061 IF (ICZERO) 30450, 450, 30450 03910061 450 CONTINUE 03920061 IVON01 = 357 03930061 RVCOMP = IVON01 03940061 GO TO 40450 03950061 30450 IVDELE = IVDELE + 1 03960061 WRITE (I02,80003) IVTNUM 03970061 IF (ICZERO) 40450, 461, 40450 03980061 40450 IF (RVCOMP - 356.95) 20450,10450,40451 03990061 40451 IF (RVCOMP - 357.05) 10450,10450,20450 04000061 10450 IVPASS = IVPASS + 1 04010061 WRITE (I02,80001) IVTNUM 04020061 GO TO 461 04030061 20450 IVFAIL = IVFAIL + 1 04040061 RVCORR = 357.00 04050061 WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 04060061 461 CONTINUE 04070061 IVTNUM = 46 04080061 C 04090061 C **** TEST 46 **** 04100061 C 04110061 IF (ICZERO) 30460, 460, 30460 04120061 460 CONTINUE 04130061 IVON01 = 4968 04140061 RVCOMP = IVON01 04150061 GO TO 40460 04160061 30460 IVDELE = IVDELE + 1 04170061 WRITE (I02,80003) IVTNUM 04180061 IF (ICZERO) 40460, 471, 40460 04190061 40460 IF (RVCOMP - 4967.5) 20460,10460,40461 04200061 40461 IF (RVCOMP - 4968.5) 10460,10460,20460 04210061 10460 IVPASS = IVPASS + 1 04220061 WRITE (I02,80001) IVTNUM 04230061 GO TO 471 04240061 20460 IVFAIL = IVFAIL + 1 04250061 RVCORR = 4968.0 04260061 WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 04270061 471 CONTINUE 04280061 IVTNUM = 47 04290061 C 04300061 C **** TEST 47 **** 04310061 C 04320061 IF (ICZERO) 30470, 470, 30470 04330061 470 CONTINUE 04340061 IVON01 = 32767 04350061 RVCOMP = IVON01 04360061 GO TO 40470 04370061 30470 IVDELE = IVDELE + 1 04380061 WRITE (I02,80003) IVTNUM 04390061 IF (ICZERO) 40470, 481, 40470 04400061 40470 IF (RVCOMP - 32762.) 20470,10470,40471 04410061 40471 IF (RVCOMP - 32772.) 10470,10470,20470 04420061 10470 IVPASS = IVPASS + 1 04430061 WRITE (I02,80001) IVTNUM 04440061 GO TO 481 04450061 20470 IVFAIL = IVFAIL + 1 04460061 RVCORR = 32767. 04470061 WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 04480061 481 CONTINUE 04490061 IVTNUM = 48 04500061 C 04510061 C **** TEST 48 **** 04520061 C 04530061 IF (ICZERO) 30480, 480, 30480 04540061 480 CONTINUE 04550061 IVON01 = -2 04560061 RVCOMP = IVON01 04570061 GO TO 40480 04580061 30480 IVDELE = IVDELE + 1 04590061 WRITE (I02,80003) IVTNUM 04600061 IF (ICZERO) 40480, 491, 40480 04610061 40480 IF (RVCOMP + 2.0005) 20480,10480,40481 04620061 40481 IF (RVCOMP + 1.9995) 10480,10480,20450 04630061 10480 IVPASS = IVPASS + 1 04640061 WRITE (I02,80001) IVTNUM 04650061 GO TO 491 04660061 20480 IVFAIL = IVFAIL + 1 04670061 RVCORR = -2.0000 04680061 WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 04690061 C 04700061 C TEST 49 THROUGH TEST 51 CONTAIN ARITHMETIC ASSIGNMENT STATEMENTS 04710061 C OF THE FORM 04720061 C INTEGER VARIABLE = REAL CONSTANT 04730061 C WHERE CONSTANT IS BASIC REAL CONSTANT 04740061 C 04750061 491 CONTINUE 04760061 IVTNUM = 49 04770061 C 04780061 C **** TEST 49 **** 04790061 C 04800061 IF (ICZERO) 30490, 490, 30490 04810061 490 CONTINUE 04820061 IVCOMP = 44.5 04830061 GO TO 40490 04840061 30490 IVDELE = IVDELE + 1 04850061 WRITE (I02,80003) IVTNUM 04860061 IF (ICZERO) 40490, 501, 40490 04870061 40490 IF (IVCOMP - 44) 20490,10490,20490 04880061 10490 IVPASS = IVPASS + 1 04890061 WRITE (I02,80001) IVTNUM 04900061 GO TO 501 04910061 20490 IVFAIL = IVFAIL + 1 04920061 IVCORR = 44 04930061 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 04940061 501 CONTINUE 04950061 IVTNUM = 50 04960061 C 04970061 C **** TEST 50 **** 04980061 C 04990061 IF (ICZERO) 30500, 500, 30500 05000061 500 CONTINUE 05010061 IVCOMP = 6500.1 05020061 GO TO 40500 05030061 30500 IVDELE = IVDELE + 1 05040061 WRITE (I02,80003) IVTNUM 05050061 IF (ICZERO) 40500, 511, 40500 05060061 40500 IF (IVCOMP - 6500) 20500,10500,20500 05070061 10500 IVPASS = IVPASS + 1 05080061 WRITE (I02,80001) IVTNUM 05090061 GO TO 511 05100061 20500 IVFAIL = IVFAIL + 1 05110061 IVCORR = 6500 05120061 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 05130061 511 CONTINUE 05140061 IVTNUM = 51 05150061 C 05160061 C **** TEST 51 **** 05170061 C 05180061 IF (ICZERO) 30510, 510, 30510 05190061 510 CONTINUE 05200061 IVCOMP = -.33333 05210061 GO TO 40510 05220061 30510 IVDELE = IVDELE + 1 05230061 WRITE (I02,80003) IVTNUM 05240061 IF (ICZERO) 40510, 521, 40510 05250061 40510 IF (IVCOMP) 20510,10510,20510 05260061 10510 IVPASS = IVPASS + 1 05270061 WRITE (I02,80001) IVTNUM 05280061 GO TO 521 05290061 20510 IVFAIL = IVFAIL + 1 05300061 IVCORR = 0 05310061 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 05320061 C 05330061 C TEST 52 THROUGH TEST 55 CONTAIN ARITHMETIC ASSIGNMENT STATEMENTS 05340061 C OF THE FORM 05350061 C INTEGER VARIABLE = REAL CONSTANT 05360061 C 05370061 C WHERE CONSTANT IS BASIC REAL CONSTANT FOLLOWED BY DECIMAL EXPONENT05380061 C 05390061 521 CONTINUE 05400061 IVTNUM = 52 05410061 C 05420061 C **** TEST 52 **** 05430061 C 05440061 IF (ICZERO) 30520, 520, 30520 05450061 520 CONTINUE 05460061 IVCOMP = .21E+1 05470061 GO TO 40520 05480061 30520 IVDELE = IVDELE + 1 05490061 WRITE (I02,80003) IVTNUM 05500061 IF (ICZERO) 40520, 531, 40520 05510061 40520 IF (IVCOMP - 2) 20520,10520,20520 05520061 10520 IVPASS = IVPASS + 1 05530061 WRITE (I02,80001) IVTNUM 05540061 GO TO 531 05550061 20520 IVFAIL = IVFAIL + 1 05560061 IVCORR = 2 05570061 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 05580061 531 CONTINUE 05590061 IVTNUM = 53 05600061 C 05610061 C **** TEST 53 **** 05620061 C 05630061 IF (ICZERO) 30530, 530, 30530 05640061 530 CONTINUE 05650061 IVCOMP = 445.0E-01 05660061 GO TO 40530 05670061 30530 IVDELE = IVDELE + 1 05680061 WRITE (I02,80003) IVTNUM 05690061 IF (ICZERO) 40530, 541, 40530 05700061 40530 IF (IVCOMP - 44) 20530,10530,20530 05710061 10530 IVPASS = IVPASS + 1 05720061 WRITE (I02,80001) IVTNUM 05730061 GO TO 541 05740061 20530 IVFAIL = IVFAIL + 1 05750061 IVCORR = 44 05760061 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 05770061 541 CONTINUE 05780061 IVTNUM = 54 05790061 C 05800061 C **** TEST 54 **** 05810061 C 05820061 IF (ICZERO) 30540, 540, 30540 05830061 540 CONTINUE 05840061 IVCOMP = 4.450E1 05850061 GO TO 40540 05860061 30540 IVDELE = IVDELE + 1 05870061 WRITE (I02,80003) IVTNUM 05880061 IF (ICZERO) 40540, 551, 40540 05890061 40540 IF (IVCOMP - 44) 20540,10540,20540 05900061 10540 IVPASS = IVPASS + 1 05910061 WRITE (I02,80001) IVTNUM 05920061 GO TO 551 05930061 20540 IVFAIL = IVFAIL + 1 05940061 IVCORR = 44 05950061 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 05960061 551 CONTINUE 05970061 IVTNUM = 55 05980061 C 05990061 C **** TEST 55 **** 06000061 C 06010061 IF (ICZERO) 30550, 550, 30550 06020061 550 CONTINUE 06030061 IVCOMP = -4.45E0 06040061 GO TO 40550 06050061 30550 IVDELE = IVDELE + 1 06060061 WRITE (I02,80003) IVTNUM 06070061 IF (ICZERO) 40550, 561, 40550 06080061 40550 IF (IVCOMP + 4) 20550,10550,20550 06090061 10550 IVPASS = IVPASS + 1 06100061 WRITE (I02,80001) IVTNUM 06110061 GO TO 561 06120061 20550 IVFAIL = IVFAIL + 1 06130061 IVCORR = -4 06140061 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 06150061 C 06160061 C TEST 56 AND 57 CONTAIN ARITHMETIC ASSIGNMENT STATEMENTS OF THE 06170061 C FORM INTEGER VARIABLE = REAL CONSTANT 06180061 C WHERE CONSTANT IS INTEGER CONSTANT FOLLOWED BY DECIMAL EXPONENT 06190061 C 06200061 561 CONTINUE 06210061 IVTNUM = 56 06220061 C 06230061 C **** TEST 56 **** 06240061 C 06250061 IF (ICZERO) 30560, 560, 30560 06260061 560 CONTINUE 06270061 IVCOMP = 445E-02 06280061 GO TO 40560 06290061 30560 IVDELE = IVDELE + 1 06300061 WRITE (I02,80003) IVTNUM 06310061 IF (ICZERO) 40560, 571, 40560 06320061 40560 IF (IVCOMP - 4) 20560,10560,20560 06330061 10560 IVPASS = IVPASS + 1 06340061 WRITE (I02,80001) IVTNUM 06350061 GO TO 571 06360061 20560 IVFAIL = IVFAIL + 1 06370061 IVCORR = 4 06380061 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 06390061 571 CONTINUE 06400061 IVTNUM = 57 06410061 C 06420061 C **** TEST 57 **** 06430061 C 06440061 IF (ICZERO) 30570, 570, 30570 06450061 570 CONTINUE 06460061 IVCOMP = -701E-1 06470061 GO TO 40570 06480061 30570 IVDELE = IVDELE + 1 06490061 WRITE (I02,80003) IVTNUM 06500061 IF (ICZERO) 40570, 581, 40570 06510061 40570 IF (IVCOMP + 70) 20570,10570,20570 06520061 10570 IVPASS = IVPASS + 1 06530061 WRITE (I02,80001) IVTNUM 06540061 GO TO 581 06550061 20570 IVFAIL = IVFAIL + 1 06560061 IVCORR = -70 06570061 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 06580061 C 06590061 C TEST 58 THROUGH TEST 62 CONTAIN ARITHMETIC ASSIGNMENT STATEMENTS 06600061 C OF THE FORM REAL VARIABLE = INTEGER CONSTANT 06610061 C 06620061 581 CONTINUE 06630061 IVTNUM = 58 06640061 C 06650061 C **** TEST 58 **** 06660061 C 06670061 IF (ICZERO) 30580, 580, 30580 06680061 580 CONTINUE 06690061 RVCOMP = 23 06700061 GO TO 40580 06710061 30580 IVDELE = IVDELE + 1 06720061 WRITE (I02,80003) IVTNUM 06730061 IF (ICZERO) 40580, 591, 40580 06740061 40580 IF (RVCOMP - 22.995) 20580,10580,40581 06750061 40581 IF (RVCOMP - 23.005) 10580,10580,20580 06760061 10580 IVPASS = IVPASS + 1 06770061 WRITE (I02,80001) IVTNUM 06780061 GO TO 591 06790061 20580 IVFAIL = IVFAIL + 1 06800061 RVCORR = 23.000 06810061 WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 06820061 591 CONTINUE 06830061 IVTNUM = 59 06840061 C 06850061 C **** TEST 59 **** 06860061 C 06870061 IF (ICZERO) 30590, 590, 30590 06880061 590 CONTINUE 06890061 RVCOMP = 32645 06900061 GO TO 40590 06910061 30590 IVDELE = IVDELE + 1 06920061 WRITE (I02,80003) IVTNUM 06930061 IF (ICZERO) 40590, 601, 40590 06940061 40590 IF (RVCOMP - 32640.) 20590,10590,40591 06950061 40591 IF (RVCOMP - 32650.) 10590,10590,20590 06960061 10590 IVPASS = IVPASS + 1 06970061 WRITE (I02,80001) IVTNUM 06980061 GO TO 601 06990061 20590 IVFAIL = IVFAIL + 1 07000061 RVCORR = 32645. 07010061 WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 07020061 601 CONTINUE 07030061 IVTNUM = 60 07040061 C 07050061 C **** TEST 60 **** 07060061 C 07070061 IF (ICZERO) 30600, 600, 30600 07080061 600 CONTINUE 07090061 RVCOMP = 0 07100061 GO TO 40600 07110061 30600 IVDELE = IVDELE + 1 07120061 WRITE (I02,80003) IVTNUM 07130061 IF (ICZERO) 40600, 611, 40600 07140061 40600 IF (RVCOMP) 20600,10600,20600 07150061 10600 IVPASS = IVPASS + 1 07160061 WRITE (I02,80001) IVTNUM 07170061 GO TO 611 07180061 20600 IVFAIL = IVFAIL + 1 07190061 RVCORR = 00000. 07200061 WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 07210061 611 CONTINUE 07220061 IVTNUM = 61 07230061 C 07240061 C **** TEST 61 **** 07250061 C 07260061 IF (ICZERO) 30610, 610, 30610 07270061 610 CONTINUE 07280061 RVCOMP = -15 07290061 GO TO 40610 07300061 30610 IVDELE = IVDELE + 1 07310061 WRITE (I02,80003) IVTNUM 07320061 IF (ICZERO) 40610, 621, 40610 07330061 40610 IF (RVCOMP -14.995) 40611,10610,20610 07340061 40611 IF (RVCOMP + 15.005) 20610,10610,10610 07350061 10610 IVPASS = IVPASS + 1 07360061 WRITE (I02,80001) IVTNUM 07370061 GO TO 621 07380061 20610 IVFAIL = IVFAIL + 1 07390061 RVCORR = -15.000 07400061 WRITE (I02,80005) IVTNUM, RVCOMP, RVCORR 07410061 621 CONTINUE 07420061 C 07430061 C **** END OF TESTS **** 07440061 C 07450061 C 07460061 C WRITE PAGE FOOTINGS AND RUN SUMMARIES 07470061 99999 CONTINUE 07480061 WRITE (I02,90002) 07490061 WRITE (I02,90006) 07500061 WRITE (I02,90002) 07510061 WRITE (I02,90002) 07520061 WRITE (I02,90007) 07530061 WRITE (I02,90002) 07540061 WRITE (I02,90008) IVFAIL 07550061 WRITE (I02,90009) IVPASS 07560061 WRITE (I02,90010) IVDELE 07570061 C 07580061 C 07590061 C TERMINATE ROUTINE EXECUTION 07600061 STOP 07610061 C 07620061 C FORMAT STATEMENTS FOR PAGE HEADERS 07630061 90000 FORMAT ("1") 07640061 90002 FORMAT (" ") 07650061 90001 FORMAT (" ",10X,"FORTRAN COMPILER VALIDATION SYSTEM" ) 07660061 90003 FORMAT (" ",21X,"VERSION 2.1" ) 07670061 90004 FORMAT (" ",10X,"FOR OFFICIAL USE ONLY - COPYRIGHT 1978" ) 07680061 90005 FORMAT (" ",5X,"TEST",5X,"PASS/FAIL", 5X,"COMPUTED",8X,"CORRECT") 07690061 90006 FORMAT (" ",5X,"----------------------------------------------" ) 07700061 90011 FORMAT (" ",18X,"SUBSET LEVEL TEST" ) 07710061 C 07720061 C FORMAT STATEMENTS FOR RUN SUMMARIES 07730061 90008 FORMAT (" ",15X,I5," ERRORS ENCOUNTERED" ) 07740061 90009 FORMAT (" ",15X,I5," TESTS PASSED" ) 07750061 90010 FORMAT (" ",15X,I5," TESTS DELETED" ) 07760061 C 07770061 C FORMAT STATEMENTS FOR TEST RESULTS 07780061 80001 FORMAT (" ",4X,I5,7X,"PASS") 07790061 80002 FORMAT (" ",4X,I5,7X,"FAIL") 07800061 80003 FORMAT (" ",4X,I5,7X,"DELETED") 07810061 80004 FORMAT (" ",4X,I5,7X,"FAIL",10X,I6,9X,I6) 07820061 80005 FORMAT (" ",4X,I5,7X,"FAIL",4X,E12.5,3X,E12.5) 07830061 C 07840061 90007 FORMAT (" ",20X,"END OF PROGRAM FM061" ) 07850061 END 07860061