PROGRAM FM352 00010352 C 00020352 C 00030352 C THIS PROGRAM CHECKS BASIC RELATIONAL EXPRESSIONS INVOLVING 00040352 C OPERANDS OF REAL DATA TYPE. IN EACH TEST, NOT ONLY THE RELATIONAL00050352 C EXPRESSION IS TESTED, BUT THE TRICHOTOMY LAW OF MATHEMATICAL 00060352 C RELATIONSHIPS IS ALSO TESTED (E.G., IF A .LT. B, THEN A CAN NOT 00070352 C BE .GT. THAN B, AND A CAN NOT BE .EQ. B). A TEST VARIABLE 00080352 C (IVCOMP) IS USED TO REPORT THE RESULT OF THE TEST AS FOLLOWS, 00090352 C IVCOMP = 0 IF BOTH THE TESTED RELATIONAL OPERATOR AND THE 00100352 C TRICHOTOMY TEST PASS. 00110352 C IVCOMP = 1 IF THE RELATIONAL TEST FAILS AND THE TRICHOTOMY 00120352 C TEST PASSES (WHICH WOULD INDICATE THAT A TESTED 00130352 C NOT .LT., .GT., OR .EQ. B). 00140352 C IVCOMP = 2 IF THE RELATIONAL TEST PASSES AND THE TRICHOTOMY 00150352 C TEST FAILS (WHICH WOULD INDICATE THAT A TESTED 00160352 C .LT., .GT., AND .EQ. B). 00170352 C IVCOMP = 3 IF BOTH THE RELATIONAL TEST AND THE TRICHOTOMY 00180352 C TEST FAIL (WHICH WOULD INDICATE THE RELATIONAL 00190352 C EXPRESSION TESTED OPPOSITE TO THAT EXPECTED 00200352 C (E.G., WHERE A WAS SUPPOSED TO BE .LT. B, IN 00210352 C FACT A .LT. B WAS FOUND TO BE FALSE AND A .GE. B 00220352 C WAS FOUND TO BE TRUE). 00230352 C 00240352 C 00250352 C REFERENCES - 00260352 C 00270352 C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, X3.9-197700280352 C SECTION 4.4, REAL TYPE 00290352 C SECTION 6.3, RELATIONAL EXPRESSIONS 00300352 C SECTION 6.5, PRECEDENCE OF OPERATORS 00310352 C SECTION 6.6, EVALUATION OF EXPRESSIONS 00320352 C 00330352 C 00340352 C ******************************************************************00350352 C A COMPILER VALIDATION SYSTEM FOR THE FORTRAN LANGUAGE 00360352 C BASED ON SPECIFICATIONS AS DEFINED IN AMERICAN STANDARD FORTRAN 00370352 C X3.9-1978, HAS BEEN DEVELOPED BY THE DEPARTMENT OF THE NAVY. THE 00380352 C FORTRAN COMPILER VALIDATION SYSTEM (FCVS) CONSISTS OF AUDIT 00390352 C ROUTINES, THEIR RELATED DATA, AND AN EXECUTIVE SYSTEM. EACH AUDIT00400352 C ROUTINE IS A FORTRAN PROGRAM OR SUBPROGRAM WHICH INCLUDES TESTS 00410352 C OF SPECIFIC LANGUAGE ELEMENTS AND SUPPORTING PROCEDURES INDICATING00420352 C THE RESULT OF EXECUTING THESE TESTS. 00430352 C 00440352 C THIS PARTICULAR PROGRAM OR SUBPROGRAM CONTAINS ONLY FEATURES 00450352 C FOUND IN THE SUBSET LEVEL OF THE STANDARD. 00460352 C 00470352 C SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO 00480352 C NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY 00490352 C SOFTWARE STANDARDS VALIDATION GROUP 00500352 C BUILDING 225 RM A266 00510352 C GAITHERSBURG, MD 20899 00520352 C ******************************************************************00530352 C 00540352 C 00550352 IMPLICIT LOGICAL (L) 00560352 IMPLICIT CHARACTER*14 (C) 00570352 C 00580352 DIMENSION RADN11(2) 00590352 RFOS01(RDON01,RDON02) = RDON01 + RDON02 00600352 C 00610352 C 00620352 C 00630352 C INITIALIZATION SECTION. 00640352 C 00650352 C INITIALIZE CONSTANTS 00660352 C ******************** 00670352 C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER 00680352 I01 = 5 00690352 C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER 00700352 I02 = 6 00710352 C SYSTEM ENVIRONMENT SECTION 00720352 C 00730352 CX010 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-010 CONTROL CARD.00740352 C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 00750352 C (UNIT NUMBER FOR CARD READER). 00760352 CX011 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-011 CONTROL CARD00770352 C THE CX011 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL 00780352 C FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX010 ABOVE. 00790352 C 00800352 CX020 THIS CARD IS PEPLACED BY CONTENTS OF FEXEC X-020 CONTROL CARD.00810352 C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02 = 6 00820352 C (UNIT NUMBER FOR PRINTER). 00830352 CX021 THIS CARD IS PEPLACED BY CONTENTS OF FEXEC X-021 CONTROL CARD.00840352 C THE CX021 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL 00850352 C FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX020 ABOVE. 00860352 C 00870352 IVPASS = 0 00880352 IVFAIL = 0 00890352 IVDELE = 0 00900352 ICZERO = 0 00910352 C 00920352 C WRITE OUT PAGE HEADERS 00930352 C 00940352 WRITE (I02,90002) 00950352 WRITE (I02,90006) 00960352 WRITE (I02,90008) 00970352 WRITE (I02,90004) 00980352 WRITE (I02,90010) 00990352 WRITE (I02,90004) 01000352 WRITE (I02,90016) 01010352 WRITE (I02,90001) 01020352 WRITE (I02,90004) 01030352 WRITE (I02,90012) 01040352 WRITE (I02,90014) 01050352 WRITE (I02,90004) 01060352 C 01070352 C 01080352 C TESTS 1 THROUGH 13 CHECK BASIC RELATIONAL EXPRESSIONS USING 01090352 C ONLY REAL VARIABLE OPERANDS. ALL THE VARIABLES ARE ASSIGNED REAL 01100352 C CONSTANTS WITH EXPONENTIAL FORMAT. 01110352 C 01120352 C 01130352 C **** FCVS PROGRAM 352 - TEST 001 **** 01140352 C 01150352 C TEST 1 CHECKS THE .LT. OPERATOR USING TWO REAL OPERANDS 01160352 C WHERE THE MANTISSAS ARE EQUAL BUT THE EXPONENTS ARE DIFFERENT. 01170352 C 01180352 IVTNUM = 1 01190352 IF (ICZERO) 30010, 0010, 30010 01200352 0010 CONTINUE 01210352 RVON01 = 1.0001 E17 01220352 RVON02 = 1.0001 E18 01230352 IVCOMP = 0 01240352 IVCORR = 0 01250352 40010 IF(RVON01 .LT. RVON02) GO TO 40011 01260352 IVCOMP = 1 01270352 40011 IF (RVON01 .GE. RVON02) IVCOMP = IVCOMP + 2 01280352 IF (IVCOMP) 20010, 10010, 20010 01290352 30010 IVDELE = IVDELE + 1 01300352 WRITE (I02,80000) IVTNUM 01310352 IF (ICZERO) 10010, 0021, 20010 01320352 10010 IVPASS = IVPASS + 1 01330352 WRITE (I02,80002) IVTNUM 01340352 GO TO 0021 01350352 20010 IVFAIL = IVFAIL + 1 01360352 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 01370352 0021 CONTINUE 01380352 C 01390352 C **** FCVS PROGRAM 352 - TEST 002 **** 01400352 C 01410352 C TEST 2 CHECKS THE .LT. OPERATOR USING TWO REAL OPERANDS 01420352 C WHERE THE EXPONENTS ARE EQUAL BUT THE MANTISSAS ARE DIFFERENT. 01430352 C 01440352 IVTNUM = 2 01450352 IF (ICZERO) 30020, 0020, 30020 01460352 0020 CONTINUE 01470352 RVON01 = 1.0001 E17 01480352 RVON02 = 1.9999 E17 01490352 IVCOMP = 0 01500352 IVCORR = 0 01510352 40020 IF (RVON01 .LT. RVON02) GO TO 40021 01520352 IVCOMP = 1 01530352 40021 IF (RVON01 .GE. RVON02) IVCOMP = IVCOMP + 2 01540352 IF (IVCOMP) 20020, 10020, 20020 01550352 30020 IVDELE = IVDELE + 1 01560352 WRITE (I02,80000) IVTNUM 01570352 IF (ICZERO) 10020, 0031, 20020 01580352 10020 IVPASS = IVPASS + 1 01590352 WRITE (I02,80002) IVTNUM 01600352 GO TO 0031 01610352 20020 IVFAIL = IVFAIL + 1 01620352 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 01630352 0031 CONTINUE 01640352 C 01650352 C **** FCVS PROGRAM 352 - TEST 003 **** 01660352 C 01670352 C TEST 3 CHECKS THE .LE. OPERATOR USING TWO REAL OPERANDS 01680352 C WHERE THE MANTISSAS ARE EQUAL BUT THE EXPONENTS ARE DIFFERENT. 01690352 C 01700352 IVTNUM = 3 01710352 IF (ICZERO) 30030, 0030, 30030 01720352 0030 CONTINUE 01730352 RVON01 = 1.0001 E17 01740352 RVON02 = 1.0001 E18 01750352 IVCOMP = 0 01760352 IVCORR = 0 01770352 40030 IF (RVON01 .LE. RVON02) GO TO 40031 01780352 IVCOMP = 1 01790352 40031 IF (RVON01 .GT. RVON02) IVCOMP = IVCOMP + 2 01800352 IF (IVCOMP) 20030, 10030, 20030 01810352 30030 IVDELE = IVDELE + 1 01820352 WRITE (I02,80000) IVTNUM 01830352 IF (ICZERO) 10030, 0041, 20030 01840352 10030 IVPASS = IVPASS + 1 01850352 WRITE (I02,80002) IVTNUM 01860352 GO TO 0041 01870352 20030 IVFAIL = IVFAIL + 1 01880352 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 01890352 0041 CONTINUE 01900352 C 01910352 C **** FCVS PROGRAM 352 - TEST 004 **** 01920352 C 01930352 C TEST 4 CHECKS THE .LE. OPERATOR USING TWO REAL OPERANDS 01940352 C WHERE THE EXPONENTS ARE EQUAL BUT THE MANTISSAS ARE DIFFERENT. 01950352 C 01960352 IVTNUM = 4 01970352 IF (ICZERO) 30040, 0040, 30040 01980352 0040 CONTINUE 01990352 RVON01 = 1.0001 E17 02000352 RVON02 = 1.9999 E17 02010352 IVCOMP = 0 02020352 IVCORR = 0 02030352 40040 IF (RVON01 .LE. RVON02) GO TO 40041 02040352 IVCOMP = 1 02050352 40041 IF (RVON01 .GT. RVON02) IVCOMP = IVCOMP + 2 02060352 IF (IVCOMP) 20040, 10040, 20040 02070352 30040 IVDELE = IVDELE + 1 02080352 WRITE (I02,80000) IVTNUM 02090352 IF (ICZERO) 10040, 0051, 20040 02100352 10040 IVPASS = IVPASS + 1 02110352 WRITE (I02,80002) IVTNUM 02120352 GO TO 0051 02130352 20040 IVFAIL = IVFAIL + 1 02140352 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 02150352 0051 CONTINUE 02160352 C 02170352 C **** FCVS PROGRAM 352 - TEST 005 **** 02180352 C 02190352 C TEST 5 CHECKS THE .LE. OPERATOR USING TWO REAL OPERANDS 02200352 C WHICH HAVE BEEN ASSIGNED THE SAME REAL CONSTANT. 02210352 C 02220352 IVTNUM = 5 02230352 IF (ICZERO) 30050, 0050, 30050 02240352 0050 CONTINUE 02250352 RVON01 = 1.0001 E17 02260352 RVON02 = 1.0001 E17 02270352 IVCOMP = 0 02280352 IVCORR = 0 02290352 40050 IF (RVON01 .LE. RVON02) GO TO 40051 02300352 IVCOMP = 1 02310352 40051 IF (RVON01 .GT. RVON02) IVCOMP = IVCOMP + 2 02320352 IF (IVCOMP) 20050, 10050, 20050 02330352 30050 IVDELE = IVDELE + 1 02340352 WRITE (I02,80000) IVTNUM 02350352 IF (ICZERO) 10050, 0061, 20050 02360352 10050 IVPASS = IVPASS + 1 02370352 WRITE (I02,80002) IVTNUM 02380352 GO TO 0061 02390352 20050 IVFAIL = IVFAIL + 1 02400352 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 02410352 0061 CONTINUE 02420352 C 02430352 C **** FCVS PROGRAM 352 - TEST 006 **** 02440352 C 02450352 C TEST 6 CHECKS THE .NE. OPERATOR USING TWO REAL OPERANDS 02460352 C WHERE THE MANTISSAS ARE EQUAL BUT THE EXPONENTS ARE DIFFERENT. 02470352 C 02480352 IVTNUM = 6 02490352 IF (ICZERO) 30060, 0060, 30060 02500352 0060 CONTINUE 02510352 RVON01 = 1.0001 E17 02520352 RVON02 = 1.0001 E18 02530352 IVCOMP = 0 02540352 IVCORR = 0 02550352 40060 IF (RVON01 .NE. RVON02) GO TO 40061 02560352 IVCOMP = 1 02570352 40061 IF (RVON01 .EQ. RVON02) IVCOMP = IVCOMP + 2 02580352 IF (IVCOMP) 20060, 10060, 20060 02590352 30060 IVDELE = IVDELE + 1 02600352 WRITE (I02,80000) IVTNUM 02610352 IF (ICZERO) 10060, 0071, 20060 02620352 10060 IVPASS = IVPASS + 1 02630352 WRITE (I02,80002) IVTNUM 02640352 GO TO 0071 02650352 20060 IVFAIL = IVFAIL + 1 02660352 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 02670352 0071 CONTINUE 02680352 C 02690352 C **** FCVS PROGRAM 352 - TEST 007 **** 02700352 C 02710352 C TEST 7 CHECKS THE .NE. OPERATOR USING TWO REAL OPERANDS 02720352 C WHERE THE EXPONENTS ARE EQUAL BUT THE MANTISSAS ARE DIFFERENT. 02730352 C 02740352 IVTNUM = 7 02750352 IF (ICZERO) 30070, 0070, 30070 02760352 0070 CONTINUE 02770352 RVON01 = 1.0001 E17 02780352 RVON02 = 1.9999 E17 02790352 IVCOMP = 0 02800352 IVCORR = 0 02810352 40070 IF (RVON01 .NE. RVON02) GO TO 40071 02820352 IVCOMP = 1 02830352 40071 IF (RVON01 .EQ. RVON02) IVCOMP = IVCOMP + 2 02840352 IF (IVCOMP) 20070, 10070, 20070 02850352 30070 IVDELE = IVDELE + 1 02860352 WRITE (I02,80000) IVTNUM 02870352 IF (ICZERO) 10070, 0081, 20070 02880352 10070 IVPASS = IVPASS + 1 02890352 WRITE (I02,80002) IVTNUM 02900352 GO TO 0081 02910352 20070 IVFAIL = IVFAIL + 1 02920352 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 02930352 0081 CONTINUE 02940352 C 02950352 C **** FCVS PROGRAM 352 - TEST 008 **** 02960352 C 02970352 C TEST 8 CHECKS THE .EQ. OPERATOR USING TWO REAL OPERANDS 02980352 C WHICH HAVE BEEN ASSIGNED THE SAME REAL CONSTANT. 02990352 C 03000352 IVTNUM = 8 03010352 IF (ICZERO) 30080, 0080, 30080 03020352 0080 CONTINUE 03030352 RVON01 = 1.0001 E17 03040352 RVON02 = 1.0001 E17 03050352 IVCOMP = 0 03060352 IVCORR = 0 03070352 40080 IF (RVON01 .EQ. RVON02) GO TO 40081 03080352 IVCOMP = 1 03090352 40081 IF (RVON01 .NE. RVON02) IVCOMP = IVCOMP + 2 03100352 IF (IVCOMP) 20080, 10080, 20080 03110352 30080 IVDELE = IVDELE + 1 03120352 WRITE (I02,80000) IVTNUM 03130352 IF (ICZERO) 10080, 0091, 20080 03140352 10080 IVPASS = IVPASS + 1 03150352 WRITE (I02,80002) IVTNUM 03160352 GO TO 0091 03170352 20080 IVFAIL = IVFAIL + 1 03180352 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 03190352 0091 CONTINUE 03200352 C 03210352 C **** FCVS PROGRAM 352 - TEST 009 **** 03220352 C 03230352 C TEST 9 CHECKS THE .GT. OPERATOR USING TWO REAL OPERANDS 03240352 C WHERE THE MANTISSAS ARE EQUAL BUT THE EXPONENTS ARE DIFFERENT. 03250352 C 03260352 IVTNUM = 9 03270352 IF (ICZERO) 30090, 0090, 30090 03280352 0090 CONTINUE 03290352 RVON01 = 1.0001 E18 03300352 RVON02 = 1.0001 E17 03310352 IVCOMP = 0 03320352 IVCORR = 0 03330352 40090 IF(RVON01 .GT. RVON02) GO TO 40091 03340352 IVCOMP = 1 03350352 40091 IF (RVON01 .LE. RVON02) IVCOMP = IVCOMP + 2 03360352 IF (IVCOMP) 20090, 10090, 20090 03370352 30090 IVDELE = IVDELE + 1 03380352 WRITE (I02,80000) IVTNUM 03390352 IF (ICZERO) 10090, 0101, 20090 03400352 10090 IVPASS = IVPASS + 1 03410352 WRITE (I02,80002) IVTNUM 03420352 GO TO 0101 03430352 20090 IVFAIL = IVFAIL + 1 03440352 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 03450352 0101 CONTINUE 03460352 C 03470352 C **** FCVS PROGRAM 352 - TEST 010 **** 03480352 C 03490352 C TEST 10 CHECKS THE .GT. OPERATOR USING TWO REAL OPERANDS 03500352 C WHERE THE EXPONENTS ARE EQUAL BUT THE MANTISSAS ARE DIFFERENT. 03510352 C 03520352 IVTNUM = 10 03530352 IF (ICZERO) 30100, 0100, 30100 03540352 0100 CONTINUE 03550352 RVON01 = 1.9999 E17 03560352 RVON02 = 1.0001 E17 03570352 IVCOMP = 0 03580352 IVCORR = 0 03590352 40100 IF (RVON01 .GT. RVON02) GO TO 40101 03600352 IVCOMP = 1 03610352 40101 IF (RVON01 .LE. RVON02) IVCOMP = IVCOMP + 2 03620352 IF (IVCOMP) 20100, 10100, 20100 03630352 30100 IVDELE = IVDELE + 1 03640352 WRITE (I02,80000) IVTNUM 03650352 IF (ICZERO) 10100, 0111, 20100 03660352 10100 IVPASS = IVPASS + 1 03670352 WRITE (I02,80002) IVTNUM 03680352 GO TO 0111 03690352 20100 IVFAIL = IVFAIL + 1 03700352 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 03710352 0111 CONTINUE 03720352 C 03730352 C **** FCVS PROGRAM 352 - TEST 011 **** 03740352 C 03750352 C TEST 11 CHECKS THE .GE. OPERATOR USING TWO REAL OPERANDS 03760352 C WHERE THE MANTISSAS ARE EQUAL BUT THE EXPONENTS ARE DIFFERENT. 03770352 C 03780352 IVTNUM = 11 03790352 IF (ICZERO) 30110, 0110, 30110 03800352 0110 CONTINUE 03810352 RVON01 = 1.0001 E18 03820352 RVON02 = 1.0001 E17 03830352 IVCOMP = 0 03840352 IVCORR = 0 03850352 40110 IF (RVON01 .GE. RVON02) GO TO 40111 03860352 IVCOMP = 1 03870352 40111 IF (RVON01 .LT. RVON02) IVCOMP = IVCOMP + 2 03880352 IF (IVCOMP) 20110, 10110, 20110 03890352 30110 IVDELE = IVDELE + 1 03900352 WRITE (I02,80000) IVTNUM 03910352 IF (ICZERO) 10110, 0121, 20110 03920352 10110 IVPASS = IVPASS + 1 03930352 WRITE (I02,80002) IVTNUM 03940352 GO TO 0121 03950352 20110 IVFAIL = IVFAIL + 1 03960352 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 03970352 0121 CONTINUE 03980352 C 03990352 C **** FCVS PROGRAM 352 - TEST 012 **** 04000352 C 04010352 C TEST 12 CHECKS THE .GE. OPERATOR USING TWO REAL OPERANDS 04020352 C WHERE THE EXPONENTS ARE EQUAL BUT THE MANTISSAS ARE DIFFERENT. 04030352 C 04040352 IVTNUM = 12 04050352 IF (ICZERO) 30120, 0120, 30120 04060352 0120 CONTINUE 04070352 RVON01 = 1.9999 E17 04080352 RVON02 = 1.0001 E17 04090352 IVCOMP = 0 04100352 IVCORR = 0 04110352 40120 IF (RVON01 .GE. RVON02) GO TO 40121 04120352 IVCOMP = 1 04130352 40121 IF (RVON01 .LT. RVON02) IVCOMP = IVCOMP + 2 04140352 IF (IVCOMP) 20120, 10120, 20120 04150352 30120 IVDELE = IVDELE + 1 04160352 WRITE (I02,80000) IVTNUM 04170352 IF (ICZERO) 10120, 0131, 20120 04180352 10120 IVPASS = IVPASS + 1 04190352 WRITE (I02,80002) IVTNUM 04200352 GO TO 0131 04210352 20120 IVFAIL = IVFAIL + 1 04220352 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 04230352 0131 CONTINUE 04240352 C 04250352 C **** FCVS PROGRAM 352 - TEST 013 **** 04260352 C 04270352 C TEST 13 CHECKS THE .GE. OPERATOR USING TWO REAL OPERANDS 04280352 C WHERE EACH HAS BEEN ASSIGNED THE SAME REAL CONSTANT. 04290352 C 04300352 IVTNUM = 13 04310352 IF (ICZERO) 30130, 0130, 30130 04320352 0130 CONTINUE 04330352 RVON01 = 1.0001 E17 04340352 RVON02 = 1.0001 E17 04350352 IVCOMP = 0 04360352 IVCORR = 0 04370352 40130 IF (RVON01 .GE. RVON02) GO TO 40131 04380352 IVCOMP = 1 04390352 40131 IF (RVON01 .LT. RVON02) IVCOMP = IVCOMP + 2 04400352 IF (IVCOMP) 20130, 10130, 20130 04410352 30130 IVDELE = IVDELE + 1 04420352 WRITE (I02,80000) IVTNUM 04430352 IF (ICZERO) 10130, 0141, 20130 04440352 10130 IVPASS = IVPASS + 1 04450352 WRITE (I02,80002) IVTNUM 04460352 GO TO 0141 04470352 20130 IVFAIL = IVFAIL + 1 04480352 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 04490352 0141 CONTINUE 04500352 C 04510352 C TESTS 14 THROUGH 28 REPETITIVELY CHECK THE .LT. RELATIONSHIP 04520352 C USING ALL TYPES AND ORDERINGS OF TWO REAL OPERANDS. 04530352 C 04540352 C 04550352 C TESTS 14 THROUGH 16 CHECK REAL-VARIABLE .LT OTHER-REAL-TYPES.04560352 C 04570352 C 04580352 C **** FCVS PROGRAM 352 - TEST 014 **** 04590352 C 04600352 C TEST 14 CHECKS REAL-VARIABLE .LT. REAL-CONSTANT 04610352 C 04620352 IVTNUM = 14 04630352 IF (ICZERO) 30140, 0140, 30140 04640352 0140 CONTINUE 04650352 RVON01 = 1.0001 E17 04660352 IVCOMP = 0 04670352 IVCORR = 0 04680352 40140 IF (RVON01 .LT. 1.9999 E17) GO TO 40141 04690352 IVCOMP = 1 04700352 40141 IF (RVON01 .GE. 1.9999 E17) IVCOMP = IVCOMP + 2 04710352 IF (IVCOMP) 20140, 10140, 20140 04720352 30140 IVDELE = IVDELE + 1 04730352 WRITE (I02,80000) IVTNUM 04740352 IF (ICZERO) 10140, 0151, 20140 04750352 10140 IVPASS = IVPASS + 1 04760352 WRITE (I02,80002) IVTNUM 04770352 GO TO 0151 04780352 20140 IVFAIL = IVFAIL + 1 04790352 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 04800352 0151 CONTINUE 04810352 C 04820352 C **** FCVS PROGRAM 352 - TEST 015 **** 04830352 C 04840352 C TEST 15 CHECKS REAL-VARIABLE .LT. ARRAY-ELEMENT 04850352 C 04860352 IVTNUM = 15 04870352 IF (ICZERO) 30150, 0150, 30150 04880352 0150 CONTINUE 04890352 RADN11(1) = 1.9999 E17 04900352 RVON01 = 1.0001 E17 04910352 IVCOMP = 0 04920352 IVCORR = 0 04930352 40150 IF (RVON01 .LT. RADN11(1)) GO TO 40151 04940352 IVCOMP = 1 04950352 40151 IF (RVON01 .GE. RADN11(1)) IVCOMP = IVCOMP + 2 04960352 IF (IVCOMP) 20150, 10150, 20150 04970352 30150 IVDELE = IVDELE + 1 04980352 WRITE (I02,80000) IVTNUM 04990352 IF (ICZERO) 10150, 0161, 20150 05000352 10150 IVPASS = IVPASS + 1 05010352 WRITE (I02,80002) IVTNUM 05020352 GO TO 0161 05030352 20150 IVFAIL = IVFAIL + 1 05040352 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 05050352 0161 CONTINUE 05060352 C 05070352 C **** FCVS PROGRAM 352 - TEST 016 **** 05080352 C 05090352 C TEST 16 CHECKS REAL-VARIABLE .LT. FUNCTION-REFERENCE 05100352 C 05110352 IVTNUM = 16 05120352 IF (ICZERO) 30160, 0160, 30160 05130352 0160 CONTINUE 05140352 RVON01 = 1.0001 E17 05150352 RVON02 = 1 E17 05160352 RVON03 = 0.9999 E17 05170352 IVCOMP = 0 05180352 IVCORR = 0 05190352 40160 IF (RVON01 .LT. RFOS01(RVON02,RVON03)) GO TO 40161 05200352 IVCOMP = 1 05210352 40161 IF (RVON01 .GE. RFOS01(RVON02,RVON03)) IVCOMP = IVCOMP + 2 05220352 IF (IVCOMP) 20160, 10160, 20160 05230352 30160 IVDELE = IVDELE + 1 05240352 WRITE (I02,80000) IVTNUM 05250352 IF (ICZERO) 10160, 0171, 20160 05260352 10160 IVPASS = IVPASS + 1 05270352 WRITE (I02,80002) IVTNUM 05280352 GO TO 0171 05290352 20160 IVFAIL = IVFAIL + 1 05300352 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 05310352 0171 CONTINUE 05320352 C 05330352 C TESTS 17 THROUGH 20 CHECK REAL-CONSTANT .LT. OTHER-REAL-TYPES05340352 C 05350352 C 05360352 C **** FCVS PROGRAM 352 - TEST 017 **** 05370352 C 05380352 C TEST 17 CHECKS REAL-CONSTANT .LT. REAL-CONSTANT 05390352 C 05400352 IVTNUM = 17 05410352 IF (ICZERO) 30170, 0170, 30170 05420352 0170 CONTINUE 05430352 IVCOMP = 0 05440352 IVCORR = 0 05450352 40170 IF (1.0001 E17 .LT. 1.9999 E17) GO TO 40171 05460352 IVCOMP = 1 05470352 40171 IF (1.0001 E17 .GE. 1.9999 E17) IVCOMP = IVCOMP + 2 05480352 IF (IVCOMP) 20170, 10170, 20170 05490352 30170 IVDELE = IVDELE + 1 05500352 WRITE (I02,80000) IVTNUM 05510352 IF (ICZERO) 10170, 0181, 20170 05520352 10170 IVPASS = IVPASS + 1 05530352 WRITE (I02,80002) IVTNUM 05540352 GO TO 0181 05550352 20170 IVFAIL = IVFAIL + 1 05560352 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 05570352 0181 CONTINUE 05580352 C 05590352 C **** FCVS PROGRAM 352 - TEST 018 **** 05600352 C 05610352 C TEST 18 CHECKS REAL-CONSTANT .LT. REAL-ARRAY-ELEMENT 05620352 C 05630352 IVTNUM = 18 05640352 IF (ICZERO) 30180, 0180, 30180 05650352 0180 CONTINUE 05660352 RADN11(1) = 1.9999 E17 05670352 IVCOMP = 0 05680352 IVCORR = 0 05690352 40180 IF (1.0001 E17 .LT. RADN11(1)) GO TO 40181 05700352 IVCOMP = 1 05710352 40181 IF (1.0001 E17 .GE. RADN11(1)) IVCOMP = IVCOMP + 2 05720352 IF (IVCOMP) 20180, 10180, 20180 05730352 30180 IVDELE = IVDELE + 1 05740352 WRITE (I02,80000) IVTNUM 05750352 IF (ICZERO) 10180, 0191, 20180 05760352 10180 IVPASS = IVPASS + 1 05770352 WRITE (I02,80002) IVTNUM 05780352 GO TO 0191 05790352 20180 IVFAIL = IVFAIL + 1 05800352 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 05810352 0191 CONTINUE 05820352 C 05830352 C **** FCVS PROGRAM 352 - TEST 019 **** 05840352 C 05850352 C TEST 19 CHECKS REAL-CONSTANT .LT. REAL-VARIABLE 05860352 C 05870352 IVTNUM = 19 05880352 IF (ICZERO) 30190, 0190, 30190 05890352 0190 CONTINUE 05900352 RVON01 = 1.9999 E17 05910352 IVCOMP = 0 05920352 IVCORR = 0 05930352 40190 IF (1.0001 E17 .LT. RVON01) GO TO 40191 05940352 IVCOMP = 1 05950352 40191 IF (1.0001 E17 .GE. RVON01) IVCOMP = IVCOMP + 2 05960352 IF (IVCOMP) 20190, 10190, 20190 05970352 30190 IVDELE = IVDELE + 1 05980352 WRITE (I02,80000) IVTNUM 05990352 IF (ICZERO) 10190, 0201, 20190 06000352 10190 IVPASS = IVPASS + 1 06010352 WRITE (I02,80002) IVTNUM 06020352 GO TO 0201 06030352 20190 IVFAIL = IVFAIL + 1 06040352 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 06050352 0201 CONTINUE 06060352 C 06070352 C **** FCVS PROGRAM 352 - TEST 020 **** 06080352 C 06090352 C TEST 20 CHECKS REAL-CONSTANT .LT. REAL-FUNCTION-REFERENCE 06100352 C 06110352 IVTNUM = 20 06120352 IF (ICZERO) 30200, 0200, 30200 06130352 0200 CONTINUE 06140352 RVON01 = 1 E17 06150352 RVON02 = 0.9999 E17 06160352 IVCOMP = 0 06170352 IVCORR = 0 06180352 40200 IF (1.0001 E17 .LT. RFOS01(RVON01,RVON02)) GO TO 40201 06190352 IVCOMP = 1 06200352 40201 IF (1.0001 E17 .GE. RFOS01(RVON01,RVON02)) IVCOMP = IVCOMP + 2 06210352 IF (IVCOMP) 20200, 10200, 20200 06220352 30200 IVDELE = IVDELE + 1 06230352 WRITE (I02,80000) IVTNUM 06240352 IF (ICZERO) 10200, 0211, 20200 06250352 10200 IVPASS = IVPASS + 1 06260352 WRITE (I02,80002) IVTNUM 06270352 GO TO 0211 06280352 20200 IVFAIL = IVFAIL + 1 06290352 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 06300352 0211 CONTINUE 06310352 C 06320352 C TESTS 21 THROUGH 24 CHECK REAL-ARRAY-ELEMENT .LT. OTHER-REALS06330352 C 06340352 C 06350352 C **** FCVS PROGRAM 352 - TEST 021 **** 06360352 C 06370352 C TEST 21 CHECKS REAL-ARRAY-ELEMENT .LT. REAL-CONSTANT 06380352 C 06390352 IVTNUM = 21 06400352 IF (ICZERO) 30210, 0210, 30210 06410352 0210 CONTINUE 06420352 RADN11(1) = 1.0001 E17 06430352 IVCOMP = 0 06440352 IVCORR = 0 06450352 40210 IF (RADN11(1) .LT. 1.9999 E17) GO TO 40211 06460352 IVCOMP = 1 06470352 40211 IF (RADN11(1) .GE. 1.9999 E17) IVCOMP = IVCOMP + 2 06480352 IF (IVCOMP) 20210, 10210, 20210 06490352 30210 IVDELE = IVDELE + 1 06500352 WRITE (I02,80000) IVTNUM 06510352 IF (ICZERO) 10210, 0221, 20210 06520352 10210 IVPASS = IVPASS + 1 06530352 WRITE (I02,80002) IVTNUM 06540352 GO TO 0221 06550352 20210 IVFAIL = IVFAIL + 1 06560352 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 06570352 0221 CONTINUE 06580352 C 06590352 C **** FCVS PROGRAM 352 - TEST 022 **** 06600352 C 06610352 C TEST 22 CHECKS REAL-ARRAY-ELEMENT .LT. REAL-ARRAY-ELEMENT 06620352 C 06630352 IVTNUM = 22 06640352 IF (ICZERO) 30220, 0220, 30220 06650352 0220 CONTINUE 06660352 RADN11(1) = 1.0001 E17 06670352 RADN11(2) = 1.9999 E17 06680352 IVCOMP = 0 06690352 IVCORR = 0 06700352 40220 IF (RADN11(1) .LT. RADN11(2)) GO TO 40221 06710352 IVCOMP = 1 06720352 40221 IF (RADN11(1) .GE. RADN11(2)) IVCOMP = IVCOMP + 2 06730352 IF (IVCOMP) 20220, 10220, 20220 06740352 30220 IVDELE = IVDELE + 1 06750352 WRITE (I02,80000) IVTNUM 06760352 IF (ICZERO) 10220, 0231, 20220 06770352 10220 IVPASS = IVPASS + 1 06780352 WRITE (I02,80002) IVTNUM 06790352 GO TO 0231 06800352 20220 IVFAIL = IVFAIL + 1 06810352 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 06820352 0231 CONTINUE 06830352 C 06840352 C **** FCVS PROGRAM 352 - TEST 023 **** 06850352 C 06860352 C TEST 23 CHECKS REAL-ARRAY-ELEMENT .LT. REAL-VARIABLE 06870352 C 06880352 IVTNUM = 23 06890352 IF (ICZERO) 30230, 0230, 30230 06900352 0230 CONTINUE 06910352 RVON01 = 1.9999 E17 06920352 RADN11(1) = 1.0001 E17 06930352 IVCORR = 0 06940352 IVCOMP = 0 06950352 40230 IF (RADN11(1) .LT. RVON01) GO TO 40231 06960352 IVCOMP = 1 06970352 40231 IF (RADN11(1) .GE. RVON01) IVCOMP = IVCOMP + 2 06980352 IF (IVCOMP) 20230, 10230, 20230 06990352 30230 IVDELE = IVDELE + 1 07000352 WRITE (I02,80000) IVTNUM 07010352 IF (ICZERO) 10230, 0241, 20230 07020352 10230 IVPASS = IVPASS + 1 07030352 WRITE (I02,80002) IVTNUM 07040352 GO TO 0241 07050352 20230 IVFAIL = IVFAIL + 1 07060352 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 07070352 0241 CONTINUE 07080352 C 07090352 C **** FCVS PROGRAM 352 - TEST 024 **** 07100352 C 07110352 C TEST 24 CHECKS REAL-ARRAY-ELEMENT .LT. REAL-FUNCTION-REF. 07120352 C 07130352 IVTNUM = 24 07140352 IF (ICZERO) 30240, 0240, 30240 07150352 0240 CONTINUE 07160352 RVON01 = 1.0000 E17 07170352 RVON02 = 0.9999 E17 07180352 RADN11(1) = 1.0001 E17 07190352 IVCORR = 0 07200352 IVCOMP = 0 07210352 40240 IF (RADN11(1) .LT. RFOS01(RVON01,RVON02)) GO TO 40241 07220352 IVCOMP = 1 07230352 40241 IF (RADN11(1) .GE. RFOS01(RVON01,RVON02)) IVCOMP = IVCOMP + 2 07240352 IF (IVCOMP) 20240, 10240, 20240 07250352 30240 IVDELE = IVDELE + 1 07260352 WRITE (I02,80000) IVTNUM 07270352 IF (ICZERO) 10240, 0251, 20240 07280352 10240 IVPASS = IVPASS + 1 07290352 WRITE (I02,80002) IVTNUM 07300352 GO TO 0251 07310352 20240 IVFAIL = IVFAIL + 1 07320352 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 07330352 0251 CONTINUE 07340352 C 07350352 C TESTS 25 THROUGH 28 CHECK REAL-FUNCTION-REFERENCE .LT. 07360352 C OTHER-REAL-TYPES 07370352 C 07380352 C 07390352 C **** FCVS PROGRAM 352 - TEST 025 **** 07400352 C 07410352 C TEST 25 CHECKS REAL-FUNCTION-REFERENCE .LT. REAL-CONSTANT 07420352 C 07430352 IVTNUM = 25 07440352 IF (ICZERO) 30250, 0250, 30250 07450352 0250 CONTINUE 07460352 RVON01 = 1.0000 E17 07470352 RVON02 = 0.0001 E17 07480352 IVCOMP = 0 07490352 IVCORR = 0 07500352 40250 IF (RFOS01(RVON01,RVON02) .LT. 1.9999 E17) GO TO 40251 07510352 IVCOMP = 1 07520352 40251 IF (RFOS01(RVON01,RVON02) .GE. 1.9999 E17) IVCOMP = IVCOMP + 2 07530352 IF (IVCOMP) 20250, 10250, 20250 07540352 30250 IVDELE = IVDELE + 1 07550352 WRITE (I02,80000) IVTNUM 07560352 IF (ICZERO) 10250, 0261, 20250 07570352 10250 IVPASS = IVPASS + 1 07580352 WRITE (I02,80002) IVTNUM 07590352 GO TO 0261 07600352 20250 IVFAIL = IVFAIL + 1 07610352 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 07620352 0261 CONTINUE 07630352 C 07640352 C **** FCVS PROGRAM 352 - TEST 026 **** 07650352 C 07660352 C TEST 26 CHECKS REAL-FUNCTION-REFERENCE .LT. REAL-ARRAY-ELEMNT07670352 C 07680352 IVTNUM = 26 07690352 IF (ICZERO) 30260, 0260, 30260 07700352 0260 CONTINUE 07710352 RVON01 = 1 E17 07720352 RVON02 = 0.0001 E17 07730352 RADN11(1) = 1.9999 E17 07740352 IVCOMP = 0 07750352 IVCORR = 0 07760352 40260 IF (RFOS01(RVON01,RVON02) .LT. RADN11(1)) GO TO 40261 07770352 IVCOMP = 1 07780352 40261 IF (RFOS01(RVON01,RVON02) .GE. RADN11(1)) IVCOMP = IVCOMP + 2 07790352 IF (IVCOMP) 20260, 10260, 20260 07800352 30260 IVDELE = IVDELE + 1 07810352 WRITE (I02,80000) IVTNUM 07820352 IF (ICZERO) 10260, 0271, 20260 07830352 10260 IVPASS = IVPASS + 1 07840352 WRITE (I02,80002) IVTNUM 07850352 GO TO 0271 07860352 20260 IVFAIL = IVFAIL + 1 07870352 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 07880352 0271 CONTINUE 07890352 C 07900352 C **** FCVS PROGRAM 352 - TEST 027 **** 07910352 C 07920352 C TEST 27 CHECKS REAL-FUNCTION-REFERENCE .LT. REAL-VARIABLE 07930352 C 07940352 IVTNUM = 27 07950352 IF (ICZERO) 30270, 0270, 30270 07960352 0270 CONTINUE 07970352 RVON01 = 1 E17 07980352 RVON02 = 0.0001 E17 07990352 RVON03 = 1.9999 E17 08000352 IVCOMP = 0 08010352 IVCORR = 0 08020352 40270 IF (RFOS01(RVON01,RVON02) .LT. RVON03) GO TO 40271 08030352 IVCOMP = 1 08040352 40271 IF (RFOS01(RVON01,RVON02) .GE. RVON03) IVCOMP = IVCOMP + 2 08050352 IF (IVCOMP) 20270, 10270, 20270 08060352 30270 IVDELE = IVDELE + 1 08070352 WRITE (I02,80000) IVTNUM 08080352 IF (ICZERO) 10270, 0281, 20270 08090352 10270 IVPASS = IVPASS + 1 08100352 WRITE (I02,80002) IVTNUM 08110352 GO TO 0281 08120352 20270 IVFAIL = IVFAIL + 1 08130352 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 08140352 0281 CONTINUE 08150352 C 08160352 C **** FCVS PROGRAM 352 - TEST 028 **** 08170352 C 08180352 C TEST 28 CHECKS REAL-FUNCTION-REFERENCE .LT REAL-FUNCTION-REF.08190352 C 08200352 IVTNUM = 28 08210352 IF (ICZERO) 30280, 0280, 30280 08220352 0280 CONTINUE 08230352 RVON01 = 1 E17 08240352 RVON02 = 0.0001 E17 08250352 RVON03 = 0.9999 E17 08260352 IVCOMP = 0 08270352 IVCORR = 0 08280352 40280 IF (RFOS01(RVON01,RVON02) .LT. RFOS01(RVON01,RVON03)) GO TO 40281 08290352 IVCOMP = 1 08300352 40281 IF (RFOS01(RVON01,RVON02) .GE. RFOS01(RVON01,RVON03)) 08310352 1 IVCOMP = IVCOMP + 2 08320352 IF (IVCOMP) 20280, 10280, 20280 08330352 30280 IVDELE = IVDELE + 1 08340352 WRITE (I02,80000) IVTNUM 08350352 IF (ICZERO) 10280, 0291, 20280 08360352 10280 IVPASS = IVPASS + 1 08370352 WRITE (I02,80002) IVTNUM 08380352 GO TO 0291 08390352 20280 IVFAIL = IVFAIL + 1 08400352 WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 08410352 0291 CONTINUE 08420352 C 08430352 C 08440352 C WRITE OUT TEST SUMMARY 08450352 C 08460352 WRITE (I02,90004) 08470352 WRITE (I02,90014) 08480352 WRITE (I02,90004) 08490352 WRITE (I02,90000) 08500352 WRITE (I02,90004) 08510352 WRITE (I02,90020) IVFAIL 08520352 WRITE (I02,90022) IVPASS 08530352 WRITE (I02,90024) IVDELE 08540352 STOP 08550352 90001 FORMAT (" ",24X,"FM352") 08560352 90000 FORMAT (" ",20X,"END OF PROGRAM FM352" ) 08570352 C 08580352 C FORMATS FOR TEST DETAIL LINES 08590352 C 08600352 80000 FORMAT (" ",4X,I5,6X,"DELETED") 08610352 80002 FORMAT (" ",4X,I5,7X,"PASS") 08620352 80010 FORMAT (" ",4X,I5,7X,"FAIL",10X,I6,9X,I6) 08630352 80012 FORMAT (" ",4X,I5,7X,"FAIL",4X,E12.5,3X,E12.5) 08640352 80018 FORMAT (" ",4X,I5,7X,"FAIL",2X,A14,1X,A14) 08650352 C 08660352 C FORMAT STATEMENTS FOR PAGE HEADERS 08670352 C 08680352 90002 FORMAT ("1") 08690352 90004 FORMAT (" ") 08700352 90006 FORMAT (" ",10X,"FORTRAN COMPILER VALIDATION SYSTEM" ) 08710352 90008 FORMAT (" ",21X,"VERSION 2.1" ) 08720352 90010 FORMAT (" ",8X,"FOR OFFICIAL USE ONLY - COPYRIGHT 1978" ) 08730352 90012 FORMAT (" ",5X,"TEST",5X,"PASS/FAIL",5X,"COMPUTED",8X,"CORRECT") 08740352 90014 FORMAT (" ",5X,"----------------------------------------------" ) 08750352 90016 FORMAT (" ",18X,"SUBSET LEVEL TEST" ) 08760352 C 08770352 C FORMAT STATEMENTS FOR RUN SUMMARY 08780352 C 08790352 90020 FORMAT (" ",19X,I5," TESTS FAILED" ) 08800352 90022 FORMAT (" ",19X,I5," TESTS PASSED" ) 08810352 90024 FORMAT (" ",19X,I5," TESTS DELETED" ) 08820352 END 08830352