PROGRAM FM202 00010202 C 00020202 C 00030202 C THIS ROUTINE IS THE FIRST ROUTINE TO TEST CHARACTER DATA 00040202 C TYPES. CHARACTER TYPE-STATEMENTS SPECIFY CHARACTER VARIABLES OF 00050202 C LENGTH ONE AND LENGTH TWO. THE TESTS IN THIS ROUTINE DETERMINE 00060202 C THAT THE FOLLOWING LANGUAGE FEATURES FUNCTION CORRECTLY. 00070202 C 00080202 C (1) CHARACTER ASSIGNMENT STATEMENTS OF THE FORM 00090202 C 00100202 C CHARACTER VARIABLE = CHARACTER CONSTANT 00110202 C CHARACTER VARIABLE = CHARACTER VARIABLE 00120202 C 00130202 C WHERE THE VARIABLES AND CONSTANTS ARE THE SAME LENGTH. 00140202 C 00150202 C (2) THE REPRESENTATION OF AN APOSTROPHE IN A CHARACTER 00160202 C CONSTANT IS TWO CONSECUTIVE APOSTROPHES WITH NO INTERVENING 00170202 C BLANKS. 00180202 C 00190202 C (3) CHARACTER RELATIONAL EXPRESSION OF THE FORM 00200202 C 00210202 C CHARACTER VARIABLE RELOP CHARACTER CONSTANT 00220202 C CHARACTER CONSTANT RELOP CHARACTER VARIABLE 00230202 C CHARACTER VARIABLE RELOP CHARACTER VARIABLE 00240202 C 00250202 C WHERE THE CHARACTER ENTITIES ARE THE SAME LENGTH. 00260202 C 00270202 C (4) CHARACTER RELATIONAL EXPRESSIONS OF THE FORM 00280202 C 00290202 C CHARACTER VARIABLE .EQ. CHARACTER CONSTANT 00300202 C 00310202 C ARE USED IN THIS ROUTINE TO VERIFY THE CHARACTER ASSIGNMENT 00320202 C STATEMENTS. 00330202 C 00340202 C REFERENCES 00350202 C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, 00360202 C X3.9-1978 00370202 C 00380202 C SECTION 4.8, CHARACTER TYPE 00390202 C SECTION 4.8.1, CHARACTER CONSTANT 00400202 C SECTION 6.2, CHARACTER EXPRESSIONS 00410202 C SECTION 6.3.4, CHARACTER RELATIONAL EXPRESSION 00420202 C SECTION 6.3.5, INTERPRETATION OF CHARACTER RELATIONAL 00430202 C EXPRESSIONS 00440202 C SECTION 8.4.2, CHARACTER TYPE-STATEMENT 00450202 C SECTION 10.4, CHARACTER ASSIGNMENT STATEMENT 00460202 C 00470202 C 00480202 C 00490202 C ******************************************************************00500202 C A COMPILER VALIDATION SYSTEM FOR THE FORTRAN LANGUAGE 00510202 C BASED ON SPECIFICATIONS AS DEFINED IN AMERICAN STANDARD FORTRAN 00520202 C X3.9-1978, HAS BEEN DEVELOPED BY THE DEPARTMENT OF THE NAVY. THE 00530202 C FORTRAN COMPILER VALIDATION SYSTEM (FCVS) CONSISTS OF AUDIT 00540202 C ROUTINES, THEIR RELATED DATA, AND AN EXECUTIVE SYSTEM. EACH AUDIT00550202 C ROUTINE IS A FORTRAN PROGRAM OR SUBPROGRAM WHICH INCLUDES TESTS 00560202 C OF SPECIFIC LANGUAGE ELEMENTS AND SUPPORTING PROCEDURES INDICATING00570202 C THE RESULT OF EXECUTING THESE TESTS. 00580202 C 00590202 C THIS PARTICULAR PROGRAM OR SUBPROGRAM CONTAINS ONLY FEATURES 00600202 C FOUND IN THE SUBSET LEVEL OF THE STANDARD. 00610202 C 00620202 C SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO 00630202 C NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY 00640202 C SOFTWARE STANDARDS VALIDATION GROUP 00650202 C BUILDING 225 RM A266 00660202 C GAITHERSBURG, MD 20899 00670202 C ******************************************************************00680202 C 00690202 C 00700202 IMPLICIT LOGICAL (L) 00710202 IMPLICIT CHARACTER*14 (C) 00720202 C 00730202 CHARACTER *1 CVTN01, CVTN02 00740202 CHARACTER *2 CVTN03, CVTN04 00750202 C 00760202 C 00770202 C 00780202 C INITIALIZATION SECTION. 00790202 C 00800202 C INITIALIZE CONSTANTS 00810202 C ******************** 00820202 C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER 00830202 I01 = 5 00840202 C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER 00850202 I02 = 6 00860202 C SYSTEM ENVIRONMENT SECTION 00870202 C 00880202 CX010 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-010 CONTROL CARD.00890202 C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 00900202 C (UNIT NUMBER FOR CARD READER). 00910202 CX011 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-011 CONTROL CARD00920202 C THE CX011 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL 00930202 C FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX010 ABOVE. 00940202 C 00950202 CX020 THIS CARD IS PEPLACED BY CONTENTS OF FEXEC X-020 CONTROL CARD.00960202 C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02 = 6 00970202 C (UNIT NUMBER FOR PRINTER). 00980202 CX021 THIS CARD IS PEPLACED BY CONTENTS OF FEXEC X-021 CONTROL CARD.00990202 C THE CX021 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL 01000202 C FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX020 ABOVE. 01010202 C 01020202 IVPASS = 0 01030202 IVFAIL = 0 01040202 IVDELE = 0 01050202 ICZERO = 0 01060202 C 01070202 C WRITE OUT PAGE HEADERS 01080202 C 01090202 WRITE (I02,90002) 01100202 WRITE (I02,90006) 01110202 WRITE (I02,90008) 01120202 WRITE (I02,90004) 01130202 WRITE (I02,90010) 01140202 WRITE (I02,90004) 01150202 WRITE (I02,90016) 01160202 WRITE (I02,90001) 01170202 WRITE (I02,90004) 01180202 WRITE (I02,90012) 01190202 WRITE (I02,90014) 01200202 WRITE (I02,90004) 01210202 C 01220202 C 01230202 C TEST 1 THROUGH TEST 6 VERIFY THAT THE CHARACTER ASSIGNMENT 01240202 C STATEMENT 01250202 C 01260202 C CHARACTER VARIABLE (LEN 1) = CHARACTER CONSTANT (LEN 1) 01270202 C 01280202 C IS CORRECT. THE CHARACTER RELATIONAL EXPRESSION 01290202 C 01300202 C CHARACTER VARIABLE (LEN 1) RELOP CHARACTER CONSTANT (LEN 1) 01310202 C 01320202 C IS USED TO VERIFY THE ASSIGNMENT STATEMENT. BOTH OF THE ABOVE 01330202 C STATEMENTS MUST MEET THE LANGUAGE SPECIFICATIONS FOR THESE TESTS 01340202 C TO PASS. 01350202 C 01360202 C 01370202 C **** FCVS PROGRAM 202 - TEST 001 **** 01380202 C 01390202 C 01400202 IVTNUM = 1 01410202 IF (ICZERO) 30010, 0010, 30010 01420202 0010 CONTINUE 01430202 IVCOMP = 0 01440202 CVTN01 = ' ' 01450202 IVCORR = 1 01460202 IF (CVTN01 .EQ. ' ') IVCOMP = 1 01470202 40010 IF (IVCOMP - 1) 20010,10010,20010 01480202 30010 IVDELE = IVDELE + 1 01490202 WRITE (I02,80000) IVTNUM 01500202 IF (ICZERO) 10010, 0021, 20010 01510202 10010 IVPASS = IVPASS + 1 01520202 WRITE (I02,80002) IVTNUM 01530202 GO TO 0021 01540202 20010 IVFAIL = IVFAIL + 1 01550202 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 01560202 0021 CONTINUE 01570202 C 01580202 C **** FCVS PROGRAM 202 - TEST 002 **** 01590202 C 01600202 C 01610202 IVTNUM = 2 01620202 IF (ICZERO) 30020, 0020, 30020 01630202 0020 CONTINUE 01640202 IVCOMP = 0 01650202 CVTN01 = 'M' 01660202 IVCORR = 1 01670202 IF (CVTN01 .EQ. 'M') IVCOMP = 1 01680202 40020 IF (IVCOMP - 1) 20020,10020,20020 01690202 30020 IVDELE = IVDELE + 1 01700202 WRITE (I02,80000) IVTNUM 01710202 IF (ICZERO) 10020, 0031, 20020 01720202 10020 IVPASS = IVPASS + 1 01730202 WRITE (I02,80002) IVTNUM 01740202 GO TO 0031 01750202 20020 IVFAIL = IVFAIL + 1 01760202 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 01770202 0031 CONTINUE 01780202 C 01790202 C **** FCVS PROGRAM 202 - TEST 003 **** 01800202 C 01810202 C 01820202 IVTNUM = 3 01830202 IF (ICZERO) 30030, 0030, 30030 01840202 0030 CONTINUE 01850202 IVCOMP = 0 01860202 IVCORR = 1 01870202 CVTN01 = '4' 01880202 IF (CVTN01 .EQ. '4') IVCOMP = 1 01890202 40030 IF (IVCOMP - 1) 20030,10030,20030 01900202 30030 IVDELE = IVDELE + 1 01910202 WRITE (I02,80000) IVTNUM 01920202 IF (ICZERO) 10030, 0041, 20030 01930202 10030 IVPASS = IVPASS + 1 01940202 WRITE (I02,80002) IVTNUM 01950202 GO TO 0041 01960202 20030 IVFAIL = IVFAIL + 1 01970202 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 01980202 0041 CONTINUE 01990202 C 02000202 C **** FCVS PROGRAM 202 - TEST 004 **** 02010202 C 02020202 C 02030202 IVTNUM = 4 02040202 IF (ICZERO) 30040, 0040, 30040 02050202 0040 CONTINUE 02060202 IVCOMP = 0 02070202 IVCORR = 1 02080202 CVTN01 = '=' 02090202 IF (CVTN01 .EQ. '=') IVCOMP = 1 02100202 40040 IF (IVCOMP - 1) 20040,10040,20040 02110202 30040 IVDELE = IVDELE + 1 02120202 WRITE (I02,80000) IVTNUM 02130202 IF (ICZERO) 10040, 0051, 20040 02140202 10040 IVPASS = IVPASS + 1 02150202 WRITE (I02,80002) IVTNUM 02160202 GO TO 0051 02170202 20040 IVFAIL = IVFAIL + 1 02180202 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 02190202 0051 CONTINUE 02200202 C 02210202 C **** FCVS PROGRAM 202 - TEST 005 **** 02220202 C 02230202 C 02240202 IVTNUM = 5 02250202 IF (ICZERO) 30050, 0050, 30050 02260202 0050 CONTINUE 02270202 IVCOMP = 0 02280202 IVCORR = 1 02290202 CVTN01 = '/' 02300202 IF (CVTN01 .EQ. '/') IVCOMP = 1 02310202 40050 IF (IVCOMP - 1) 20050,10050,20050 02320202 30050 IVDELE = IVDELE + 1 02330202 WRITE (I02,80000) IVTNUM 02340202 IF (ICZERO) 10050, 0061, 20050 02350202 10050 IVPASS = IVPASS + 1 02360202 WRITE (I02,80002) IVTNUM 02370202 GO TO 0061 02380202 20050 IVFAIL = IVFAIL + 1 02390202 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 02400202 0061 CONTINUE 02410202 C 02420202 C **** FCVS PROGRAM 202 - TEST 006 **** 02430202 C 02440202 C AN APOSTROPHE IN A CHARACTER CONSTANT IS REPRESENTED BY TWO 02450202 C CONSECUTIVE APOSTROPHES WITH NO INTERVENING BLANKS. 02460202 C 02470202 IVTNUM = 6 02480202 IF (ICZERO) 30060, 0060, 30060 02490202 0060 CONTINUE 02500202 IVCOMP = 0 02510202 IVCORR = 1 02520202 CVTN01 = '''' 02530202 IF (CVTN01 .EQ. '''') IVCOMP = 1 02540202 40060 IF (IVCOMP - 1) 20060,10060,20060 02550202 30060 IVDELE = IVDELE + 1 02560202 WRITE (I02,80000) IVTNUM 02570202 IF (ICZERO) 10060, 0071, 20060 02580202 10060 IVPASS = IVPASS + 1 02590202 WRITE (I02,80002) IVTNUM 02600202 GO TO 0071 02610202 20060 IVFAIL = IVFAIL + 1 02620202 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 02630202 0071 CONTINUE 02640202 C 02650202 C TEST 7 THROUGH TEST 12 VERIFY THAT THE CHARACTER ASSIGNMENT 02660202 C STATEMENTS 02670202 C 02680202 C CHARACTER VARIABLE (LEN 1) = CHARACTER CONSTANT (LEN 1) 02690202 C CHARACTER VARIABLE (LEN 1) = CHARACTER VARIABLE (LEN 1) 02700202 C 02710202 C ARE CORRECT. THE CHARACTER RELATIONAL EXPRESSION 02720202 C 02730202 C CHARACTER VARIABLE (LEN 1) .EQ. CHARACTER CONSTANT (LEN 1) 02740202 C 02750202 C IS USED TO VERIFY THE RESULT OF THE ASSIGNMENT STATEMENTS. 02760202 C 02770202 C 02780202 C **** FCVS PROGRAM 202 - TEST 007 **** 02790202 C 02800202 C 02810202 IVTNUM = 7 02820202 IF (ICZERO) 30070, 0070, 30070 02830202 0070 CONTINUE 02840202 IVCOMP = 0 02850202 IVCORR = 1 02860202 CVTN01 = ' ' 02870202 CVTN02 = CVTN01 02880202 IF (CVTN02 .EQ. ' ') IVCOMP = 1 02890202 40070 IF (IVCOMP - 1) 20070, 10070, 20070 02900202 30070 IVDELE = IVDELE + 1 02910202 WRITE (I02,80000) IVTNUM 02920202 IF (ICZERO) 10070, 0081, 20070 02930202 10070 IVPASS = IVPASS + 1 02940202 WRITE (I02,80002) IVTNUM 02950202 GO TO 0081 02960202 20070 IVFAIL = IVFAIL + 1 02970202 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 02980202 0081 CONTINUE 02990202 C 03000202 C **** FCVS PROGRAM 202 - TEST 008 **** 03010202 C 03020202 C 03030202 IVTNUM = 8 03040202 IF (ICZERO) 30080, 0080, 30080 03050202 0080 CONTINUE 03060202 IVCOMP = 0 03070202 IVCORR = 1 03080202 CVTN01 = 'M' 03090202 CVTN02 = CVTN01 03100202 IF (CVTN02 .EQ. 'M') IVCOMP = 1 03110202 40080 IF (IVCOMP - 1) 20080,10080,20080 03120202 30080 IVDELE = IVDELE + 1 03130202 WRITE (I02,80000) IVTNUM 03140202 IF (ICZERO) 10080, 0091, 20080 03150202 10080 IVPASS = IVPASS + 1 03160202 WRITE (I02,80002) IVTNUM 03170202 GO TO 0091 03180202 20080 IVFAIL = IVFAIL + 1 03190202 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 03200202 0091 CONTINUE 03210202 C 03220202 C **** FCVS PROGRAM 202 - TEST 009 **** 03230202 C 03240202 C 03250202 IVTNUM = 9 03260202 IF (ICZERO) 30090, 0090, 30090 03270202 0090 CONTINUE 03280202 IVCOMP = 0 03290202 IVCORR = 1 03300202 CVTN01 = '4' 03310202 CVTN02 = CVTN01 03320202 IF (CVTN02 .EQ. '4') IVCOMP = 1 03330202 40090 IF (IVCOMP - 1) 20090,10090,20090 03340202 30090 IVDELE = IVDELE + 1 03350202 WRITE (I02,80000) IVTNUM 03360202 IF (ICZERO) 10090, 0101, 20090 03370202 10090 IVPASS = IVPASS + 1 03380202 WRITE (I02,80002) IVTNUM 03390202 GO TO 0101 03400202 20090 IVFAIL = IVFAIL + 1 03410202 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 03420202 0101 CONTINUE 03430202 C 03440202 C **** FCVS PROGRAM 202 - TEST 010 **** 03450202 C 03460202 C 03470202 IVTNUM = 10 03480202 IF (ICZERO) 30100, 0100, 30100 03490202 0100 CONTINUE 03500202 IVCOMP = 0 03510202 IVCORR = 1 03520202 CVTN01 = '=' 03530202 CVTN02 = CVTN01 03540202 IF (CVTN02 .EQ. '=') IVCOMP = 1 03550202 40100 IF (IVCOMP - 1) 20100,10100,20100 03560202 30100 IVDELE = IVDELE + 1 03570202 WRITE (I02,80000) IVTNUM 03580202 IF (ICZERO) 10100, 0111, 20100 03590202 10100 IVPASS = IVPASS + 1 03600202 WRITE (I02,80002) IVTNUM 03610202 GO TO 0111 03620202 20100 IVFAIL = IVFAIL + 1 03630202 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 03640202 0111 CONTINUE 03650202 C 03660202 C **** FCVS PROGRAM 202 - TEST 011 **** 03670202 C 03680202 C 03690202 IVTNUM = 11 03700202 IF (ICZERO) 30110, 0110, 30110 03710202 0110 CONTINUE 03720202 IVCOMP =0 03730202 IVCORR = 1 03740202 CVTN01 = '/' 03750202 CVTN02 = CVTN01 03760202 IF (CVTN02 .EQ. '/') IVCOMP = 1 03770202 40110 IF (IVCOMP - 1) 20110,10110,20110 03780202 30110 IVDELE = IVDELE + 1 03790202 WRITE (I02,80000) IVTNUM 03800202 IF (ICZERO) 10110, 0121, 20110 03810202 10110 IVPASS = IVPASS + 1 03820202 WRITE (I02,80002) IVTNUM 03830202 GO TO 0121 03840202 20110 IVFAIL = IVFAIL + 1 03850202 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 03860202 0121 CONTINUE 03870202 C 03880202 C **** FCVS PROGRAM 202 - TEST 012 **** 03890202 C 03900202 C AN APOSTROPHE IN A CHARACTER CONSTANT IS REPRESENTED BY TWO 03910202 C CONSECUTIVE APOSTROPHES WITH NO INTERVENING BLANKS. 03920202 C 03930202 IVTNUM = 12 03940202 IF (ICZERO) 30120, 0120, 30120 03950202 0120 CONTINUE 03960202 IVCOMP = 0 03970202 IVCORR = 1 03980202 CVTN01 = '''' 03990202 CVTN02 = CVTN01 04000202 IF (CVTN02 .EQ. '''') IVCOMP = 1 04010202 40120 IF (IVCOMP - 1) 20120,10120,20120 04020202 30120 IVDELE = IVDELE + 1 04030202 WRITE (I02,80000) IVTNUM 04040202 IF (ICZERO) 10120, 0131, 20120 04050202 10120 IVPASS = IVPASS + 1 04060202 WRITE (I02,80002) IVTNUM 04070202 GO TO 0131 04080202 20120 IVFAIL = IVFAIL + 1 04090202 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 04100202 0131 CONTINUE 04110202 C 04120202 C TEST 13 THROUGH TEST 18 VERIFY THE RESULTS OF THE CHARACTER 04130202 C RELATIONAL EXPRESSION USING EACH OF THE SIX RELATIONAL OPERATORS 04140202 C IN THE STATEMENT FORM 04150202 C 04160202 C CHARACTER VARIABLE (LEN 1) RELOP CHARACTER CONSTANT (LEN 1). 04170202 C 04180202 C THE VARIABLE AND CONSTANT CONTAIN THE CHARACTER DATUM C. 04190202 C 04200202 CVTN01 = 'C' 04210202 C 04220202 C **** FCVS PROGRAM 202 - TEST 013 **** 04230202 C 04240202 C RELATIONAL OPERATOR .EQ. 04250202 C 04260202 IVTNUM = 13 04270202 IF (ICZERO) 30130, 0130, 30130 04280202 0130 CONTINUE 04290202 IVCOMP = 0 04300202 IVCORR = 1 04310202 IF (CVTN01 .EQ. 'C') IVCOMP = 1 04320202 40130 IF (IVCOMP - 1) 20130,10130,20130 04330202 30130 IVDELE = IVDELE + 1 04340202 WRITE (I02,80000) IVTNUM 04350202 IF (ICZERO) 10130, 0141, 20130 04360202 10130 IVPASS = IVPASS + 1 04370202 WRITE (I02,80002) IVTNUM 04380202 GO TO 0141 04390202 20130 IVFAIL = IVFAIL + 1 04400202 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 04410202 0141 CONTINUE 04420202 C 04430202 C **** FCVS PROGRAM 202 - TEST 014 **** 04440202 C 04450202 C RELATIONAL OPERATOR .NE. 04460202 C 04470202 IVTNUM = 14 04480202 IF (ICZERO) 30140, 0140, 30140 04490202 0140 CONTINUE 04500202 IVCOMP = 0 04510202 IVCORR = 0 04520202 IF (CVTN01 .NE. 'C') IVCOMP = 1 04530202 40140 IF (IVCOMP) 20140,10140,20140 04540202 30140 IVDELE = IVDELE + 1 04550202 WRITE (I02,80000) IVTNUM 04560202 IF (ICZERO) 10140, 0151, 20140 04570202 10140 IVPASS = IVPASS + 1 04580202 WRITE (I02,80002) IVTNUM 04590202 GO TO 0151 04600202 20140 IVFAIL = IVFAIL + 1 04610202 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 04620202 0151 CONTINUE 04630202 C 04640202 C **** FCVS PROGRAM 202 - TEST 015 **** 04650202 C 04660202 C RELATIONAL OPERATOR .LE. 04670202 C 04680202 IVTNUM = 15 04690202 IF (ICZERO) 30150, 0150, 30150 04700202 0150 CONTINUE 04710202 IVCOMP = 0 04720202 IVCORR = 1 04730202 IF (CVTN01 .LE. 'C') IVCOMP = 1 04740202 IF (IVCOMP - 1) 20150,10150,20150 04750202 30150 IVDELE = IVDELE + 1 04760202 WRITE (I02,80000) IVTNUM 04770202 IF (ICZERO) 10150, 0161, 20150 04780202 10150 IVPASS = IVPASS + 1 04790202 WRITE (I02,80002) IVTNUM 04800202 GO TO 0161 04810202 20150 IVFAIL = IVFAIL + 1 04820202 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 04830202 0161 CONTINUE 04840202 C 04850202 C **** FCVS PROGRAM 202 - TEST 016 **** 04860202 C 04870202 C RELATIONAL OPERATOR .LT. 04880202 C 04890202 IVTNUM = 16 04900202 IF (ICZERO) 30160, 0160, 30160 04910202 0160 CONTINUE 04920202 IVCOMP=0 04930202 IVCORR=0 04940202 IF (CVTN01 .LT. 'C') IVCOMP = 1 04950202 IF (IVCOMP) 20160,10160,20160 04960202 30160 IVDELE = IVDELE + 1 04970202 WRITE (I02,80000) IVTNUM 04980202 IF (ICZERO) 10160, 0171, 20160 04990202 10160 IVPASS = IVPASS + 1 05000202 WRITE (I02,80002) IVTNUM 05010202 GO TO 0171 05020202 20160 IVFAIL = IVFAIL + 1 05030202 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 05040202 0171 CONTINUE 05050202 C 05060202 C **** FCVS PROGRAM 202 - TEST 017 **** 05070202 C 05080202 C RELATIONAL OPERATOR .GE. 05090202 C 05100202 IVTNUM = 17 05110202 IF (ICZERO) 30170, 0170, 30170 05120202 0170 CONTINUE 05130202 IVCOMP = 0 05140202 IVCORR = 1 05150202 IF (CVTN01 .GE. 'C') IVCOMP = 1 05160202 40170 IF (IVCOMP - 1) 20170,10170,20170 05170202 30170 IVDELE = IVDELE + 1 05180202 WRITE (I02,80000) IVTNUM 05190202 IF (ICZERO) 10170, 0181, 20170 05200202 10170 IVPASS = IVPASS + 1 05210202 WRITE (I02,80002) IVTNUM 05220202 GO TO 0181 05230202 20170 IVFAIL = IVFAIL + 1 05240202 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 05250202 0181 CONTINUE 05260202 C 05270202 C **** FCVS PROGRAM 202 - TEST 018 **** 05280202 C 05290202 C RELATIONAL OPERATOR .GT. 05300202 C 05310202 IVTNUM = 18 05320202 IF (ICZERO) 30180, 0180, 30180 05330202 0180 CONTINUE 05340202 IVCOMP = 0 05350202 IVCORR = 0 05360202 IF (CVTN01 .GT. 'C') IVCOMP = 1 05370202 40180 IF (IVCOMP) 20180,10180,20180 05380202 30180 IVDELE = IVDELE + 1 05390202 WRITE (I02,80000) IVTNUM 05400202 IF (ICZERO) 10180, 0191, 20180 05410202 10180 IVPASS = IVPASS + 1 05420202 WRITE (I02,80002) IVTNUM 05430202 GO TO 0191 05440202 20180 IVFAIL = IVFAIL + 1 05450202 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 05460202 0191 CONTINUE 05470202 C 05480202 C TEST 19 THROUGH TEST 21 VERIFY THAT THE CHARACTER ASSIGNMENT 05490202 C STATEMENT 05500202 C 05510202 C CHARACTER VARIABLE (LEN 2) = CHARACTER CONSTANT (LEN 2) 05520202 C 05530202 C OPERATES CORRECTLY. THE CHARACTER RELATIONAL EXPRESSION 05540202 C 05550202 C CHARACTER VARIABLE (LEN 2) .EQ. CHARACTER CONSTANT (LEN 2) 05560202 C 05570202 C IS USED TO VERIFY THE RESULT OF THE ASSIGNMENT STATEMENT. 05580202 C 05590202 C 05600202 C **** FCVS PROGRAM 202 - TEST 019 **** 05610202 C 05620202 C 05630202 IVTNUM = 19 05640202 IF (ICZERO) 30190, 0190, 30190 05650202 0190 CONTINUE 05660202 IVCOMP =0 05670202 IVCORR =1 05680202 CVTN03 = 'AZ' 05690202 IF (CVTN03 .EQ. 'AZ') IVCOMP = 1 05700202 40190 IF (IVCOMP - 1) 20190,10190,20190 05710202 30190 IVDELE = IVDELE + 1 05720202 WRITE (I02,80000) IVTNUM 05730202 IF (ICZERO) 10190, 0201, 20190 05740202 10190 IVPASS = IVPASS + 1 05750202 WRITE (I02,80002) IVTNUM 05760202 GO TO 0201 05770202 20190 IVFAIL = IVFAIL + 1 05780202 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 05790202 0201 CONTINUE 05800202 C 05810202 C **** FCVS PROGRAM 202 - TEST 020 **** 05820202 C 05830202 C 05840202 IVTNUM = 20 05850202 IF (ICZERO) 30200, 0200, 30200 05860202 0200 CONTINUE 05870202 IVCOMP = 0 05880202 IVCORR = 1 05890202 CVTN03 = 'B''' 05900202 IF (CVTN03 .EQ. 'B''') IVCOMP = 1 05910202 40200 IF (IVCOMP - 1) 20200,10200,20200 05920202 30200 IVDELE = IVDELE + 1 05930202 WRITE (I02,80000) IVTNUM 05940202 IF (ICZERO) 10200, 0211, 20200 05950202 10200 IVPASS = IVPASS + 1 05960202 WRITE (I02,80002) IVTNUM 05970202 GO TO 0211 05980202 20200 IVFAIL = IVFAIL + 1 05990202 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 06000202 0211 CONTINUE 06010202 C 06020202 C **** FCVS PROGRAM 202 - TEST 021 **** 06030202 C 06040202 C 06050202 IVTNUM = 21 06060202 IF (ICZERO) 30210, 0210, 30210 06070202 0210 CONTINUE 06080202 IVCOMP = 0 06090202 IVCORR = 1 06100202 CVTN03 = '//' 06110202 IF (CVTN03 .EQ. '//') IVCOMP = 1 06120202 40210 IF (IVCOMP - 1) 20210,10210,20210 06130202 30210 IVDELE = IVDELE + 1 06140202 WRITE (I02,80000) IVTNUM 06150202 IF (ICZERO) 10210, 0221, 20210 06160202 10210 IVPASS = IVPASS + 1 06170202 WRITE (I02,80002) IVTNUM 06180202 GO TO 0221 06190202 20210 IVFAIL = IVFAIL + 1 06200202 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 06210202 0221 CONTINUE 06220202 C 06230202 C TEST 22 THROUGH TEST 24 VERIFY THAT THE CHARACTER ASSIGNMENT 06240202 C STATEMENTS 06250202 C 06260202 C CHARACTER VARIABLE (LEN 2) = CHARACTER CONSTANT (LEN 2) 06270202 C CHARACTER VARIABLE (LEN 2) = CHARACTER VARIABLE (LEN 2) 06280202 C 06290202 C OPERATE CORRECTLY. 06300202 C 06310202 C 06320202 C **** FCVS PROGRAM 202 - TEST 022 **** 06330202 C 06340202 C 06350202 IVTNUM = 22 06360202 IF (ICZERO) 30220, 0220, 30220 06370202 0220 CONTINUE 06380202 IVCOMP = 0 06390202 IVCORR = 1 06400202 CVTN03 = 'AZ' 06410202 CVTN04 = CVTN03 06420202 IF (CVTN04 .EQ. 'AZ') IVCOMP=1 06430202 40220 IF (IVCOMP - 1) 20220,10220,20220 06440202 30220 IVDELE = IVDELE + 1 06450202 WRITE (I02,80000) IVTNUM 06460202 IF (ICZERO) 10220, 0231, 20220 06470202 10220 IVPASS = IVPASS + 1 06480202 WRITE (I02,80002) IVTNUM 06490202 GO TO 0231 06500202 20220 IVFAIL = IVFAIL + 1 06510202 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 06520202 0231 CONTINUE 06530202 C 06540202 C **** FCVS PROGRAM 202 - TEST 023 **** 06550202 C 06560202 C 06570202 IVTNUM = 23 06580202 IF (ICZERO) 30230, 0230, 30230 06590202 0230 CONTINUE 06600202 IVCOMP = 0 06610202 IVCORR = 1 06620202 CVTN03 = 'B''' 06630202 CVTN04 = CVTN03 06640202 IF (CVTN04 .EQ. 'B''') IVCOMP = 1 06650202 40230 IF (IVCOMP - 1) 20230,10230,20230 06660202 30230 IVDELE = IVDELE + 1 06670202 WRITE (I02,80000) IVTNUM 06680202 IF (ICZERO) 10230, 0241, 20230 06690202 10230 IVPASS = IVPASS + 1 06700202 WRITE (I02,80002) IVTNUM 06710202 GO TO 0241 06720202 20230 IVFAIL = IVFAIL + 1 06730202 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 06740202 0241 CONTINUE 06750202 C 06760202 C **** FCVS PROGRAM 202 - TEST 024 **** 06770202 C 06780202 C 06790202 IVTNUM = 24 06800202 IF (ICZERO) 30240, 0240, 30240 06810202 0240 CONTINUE 06820202 IVCOMP = 0 06830202 IVCORR = 1 06840202 CVTN03 = '//' 06850202 CVTN04 = CVTN03 06860202 IF (CVTN04 .EQ. '//') IVCOMP = 1 06870202 40240 IF (IVCOMP - 1) 20240,10240,20240 06880202 30240 IVDELE = IVDELE + 1 06890202 WRITE (I02,80000) IVTNUM 06900202 IF (ICZERO) 10240, 0251, 20240 06910202 10240 IVPASS = IVPASS + 1 06920202 WRITE (I02,80002) IVTNUM 06930202 GO TO 0251 06940202 20240 IVFAIL = IVFAIL + 1 06950202 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 06960202 0251 CONTINUE 06970202 C 06980202 C TEST 25 THROUGH TEST 30 VERIFY THE RESULTS OF THE CHARACTER 06990202 C RELATIONAL EXPRESSION USING EACH OF THE SIX RELATIONAL OPERATORS 07000202 C IN THE EXPRESSION FORM 07010202 C 07020202 C CHARACTER VARIABLE (LEN 2) RELOP CHARACTER VARIABLE (LEN 2) 07030202 C 07040202 C THE VARIABLES CONTAIN THE CHARACTER DATUM CC. 07050202 C 07060202 CVTN03 = 'CC' 07070202 CVTN04 = 'CC' 07080202 C 07090202 C **** FCVS PROGRAM 202 - TEST 025 **** 07100202 C 07110202 C RELATIONAL OPERATOR .EQ. 07120202 C 07130202 IVTNUM = 25 07140202 IF (ICZERO) 30250, 0250, 30250 07150202 0250 CONTINUE 07160202 IVCOMP = 0 07170202 IVCORR = 1 07180202 IF (CVTN03 .EQ. CVTN04) IVCOMP = 1 07190202 40250 IF (IVCOMP - 1) 20250,10250,20250 07200202 30250 IVDELE = IVDELE + 1 07210202 WRITE (I02,80000) IVTNUM 07220202 IF (ICZERO) 10250, 0261, 20250 07230202 10250 IVPASS = IVPASS + 1 07240202 WRITE (I02,80002) IVTNUM 07250202 GO TO 0261 07260202 20250 IVFAIL = IVFAIL + 1 07270202 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 07280202 0261 CONTINUE 07290202 C 07300202 C **** FCVS PROGRAM 202 - TEST 026 **** 07310202 C 07320202 C RELATIONAL OPERATOR .NE. 07330202 C 07340202 IVTNUM = 26 07350202 IF (ICZERO) 30260, 0260, 30260 07360202 0260 CONTINUE 07370202 IVCOMP = 0 07380202 IVCORR = 0 07390202 IF (CVTN03 .NE. CVTN04) IVCOMP = 1 07400202 40260 IF (IVCOMP) 20260,10260,20260 07410202 30260 IVDELE = IVDELE + 1 07420202 WRITE (I02,80000) IVTNUM 07430202 IF (ICZERO) 10260, 0271, 20260 07440202 10260 IVPASS = IVPASS + 1 07450202 WRITE (I02,80002) IVTNUM 07460202 GO TO 0271 07470202 20260 IVFAIL = IVFAIL + 1 07480202 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 07490202 0271 CONTINUE 07500202 C 07510202 C **** FCVS PROGRAM 202 - TEST 027 **** 07520202 C 07530202 C RELATIONAL OPERATOR .LE. 07540202 C 07550202 IVTNUM = 27 07560202 IF (ICZERO) 30270, 0270, 30270 07570202 0270 CONTINUE 07580202 IVCOMP = 0 07590202 IVCORR = 1 07600202 IF (CVTN03 .LE. CVTN04) IVCOMP = 1 07610202 40270 IF (IVCOMP - 1) 20270,10270,20270 07620202 30270 IVDELE = IVDELE + 1 07630202 WRITE (I02,80000) IVTNUM 07640202 IF (ICZERO) 10270, 0281, 20270 07650202 10270 IVPASS = IVPASS + 1 07660202 WRITE (I02,80002) IVTNUM 07670202 GO TO 0281 07680202 20270 IVFAIL = IVFAIL + 1 07690202 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 07700202 0281 CONTINUE 07710202 C 07720202 C **** FCVS PROGRAM 202 - TEST 028 **** 07730202 C 07740202 C RELATIONAL OPERATOR .LT. 07750202 C 07760202 IVTNUM = 28 07770202 IF (ICZERO) 30280, 0280, 30280 07780202 0280 CONTINUE 07790202 IVCOMP = 0 07800202 IVCORR = 0 07810202 IF (CVTN03 .LT. CVTN04) IVCOMP=1 07820202 40280 IF (IVCOMP) 20280,10280,20280 07830202 30280 IVDELE = IVDELE + 1 07840202 WRITE (I02,80000) IVTNUM 07850202 IF (ICZERO) 10280, 0291, 20280 07860202 10280 IVPASS = IVPASS + 1 07870202 WRITE (I02,80002) IVTNUM 07880202 GO TO 0291 07890202 20280 IVFAIL = IVFAIL + 1 07900202 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 07910202 0291 CONTINUE 07920202 C 07930202 C **** FCVS PROGRAM 202 - TEST 029 **** 07940202 C 07950202 C RELATIONAL OPERATOR .GE. 07960202 C 07970202 IVTNUM = 29 07980202 IF (ICZERO) 30290, 0290, 30290 07990202 0290 CONTINUE 08000202 IVCOMP = 0 08010202 IVCORR = 1 08020202 IF (CVTN03 .GE. CVTN04) IVCOMP = 1 08030202 40290 IF (IVCOMP - 1) 20290,10290,20290 08040202 30290 IVDELE = IVDELE + 1 08050202 WRITE (I02,80000) IVTNUM 08060202 IF (ICZERO) 10290, 0301, 20290 08070202 10290 IVPASS = IVPASS + 1 08080202 WRITE (I02,80002) IVTNUM 08090202 GO TO 0301 08100202 20290 IVFAIL = IVFAIL + 1 08110202 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 08120202 0301 CONTINUE 08130202 C 08140202 C **** FCVS PROGRAM 202 - TEST 030 **** 08150202 C 08160202 C RELATIONAL OPERATOR .GT. 08170202 C 08180202 IVTNUM = 30 08190202 IF (ICZERO) 30300, 0300, 30300 08200202 0300 CONTINUE 08210202 IVCOMP = 0 08220202 IVCORR = 0 08230202 IF (CVTN03 .GT. CVTN04) IVCOMP = 1 08240202 40300 IF (IVCOMP) 20300,10300,20300 08250202 30300 IVDELE = IVDELE + 1 08260202 WRITE (I02,80000) IVTNUM 08270202 IF (ICZERO) 10300, 0311, 20300 08280202 10300 IVPASS = IVPASS + 1 08290202 WRITE (I02,80002) IVTNUM 08300202 GO TO 0311 08310202 20300 IVFAIL = IVFAIL + 1 08320202 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 08330202 0311 CONTINUE 08340202 C 08350202 C 08360202 C WRITE OUT TEST SUMMARY 08370202 C 08380202 WRITE (I02,90004) 08390202 WRITE (I02,90014) 08400202 WRITE (I02,90004) 08410202 WRITE (I02,90000) 08420202 WRITE (I02,90004) 08430202 WRITE (I02,90020) IVFAIL 08440202 WRITE (I02,90022) IVPASS 08450202 WRITE (I02,90024) IVDELE 08460202 STOP 08470202 90001 FORMAT (" ",24X,"FM202") 08480202 90000 FORMAT (" ",20X,"END OF PROGRAM FM202" ) 08490202 C 08500202 C FORMATS FOR TEST DETAIL LINES 08510202 C 08520202 80000 FORMAT (" ",4X,I5,6X,"DELETED") 08530202 80002 FORMAT (" ",4X,I5,7X,"PASS") 08540202 80010 FORMAT (" ",4X,I5,7X,"FAIL",10X,I6,9X,I6) 08550202 80012 FORMAT (" ",4X,I5,7X,"FAIL",4X,E12.5,3X,E12.5) 08560202 80018 FORMAT (" ",4X,I5,7X,"FAIL",2X,A14,1X,A14) 08570202 C 08580202 C FORMAT STATEMENTS FOR PAGE HEADERS 08590202 C 08600202 90002 FORMAT ("1") 08610202 90004 FORMAT (" ") 08620202 90006 FORMAT (" ",10X,"FORTRAN COMPILER VALIDATION SYSTEM" ) 08630202 90008 FORMAT (" ",21X,"VERSION 2.1" ) 08640202 90010 FORMAT (" ",8X,"FOR OFFICIAL USE ONLY - COPYRIGHT 1978" ) 08650202 90012 FORMAT (" ",5X,"TEST",5X,"PASS/FAIL",5X,"COMPUTED",8X,"CORRECT") 08660202 90014 FORMAT (" ",5X,"----------------------------------------------" ) 08670202 90016 FORMAT (" ",18X,"SUBSET LEVEL TEST" ) 08680202 C 08690202 C FORMAT STATEMENTS FOR RUN SUMMARY 08700202 C 08710202 90020 FORMAT (" ",19X,I5," TESTS FAILED" ) 08720202 90022 FORMAT (" ",19X,I5," TESTS PASSED" ) 08730202 90024 FORMAT (" ",19X,I5," TESTS DELETED" ) 08740202 END 08750202