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