blob: 3b0ee0ccf3fc61e5885c78b9b2fcbabce693299d [file] [log] [blame]
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