C COMMENT SECTION C C FM098 C C THIS ROUTINE TESTS INTRINSIC FUNCTIONS WHERE THE FUNCTION TYPE IS C INTEGER AND THE ARGUMENTS ARE EITHER INTEGER OR REAL. THE REAL C AND INTEGER VARIABLES AND THE REAL AND INTEGER CONSTANTS CONTAIN C BOTH POSITIVE AND NEGATIVE VALUES. THE INTRINSIC FUNCTIONS TESTED C BY FM098 INCLUDE C TYPE OF C INTRINSIC FUNCTION NAME ARGUMENT FUNCTION C ------------------ ---- -------- -------- C ABSOLUTE VALUE IABS INTEGER INTEGER C TRUNCATION INT REAL INTEGER C REMAINDERING MOD INTEGER INTEGER C CHOOSING LARGEST VALUE MAX0 INTEGER INTEGER C MAX1 REAL INTEGER C CHOOSING SMALLEST VALUE MIN0 INTEGER INTEGER C MIN1 REAL INTEGER C FIX IFIX REAL INTEGER C TRANSFER OF SIGN ISIGN INTEGER INTEGER C POSITIVE DIFFERENCE IDIM INTEGER INTEGER C C REFERENCES C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, C X3.9-1978 C C SECTION 4.1.2, TYPE RULES FOR DATA AND PROCEDURE IDENTIFIERS C SECTION 15.3, INTRINSIC FUNCTION C SECTION 15.3.2, INTRINSIC FUNCTIONS AND THEIR REFERENCE C 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) C C TEST SECTION C C TEST 907 THROUGH TEST 909 CONTAIN INTRINSIC FUNCTION TESTS FOR C ABSOLUTE VALUE WHERE ARGUMENT AND FUNCTION ARE INTEGER C 9071 CONTINUE IVTNUM = 907 C C **** TEST 907 **** C IF (ICZERO) 39070, 9070, 39070 9070 CONTINUE IVCOMP = IABS (-382) GO TO 49070 39070 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 49070, 9081, 49070 49070 IF (IVCOMP - 382) 29070,19070,29070 19070 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 9081 29070 IVFAIL = IVFAIL + 1 IVCORR = 382 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 9081 CONTINUE IVTNUM = 908 C C **** TEST 908 **** C IF (ICZERO) 39080, 9080, 39080 9080 CONTINUE IVON01 = 445 IVCOMP = IABS (IVON01) GO TO 49080 39080 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 49080, 9091, 49080 49080 IF (IVCOMP - 445) 29080,19080,29080 19080 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 9091 29080 IVFAIL = IVFAIL + 1 IVCORR = 445 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 9091 CONTINUE IVTNUM = 909 C C **** TEST 909 **** C IF (ICZERO) 39090, 9090, 39090 9090 CONTINUE IVON01 = -32176 IVCOMP = IABS (IVON01) GO TO 49090 39090 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 49090, 9101, 49090 49090 IF (IVCOMP - 32176) 29090,19090,29090 19090 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 9101 29090 IVFAIL = IVFAIL + 1 IVCORR = 32176 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR C C TEST 910 THROUGH TEST 913 CONTAIN INTRINSIC FUNCTION TESTS FOR C TRUNCATION WHERE ARGUMENT IS REAL AND FUNCTION IS INTEGER C 9101 CONTINUE IVTNUM = 910 C C **** TEST 910 **** C IF (ICZERO) 39100, 9100, 39100 9100 CONTINUE IVCOMP = INT (38.2) GO TO 49100 39100 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 49100, 9111, 49100 49100 IF (IVCOMP - 38) 29100,19100,29100 19100 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 9111 29100 IVFAIL = IVFAIL + 1 IVCORR = 38 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 9111 CONTINUE IVTNUM = 911 C C **** TEST 911 **** C IF (ICZERO) 39110, 9110, 39110 9110 CONTINUE RVON01 = -445.95 IVCOMP = INT (RVON01) GO TO 49110 39110 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 49110, 9121, 49110 49110 IF (IVCOMP + 445) 29110,19110,29110 19110 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 9121 29110 IVFAIL = IVFAIL + 1 IVCORR = -445 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 9121 CONTINUE IVTNUM = 912 C C **** TEST 912 **** C IF (ICZERO) 39120, 9120, 39120 9120 CONTINUE RVON01 = 466.01 IVCOMP = INT (RVON01) GO TO 49120 39120 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 49120, 9131, 49120 49120 IF (IVCOMP - 466) 29120,19120,29120 19120 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 9131 29120 IVFAIL = IVFAIL + 1 IVCORR = 466 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 9131 CONTINUE IVTNUM = 913 C C **** TEST 913 **** C IF (ICZERO) 39130, 9130, 39130 9130 CONTINUE RVON01 = 382E-1 IVCOMP = INT (RVON01) GO TO 49130 39130 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 49130, 9141, 49130 49130 IF (IVCOMP - 38) 29130,19130,29130 19130 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 9141 29130 IVFAIL = IVFAIL + 1 IVCORR = 38 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR C C TEST 914 THROUGH TEST 917 CONTAIN INTRINSIC FUNCTION TESTS FOR C REMAINDERING WHERE ARGUMENTS AND FUNCTION ARE INTEGERS C 9141 CONTINUE IVTNUM = 914 C C **** TEST 914 **** C IF (ICZERO) 39140, 9140, 39140 9140 CONTINUE IVCOMP = MOD (42,19) GO TO 49140 39140 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 49140, 9151, 49140 49140 IF (IVCOMP - 4) 29140,19140,29140 19140 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 9151 29140 IVFAIL = IVFAIL + 1 IVCORR = 4 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 9151 CONTINUE IVTNUM = 915 C C **** TEST 915 **** C IF (ICZERO) 39150, 9150, 39150 9150 CONTINUE IVON01 = 6667 IVON02 = 2 IVCOMP = MOD (IVON01,IVON02) GO TO 49150 39150 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 49150, 9161, 49150 49150 IF (IVCOMP - 1) 29150,19150,29150 19150 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 9161 29150 IVFAIL = IVFAIL + 1 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 9161 CONTINUE IVTNUM = 916 C C **** TEST 916 **** C IF (ICZERO) 39160, 9160, 39160 9160 CONTINUE IVON01 = 225 IVON02 = 50 IVCOMP = MOD (IVON01,IVON02) GO TO 49160 39160 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 49160, 9171, 49160 49160 IF (IVCOMP - 25) 29160,19160,29160 19160 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 9171 29160 IVFAIL = IVFAIL + 1 IVCORR = 25 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 9171 CONTINUE IVTNUM = 917 C C **** TEST 917 **** C IF (ICZERO) 39170, 9170, 39170 9170 CONTINUE IVON01 = -39 IVON02 = 500 IVCOMP = MOD (IVON01,IVON02) GO TO 49170 39170 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 49170, 9181, 49170 49170 IF (IVCOMP + 39) 29170,19170,29170 19170 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 9181 29170 IVFAIL = IVFAIL + 1 IVCORR = -39 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR C C TEST 918 AND 919 CONTAIN INTRINSIC FUNCTION TESTS FOR CHOOSING C LARGEST VALUE WHERE ARGUMENTS AND FUNCTION ARE INTEGER C 9181 CONTINUE IVTNUM = 918 C C **** TEST 918 **** C IF (ICZERO) 39180, 9180, 39180 9180 CONTINUE IVON01 = 317 IVON02 = -99 IVON03 = 1 IVCOMP = MAX0 (263,IVON01,IVON02,IVON03) GO TO 49180 39180 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 49180, 9191, 49180 49180 IF (IVCOMP - 317) 29180,19180,29180 19180 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 9191 29180 IVFAIL = IVFAIL + 1 IVCORR = 317 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 9191 CONTINUE IVTNUM = 919 C C **** TEST 919 **** C IF (ICZERO) 39190, 9190, 39190 9190 CONTINUE IVON01 = 2572 IVON02 = 2570 IVCOMP = MAX0 (IVON01,IVON02) GO TO 49190 39190 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 49190, 9201, 49190 49190 IF (IVCOMP - 2572) 29190,19190,29190 19190 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 9201 29190 IVFAIL = IVFAIL + 1 IVCORR = 2572 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR C C TEST 920 AND 921 CONTAIN INTRINSIC FUNCTION TESTS FOR CHOOSING C LARGEST VALUE WHERE ARGUMENTS ARE REAL AND FUNCTION IS INTEGER C 9201 CONTINUE IVTNUM = 920 C C **** TEST 920 **** C IF (ICZERO) 39200, 9200, 39200 9200 CONTINUE RVON01 = .326E+2 RVON02 = 22.075 RVON03 = 76E-1 IVCOMP = MAX1 (RVON01,RVON02,RVON03) GO TO 49200 39200 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 49200, 9211, 49200 49200 IF (IVCOMP - 32) 29200,19200,29200 19200 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 9211 29200 IVFAIL = IVFAIL + 1 IVCORR = 32 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 9211 CONTINUE IVTNUM = 921 C C **** TEST 921 **** C IF (ICZERO) 39210, 9210, 39210 9210 CONTINUE RVON01 = -6.3E2 RVON02 = -21.0 IVCOMP = MAX1 (-463.3,RVON01,RVON02) GO TO 49210 39210 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 49210, 9221, 49210 49210 IF (IVCOMP + 21) 29210,19210,29210 19210 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 9221 29210 IVFAIL = IVFAIL + 1 IVCORR = -21 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR C C TEST 922 AND 923 CONTAIN INTRINSIC FUNCTION TESTS FOR CHOOSING C SMALLEST VALUE WHERE ARGUMENTS AND FUNCTION ARE INTEGER C 9221 CONTINUE IVTNUM = 922 C C **** TEST 922 **** C IF (ICZERO) 39220, 9220, 39220 9220 CONTINUE IVON01 = -75 IVON02 = -243 IVCOMP = MIN0 (IVON01,IVON02) GO TO 49220 39220 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 49220, 9231, 49220 49220 IF (IVCOMP + 243) 29220,19220,29220 19220 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 9231 29220 IVFAIL = IVFAIL + 1 IVCORR = -243 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 9231 CONTINUE IVTNUM = 923 C C **** TEST 923 **** C IF (ICZERO) 39230, 9230, 39230 9230 CONTINUE IVON01 = -11 IVON02 = 11 IVCOMP = MIN0 (0,IVON01,IVON02) GO TO 49230 39230 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 49230, 9241, 49230 49230 IF (IVCOMP + 11) 29230,19230,29230 19230 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 9241 29230 IVFAIL = IVFAIL + 1 IVCORR = -11 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR C C TEST 924 AND 925 CONTAIN INTRINSIC FUNCTION TESTS FOR CHOOSING C SMALLEST VALUE WHERE ARGUMENTS ARE REAL AND FUNCTION IS INTEGER C 9241 CONTINUE IVTNUM = 924 C C **** TEST 924 **** C IF (ICZERO) 39240, 9240, 39240 9240 CONTINUE RVON01 = 1.1111 RVON02 = 22.222 RVON03 = 333.33 IVCOMP = MIN1 (RVON01,RVON02,RVON03) GO TO 49240 39240 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 49240, 9251, 49240 49240 IF (IVCOMP - 1) 29240,19240,29240 19240 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 9251 29240 IVFAIL = IVFAIL + 1 IVCORR = 1 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 9251 CONTINUE IVTNUM = 925 C C **** TEST 925 **** C IF (ICZERO) 39250, 9250, 39250 9250 CONTINUE RVON01 = 28.8 RVON02 = 2.88E1 RVON03 = 288E-1 RVON04 = 35.0 IVCOMP = MIN1 (RVON01,RVON02,RVON03,RVON04) GO TO 49250 39250 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 49250, 9261, 49250 49250 IF (IVCOMP - 28) 29250,19250,29250 19250 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 9261 29250 IVFAIL = IVFAIL + 1 IVCORR = 28 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR C C TEST 926 THROUGH TEST 929 CONTAIN THE INTRINSIC FUNCTION FIX C WHICH CONVERTS REAL ARGUMENTS TO INTEGER FUNCTION RESULTS C 9261 CONTINUE IVTNUM = 926 C C **** TEST 926 **** C IF (ICZERO) 39260, 9260, 39260 9260 CONTINUE IVCOMP = IFIX (-6.06) GO TO 49260 39260 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 49260, 9271, 49260 49260 IF (IVCOMP + 6) 29260,19260,29260 19260 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 9271 29260 IVFAIL = IVFAIL + 1 IVCORR = -6 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 9271 CONTINUE IVTNUM = 927 C C **** TEST 927 **** C IF (ICZERO) 39270, 9270, 39270 9270 CONTINUE RVON01 = 71.01 IVCOMP = IFIX (RVON01) GO TO 49270 39270 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 49270, 9281, 49270 49270 IF (IVCOMP - 71) 29270,19270,29270 19270 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 9281 29270 IVFAIL = IVFAIL + 1 IVCORR = 71 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 9281 CONTINUE IVTNUM = 928 C C **** TEST 928 **** C IF (ICZERO) 39280, 9280, 39280 9280 CONTINUE RVON01 = 3.211E2 IVCOMP = IFIX (RVON01) GO TO 49280 39280 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 49280, 9291, 49280 49280 IF (IVCOMP - 321) 29280,19280,29280 19280 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 9291 29280 IVFAIL = IVFAIL + 1 IVCORR = 321 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 9291 CONTINUE IVTNUM = 929 C C **** TEST 929 **** C IF (ICZERO) 39290, 9290, 39290 9290 CONTINUE RVON01 = 777E-1 IVCOMP = IFIX (RVON01) GO TO 49290 39290 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 49290, 9301, 49290 49290 IF (IVCOMP - 77) 29290,19290,29290 19290 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 9301 29290 IVFAIL = IVFAIL + 1 IVCORR = 77 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR C C TEST 930 THROUGH TEST 932 CONTAIN INTRINSIC FUNCTION TESTS FOR C TRANSFER OF SIGN WHERE ARGUMENTS AND FUNCTION ARE INTEGER C 9301 CONTINUE IVTNUM = 930 C C **** TEST 930 **** C IF (ICZERO) 39300, 9300, 39300 9300 CONTINUE IVON01 = 643 IVCOMP = ISIGN (IVON01,-1) GO TO 49300 39300 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 49300, 9311, 49300 49300 IF (IVCOMP + 643) 29300,19300,29300 19300 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 9311 29300 IVFAIL = IVFAIL + 1 IVCORR = -643 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 9311 CONTINUE IVTNUM = 931 C C **** TEST 931 **** C IF (ICZERO) 39310, 9310, 39310 9310 CONTINUE IVON01 = -22 IVON02 = 723 IVCOMP = ISIGN (IVON01,IVON02) GO TO 49310 39310 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 49310, 9321, 49310 49310 IF (IVCOMP - 22) 29310,19310,29310 19310 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 9321 29310 IVFAIL = IVFAIL + 1 IVCORR = 22 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 9321 CONTINUE IVTNUM = 932 C C **** TEST 932 **** C IF (ICZERO) 39320, 9320, 39320 9320 CONTINUE IVON01 = 3532 IVON02 = 1 IVCOMP = ISIGN (IVON01,IVON02) GO TO 49320 39320 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 49320, 9331, 49320 49320 IF (IVCOMP - 3532) 29320,19320,29320 19320 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 9331 29320 IVFAIL = IVFAIL + 1 IVCORR = 3532 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR C C TEST 933 THROUGH TEST 936 CONTAIN INTRINSIC FUNCTION TESTS FOR C POSITIVE DIFFERENCE WHERE ARGUMENTS AND FUNCTION ARE INTEGERS C 9331 CONTINUE IVTNUM = 933 C C **** TEST 933 **** C IF (ICZERO) 39330, 9330, 39330 9330 CONTINUE IVON01 = 222 IVCOMP = IDIM (IVON01,1) GO TO 49330 39330 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 49330, 9341, 49330 49330 IF (IVCOMP - 221) 29330,19330,29330 19330 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 9341 29330 IVFAIL = IVFAIL + 1 IVCORR = 221 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 9341 CONTINUE IVTNUM = 934 C C **** TEST 934 **** C IF (ICZERO) 39340, 9340, 39340 9340 CONTINUE IVON01 = 45 IVON02 = 41 IVCOMP = IDIM (IVON01,IVON02) GO TO 49340 39340 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 49340, 9351, 49340 49340 IF (IVCOMP - 4) 29340,19340,29340 19340 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 9351 29340 IVFAIL = IVFAIL + 1 IVCORR = 4 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 9351 CONTINUE IVTNUM = 935 C C **** TEST 935 **** C IF (ICZERO) 39350, 9350, 39350 9350 CONTINUE IVON01 = 2 IVON02 = 10 IVCOMP = IDIM (IVON01,IVON02) GO TO 49350 39350 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 49350, 9361, 49350 49350 IF (IVCOMP) 29350,19350,29350 19350 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 9361 29350 IVFAIL = IVFAIL + 1 IVCORR = 0 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 9361 CONTINUE IVTNUM = 936 C C **** TEST 936 **** C IF (ICZERO) 39360, 9360, 39360 9360 CONTINUE IVON01 = 165 IVON02 = -2 IVCOMP = IDIM (IVON01,IVON02) GO TO 49360 39360 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 49360, 9371, 49360 49360 IF (IVCOMP - 167) 29360,19360,29360 19360 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 9371 29360 IVFAIL = IVFAIL + 1 IVCORR = 167 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR C C TESTS 937 AND 938 CONTAIN EXPRESSIONS CONTAINING MORE THAN ONE C INTRINSIC FUNCTION - THE FUNCTIONS ARE INTEGER AND THE ARGUMENTS C ARE REAL AND INTEGER C 9371 CONTINUE IVTNUM = 937 C C **** TEST 937 **** C IF (ICZERO) 39370, 9370, 39370 9370 CONTINUE RVON01 = 33.3 IVON01 = -12 IVCOMP = INT (RVON01) + IABS (IVON01) GO TO 49370 39370 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 49370, 9381, 49370 49370 IF (IVCOMP - 45) 29370,19370,29370 19370 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 9381 29370 IVFAIL = IVFAIL + 1 IVCORR = 45 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 9381 CONTINUE IVTNUM = 938 C C **** TEST 938 **** C IF (ICZERO) 39380, 9380, 39380 9380 CONTINUE IVON01 = 76 IVON02 = 21 IVON03 = 30 IVCOMP = MAX0 (IVON01,IVON02,IVON03) - MIN0 (IVON01,IVON02,IVON03) GO TO 49380 39380 IVDELE = IVDELE + 1 WRITE (I02,80003) IVTNUM IF (ICZERO) 49380, 9391, 49380 49380 IF (IVCOMP - 55) 29380,19380,29380 19380 IVPASS = IVPASS + 1 WRITE (I02,80001) IVTNUM GO TO 9391 29380 IVFAIL = IVFAIL + 1 IVCORR = 55 WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 9391 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 FM098) END