PROGRAM FM203 C C C THIS ROUTINE CONTINUES THE TESTING OF CHARACTER DATA TYPES C WHICH WAS STARTED IN FM202. THE CHARACTER TYPE-STATEMENTS SPECIFY C CHARACTER VARIABLES AND ONE-DIMENSIONAL CHARACTER ARRAYS OF C LENGTH ONE AND LENGTH TWO. THE TESTS IN THIS ROUTINE DETERMINE C THAT THE FOLLOWING LANGUAGE FEATURES FUNCTION CORRECTLY. C C (1) CHARACTER ASSIGNMENT STATEMENTS OF THE FORM C C CHARACTER ARRAY ELEMENT = CHARACTER CONSTANT C CHARACTER ARRAY ELEMENT = CHARACTER VARIABLE C CHARACTER ARRAY ELEMENT = CHARACTER ARRAY ELEMENT C CHARACTER VARIABLE = CHARACTER ARRAY ELEMENT C C WHERE THE ARRAY ELEMENTS, VARIABLES AND CONSTANTS ARE OF LENGTH C ONE OR TWO. C C (2) CHARACTER RELATIONAL EXPRESSIONS OF THE FORM C C CHARACTER ARRAY ELEMENT RELOP CHARACTER CONSTANT C CHARACTER ARRAY ELEMENT RELOP CHARACTER VARIABLE C CHARACTER ARRAY ELEMENT RELOP CHARACTER ARRAY ELEMENT C C WHERE THE ARRAY ELEMENTS, VARIABLES AND CONSTANTS ARE OF LENGTH C ONE OR TWO. C C (3) CHARACTER EXPRESSIONS ENCLOSED IN PARENTHESES. THE FORMS C TESTED ARE C C (CHARACTER CONSTANT) C (CHARACTER VARIABLE) C (CHARACTER ARRAY ELEMENT) C ((CHARACTER ARRAY ELEMENT)) C C (4) CHARACTER RELATIONAL EXPRESSIONS OF THE FORM C C CHARACTER ARRAY ELEMENT .EQ. CHARACTER CONSTANT C C ARE USED IN THIS ROUTINE TO VERIFY THE CHARACTER ASSIGNMENT C STATEMENTS. C C REFERENCES C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, C X3.9-1978 C C SECTION 4.8, CHARACTER TYPE C SECTION 4.8.1, CHARACTER CONSTANT C SECTION 6.2, CHARACTER EXPRESSIONS C SECTION 6.3.4, CHARACTER RELATIONAL EXPRESSION C SECTION 6.3.5, INTERPRETATION OF CHARACTER RELATIONAL C EXPRESSIONS C SECTION 8.4.2, CHARACTER TYPE-STATEMENT C SECTION 10.4, CHARACTER ASSIGNMENT STATEMENT C C C C ****************************************************************** C A COMPILER VALIDATION SYSTEM FOR THE FORTRAN LANGUAGE C BASED ON SPECIFICATIONS AS DEFINED IN AMERICAN STANDARD FORTRAN C X3.9-1978, HAS BEEN DEVELOPED BY THE DEPARTMENT OF THE NAVY. THE C FORTRAN COMPILER VALIDATION SYSTEM (FCVS) CONSISTS OF AUDIT C ROUTINES, THEIR RELATED DATA, AND AN EXECUTIVE SYSTEM. EACH AUDIT C ROUTINE IS A FORTRAN PROGRAM OR SUBPROGRAM WHICH INCLUDES TESTS C OF SPECIFIC LANGUAGE ELEMENTS AND SUPPORTING PROCEDURES INDICATING C THE RESULT OF EXECUTING THESE TESTS. C C THIS PARTICULAR PROGRAM OR SUBPROGRAM CONTAINS ONLY FEATURES C FOUND IN THE SUBSET LEVEL OF THE STANDARD. C C SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO C DEPARTMENT OF THE NAVY C FEDERAL COBOL COMPILER TESTING SERVICE C WASHINGTON, D.C. 20376 C C ****************************************************************** C C IMPLICIT LOGICAL (L) IMPLICIT CHARACTER*14 (C) C CHARACTER CATN11(5), CVTN01, CATN12(5), CVTN02 CHARACTER*2 CATN13, CVTN03, CATN14(5), CVTN04 DIMENSION CATN13(5) 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 PEPLACED 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 PEPLACED 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 OUT PAGE HEADERS C WRITE (I02,90002) WRITE (I02,90006) WRITE (I02,90008) WRITE (I02,90004) WRITE (I02,90010) WRITE (I02,90004) WRITE (I02,90016) WRITE (I02,90001) WRITE (I02,90004) WRITE (I02,90012) WRITE (I02,90014) WRITE (I02,90004) C C C TEST 31 THROUGH TEST 33 VERIFY THAT THE CHARACTER ASSIGNMENT C STATEMENT C C CHARACTER ARRAY ELEMENT (LEN 1) = CHARACTER CONSTANT (LEN 1) C C IS CORRECT. THE CHARACTER RELATIONAL EXPRESSION C C CHARACTER ARRAY ELEMENT (LEN 1) .EQ. CHARACTER CONSTANT (LEN 1) C C IS USED TO VERIFY THE ASSIGNMENT STATEMENT. BOTH OF THE ABOVE C STATEMENT FORMS MUST MEET THE LANGUAGE SPECIFICATIONS FOR THESE C TESTS TO PASS. C C THE TWO ARRAYS USED IN THESE TESTS ARE CATN11(5) AND CATN12(5) C THE ARRAYS ARE INITIALIZED TO A BLANK CHARACTER BY THE DO-LOOP C DO 312 I= 1,5 CATN11(I) = ' ' CATN12(I) = ' ' 312 CONTINUE C C **** FCVS PROGRAM 203 - TEST 031 **** C C IVTNUM = 31 IF (ICZERO) 30310, 0310, 30310 0310 CONTINUE IVCOMP = 0 IVCORR = 1 CATN11(2) = 'V' IF (CATN11(2) .EQ. 'V') IVCOMP = 1 40310 IF (IVCOMP - 1) 20310,10310,20310 30310 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10310, 0321, 20310 10310 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0321 20310 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0321 CONTINUE C C **** FCVS PROGRAM 203 - TEST 032 **** C C IVTNUM = 32 IF (ICZERO) 30320, 0320, 30320 0320 CONTINUE IVCOMP=0 IVCORR=1 CATN11(3) = '+' IF (CATN11(3) .EQ. '+') IVCOMP = 1 40320 IF (IVCOMP - 1) 20320,10320,20320 30320 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10320, 0331, 20320 10320 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0331 20320 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0331 CONTINUE C C **** FCVS PROGRAM 203 - TEST 033 **** C C IVTNUM = 33 IF (ICZERO) 30330, 0330, 30330 0330 CONTINUE IVCOMP = 0 IVCORR = 1 CATN11 (4) = '7' IF (CATN11 (4) .EQ. '7') IVCOMP = 1 40330 IF (IVCOMP -1) 20330,10330,20330 30330 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10330, 0341, 20330 10330 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0341 20330 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0341 CONTINUE C C TEST 34 THROUGH TEST 36 VERIFY THAT THE CHARACTER ASSIGNMENT C STATEMENTS C C CHARACTER VARIABLE (LEN 1) = CHARACTER CONSTANT (LEN 1) C CHARACTER ARRAY ELEMENT (LEN1) = CHARACTER VARIABLE (LEN1) C C ARE CORRECT. THE CHARACTER RELATIONAL EXPRESSION C C CHARACTER ARRAY ELEMENT (LEN1) .EQ. CHAR. CONSTANT (LEN1) C C IS USED TO VERIFY THE RESULT OF THE ASSIGNMENT STATEMENTS. C C C **** FCVS PROGRAM 203 - TEST 034 **** C C IVTNUM = 34 IF (ICZERO) 30340, 0340, 30340 0340 CONTINUE IVCOMP = 0 IVCORR = 1 CVTN01 = 'V' CATN12(2) = CVTN01 IF (CATN12(2) .EQ. 'V') IVCOMP = 1 40340 IF (IVCOMP - 1) 20340,10340,20340 30340 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10340, 0351, 20340 10340 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0351 20340 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0351 CONTINUE C C **** FCVS PROGRAM 203 - TEST 035 **** C C IVTNUM = 35 IF (ICZERO) 30350, 0350, 30350 0350 CONTINUE IVCOMP = 0 IVCORR = 1 CVTN01 = '+' CATN12(3) = CVTN01 IF (CATN12(3) .EQ. '+') IVCOMP = 1 40350 IF (IVCOMP - 1) 20350,10350,20350 30350 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10350, 0361, 20350 10350 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0361 20350 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0361 CONTINUE C C **** FCVS PROGRAM 203 - TEST 036 **** C C IVTNUM = 36 IF (ICZERO) 30360, 0360, 30360 0360 CONTINUE IVCOMP = 0 IVCORR = 1 CVTN01 = '7' CATN12(4) = CVTN01 IF (CATN12(4) .EQ. '7') IVCOMP = 1 40360 IF (IVCOMP - 1) 20360,10360,20360 30360 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10360, 0371, 20360 10360 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0371 20360 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0371 CONTINUE C C TEST 37 THROUGH TEST 39 VERIFY THAT THE CHARACTER ASSIGNMENT C STATEMENTS C C CHAR. ARRAY ELEMENT (LEN 1) = CHAR. CONSTANT (LEN 1) C CHAR. ARRAY ELEMENT (LEN 1) = CHAR. ARRAY ELEMENT (LEN 1) C C ARE CORRECT. THE CHARACTER RELATIONAL EXPRESSION C C CHAR. ARRAY ELEMENT (LEN 1) .EQ. CHAR. CONSTANT (LEN 1) C C IS USED TO VERIFY THE RESULT OF THE ASSIGNMENT STATEMENTS. C C C **** FCVS PROGRAM 203 - TEST 037 **** C C IVTNUM = 37 IF (ICZERO) 30370, 0370, 30370 0370 CONTINUE IVCOMP = 1 IVCORR = 6 CATN11 (1) = 'V' CATN12 (1) = CATN11 (1) IF (CATN12(1) .EQ. 'V') IVCOMP=IVCOMP*2 IF (CATN11(1) .EQ. 'V') IVCOMP=IVCOMP*3 40370 IF (IVCOMP-6) 20370,10370,20370 30370 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10370, 0381, 20370 10370 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0381 20370 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0381 CONTINUE C C **** FCVS PROGRAM 203 - TEST 038 **** C C IVTNUM = 38 IF (ICZERO) 30380, 0380, 30380 0380 CONTINUE IVCOMP=1 IVCORR=6 CATN11(2) = '+' CATN12(2) = CATN11(2) IF (CATN12(2) .EQ. '+') IVCOMP=IVCOMP*2 IF (CATN11(2) .EQ. '+') IVCOMP=IVCOMP*3 40380 IF (IVCOMP - 6) 20380,10380,20380 30380 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10380, 0391, 20380 10380 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0391 20380 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0391 CONTINUE C C **** FCVS PROGRAM 203 - TEST 039 **** C C IVTNUM = 39 IF (ICZERO) 30390, 0390, 30390 0390 CONTINUE IVCOMP = 1 IVCORR = 6 CATN11 (3) = '7' CATN12 (3) = CATN11 (3) IF (CATN12(3) .EQ. '7') IVCOMP = IVCOMP * 2 IF (CATN11(3) .EQ. '7') IVCOMP = IVCOMP * 3 40390 IF (IVCOMP - 6) 20390,10390,20390 30390 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10390, 0401, 20390 10390 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0401 20390 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0401 CONTINUE C C TEST 40 AND TEST 41 VERIFY THAT THE CHARACTER ASSIGNMENT C STATEMENTS C C CHAR. ARRAY ELEMENT (LEN 1) = CHAR. CONSTANT (LEN 1) C CHAR. VARIABLE (LEN 1) = CHAR. ARRAY ELEMENT (LEN 1) C C ARE CORRECT. C C C **** FCVS PROGRAM 203 - TEST 040 **** C C IVTNUM = 40 IF (ICZERO) 30400, 0400, 30400 0400 CONTINUE IVCOMP = 0 IVCORR = 1 CATN11(4) = 'X' CVTN02 = CATN11 (4) IF (CVTN02 .EQ. 'X') IVCOMP = 1 40400 IF (IVCOMP - 1) 20400,10400,20400 30400 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10400, 0411, 20400 10400 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0411 20400 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0411 CONTINUE C C **** FCVS PROGRAM 203 - TEST 041 **** C C IVTNUM = 41 IF (ICZERO) 30410, 0410, 30410 0410 CONTINUE IVCOMP = 0 IVCORR = 1 CATN11(3) = '-' CVTN02 = CATN11(3) IF (CVTN02 .EQ. '-') IVCOMP=1 40410 IF (IVCOMP - 1) 20410,10410,20410 30410 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10410, 0421, 20410 10410 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0421 20410 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0421 CONTINUE C C TEST 42 THROUGH TEST 44 VERIFY THE RESULTS OF CHARACTER C RELATIONAL EXPRESSIONS USING EACH OF THE SIX RELATIONAL OPERATORS. C THE CHARACTER DATA 'A' AND '1' ARE COMPARED IN THE EXPRESSION C AND ARE INITIALIZED BY THE CHARACTER ASSIGNMENT STATEMENTS C CATN11 (4) = 'A' CATN12 (3) = '1' CVTN01 = 'A' CVTN02 = '1' C C **** FCVS PROGRAM 203 - TEST 042 **** C C RELATIONAL OPERATORS .NE. AND .EQ. C CHAR. ARRAY ELEMENT (LEN 1) RELOP CHAR. CONSTANT (LEN 1) C IVTNUM = 42 IF (ICZERO) 30420, 0420, 30420 0420 CONTINUE IVCOMP = 1 IVCORR = 3 IF (CATN11(4) .EQ. '1') IVCOMP=IVCOMP*2 IF ('A' .NE. CATN12(3)) IVCOMP=IVCOMP*3 40420 IF (IVCOMP - 3) 20420,10420,20420 30420 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10420, 0431, 20420 10420 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0431 20420 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0431 CONTINUE C C **** FCVS PROGRAM 203 - TEST 043 **** C C RELATIONAL OPERATORS .LE. AND .GE. C CHAR. ARRAY ELEMENT (LEN 1) RELOP CHAR. VARIABLE (LEN 1) C IVTNUM = 43 IF (ICZERO) 30430, 0430, 30430 0430 CONTINUE IVCOMP = 0 IVCORR = 1 IF (CATN11(4) .LE. CVTN02) IVCOMP=IVCOMP+1 IF (CVTN01 .GE. CATN12(3)) IVCOMP=IVCOMP+1 40430 IF (IVCOMP - 1) 20430,10430,20430 30430 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10430, 0441, 20430 10430 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0441 20430 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0441 CONTINUE C C **** FCVS PROGRAM 203 - TEST 044 **** C C RELATIONAL OPERATORS .LT. AND .GT. C CHAR. ARRAY ELEMENT (LEN 1) RELOP CHAR. ARRAY ELEMENT (LEN 1) C IVTNUM = 44 IF (ICZERO) 30440, 0440, 30440 0440 CONTINUE IVCOMP = 0 IVCORR = 1 IF (CATN11(4) .LT. CATN12(3)) IVCOMP=IVCOMP+1 IF (CATN11(4) .GT. CATN12(3)) IVCOMP=IVCOMP+1 40440 IF (IVCOMP - 1) 20440,10440,20440 30440 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10440, 0451, 20440 10440 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0451 20440 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0451 CONTINUE C C **** FCVS PROGRAM 203 - TEST 045 **** C C TEST 45 VERIFIES THAT THE LAST ELEMENTS OF THE ARRAYS USED C IN TEST 31 THROUGH TEST 44 WERE NOT AFFECTED BY THE SETTING C OF OTHER CHARACTER ARRAY ELEMENTS. C IVTNUM = 45 IF (ICZERO) 30450, 0450, 30450 0450 CONTINUE IVCOMP = 1 IVCORR = 30 IF (CATN11(5) .EQ. ' ') IVCOMP=IVCOMP*2 IF (CATN12(5) .EQ. ' ') IVCOMP=IVCOMP*3 IF (CATN11(5) .EQ. CATN12(5)) IVCOMP=IVCOMP*5 40450 IF (IVCOMP - 30) 20450,10450,20450 30450 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10450, 0461, 20450 10450 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0461 20450 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0461 CONTINUE C C TEST 46 THROUGH TEST 49 CONTAIN CHARACTER ARRAY ELEMENTS OF C LENGTH TWO IN CHARACTER ASSIGNMENT STATEMENTS. THE CHARACTER C RELATIONAL EXPRESSION C C CHAR. ARRAY ELEMENT (LEN 2) .EQ. CHAR. CONSTANT (LEN 2) C C IS USED TO VERIFY THE TEST RESULTS. C C THE TWO ARRAYS USED IN THESE TESTS ARE CATN13(5) AND CATN14(5) C THE ARRAYS ARE INITIALIZED TO TWO BLANK CHARACTERS BY THE DO-LOOP C DO 462 I=1,5 CATN13(I) = ' ' CATN14(I) = ' ' 462 CONTINUE C C **** FCVS PROGRAM 203 - TEST 046 **** C C CHAR. ARRAY ELEMENT (LEN 2) = CHAR. CONSTANT (LEN 2) C IVTNUM = 46 IF (ICZERO) 30460, 0460, 30460 0460 CONTINUE IVCOMP = 0 IVCORR = 1 CATN13(1) = 'AB' IF (CATN13(1) .EQ. 'AB') IVCOMP = 1 40460 IF (IVCOMP - 1) 20460,10460,20460 30460 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10460, 0471, 20460 10460 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0471 20460 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0471 CONTINUE C C **** FCVS PROGRAM 203 - TEST 047 **** C C CHAR. VARIABLE (LEN 2) = CHAR. CONSTANT (LEN 2) C CHAR. ARRAY ELEMENT (LEN 2) = CHAR. VARIABLE (LEN 2) C IVTNUM = 47 IF (ICZERO) 30470, 0470, 30470 0470 CONTINUE IVCOMP = 0 IVCORR = 1 CVTN03 = '+-' CATN13(2) = CVTN03 IF (CATN13(2) .EQ. '+-') IVCOMP=1 40470 IF (IVCOMP - 1) 20470,10470,20470 30470 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10470, 0481, 20470 10470 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0481 20470 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0481 CONTINUE C C **** FCVS PROGRAM 203 - TEST 048 **** C C CHAR. ARRAY ELEMENT (LEN 2) = CHAR. CONSTANT (LEN 2) C CHAR. ARRAY ELEMENT (LEN 2) = CHAR. ARRAY ELEMENT (LEN 2) C IVTNUM = 48 IF (ICZERO) 30480, 0480, 30480 0480 CONTINUE IVCOMP = 0 IVCORR = 1 CATN13(4) = '24' CATN13(3) = CATN13(4) IF (CATN13(3) .EQ. '24') IVCOMP = 1 40480 IF (IVCOMP - 1) 20480,10480,20480 30480 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10480, 0491, 20480 10480 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0491 20480 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0491 CONTINUE C C **** FCVS PROGRAM 203 - TEST 049 **** C C CHAR. ARRAY ELEMENT (LEN 2) = CHAR. CONSTANT (LEN 2) C CHAR. VARIABLE (LEN 2) = CHAR. ARRAY ELEMENT (LEN 2) C IVTNUM = 49 IF (ICZERO) 30490, 0490, 30490 0490 CONTINUE IVCOMP = 0 IVCORR = 1 CATN14(1) = 'AB' CVTN04 = CATN14(1) IF (CVTN04 .EQ. 'AB') IVCOMP = 1 40490 IF (IVCOMP - 1) 20490,10490,20490 30490 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10490, 0501, 20490 10490 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0501 20490 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0501 CONTINUE C C TEST 50 THROUGH TEST 52 VERIFY THE RESULTS OF CHARACTER C RELATIONAL EXPRESSIONS USING EACH OF THE SIX RELATIONAL OPERATORS. C THE CHARACTER DATA 'ZA' AND 'Z1' ARE COMPARED IN THE EXPRESSION C AND ARE INITIALIZED BY THE CHARACTER ASSIGNMENT STATEMENTS C CATN14(2) = 'ZA' CATN14(3) = 'Z1' CVTN03 = 'ZA' CVTN04 = 'Z1' C C **** FCVS PROGRAM 203 - TEST 050 **** C C RELATIONAL OPERATORS .NE. AND .EQ. C CHAR. ARRAY ELEMENT (LEN 2) RELOP CHAR. VARIABLE (LEN 2) C IVTNUM = 50 IF (ICZERO) 30500, 0500, 30500 0500 CONTINUE IVCOMP = 1 IVCORR = 3 IF (CATN14(2) .EQ. 'Z1') IVCOMP=IVCOMP*2 IF ('ZA' .NE. CATN14(3)) IVCOMP=IVCOMP*3 40500 IF (IVCOMP - 3) 20500,10500,20500 30500 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10500, 0511, 20500 10500 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0511 20500 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0511 CONTINUE C C **** FCVS PROGRAM 203 - TEST 051 **** C C RELATIONAL OPERATORS .LE. AND .GE. C CHAR. ARRAY ELEMENT (LEN 2) RELOP CHAR. VARIABLE (LEN 2) C IVTNUM = 51 IF (ICZERO) 30510, 0510, 30510 0510 CONTINUE IVCOMP = 0 IVCORR = 1 IF (CATN14(2) .LE. CVTN04) IVCOMP=IVCOMP+1 IF (CVTN03 .GE. CATN14(3)) IVCOMP=IVCOMP+1 40510 IF (IVCOMP - 1) 20510,10510,20510 30510 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10510, 0521, 20510 10510 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0521 20510 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0521 CONTINUE C C **** FCVS PROGRAM 203 - TEST 052 **** C C RELATIONAL OPERATORS .LT. AND .GT. C CHAR. ARRAY ELEMENT (LEN 2) RELOP CHAR. ARRAY ELEMENT (LEN 2) C IVTNUM = 52 IF (ICZERO) 30520, 0520, 30520 0520 CONTINUE IVCOMP =0 IVCORR =1 IF (CATN14(2) .LT. CATN14(3)) IVCOMP=IVCOMP+1 IF (CATN14(2) .GT. CATN14(3)) IVCOMP=IVCOMP+1 40520 IF (IVCOMP - 1) 20520,10520,20520 30520 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10520, 0531, 20520 10520 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0531 20520 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0531 CONTINUE C C **** FCVS PROGRAM 203 - TEST 053 **** C C TEST 53 VERIFIES THAT THE LAST ELEMENTS OF THE ARRAYS USED IN C TEST 46 THROUGH TEST 52 WERE NOT AFFECTED BY THE SETTING OF OTHER C CHARACTER ARRAY ELEMENTS. C IVTNUM = 53 IF (ICZERO) 30530, 0530, 30530 0530 CONTINUE IVCOMP = 1 IVCORR = 30 IF (CATN13(5) .EQ. ' ')IVCOMP=IVCOMP*2 IF (CATN14(5) .EQ. ' ') IVCOMP= IVCOMP * 3 IF (CATN14(5) .EQ. CATN13(5)) IVCOMP=IVCOMP*5 40530 IF (IVCOMP - 30) 20530,10530,20530 30530 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10530, 0541, 20530 10530 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0541 20530 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0541 CONTINUE C C TEST 54 THROUGH TEST 60 VERIFY THAT A CHARACTER PRIMARY CAN C BE ENCLOSED IN PARENTHESES. THE CHARACTER PRIMARIES FOR THE C SUBSET ARE CHARACTER CONSTANT, CHARACTER VARIABLE, CHARACTER ARRAY C ELEMENT, AND CHARACTER EXPRESSION ENCLOSED IN PARENTHESES. THE C FORM OF A CHARACTER EXPRESSION IS CHARACTER PRIMARY. C C C **** FCVS PROGRAM 203 - TEST 054 **** C C CHARACTER ASSIGNMENT STATEMENT C CHAR. VARIABLE = (CHARACTER CONSTANT) LENGTH 1 C IVTNUM = 54 IF (ICZERO) 30540, 0540, 30540 0540 CONTINUE CVTN01 = ' ' IVCOMP = 0 IVCORR = 1 CVTN01 = ('N') IF (CVTN01 .EQ. 'N') IVCOMP = 1 40540 IF (IVCOMP - 1) 20540,10540,20540 30540 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10540, 0551, 20540 10540 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0551 20540 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0551 CONTINUE C C **** FCVS PROGRAM 203 - TEST 055 **** C C CHARACTER ASSIGNMENT STATEMENT C CHAR. VARIABLE = (CHAR. VARIABLE) LENGTH 2 C IVTNUM = 55 IF (ICZERO) 30550, 0550, 30550 0550 CONTINUE CVTN04 = ' ' IVCOMP = 0 IVCORR = 1 CVTN03 = '/+' CVTN04 = (CVTN03) IF (CVTN04 .EQ. '/+') IVCOMP=1 40550 IF (IVCOMP - 1) 20550,10550,20550 30550 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10550, 0561, 20550 10550 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0561 20550 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0561 CONTINUE C C **** FCVS PROGRAM 203 - TEST 056 **** C C CHARACTER ASSIGNMENT STATEMENT C CHAR. VARIABLE = (CHAR. ARRAY ELEMENT) LENGTH 2 C IVTNUM = 56 IF (ICZERO) 30560, 0560, 30560 0560 CONTINUE IVCOMP = 0 IVCORR = 1 CVTN04 = ' ' CATN13(1) = 'BC' CVTN04 = (CATN13(1)) IF (CVTN04 .EQ. 'BC') IVCOMP = 1 40560 IF (IVCOMP - 1) 20560,10560,20560 30560 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10560, 0571, 20560 10560 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0571 20560 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0571 CONTINUE C C **** FCVS PROGRAM 203 - TEST 057 **** C C CHARACTER ASSIGNMENT STATEMENT C CHAR. VARIABLE = ((CHAR. ARRAY ELEMENT)) LENGTH 2 C IVTNUM = 57 IF (ICZERO) 30570, 0570, 30570 0570 CONTINUE IVCOMP = 0 IVCORR = 1 CVTN04 = ' ' CATN13(3) = 'BC' CVTN04 = ((CATN13(3))) IF (CVTN04 .EQ. 'BC') IVCOMP=1 40570 IF (IVCOMP - 1) 20570,10570,20570 30570 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10570, 0581, 20570 10570 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0581 20570 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0581 CONTINUE C C **** FCVS PROGRAM 203 - TEST 058 **** C C RELATIONAL EXPRESSION, .NE. C (CHAR. CONSTANT) .NE. (CHAR. VARIABLE) LENGTH 1 C IVTNUM = 58 IF (ICZERO) 30580, 0580, 30580 0580 CONTINUE IVCOMP = 0 IVCORR = 1 CVTN01 = '6' IF (('9') .NE. (CVTN01)) IVCOMP=1 40580 IF (IVCOMP - 1) 20580,10580,20580 30580 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10580, 0591, 20580 10580 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0591 20580 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0591 CONTINUE C C **** FCVS PROGRAM 203 - TEST 059 **** C C RELATIONAL EXPRESSION, .GE. C (CHAR. VARIABLE) .GE. (CHAR. ARRAY ELEMENT) LENGTH 2 C IVTNUM = 59 IF (ICZERO) 30590, 0590, 30590 0590 CONTINUE IVCOMP = 0 IVCORR = 1 CVTN03 = 'DE' CATN13(5) = 'DE' IF ((CVTN03) .GE. (CATN13(5))) IVCOMP=1 40590 IF (IVCOMP - 1) 20590,10590,20590 30590 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10590, 0601, 20590 10590 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0601 20590 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0601 CONTINUE C C **** FCVS PROGRAM 203 - TEST 060 **** C C RELATIONAL EXPRESSION, .LE. C ((CHAR. ARRAY ELEMENT)) .LE. ((CHAR. ARRAY ELEMENT)) LEN 2 C IVTNUM = 60 IF (ICZERO) 30600, 0600, 30600 0600 CONTINUE IVCOMP = 0 IVCORR = 1 CATN13(4) = 'MC' CATN13(5) = 'MC' IF (((CATN13(4))) .LE. ((CATN13(5)))) IVCOMP = 1 40600 IF (IVCOMP - 1) 20600,10600,20600 30600 IVDELE = IVDELE + 1 WRITE (I02,80000) IVTNUM IF (ICZERO) 10600, 0611, 20600 10600 IVPASS = IVPASS + 1 WRITE (I02,80002) IVTNUM GO TO 0611 20600 IVFAIL = IVFAIL + 1 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 0611 CONTINUE C C C WRITE OUT TEST SUMMARY C WRITE (I02,90004) WRITE (I02,90014) WRITE (I02,90004) WRITE (I02,90000) WRITE (I02,90004) WRITE (I02,90020) IVFAIL WRITE (I02,90022) IVPASS WRITE (I02,90024) IVDELE STOP 90001 FORMAT (1H ,24X,5HFM203) 90000 FORMAT (1H ,20X,20HEND OF PROGRAM FM203) C C FORMATS FOR TEST DETAIL LINES C 80000 FORMAT (1H ,4X,I5,6X,7HDELETED) 80002 FORMAT (1H ,4X,I5,7X,4HPASS) 80010 FORMAT (1H ,4X,I5,7X,4HFAIL,10X,I6,9X,I6) 80012 FORMAT (1H ,4X,I5,7X,4HFAIL,4X,E12.5,3X,E12.5) 80018 FORMAT (1H ,4X,I5,7X,4HFAIL,2X,A14,1X,A14) C C FORMAT STATEMENTS FOR PAGE HEADERS C 90002 FORMAT (1H1) 90004 FORMAT (1H ) 90006 FORMAT (1H ,10X,34HFORTRAN COMPILER VALIDATION SYSTEM) 90008 FORMAT (1H ,21X,11HVERSION 1.0) 90010 FORMAT (1H ,8X,38HFOR OFFICIAL USE ONLY - COPYRIGHT 1978) 90012 FORMAT (1H ,5X,4HTEST,5X,9HPASS/FAIL,5X,8HCOMPUTED,8X,7HCORRECT) 90014 FORMAT (1H ,5X,46H----------------------------------------------) 90016 FORMAT (1H ,18X,17HSUBSET LEVEL TEST) C C FORMAT STATEMENTS FOR RUN SUMMARY C 90020 FORMAT (1H ,19X,I5,13H TESTS FAILED) 90022 FORMAT (1H ,19X,I5,13H TESTS PASSED) 90024 FORMAT (1H ,19X,I5,14H TESTS DELETED) END