C C COMMENT SECTION. C C FM018 C C THIS ROUTINE CONTINUES TESTS OF THE FORTRAN C LOGICAL IF STATEMENT IN ALL OF THE VARIOUS FORMS. THE C FOLLOWING LOGICAL OPERANDS ARE USED FOR THIS ROUTINE - LOGICAL C CONSTANTS, LOGICAL VARIABLES, LOGICAL ARRAY ELEMENTS, AND C ARITHMETIC EXPRESSIONS WITH VARIOUS RELATIONAL OPERATORS. BOTH C THE TRUE AND FALSE BRANCHES ARE TESTED IN THE SERIES OF TESTS. C C REFERENCES C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, C X3.9-1978 C C SECTION 4.7.1, LOGICAL CONSTANT C SECTION 6, EXPRESSIONS C SECTION 6.1, ARITHMETIC EXPRESSIONS C SECTION 6.3, RELATIONAL EXPRESSIONS C SECTION 6.4, LOGICAL EXPRESSIONS C SECTION 6.6, EVALUATION OF EXPRESSIONS C SECTION 10, ASSIGNMENT STATEMENTS C SECTION 10.2, LOGICAL ASSIGNMENT STATEMENT C SECTION 11.5, LOGICAL IF STATEMENT C LOGICAL LCTNT1, LCTNT2, LATN1A(2) DIMENSION IADN11(2) C C ********************************************************** C C A COMPILER VALIDATION SYSTEM FOR THE FORTRAN LANGUAGE C BASED ON SPECIFICATIONS AS DEFINED IN AMERICAN NATIONAL STANDARD C PROGRAMMING LANGUAGE FORTRAN X3.9-1978, HAS BEEN DEVELOPED BY THE C FEDERAL COBOL COMPILER TESTING SERVICE. THE FORTRAN COMPILER C VALIDATION SYSTEM (FCVS) CONSISTS OF AUDIT ROUTINES, THEIR RELATED C DATA, AND AN EXECUTIVE SYSTEM. EACH AUDIT ROUTINE IS A FORTRAN C PROGRAM, SUBPROGRAM OR FUNCTION WHICH INCLUDES TESTS OF SPECIFIC C LANGUAGE ELEMENTS AND SUPPORTING PROCEDURES INDICATING THE RESULT C OF EXECUTING THESE TESTS. C C THIS PARTICULAR PROGRAM/SUBPROGRAM/FUNCTION CONTAINS FEATURES C FOUND ONLY IN THE SUBSET AS DEFINED IN X3.9-1978. C C SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO - C C DEPARTMENT OF THE NAVY C FEDERAL COBOL COMPILER TESTING SERVICE C WASHINGTON, D.C. 20376 C C ********************************************************** C C C C INITIALIZATION SECTION C C INITIALIZE CONSTANTS C ************** C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. I01 = 5 C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. I02 = 6 C SYSTEM ENVIRONMENT SECTION C CX010 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-010 CONTROL CARD. C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 C (UNIT NUMBER FOR CARD READER). CX011 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-011 CONTROL CARD. C THE CX011 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL C FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX010 ABOVE. C CX020 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-020 CONTROL CARD. C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02 = 6 C (UNIT NUMBER FOR PRINTER). CX021 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-021 CONTROL CARD. C THE CX021 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL C FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX020 ABOVE. C IVPASS=0 IVFAIL=0 IVDELE=0 ICZERO=0 C C WRITE PAGE HEADERS WRITE (I02,90000) WRITE (I02,90001) WRITE (I02,90002) WRITE (I02, 90002) WRITE (I02,90003) WRITE (I02,90002) WRITE (I02,90004) WRITE (I02,90002) WRITE (I02,90011) WRITE (I02,90002) WRITE (I02,90002) WRITE (I02,90005) WRITE (I02,90006) WRITE (I02,90002) IVTNUM = 500 C C **** TEST 500 **** C TEST 500 - LIKE TEST 197. TRUE .OR. TRUE TRUE PATH C TEST OF THE FORTRAN INCLUSIVE OR (LE) .OR. (LT) C C IF (ICZERO) 35000, 5000, 35000 5000 CONTINUE IVON01 = 0 LCTNT1 = .TRUE. LCTNT2 = .TRUE. IF ( LCTNT1 .OR. LCTNT2 ) IVON01 = 1 GO TO 45000 35000 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45000, 5011, 45000 45000 IF ( IVON01 - 1 ) 25000, 15000, 25000 15000 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5011 25000 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5011 CONTINUE IVTNUM = 501 C C **** TEST 501 **** C TEST 501 - TEST OF PARENTHESES AROUND A LOGICAL EXPRESSION C ( (LE) ) .OR. (LT) C USES LOGICAL VARIABLES SET IN LOGICAL ASSIGNMENT STATEMENTS C ( FALSE ) .OR. FALSE FALSE PATH C C IF (ICZERO) 35010, 5010, 35010 5010 CONTINUE IVON01 = 1 LCTNT1 = .FALSE. LCTNT2 = .FALSE. IF ( (LCTNT1) .OR. LCTNT2 ) IVON01 = 0 GO TO 45010 35010 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45010, 5021, 45010 45010 IF ( IVON01 - 1 ) 25010, 15010, 25010 15010 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5021 25010 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5021 CONTINUE IVTNUM = 502 C C **** TEST 502 **** C TEST 502 - LIKE TEST 501 EXCEPT THAT IT IT IS OF THE FORM C (LE) .OR. ( (LT) ) TRUE .OR. (TRUE) C TRUE PATH C C IF (ICZERO) 35020, 5020, 35020 5020 CONTINUE IVON01 = 0 LCTNT1 = .TRUE. LCTNT2 = .TRUE. IF ( LCTNT1 .OR. ( LCTNT2 ) ) IVON01 = 1 GO TO 45020 35020 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45020, 5031, 45020 45020 IF ( IVON01 - 1 ) 25020, 15020, 25020 15020 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5031 25020 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5031 CONTINUE IVTNUM = 503 C C **** TEST 503 **** C TEST 503 - TEST OF PARENTHESES IN LOGICAL EXPRESSIONS C ( (LE) ) .OR. ( (LT) ) C (FALSE) .OR. (TRUE) TRUE PATH C C IF (ICZERO) 35030, 5030, 35030 5030 CONTINUE IVON01 = 0 LCTNT1 = .FALSE. LCTNT2 = .TRUE. IF ( (LCTNT1) .OR. (LCTNT2) ) IVON01 = 1 GO TO 45030 35030 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45030, 5041, 45030 45030 IF ( IVON01 - 1 ) 25030, 15030, 25030 15030 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5041 25030 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5041 CONTINUE IVTNUM = 504 C C **** TEST 504 **** C TEST 504 - LIKE TEST 503 ONLY MORE PARENTHESES TRUE PATH C C IF (ICZERO) 35040, 5040, 35040 5040 CONTINUE IVON01 = 0 LCTNT1 = .TRUE. LCTNT2 = .FALSE. IF ( ( (LCTNT1) .OR. (LCTNT2) ) ) IVON01 = 1 GO TO 45040 35040 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45040, 5051, 45040 45040 IF ( IVON01 - 1 ) 25040, 15040, 25040 15040 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5051 25040 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5051 CONTINUE IVTNUM = 505 C C **** TEST 505 **** C TEST 505 - TEST OF PARENTHESES WITH .AND. FALSE PATH C C IF (ICZERO) 35050, 5050, 35050 5050 CONTINUE IVON01 = 1 LCTNT1 = .FALSE. LCTNT2 = .FALSE. IF ( (LCTNT1) .AND. LCTNT2 ) IVON01 = 0 GO TO 45050 35050 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45050, 5061, 45050 45050 IF ( IVON01 - 1 ) 25050, 15050, 25050 15050 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5061 25050 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5061 CONTINUE IVTNUM = 506 C C **** TEST 506 **** C TEST 506 - LIKE TEST 505 FALSE PATH C C IF (ICZERO) 35060, 5060, 35060 5060 CONTINUE IVON01 = 1 LCTNT1 = .FALSE. LCTNT2 = .TRUE. IF ( LCTNT1 .AND. (LCTNT2) ) IVON01 = 0 GO TO 45060 35060 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45060, 5071, 45060 45060 IF ( IVON01 - 1 ) 25060, 15060, 25060 15060 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5071 25060 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5071 CONTINUE IVTNUM = 507 C C **** TEST 507 **** C TEST 507 - MORE PARENTHESES WITH LOGICAL .AND. FALSE PATH C C IF (ICZERO) 35070, 5070, 35070 5070 CONTINUE IVON01 = 1 LCTNT1 = .TRUE. LCTNT2 = .FALSE. IF ( (LCTNT1) .AND. (LCTNT2) ) IVON01 = 0 GO TO 45070 35070 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45070, 5081, 45070 45070 IF ( IVON01 - 1 ) 25070, 15070, 25070 15070 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5081 25070 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5081 CONTINUE IVTNUM = 508 C C **** TEST 508 **** C TEST 508 - TEST OF LOGICAL .NOT. WITH PARENTHESES AROUND A LOGIC C PRIMARY. FOR THIS TEST A LOGICAL ARRAY ELEMENT IS USED AS C THE LOGICAL PRIMARY. .NOT. (FALSE) TRUE PATH. C C IF (ICZERO) 35080, 5080, 35080 5080 CONTINUE IVON01 = 0 LATN1A(1) = .FALSE. IF ( .NOT. (LATN1A(1)) ) IVON01 = 1 GO TO 45080 35080 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45080, 5091, 45080 45080 IF ( IVON01 - 1 ) 25080, 15080, 25080 15080 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5091 25080 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5091 CONTINUE IVTNUM = 509 C C **** TEST 509 **** C TEST 509 - LIKE TEST 508 EXCEPT THAT THE WHOLE EXPRESSION C IS IN PARENTHESES. FALSE PATH C C IF (ICZERO) 35090, 5090, 35090 5090 CONTINUE IVON01 = 1 LATN1A(2) = .TRUE. IF ( ( .NOT. (LATN1A(2)) ) ) IVON01 = 0 GO TO 45090 35090 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45090, 5101, 45090 45090 IF ( IVON01 - 1 ) 25090, 15090, 25090 15090 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5101 25090 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5101 CONTINUE IVTNUM = 510 C C **** TEST 510 **** C TEST 510 - INTEGER CONSTANT EXPONIENTATION C RELATIONAL EXPRESSION USING .EQ. TRUE PATH C C IF (ICZERO) 35100, 5100, 35100 5100 CONTINUE IVON01 = 0 IF ( 3 ** 3 .EQ. 27 ) IVON01 = 1 GO TO 45100 35100 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45100, 5111, 45100 45100 IF ( IVON01 - 1 ) 25100, 15100, 25100 15100 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5111 25100 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5111 CONTINUE IVTNUM = 511 C C **** TEST 511 **** C TEST 511 - EXPONIENTIATION USING AN INTEGER VARIABLE C RELATIONAL EXPRESSION USING .NE. FALSE PATH C C IF (ICZERO) 35110, 5110, 35110 5110 CONTINUE IVON01 = 1 IVON02 = 3 IF ( IVON02 ** 3 .NE. 27 ) IVON01 = 0 GO TO 45110 35110 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45110, 5121, 45110 45110 IF ( IVON01 - 1 ) 25110, 15110, 25110 15110 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5121 25110 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5121 CONTINUE IVTNUM = 512 C C **** TEST 512 **** C TEST 512 - LIKE TEST 511 USES .LE. TRUE PATH C C IF (ICZERO) 35120, 5120, 35120 5120 CONTINUE IVON01 = 0 IVON02 = 3 IF ( 3 ** IVON02 .LE. 27 ) IVON01 = 1 GO TO 45120 35120 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45120, 5131, 45120 45120 IF ( IVON01 - 1 ) 25120, 15120, 25120 15120 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5131 25120 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5131 CONTINUE IVTNUM = 513 C C **** TEST 513 **** C TEST 513 - LIKE TEST 511 BUT USES ALL INTEGER VARIABLES C RELATIONAL EXPRESSION USES .LT. FALSE PATH C C IF (ICZERO) 35130, 5130, 35130 5130 CONTINUE IVON01 = 1 IVON02 = 3 IVON03 = 27 IF ( IVON02 ** IVON02 .LT. IVON03 ) IVON01 = 0 GO TO 45130 35130 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45130, 5141, 45130 45130 IF ( IVON01 - 1 ) 25130, 15130, 25130 15130 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5141 25130 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5141 CONTINUE IVTNUM = 514 C C **** TEST 514 **** C TEST 514 - LIKE TEST 511 BUT USES INTEGER ARRAY ELEMENTS C RELATIONAL EXPRESSION USES .GE. TRUE PATH C C IF (ICZERO) 35140, 5140, 35140 5140 CONTINUE IVON01 = 0 IVON02 = 3 IADN11(1) = 3 IADN11(2) = 27 IF ( IADN11(1) ** IVON02 .GE. IADN11(2) ) IVON01 = 1 GO TO 45140 35140 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45140, 5151, 45140 45140 IF ( IVON01 - 1 ) 25140, 15140, 25140 15140 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5151 25140 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5151 CONTINUE IVTNUM = 515 C C **** TEST 515 **** C TEST 515 - LIKE TEST 514 BUT USES ALL INTEGER ARRAY ELEMENTS C RELATIONAL EXPRESSION USES .GT. FALSE PATH C C IF (ICZERO) 35150, 5150, 35150 5150 CONTINUE IVON01 = 1 IADN11(1) = 3 IADN11(2) = 27 IF ( IADN11(1) ** IADN11(1) .GT. IADN11(2) ) IVON01 = 0 GO TO 45150 35150 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45150, 5161, 45150 45150 IF ( IVON01 - 1 ) 25150, 15150, 25150 15150 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5161 25150 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5161 CONTINUE IVTNUM = 516 C C **** TEST 516 **** C TEST 516 - TEST OF INTEGER MULTIPLICATION USING INTEGER C CONSTANTS. RELATIONAL EXPRESSION USES .LT. TRUE PATH C C IF (ICZERO) 35160, 5160, 35160 5160 CONTINUE IVON01 = 0 IVON02 = 587 IF ( 3 * 3 .LT. IVON02 ) IVON01 = 1 GO TO 45160 35160 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45160, 5171, 45160 45160 IF ( IVON01 - 1 ) 25160, 15160, 25160 15160 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5171 25160 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5171 CONTINUE IVTNUM = 517 C C **** TEST 517 **** C TEST 517 - INTEGER MULTIPLICATION WITH INTEGER CONSTANTS, C VARIABLES, AND ARRAY ELEMENTS. RELATIONAL EXPRESSION USES C .GT. FALSE PATH C C IF (ICZERO) 35170, 5170, 35170 5170 CONTINUE IVON01 = 1 IVON02 = 32767 IADN11(1) = 3 IF ( IADN11(1) * 587 .GT. IVON02 ) IVON01 = 0 GO TO 45170 35170 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45170, 5181, 45170 45170 IF ( IVON01 - 1 ) 25170, 15170, 25170 15170 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5181 25170 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5181 CONTINUE IVTNUM = 518 C C **** TEST 518 **** C TEST 518 - INTEGER MULTIPLICATION AND EXPONIENTATION C RELATIONAL EXPRESSION USES .EQ. TRUE PATH C C IF (ICZERO) 35180, 5180, 35180 5180 CONTINUE IVON01 = 0 IVON02 = 3 IVON03 = 27 IADN11(2) = 3 IF ( IADN11(2) ** 2 * IVON02 .EQ. IVON03 ) IVON01 = 1 GO TO 45180 35180 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45180, 5191, 45180 45180 IF ( IVON01 - 1 ) 25180, 15180, 25180 15180 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5191 25180 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5191 CONTINUE IVTNUM = 519 C C **** TEST 519 **** C TEST 519 - INTEGER DIVISION. RELATIONAL EXPRESSION .NE. C FALSE PATH C C IF (ICZERO) 35190, 5190, 35190 5190 CONTINUE IVON01 = 1 IVON02 = 27 IADN11(1) = 3 IF ( IVON02 / 9 .NE. IADN11(1) ) IVON01 = 0 GO TO 45190 35190 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45190, 5201, 45190 45190 IF ( IVON01 - 1 ) 25190, 15190, 25190 15190 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5201 25190 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5201 CONTINUE IVTNUM = 520 C C **** TEST 520 **** C TEST 520 - INTEGER VARIABLE DIVISION. RELATIONAL EXPRESSION C USES .GE. TRUE PATH C C IF (ICZERO) 35200, 5200, 35200 5200 CONTINUE IVON01 = 0 IVON02 = 32767 IVON03 = 3 IVON04 = 9999 IVON05 = 587 IF ( IVON02 / IVON03 .GE. IVON04 / IVON05 ) IVON01 = 1 GO TO 45200 35200 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45200, 5211, 45200 45200 IF ( IVON01 - 1 ) 25200, 15200, 25200 15200 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5211 25200 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5211 CONTINUE IVTNUM = 521 C C **** TEST 521 **** C TEST 521 - INTEGER DIVISION AND EXPONIENTATION C RELATIONAL EXPRESSION USES .LT. FALSE PATH C C IF (ICZERO) 35210, 5210, 35210 5210 CONTINUE IVON01 = 1 IVON02 = 587 IVON03 = 3 IADN11(2) = 3 IF ( IVON02 / IADN11(2) ** 3 .LT. 3 ** IVON03 / IVON02 ) IVON01 =0 IF ( IVON02 / IADN11(2) ** 3 .LT. 3 ** IVON03 / IVON02 ) IVON01=0 GO TO 45210 35210 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45210, 5221, 45210 45210 IF ( IVON01 - 1 ) 25210, 15210, 25210 15210 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5221 25210 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5221 CONTINUE IVTNUM = 522 C C **** TEST 522 **** C TEST 522 - TESTS 522 THRU 535 ARE TESTS OF SIGNED TERMS C +(T) ALSO -(T) C RELATIONAL EXPRESSION USES .GT. TRUE PATH C C IF (ICZERO) 35220, 5220, 35220 5220 CONTINUE IVON01 = 0 IF ( 3 .GT. -3 ) IVON01 = 1 GO TO 45220 35220 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45220, 5231, 45220 45220 IF ( IVON01 - 1 ) 25220, 15220, 25220 15220 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5231 25220 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5231 CONTINUE IVTNUM = 523 C C **** TEST 523 **** C TEST 523 - TEST OF SIGNED ZERO .LT. FALSE PATH C C IF (ICZERO) 35230, 5230, 35230 5230 CONTINUE IVON01 = 1 IF ( 0 .LT. -0 ) IVON01 = 0 GO TO 45230 35230 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45230, 5241, 45230 45230 IF ( IVON01 - 1 ) 25230, 15230, 25230 15230 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5241 25230 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5241 CONTINUE IVTNUM = 524 C C **** TEST 524 **** C TEST 524 - TEST OF SIGNED ZERO .LE. TRUE PATH C C IF (ICZERO) 35240, 5240, 35240 5240 CONTINUE IVON01 = 0 IF ( 0 .LE. -0 ) IVON01 = 1 GO TO 45240 35240 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45240, 5251, 45240 45240 IF ( IVON01 - 1 ) 25240, 15240, 25240 15240 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5251 25240 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5251 CONTINUE IVTNUM = 525 C C **** TEST 525 **** C TEST 525 - TEST OF SIGNED ZERO .EQ. TRUE PATH C C IF (ICZERO) 35250, 5250, 35250 5250 CONTINUE IVON01 = 0 IF ( 0 .EQ. -0 ) IVON01 = 1 GO TO 45250 35250 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45250, 5261, 45250 45250 IF ( IVON01 - 1 ) 25250, 15250, 25250 15250 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5261 25250 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5261 CONTINUE IVTNUM = 526 C C **** TEST 526 **** C TEST 526 - TEST OF SIGNED ZERO .NE. FALSE PATH C C IF (ICZERO) 35260, 5260, 35260 5260 CONTINUE IVON01 = 1 IF ( 0 .NE. -0 ) IVON01 = 0 GO TO 45260 35260 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45260, 5271, 45260 45260 IF ( IVON01 - 1 ) 25260, 15260, 25260 15260 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5271 25260 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5271 CONTINUE IVTNUM = 527 C C **** TEST 527 **** C TEST 527 - TEST OF SIGNED ZERO .GE. TRUE PATH C C IF (ICZERO) 35270, 5270, 35270 5270 CONTINUE IVON01 = 0 IF ( 0 .GE. -0 ) IVON01 = 1 GO TO 45270 35270 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45270, 5281, 45270 45270 IF ( IVON01 - 1 ) 25270, 15270, 25270 15270 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5281 25270 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5281 CONTINUE IVTNUM = 528 C C **** TEST 528 **** C TEST 528 - TEST OF SIGNED ZERO .GT. FALSE PATH C C IF (ICZERO) 35280, 5280, 35280 5280 CONTINUE IVON01 = 1 IF ( 0 .GT. -0 ) IVON01 = 0 GO TO 45280 35280 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45280, 5291, 45280 45280 IF ( IVON01 - 1 ) 25280, 15280, 25280 15280 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5291 25280 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5291 CONTINUE IVTNUM = 529 C C **** TEST 529 **** C TEST 529 - TEST OF 32767 AND -32766 .GT. TRUE PATH C C IF (ICZERO) 35290, 5290, 35290 5290 CONTINUE IVON01 = 0 IF ( 32767 .GT. -32766 ) IVON01 = 1 GO TO 45290 35290 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 45290, 5301, 45290 45290 IF ( IVON01 - 1 ) 25290, 15290, 25290 15290 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 5301 25290 IVFAIL = IVFAIL + 1 IVCOMP = IVON01 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 5301 CONTINUE C C WRITE PAGE FOOTINGS AND RUN SUMMARIES 99999 CONTINUE WRITE (I02,90002) WRITE (I02,90006) WRITE (I02,90002) WRITE (I02,90002) WRITE (I02,90007) WRITE (I02,90002) WRITE (I02,90008) IVFAIL WRITE (I02,90009) IVPASS WRITE (I02,90010) IVDELE C C C TERMINATE ROUTINE EXECUTION STOP C C FORMAT STATEMENTS FOR PAGE HEADERS 90000 FORMAT (1H1) 90002 FORMAT (1H ) 90001 FORMAT (1H ,10X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90003 FORMAT (1H ,21X,11HVERSION 1.0) 90004 FORMAT (1H ,10X,38HFOR OFFICIAL USE ONLY - COPYRIGHT 1978) 90005 FORMAT (1H ,5X,4HTEST,5X,9HPASS/FAIL, 5X,8HCOMPUTED,8X,7HCORRECT) 90006 FORMAT (1H ,5X,46H----------------------------------------------) 90011 FORMAT (1H ,18X,17HSUBSET LEVEL TEST) C C FORMAT STATEMENTS FOR RUN SUMMARIES 90008 FORMAT (1H ,15X,I5,19H ERRORS ENCOUNTERED) 90009 FORMAT (1H ,15X,I5,13H TESTS PASSED) 90010 FORMAT (1H ,15X,I5,14H TESTS DELETED) C C FORMAT STATEMENTS FOR TEST RESULTS 80001 FORMAT (1H ,4X,I5,7X,4HPASS) 80002 FORMAT (1H ,4X,I5,7X,4HFAIL) 80003 FORMAT (1H ,4X,I5,7X,7HDELETED) 80004 FORMAT (1H ,4X,I5,7X,4HFAIL,10X,I6,9X,I6) 80005 FORMAT (1H ,4X,I5,7X,4HFAIL,4X,E12.5,3X,E12.5) C 90007 FORMAT (1H ,20X,20HEND OF PROGRAM FM018) END