PROGRAM FM019 C 00010019 C COMMENT SECTION. 00020019 C 00030019 C FM019 00040019 C 00050019 C THIS ROUTINE CONTINUES TESTS OF THE FORTRAN LOGICAL IF STATE00060019 C BY TESTING VARIOUS FORMS OF RELATIONAL EXPRESSIONS WITH ARITHMETIC00070019 C EXPRESSIONS . POSITIVE AND NEGATIVE SIGNS ARE USED IN CONJUNCTION00080019 C WITH PARENTHESES. COMBINATIONS OF LOGICAL .AND. .OR. 00090019 C .NOT. ARE USED TO TEST THE MORE COMPLEX EXPRESSIONS. 00100019 C 00110019 C REFERENCES 00120019 C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, 00130019 C X3.9-1978 00140019 C 00150019 C SECTION 4.7.1, LOGICAL CONSTANT 00160019 C SECTION 6, EXPRESSIONS 00170019 C SECTION 11.5, LOGICAL IF STATEMENT 00180019 C 00190019 LOGICAL LCTNT1, LCTNT2 00200019 C 00210019 C ********************************************************** 00220019 C 00230019 C A COMPILER VALIDATION SYSTEM FOR THE FORTRAN LANGUAGE 00240019 C BASED ON SPECIFICATIONS AS DEFINED IN AMERICAN NATIONAL STANDARD 00250019 C PROGRAMMING LANGUAGE FORTRAN X3.9-1978, HAS BEEN DEVELOPED BY THE 00260019 C FEDERAL COBOL COMPILER TESTING SERVICE. THE FORTRAN COMPILER 00270019 C VALIDATION SYSTEM (FCVS) CONSISTS OF AUDIT ROUTINES, THEIR RELATED00280019 C DATA, AND AN EXECUTIVE SYSTEM. EACH AUDIT ROUTINE IS A FORTRAN 00290019 C PROGRAM, SUBPROGRAM OR FUNCTION WHICH INCLUDES TESTS OF SPECIFIC 00300019 C LANGUAGE ELEMENTS AND SUPPORTING PROCEDURES INDICATING THE RESULT 00310019 C OF EXECUTING THESE TESTS. 00320019 C 00330019 C THIS PARTICULAR PROGRAM/SUBPROGRAM/FUNCTION CONTAINS FEATURES 00340019 C FOUND ONLY IN THE SUBSET AS DEFINED IN X3.9-1978. 00350019 C 00360019 C SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO - 00370019 C 00380019 C NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY 00390019 C SOFTWARE STANDARDS VALIDATION GROUP 00400019 C BUILDING 225 RM A266 00410019 C GAITHERSBURG, MD 20899 00420019 C ********************************************************** 00430019 C 00440019 C 00450019 C 00460019 C INITIALIZATION SECTION 00470019 C 00480019 C INITIALIZE CONSTANTS 00490019 C ************** 00500019 C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. 00510019 I01 = 5 00520019 C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. 00530019 I02 = 6 00540019 C SYSTEM ENVIRONMENT SECTION 00550019 C 00560019 CX010 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-010 CONTROL CARD. 00570019 C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 00580019 C (UNIT NUMBER FOR CARD READER). 00590019 CX011 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-011 CONTROL CARD. 00600019 C THE CX011 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL 00610019 C FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX010 ABOVE. 00620019 C 00630019 CX020 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-020 CONTROL CARD. 00640019 C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02 = 6 00650019 C (UNIT NUMBER FOR PRINTER). 00660019 CX021 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-021 CONTROL CARD. 00670019 C THE CX021 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL 00680019 C FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX020 ABOVE. 00690019 C 00700019 IVPASS=0 00710019 IVFAIL=0 00720019 IVDELE=0 00730019 ICZERO=0 00740019 C 00750019 C WRITE PAGE HEADERS 00760019 WRITE (I02,90000) 00770019 WRITE (I02,90001) 00780019 WRITE (I02,90002) 00790019 WRITE (I02, 90002) 00800019 WRITE (I02,90003) 00810019 WRITE (I02,90002) 00820019 WRITE (I02,90004) 00830019 WRITE (I02,90002) 00840019 WRITE (I02,90011) 00850019 WRITE (I02,90002) 00860019 WRITE (I02,90002) 00870019 WRITE (I02,90005) 00880019 WRITE (I02,90006) 00890019 WRITE (I02,90002) 00900019 IVTNUM = 530 00910019 C 00920019 C **** TEST 530 **** 00930019 C TEST 530 - TEST OF POSITIVELY SIGNED TERM +(IC) (RO) -(IC) 00940019 C .LT. FALSE PATH 00950019 C 00960019 IF (ICZERO) 35300, 5300, 35300 00970019 5300 CONTINUE 00980019 IVON01 = 1 00990019 IF ( +3 .LT. -3) IVON01 = 0 01000019 GO TO 45300 01010019 35300 IVDELE = IVDELE + 1 01020019 WRITE (I02,80003) IVTNUM 01030019 IF (ICZERO) 45300, 5311, 45300 01040019 45300 IF ( IVON01 - 1 ) 25300, 15300, 25300 01050019 15300 IVPASS = IVPASS + 1 01060019 WRITE (I02,80001) IVTNUM 01070019 GO TO 5311 01080019 25300 IVFAIL = IVFAIL + 1 01090019 IVCOMP = IVON01 01100019 IVCORR = 1 01110019 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 01120019 5311 CONTINUE 01130019 IVTNUM = 531 01140019 C 01150019 C **** TEST 531 **** 01160019 C TEST 531 - TEST OF SIGNED ZERO .LT. FALSE PATH 01170019 C 01180019 C 01190019 IF (ICZERO) 35310, 5310, 35310 01200019 5310 CONTINUE 01210019 IVON01 = 1 01220019 IF ( +0 .LT. -0 ) IVON01 = 0 01230019 GO TO 45310 01240019 35310 IVDELE = IVDELE + 1 01250019 WRITE (I02,80003) IVTNUM 01260019 IF (ICZERO) 45310, 5321, 45310 01270019 45310 IF ( IVON01 - 1 ) 25310, 15310, 25310 01280019 15310 IVPASS = IVPASS + 1 01290019 WRITE (I02,80001) IVTNUM 01300019 GO TO 5321 01310019 25310 IVFAIL = IVFAIL + 1 01320019 IVCOMP = IVON01 01330019 IVCORR = 1 01340019 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 01350019 5321 CONTINUE 01360019 IVTNUM = 532 01370019 C 01380019 C **** TEST 532 **** 01390019 C TEST 532 - TEST OF SIGNED ZERO .LE. TRUE PATH 01400019 C 01410019 C 01420019 IF (ICZERO) 35320, 5320, 35320 01430019 5320 CONTINUE 01440019 IVON01 = 0 01450019 IF ( +0 .LE. -0 ) IVON01 = 1 01460019 GO TO 45320 01470019 35320 IVDELE = IVDELE + 1 01480019 WRITE (I02,80003) IVTNUM 01490019 IF (ICZERO) 45320, 5331, 45320 01500019 45320 IF ( IVON01 - 1 ) 25320, 15320, 25320 01510019 15320 IVPASS = IVPASS + 1 01520019 WRITE (I02,80001) IVTNUM 01530019 GO TO 5331 01540019 25320 IVFAIL = IVFAIL + 1 01550019 IVCOMP = IVON01 01560019 IVCORR = 1 01570019 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 01580019 5331 CONTINUE 01590019 IVTNUM = 533 01600019 C 01610019 C **** TEST 533 **** 01620019 C TEST 533 - TEST OF SIGNED ZERO .EQ. TRUE PATH 01630019 C 01640019 C 01650019 IF (ICZERO) 35330, 5330, 35330 01660019 5330 CONTINUE 01670019 IVON01 = 0 01680019 IF ( +0 .EQ. -0 ) IVON01 = 1 01690019 GO TO 45330 01700019 35330 IVDELE = IVDELE + 1 01710019 WRITE (I02,80003) IVTNUM 01720019 IF (ICZERO) 45330, 5341, 45330 01730019 45330 IF ( IVON01 - 1 ) 25330, 15330, 25330 01740019 15330 IVPASS = IVPASS + 1 01750019 WRITE (I02,80001) IVTNUM 01760019 GO TO 5341 01770019 25330 IVFAIL = IVFAIL + 1 01780019 IVCOMP = IVON01 01790019 IVCORR = 1 01800019 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 01810019 5341 CONTINUE 01820019 IVTNUM = 534 01830019 C 01840019 C **** TEST 534 **** 01850019 C TEST 534 - TEST OF SIGNED ZERO .NE. FALSE PATH 01860019 C 01870019 C 01880019 IF (ICZERO) 35340, 5340, 35340 01890019 5340 CONTINUE 01900019 IVON01 = 1 01910019 IF ( +0 .NE. -0 ) IVON01 = 0 01920019 GO TO 45340 01930019 35340 IVDELE = IVDELE + 1 01940019 WRITE (I02,80003) IVTNUM 01950019 IF (ICZERO) 45340, 5351, 45340 01960019 45340 IF ( IVON01 - 1 ) 25340, 15340, 25340 01970019 15340 IVPASS = IVPASS + 1 01980019 WRITE (I02,80001) IVTNUM 01990019 GO TO 5351 02000019 25340 IVFAIL = IVFAIL + 1 02010019 IVCOMP = IVON01 02020019 IVCORR = 1 02030019 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 02040019 5351 CONTINUE 02050019 IVTNUM = 535 02060019 C 02070019 C **** TEST 535 **** 02080019 C TEST 535 - TEST OF SIGNED ZERO .GE. TRUE PATH 02090019 C 02100019 C 02110019 IF (ICZERO) 35350, 5350, 35350 02120019 5350 CONTINUE 02130019 IVON01 = 0 02140019 IF ( +0 .GE. -0 ) IVON01 = 1 02150019 GO TO 45350 02160019 35350 IVDELE = IVDELE + 1 02170019 WRITE (I02,80003) IVTNUM 02180019 IF (ICZERO) 45350, 5361, 45350 02190019 45350 IF ( IVON01 - 1 ) 25350, 15350, 25350 02200019 15350 IVPASS = IVPASS + 1 02210019 WRITE (I02,80001) IVTNUM 02220019 GO TO 5361 02230019 25350 IVFAIL = IVFAIL + 1 02240019 IVCOMP = IVON01 02250019 IVCORR = 1 02260019 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 02270019 5361 CONTINUE 02280019 IVTNUM = 536 02290019 C 02300019 C **** TEST 536 **** 02310019 C TEST 536 - TEST OF SIGNED ZERO .GT. FALSE PATH 02320019 C 02330019 C 02340019 IF (ICZERO) 35360, 5360, 35360 02350019 5360 CONTINUE 02360019 IVON01 = 1 02370019 IF ( +0 .GT. -0 ) IVON01 = 0 02380019 GO TO 45360 02390019 35360 IVDELE = IVDELE + 1 02400019 WRITE (I02,80003) IVTNUM 02410019 IF (ICZERO) 45360, 5371, 45360 02420019 45360 IF ( IVON01 - 1 ) 25360, 15360, 25360 02430019 15360 IVPASS = IVPASS + 1 02440019 WRITE (I02,80001) IVTNUM 02450019 GO TO 5371 02460019 25360 IVFAIL = IVFAIL + 1 02470019 IVCOMP = IVON01 02480019 IVCORR = 1 02490019 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 02500019 5371 CONTINUE 02510019 IVTNUM = 537 02520019 C 02530019 C **** TEST 537 **** 02540019 C TEST 537 - TEST OF +32767 .EQ. -32766 FALSE PATH 02550019 C 02560019 C 02570019 IF (ICZERO) 35370, 5370, 35370 02580019 5370 CONTINUE 02590019 IVON01 = 1 02600019 IF ( +32767 .EQ. -32766 ) IVON01 = 0 02610019 GO TO 45370 02620019 35370 IVDELE = IVDELE + 1 02630019 WRITE (I02,80003) IVTNUM 02640019 IF (ICZERO) 45370, 5381, 45370 02650019 45370 IF ( IVON01 - 1 ) 25370, 15370, 25370 02660019 15370 IVPASS = IVPASS + 1 02670019 WRITE (I02,80001) IVTNUM 02680019 GO TO 5381 02690019 25370 IVFAIL = IVFAIL + 1 02700019 IVCOMP = IVON01 02710019 IVCORR = 1 02720019 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 02730019 5381 CONTINUE 02740019 IVTNUM = 538 02750019 C 02760019 C **** TEST 538 **** 02770019 C TEST 538 - TESTS MINUS SIGN WITH INTEGER VARIABLES 02780019 C RELATIONAL EXPRESSION USES .LE. TRUE PATH 02790019 C 02800019 C 02810019 IF (ICZERO) 35380, 5380, 35380 02820019 5380 CONTINUE 02830019 IVON01 = 0 02840019 IVON02 = 3 02850019 IF ( -IVON02 .LE. -IVON02 ) IVON01 = 1 02860019 GO TO 45380 02870019 35380 IVDELE = IVDELE + 1 02880019 WRITE (I02,80003) IVTNUM 02890019 IF (ICZERO) 45380, 5391, 45380 02900019 45380 IF ( IVON01 - 1 ) 25380, 15380, 25380 02910019 15380 IVPASS = IVPASS + 1 02920019 WRITE (I02,80001) IVTNUM 02930019 GO TO 5391 02940019 25380 IVFAIL = IVFAIL + 1 02950019 IVCOMP = IVON01 02960019 IVCORR = 1 02970019 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 02980019 5391 CONTINUE 02990019 IVTNUM = 539 03000019 C 03010019 C **** TEST 539 **** 03020019 C TEST 539 - TEST IS LIKE TEST 538 USES .GE. TRUE PATH 03030019 C 03040019 C 03050019 IF (ICZERO) 35390, 5390, 35390 03060019 5390 CONTINUE 03070019 IVON01 = 0 03080019 IVON02 = 32766 03090019 IF ( -IVON02 .GE. -IVON02 ) IVON01 = 1 03100019 GO TO 45390 03110019 35390 IVDELE = IVDELE + 1 03120019 WRITE (I02,80003) IVTNUM 03130019 IF (ICZERO) 45390, 5401, 45390 03140019 45390 IF ( IVON01 - 1 ) 25390, 15390, 25390 03150019 15390 IVPASS = IVPASS + 1 03160019 WRITE (I02,80001) IVTNUM 03170019 GO TO 5401 03180019 25390 IVFAIL = IVFAIL + 1 03190019 IVCOMP = IVON01 03200019 IVCORR = 1 03210019 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 03220019 5401 CONTINUE 03230019 IVTNUM = 540 03240019 C 03250019 C **** TEST 540 **** 03260019 C TEST 540 - INTEGER EXPONIENTIATION AND MINUS SIGN USES .NE. 03270019 C FALSE PATH 03280019 C 03290019 C 03300019 IF (ICZERO) 35400, 5400, 35400 03310019 5400 CONTINUE 03320019 IVON01 = 1 03330019 IVON02 = 3 03340019 IF ( -IVON02 ** 3 .NE. -27 ) IVON01 = 0 03350019 GO TO 45400 03360019 35400 IVDELE = IVDELE + 1 03370019 WRITE (I02,80003) IVTNUM 03380019 IF (ICZERO) 45400, 5411, 45400 03390019 45400 IF ( IVON01 - 1 ) 25400, 15400, 25400 03400019 15400 IVPASS = IVPASS + 1 03410019 WRITE (I02,80001) IVTNUM 03420019 GO TO 5411 03430019 25400 IVFAIL = IVFAIL + 1 03440019 IVCOMP = IVON01 03450019 IVCORR = 1 03460019 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 03470019 5411 CONTINUE 03480019 IVTNUM = 541 03490019 C 03500019 C **** TEST 541 **** 03510019 C TEST 541 - LIKE TEST 540 USES .LE. TRUE PATH 03520019 C 03530019 C 03540019 IF (ICZERO) 35410, 5410, 35410 03550019 5410 CONTINUE 03560019 IVON01 = 0 03570019 IVON02 = 3 03580019 IF ( -3 ** IVON02 .LE. -27 ) IVON01 = 1 03590019 GO TO 45410 03600019 35410 IVDELE = IVDELE + 1 03610019 WRITE (I02,80003) IVTNUM 03620019 IF (ICZERO) 45410, 5421, 45410 03630019 45410 IF ( IVON01 - 1 ) 25410, 15410, 25410 03640019 15410 IVPASS = IVPASS + 1 03650019 WRITE (I02,80001) IVTNUM 03660019 GO TO 5421 03670019 25410 IVFAIL = IVFAIL + 1 03680019 IVCOMP = IVON01 03690019 IVCORR = 1 03700019 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 03710019 5421 CONTINUE 03720019 IVTNUM = 542 03730019 C 03740019 C **** TEST 542 **** 03750019 C TEST 542 - INTEGER EXPONIENTIATION AND MULTIPLICATION 03760019 C USES .EQ. TRUE PATH 03770019 C 03780019 C 03790019 IF (ICZERO) 35420, 5420, 35420 03800019 5420 CONTINUE 03810019 IVON01 = 0 03820019 IVON02 = 3 03830019 IVON03 = 27 03840019 IF ( -IVON02 ** 2 * IVON02 .EQ. -IVON03 ) IVON01 = 1 03850019 GO TO 45420 03860019 35420 IVDELE = IVDELE + 1 03870019 WRITE (I02,80003) IVTNUM 03880019 IF (ICZERO) 45420, 5431, 45420 03890019 45420 IF ( IVON01 - 1 ) 25420, 15420, 25420 03900019 15420 IVPASS = IVPASS + 1 03910019 WRITE (I02,80001) IVTNUM 03920019 GO TO 5431 03930019 25420 IVFAIL = IVFAIL + 1 03940019 IVCOMP = IVON01 03950019 IVCORR = 1 03960019 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 03970019 5431 CONTINUE 03980019 IVTNUM = 543 03990019 C 04000019 C **** TEST 543 **** 04010019 C TEST 543 - INTEGER EXPONIENTIATION AND DIVISION 04020019 C USES .LT. TRUE PATH 04030019 C 04040019 C 04050019 IF (ICZERO) 35430, 5430, 35430 04060019 5430 CONTINUE 04070019 IVON01 = 0 04080019 IVON02 = 587 04090019 IVON03 = 3 04100019 IVON04 = 3 04110019 IF ( -IVON02/IVON04 ** 3 .LT. -3 ** IVON03/IVON02 ) IVON01 = 1 04120019 GO TO 45430 04130019 35430 IVDELE = IVDELE + 1 04140019 WRITE (I02,80003) IVTNUM 04150019 IF (ICZERO) 45430, 5441, 45430 04160019 45430 IF ( IVON01 - 1 ) 25430, 15430, 25430 04170019 15430 IVPASS = IVPASS + 1 04180019 WRITE (I02,80001) IVTNUM 04190019 GO TO 5441 04200019 25430 IVFAIL = IVFAIL + 1 04210019 IVCOMP = IVON01 04220019 IVCORR = 1 04230019 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 04240019 5441 CONTINUE 04250019 IVTNUM = 544 04260019 C 04270019 C **** TEST 544 **** 04280019 C TEST 544 - INTEGER ADDITION AND SUBTRACTION 04290019 C USES .EQ. TRUE PATH 04300019 C 04310019 C 04320019 IF (ICZERO) 35440, 5440, 35440 04330019 5440 CONTINUE 04340019 IVON01 = 0 04350019 IVON02 = 3 04360019 IVON03 = 587 04370019 IF ( IVON02 - IVON03 .EQ. -IVON03 + IVON02 ) IVON01 = 1 04380019 GO TO 45440 04390019 35440 IVDELE = IVDELE + 1 04400019 WRITE (I02,80003) IVTNUM 04410019 IF (ICZERO) 45440, 5451, 45440 04420019 45440 IF ( IVON01 - 1 ) 25440, 15440, 25440 04430019 15440 IVPASS = IVPASS + 1 04440019 WRITE (I02,80001) IVTNUM 04450019 GO TO 5451 04460019 25440 IVFAIL = IVFAIL + 1 04470019 IVCOMP = IVON01 04480019 IVCORR = 1 04490019 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 04500019 5451 CONTINUE 04510019 IVTNUM = 545 04520019 C 04530019 C **** TEST 545 **** 04540019 C TEST 545 - INTEGER ADDITION AND SUBTRACTION WITH PARENTHESES 04550019 C USES .EQ. TRUE PATH LIKE TEST 544 04560019 C 04570019 C 04580019 IF (ICZERO) 35450, 5450, 35450 04590019 5450 CONTINUE 04600019 IVON01 = 0 04610019 IVON02 = 3 04620019 IVON03 = 587 04630019 IF ( (IVON02 - IVON03) .EQ. (-IVON03 + IVON02) ) IVON01 = 1 04640019 GO TO 45450 04650019 35450 IVDELE = IVDELE + 1 04660019 WRITE (I02,80003) IVTNUM 04670019 IF (ICZERO) 45450, 5461, 45450 04680019 45450 IF ( IVON01 - 1 ) 25450, 15450, 25450 04690019 15450 IVPASS = IVPASS + 1 04700019 WRITE (I02,80001) IVTNUM 04710019 GO TO 5461 04720019 25450 IVFAIL = IVFAIL + 1 04730019 IVCOMP = IVON01 04740019 IVCORR = 1 04750019 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 04760019 5461 CONTINUE 04770019 IVTNUM = 546 04780019 C 04790019 C **** TEST 546 **** 04800019 C TEST 546 - INTEGER EXPONIENTIATION AND DIVISION WITH PARENS 04810019 C USES .LT. TRUE PATH 04820019 C 04830019 C 04840019 IF (ICZERO) 35460, 5460, 35460 04850019 5460 CONTINUE 04860019 IVON01 = 0 04870019 IVON02 = 587 04880019 IVON03 = 3 04890019 IVON04 = 3 04900019 IF ((-IVON02/(IVON04**3)).LT.((-3**IVON03)/IVON02))IVON01=1 04910019 GO TO 45460 04920019 35460 IVDELE = IVDELE + 1 04930019 WRITE (I02,80003) IVTNUM 04940019 IF (ICZERO) 45460, 5471, 45460 04950019 45460 IF ( IVON01 - 1 ) 25460, 15460, 25460 04960019 15460 IVPASS = IVPASS + 1 04970019 WRITE (I02,80001) IVTNUM 04980019 GO TO 5471 04990019 25460 IVFAIL = IVFAIL + 1 05000019 IVCOMP = IVON01 05010019 IVCORR = 1 05020019 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 05030019 5471 CONTINUE 05040019 IVTNUM = 547 05050019 C 05060019 C **** TEST 547 **** 05070019 C TEST 547 - INTEGER MULTIPLICATION WITH PARENTHESES .LT. FALSE 05080019 C 05090019 C 05100019 IF (ICZERO) 35470, 5470, 35470 05110019 5470 CONTINUE 05120019 IVON01 = 1 05130019 IVON02 = 587 05140019 IF ((-3)*(-3).LT.(-IVON02))IVON01=0 05150019 GO TO 45470 05160019 35470 IVDELE = IVDELE + 1 05170019 WRITE (I02,80003) IVTNUM 05180019 IF (ICZERO) 45470, 5481, 45470 05190019 45470 IF ( IVON01 - 1 ) 25470, 15470, 25470 05200019 15470 IVPASS = IVPASS + 1 05210019 WRITE (I02,80001) IVTNUM 05220019 GO TO 5481 05230019 25470 IVFAIL = IVFAIL + 1 05240019 IVCOMP = IVON01 05250019 IVCORR = 1 05260019 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 05270019 5481 CONTINUE 05280019 IVTNUM = 548 05290019 C 05300019 C **** TEST 548 **** 05310019 C TEST 548 - INTEGER EXPONIENTIATION, MINUS SIGNS, AND PARENTHESES05320019 C USES .LE. TRUE PATH 05330019 C 05340019 C 05350019 IF (ICZERO) 35480, 5480, 35480 05360019 5480 CONTINUE 05370019 IVON01 = 0 05380019 IVON02 = 3 05390019 IVON03 = 27 05400019 IF ( ((-IVON02) ** IVON02 .LE. (-IVON03))) IVON01 = 1 05410019 GO TO 45480 05420019 35480 IVDELE = IVDELE + 1 05430019 WRITE (I02,80003) IVTNUM 05440019 IF (ICZERO) 45480, 5491, 45480 05450019 45480 IF ( IVON01 - 1 ) 25480, 15480, 25480 05460019 15480 IVPASS = IVPASS + 1 05470019 WRITE (I02,80001) IVTNUM 05480019 GO TO 5491 05490019 25480 IVFAIL = IVFAIL + 1 05500019 IVCOMP = IVON01 05510019 IVCORR = 1 05520019 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 05530019 5491 CONTINUE 05540019 IVTNUM = 549 05550019 C 05560019 C **** TEST 549 **** 05570019 C TEST 549 - TEST THE ORDER OF INTEGER ARITHMETIC OPERATIONS 05580019 C USES INTEGER EXPONIENTIATION, ADDITION, MULTIPLICATION, 05590019 C AND PARENTHESES. ALSO USES .EQ. TRUE PATH 05600019 C SEE SECTION 6.1, ARITHMETIC EXPRESSIONS. 05610019 C 05620019 C 05630019 IF (ICZERO) 35490, 5490, 35490 05640019 5490 CONTINUE 05650019 IVON01 = 0 05660019 IVON02 = 3 05670019 IF(IVON02 * IVON02/(IVON02+IVON02)**IVON02+IVON02 .EQ. 3) IVON01=105680019 GO TO 45490 05690019 35490 IVDELE = IVDELE + 1 05700019 WRITE (I02,80003) IVTNUM 05710019 IF (ICZERO) 45490, 5501, 45490 05720019 45490 IF ( IVON01 - 1 ) 25490, 15490, 25490 05730019 15490 IVPASS = IVPASS + 1 05740019 WRITE (I02,80001) IVTNUM 05750019 GO TO 5501 05760019 25490 IVFAIL = IVFAIL + 1 05770019 IVCOMP = IVON01 05780019 IVCORR = 1 05790019 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 05800019 5501 CONTINUE 05810019 IVTNUM = 550 05820019 C 05830019 C **** TEST 550 **** 05840019 C TEST 550 - COMBINATION OF LOGICAL .NOT. AND .AND. 05850019 C .NOT. (LP) .AND. .NOT. (LP) 05860019 C TRUE PATH 05870019 C 05880019 C 05890019 IF (ICZERO) 35500, 5500, 35500 05900019 5500 CONTINUE 05910019 IVON01 = 0 05920019 LCTNT1 = .FALSE. 05930019 IF ( .NOT. .FALSE. .AND. .NOT. LCTNT1 ) IVON01 = 1 05940019 GO TO 45500 05950019 35500 IVDELE = IVDELE + 1 05960019 WRITE (I02,80003) IVTNUM 05970019 IF (ICZERO) 45500, 5511, 45500 05980019 45500 IF ( IVON01 - 1 ) 25500, 15500, 25500 05990019 15500 IVPASS = IVPASS + 1 06000019 WRITE (I02,80001) IVTNUM 06010019 GO TO 5511 06020019 25500 IVFAIL = IVFAIL + 1 06030019 IVCOMP = IVON01 06040019 IVCORR = 1 06050019 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 06060019 5511 CONTINUE 06070019 IVTNUM = 551 06080019 C 06090019 C **** TEST 551 **** 06100019 C TEST 551 - COMBINATION OF LOGICAL .OR. AND .NOT. 06110019 C .NOT. (LP) .OR. .NOT. (LP) 06120019 C TRUE PATH 06130019 C 06140019 C 06150019 IF (ICZERO) 35510, 5510, 35510 06160019 5510 CONTINUE 06170019 IVON01 = 0 06180019 LCTNT1 = .TRUE. 06190019 LCTNT2 = .FALSE. 06200019 IF ( .NOT. LCTNT1 .OR. .NOT. LCTNT2 ) IVON01 = 1 06210019 GO TO 45510 06220019 35510 IVDELE = IVDELE + 1 06230019 WRITE (I02,80003) IVTNUM 06240019 IF (ICZERO) 45510, 5521, 45510 06250019 45510 IF ( IVON01 - 1 ) 25510, 15510, 25510 06260019 15510 IVPASS = IVPASS + 1 06270019 WRITE (I02,80001) IVTNUM 06280019 GO TO 5521 06290019 25510 IVFAIL = IVFAIL + 1 06300019 IVCOMP = IVON01 06310019 IVCORR = 1 06320019 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 06330019 5521 CONTINUE 06340019 IVTNUM = 552 06350019 C 06360019 C **** TEST 552 **** 06370019 C TEST 552 - COMBINATION OF LOGICAL .AND. .OR. AND .NOT. 06380019 C .NOT. ( (LE) .OR. (LT) ) .AND. .NOT. ( (LT) .AND. (LF) ) 06390019 C .NOT. IS APPLIED TO A LOGICAL EXPRESSION INCLOSED IN PARENS 06400019 C FALSE PATH 06410019 C 06420019 IF (ICZERO) 35520, 5520, 35520 06430019 5520 CONTINUE 06440019 IVON01 = 1 06450019 LCTNT1 = .FALSE. 06460019 LCTNT2 = .TRUE. 06470019 IF(.NOT.(LCTNT1.OR.LCTNT2).AND..NOT.(LCTNT1.AND.LCTNT2))IVON01 = 006480019 GO TO 45520 06490019 35520 IVDELE = IVDELE + 1 06500019 WRITE (I02,80003) IVTNUM 06510019 IF (ICZERO) 45520, 5531, 45520 06520019 45520 IF ( IVON01 - 1 ) 25520, 15520, 25520 06530019 15520 IVPASS = IVPASS + 1 06540019 WRITE (I02,80001) IVTNUM 06550019 GO TO 5531 06560019 25520 IVFAIL = IVFAIL + 1 06570019 IVCOMP = IVON01 06580019 IVCORR = 1 06590019 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 06600019 5531 CONTINUE 06610019 C 06620019 C WRITE PAGE FOOTINGS AND RUN SUMMARIES 06630019 99999 CONTINUE 06640019 WRITE (I02,90002) 06650019 WRITE (I02,90006) 06660019 WRITE (I02,90002) 06670019 WRITE (I02,90002) 06680019 WRITE (I02,90007) 06690019 WRITE (I02,90002) 06700019 WRITE (I02,90008) IVFAIL 06710019 WRITE (I02,90009) IVPASS 06720019 WRITE (I02,90010) IVDELE 06730019 C 06740019 C 06750019 C TERMINATE ROUTINE EXECUTION 06760019 STOP 06770019 C 06780019 C FORMAT STATEMENTS FOR PAGE HEADERS 06790019 90000 FORMAT ("1") 06800019 90002 FORMAT (" ") 06810019 90001 FORMAT (" ",10X,"FORTRAN COMPILER VALIDATION SYSTEM" ) 06820019 90003 FORMAT (" ",21X,"VERSION 2.1" ) 06830019 90004 FORMAT (" ",10X,"FOR OFFICIAL USE ONLY - COPYRIGHT 1978" ) 06840019 90005 FORMAT (" ",5X,"TEST",5X,"PASS/FAIL", 5X,"COMPUTED",8X,"CORRECT") 06850019 90006 FORMAT (" ",5X,"----------------------------------------------" ) 06860019 90011 FORMAT (" ",18X,"SUBSET LEVEL TEST" ) 06870019 C 06880019 C FORMAT STATEMENTS FOR RUN SUMMARIES 06890019 90008 FORMAT (" ",15X,I5," ERRORS ENCOUNTERED" ) 06900019 90009 FORMAT (" ",15X,I5," TESTS PASSED" ) 06910019 90010 FORMAT (" ",15X,I5," TESTS DELETED" ) 06920019 C 06930019 C FORMAT STATEMENTS FOR TEST RESULTS 06940019 80001 FORMAT (" ",4X,I5,7X,"PASS") 06950019 80002 FORMAT (" ",4X,I5,7X,"FAIL") 06960019 80003 FORMAT (" ",4X,I5,7X,"DELETED") 06970019 80004 FORMAT (" ",4X,I5,7X,"FAIL",10X,I6,9X,I6) 06980019 80005 FORMAT (" ",4X,I5,7X,"FAIL",4X,E12.5,3X,E12.5) 06990019 C 07000019 90007 FORMAT (" ",20X,"END OF PROGRAM FM019" ) 07010019 END 07020019