blob: 17705c4d7ef1fee2631b85a9985c34a3597ef598 [file] [log] [blame]
PROGRAM FM098
C COMMENT SECTION 00010098
C 00020098
C FM098 00030098
C 00040098
C THIS ROUTINE TESTS INTRINSIC FUNCTIONS WHERE THE FUNCTION TYPE IS 00050098
C INTEGER AND THE ARGUMENTS ARE EITHER INTEGER OR REAL. THE REAL 00060098
C AND INTEGER VARIABLES AND THE REAL AND INTEGER CONSTANTS CONTAIN 00070098
C BOTH POSITIVE AND NEGATIVE VALUES. THE INTRINSIC FUNCTIONS TESTED00080098
C BY FM098 INCLUDE 00090098
C TYPE OF 00100098
C INTRINSIC FUNCTION NAME ARGUMENT FUNCTION 00110098
C ------------------ ---- -------- -------- 00120098
C ABSOLUTE VALUE IABS INTEGER INTEGER 00130098
C TRUNCATION INT REAL INTEGER 00140098
C REMAINDERING MOD INTEGER INTEGER 00150098
C CHOOSING LARGEST VALUE MAX0 INTEGER INTEGER 00160098
C MAX1 REAL INTEGER 00170098
C CHOOSING SMALLEST VALUE MIN0 INTEGER INTEGER 00180098
C MIN1 REAL INTEGER 00190098
C FIX IFIX REAL INTEGER 00200098
C TRANSFER OF SIGN ISIGN INTEGER INTEGER 00210098
C POSITIVE DIFFERENCE IDIM INTEGER INTEGER 00220098
C 00230098
C REFERENCES 00240098
C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, 00250098
C X3.9-1978 00260098
C 00270098
C SECTION 4.1.2, TYPE RULES FOR DATA AND PROCEDURE IDENTIFIERS 00280098
C SECTION 15.3, INTRINSIC FUNCTION 00290098
C SECTION 15.3.2, INTRINSIC FUNCTIONS AND THEIR REFERENCE 00300098
C 00310098
C 00320098
C ********************************************************** 00330098
C 00340098
C A COMPILER VALIDATION SYSTEM FOR THE FORTRAN LANGUAGE 00350098
C BASED ON SPECIFICATIONS AS DEFINED IN AMERICAN NATIONAL STANDARD 00360098
C PROGRAMMING LANGUAGE FORTRAN X3.9-1978, HAS BEEN DEVELOPED BY THE 00370098
C FEDERAL COBOL COMPILER TESTING SERVICE. THE FORTRAN COMPILER 00380098
C VALIDATION SYSTEM (FCVS) CONSISTS OF AUDIT ROUTINES, THEIR RELATED00390098
C DATA, AND AN EXECUTIVE SYSTEM. EACH AUDIT ROUTINE IS A FORTRAN 00400098
C PROGRAM, SUBPROGRAM OR FUNCTION WHICH INCLUDES TESTS OF SPECIFIC 00410098
C LANGUAGE ELEMENTS AND SUPPORTING PROCEDURES INDICATING THE RESULT 00420098
C OF EXECUTING THESE TESTS. 00430098
C 00440098
C THIS PARTICULAR PROGRAM/SUBPROGRAM/FUNCTION CONTAINS FEATURES 00450098
C FOUND ONLY IN THE SUBSET AS DEFINED IN X3.9-1978. 00460098
C 00470098
C SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO - 00480098
C 00490098
C NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY 00500098
C SOFTWARE STANDARDS VALIDATION GROUP 00510098
C BUILDING 225 RM A266 00520098
C GAITHERSBURG, MD 20899 00530098
C ********************************************************** 00540098
C 00550098
C 00560098
C 00570098
C INITIALIZATION SECTION 00580098
C 00590098
C INITIALIZE CONSTANTS 00600098
C ************** 00610098
C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. 00620098
I01 = 5 00630098
C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. 00640098
I02 = 6 00650098
C SYSTEM ENVIRONMENT SECTION 00660098
C 00670098
CX010 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-010 CONTROL CARD. 00680098
C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 00690098
C (UNIT NUMBER FOR CARD READER). 00700098
CX011 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-011 CONTROL CARD. 00710098
C THE CX011 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL 00720098
C FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX010 ABOVE. 00730098
C 00740098
CX020 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-020 CONTROL CARD. 00750098
C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02 = 6 00760098
C (UNIT NUMBER FOR PRINTER). 00770098
CX021 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-021 CONTROL CARD. 00780098
C THE CX021 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL 00790098
C FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX020 ABOVE. 00800098
C 00810098
IVPASS=0 00820098
IVFAIL=0 00830098
IVDELE=0 00840098
ICZERO=0 00850098
C 00860098
C WRITE PAGE HEADERS 00870098
WRITE (I02,90000) 00880098
WRITE (I02,90001) 00890098
WRITE (I02,90002) 00900098
WRITE (I02, 90002) 00910098
WRITE (I02,90003) 00920098
WRITE (I02,90002) 00930098
WRITE (I02,90004) 00940098
WRITE (I02,90002) 00950098
WRITE (I02,90011) 00960098
WRITE (I02,90002) 00970098
WRITE (I02,90002) 00980098
WRITE (I02,90005) 00990098
WRITE (I02,90006) 01000098
WRITE (I02,90002) 01010098
C 01020098
C TEST SECTION 01030098
C 01040098
C TEST 907 THROUGH TEST 909 CONTAIN INTRINSIC FUNCTION TESTS FOR 01050098
C ABSOLUTE VALUE WHERE ARGUMENT AND FUNCTION ARE INTEGER 01060098
C 01070098
9071 CONTINUE 01080098
IVTNUM = 907 01090098
C 01100098
C **** TEST 907 **** 01110098
C 01120098
IF (ICZERO) 39070, 9070, 39070 01130098
9070 CONTINUE 01140098
IVCOMP = IABS (-382) 01150098
GO TO 49070 01160098
39070 IVDELE = IVDELE + 1 01170098
WRITE (I02,80003) IVTNUM 01180098
IF (ICZERO) 49070, 9081, 49070 01190098
49070 IF (IVCOMP - 382) 29070,19070,29070 01200098
19070 IVPASS = IVPASS + 1 01210098
WRITE (I02,80001) IVTNUM 01220098
GO TO 9081 01230098
29070 IVFAIL = IVFAIL + 1 01240098
IVCORR = 382 01250098
WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 01260098
9081 CONTINUE 01270098
IVTNUM = 908 01280098
C 01290098
C **** TEST 908 **** 01300098
C 01310098
IF (ICZERO) 39080, 9080, 39080 01320098
9080 CONTINUE 01330098
IVON01 = 445 01340098
IVCOMP = IABS (IVON01) 01350098
GO TO 49080 01360098
39080 IVDELE = IVDELE + 1 01370098
WRITE (I02,80003) IVTNUM 01380098
IF (ICZERO) 49080, 9091, 49080 01390098
49080 IF (IVCOMP - 445) 29080,19080,29080 01400098
19080 IVPASS = IVPASS + 1 01410098
WRITE (I02,80001) IVTNUM 01420098
GO TO 9091 01430098
29080 IVFAIL = IVFAIL + 1 01440098
IVCORR = 445 01450098
WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 01460098
9091 CONTINUE 01470098
IVTNUM = 909 01480098
C 01490098
C **** TEST 909 **** 01500098
C 01510098
IF (ICZERO) 39090, 9090, 39090 01520098
9090 CONTINUE 01530098
IVON01 = -32176 01540098
IVCOMP = IABS (IVON01) 01550098
GO TO 49090 01560098
39090 IVDELE = IVDELE + 1 01570098
WRITE (I02,80003) IVTNUM 01580098
IF (ICZERO) 49090, 9101, 49090 01590098
49090 IF (IVCOMP - 32176) 29090,19090,29090 01600098
19090 IVPASS = IVPASS + 1 01610098
WRITE (I02,80001) IVTNUM 01620098
GO TO 9101 01630098
29090 IVFAIL = IVFAIL + 1 01640098
IVCORR = 32176 01650098
WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 01660098
C 01670098
C TEST 910 THROUGH TEST 913 CONTAIN INTRINSIC FUNCTION TESTS FOR 01680098
C TRUNCATION WHERE ARGUMENT IS REAL AND FUNCTION IS INTEGER 01690098
C 01700098
9101 CONTINUE 01710098
IVTNUM = 910 01720098
C 01730098
C **** TEST 910 **** 01740098
C 01750098
IF (ICZERO) 39100, 9100, 39100 01760098
9100 CONTINUE 01770098
IVCOMP = INT (38.2) 01780098
GO TO 49100 01790098
39100 IVDELE = IVDELE + 1 01800098
WRITE (I02,80003) IVTNUM 01810098
IF (ICZERO) 49100, 9111, 49100 01820098
49100 IF (IVCOMP - 38) 29100,19100,29100 01830098
19100 IVPASS = IVPASS + 1 01840098
WRITE (I02,80001) IVTNUM 01850098
GO TO 9111 01860098
29100 IVFAIL = IVFAIL + 1 01870098
IVCORR = 38 01880098
WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 01890098
9111 CONTINUE 01900098
IVTNUM = 911 01910098
C 01920098
C **** TEST 911 **** 01930098
C 01940098
IF (ICZERO) 39110, 9110, 39110 01950098
9110 CONTINUE 01960098
RVON01 = -445.95 01970098
IVCOMP = INT (RVON01) 01980098
GO TO 49110 01990098
39110 IVDELE = IVDELE + 1 02000098
WRITE (I02,80003) IVTNUM 02010098
IF (ICZERO) 49110, 9121, 49110 02020098
49110 IF (IVCOMP + 445) 29110,19110,29110 02030098
19110 IVPASS = IVPASS + 1 02040098
WRITE (I02,80001) IVTNUM 02050098
GO TO 9121 02060098
29110 IVFAIL = IVFAIL + 1 02070098
IVCORR = -445 02080098
WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 02090098
9121 CONTINUE 02100098
IVTNUM = 912 02110098
C 02120098
C **** TEST 912 **** 02130098
C 02140098
IF (ICZERO) 39120, 9120, 39120 02150098
9120 CONTINUE 02160098
RVON01 = 466.01 02170098
IVCOMP = INT (RVON01) 02180098
GO TO 49120 02190098
39120 IVDELE = IVDELE + 1 02200098
WRITE (I02,80003) IVTNUM 02210098
IF (ICZERO) 49120, 9131, 49120 02220098
49120 IF (IVCOMP - 466) 29120,19120,29120 02230098
19120 IVPASS = IVPASS + 1 02240098
WRITE (I02,80001) IVTNUM 02250098
GO TO 9131 02260098
29120 IVFAIL = IVFAIL + 1 02270098
IVCORR = 466 02280098
WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 02290098
9131 CONTINUE 02300098
IVTNUM = 913 02310098
C 02320098
C **** TEST 913 **** 02330098
C 02340098
IF (ICZERO) 39130, 9130, 39130 02350098
9130 CONTINUE 02360098
RVON01 = 382E-1 02370098
IVCOMP = INT (RVON01) 02380098
GO TO 49130 02390098
39130 IVDELE = IVDELE + 1 02400098
WRITE (I02,80003) IVTNUM 02410098
IF (ICZERO) 49130, 9141, 49130 02420098
49130 IF (IVCOMP - 38) 29130,19130,29130 02430098
19130 IVPASS = IVPASS + 1 02440098
WRITE (I02,80001) IVTNUM 02450098
GO TO 9141 02460098
29130 IVFAIL = IVFAIL + 1 02470098
IVCORR = 38 02480098
WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 02490098
C 02500098
C TEST 914 THROUGH TEST 917 CONTAIN INTRINSIC FUNCTION TESTS FOR 02510098
C REMAINDERING WHERE ARGUMENTS AND FUNCTION ARE INTEGERS 02520098
C 02530098
9141 CONTINUE 02540098
IVTNUM = 914 02550098
C 02560098
C **** TEST 914 **** 02570098
C 02580098
IF (ICZERO) 39140, 9140, 39140 02590098
9140 CONTINUE 02600098
IVCOMP = MOD (42,19) 02610098
GO TO 49140 02620098
39140 IVDELE = IVDELE + 1 02630098
WRITE (I02,80003) IVTNUM 02640098
IF (ICZERO) 49140, 9151, 49140 02650098
49140 IF (IVCOMP - 4) 29140,19140,29140 02660098
19140 IVPASS = IVPASS + 1 02670098
WRITE (I02,80001) IVTNUM 02680098
GO TO 9151 02690098
29140 IVFAIL = IVFAIL + 1 02700098
IVCORR = 4 02710098
WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 02720098
9151 CONTINUE 02730098
IVTNUM = 915 02740098
C 02750098
C **** TEST 915 **** 02760098
C 02770098
IF (ICZERO) 39150, 9150, 39150 02780098
9150 CONTINUE 02790098
IVON01 = 6667 02800098
IVON02 = 2 02810098
IVCOMP = MOD (IVON01,IVON02) 02820098
GO TO 49150 02830098
39150 IVDELE = IVDELE + 1 02840098
WRITE (I02,80003) IVTNUM 02850098
IF (ICZERO) 49150, 9161, 49150 02860098
49150 IF (IVCOMP - 1) 29150,19150,29150 02870098
19150 IVPASS = IVPASS + 1 02880098
WRITE (I02,80001) IVTNUM 02890098
GO TO 9161 02900098
29150 IVFAIL = IVFAIL + 1 02910098
IVCORR = 1 02920098
WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 02930098
9161 CONTINUE 02940098
IVTNUM = 916 02950098
C 02960098
C **** TEST 916 **** 02970098
C 02980098
IF (ICZERO) 39160, 9160, 39160 02990098
9160 CONTINUE 03000098
IVON01 = 225 03010098
IVON02 = 50 03020098
IVCOMP = MOD (IVON01,IVON02) 03030098
GO TO 49160 03040098
39160 IVDELE = IVDELE + 1 03050098
WRITE (I02,80003) IVTNUM 03060098
IF (ICZERO) 49160, 9171, 49160 03070098
49160 IF (IVCOMP - 25) 29160,19160,29160 03080098
19160 IVPASS = IVPASS + 1 03090098
WRITE (I02,80001) IVTNUM 03100098
GO TO 9171 03110098
29160 IVFAIL = IVFAIL + 1 03120098
IVCORR = 25 03130098
WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 03140098
9171 CONTINUE 03150098
IVTNUM = 917 03160098
C 03170098
C **** TEST 917 **** 03180098
C 03190098
IF (ICZERO) 39170, 9170, 39170 03200098
9170 CONTINUE 03210098
IVON01 = -39 03220098
IVON02 = 500 03230098
IVCOMP = MOD (IVON01,IVON02) 03240098
GO TO 49170 03250098
39170 IVDELE = IVDELE + 1 03260098
WRITE (I02,80003) IVTNUM 03270098
IF (ICZERO) 49170, 9181, 49170 03280098
49170 IF (IVCOMP + 39) 29170,19170,29170 03290098
19170 IVPASS = IVPASS + 1 03300098
WRITE (I02,80001) IVTNUM 03310098
GO TO 9181 03320098
29170 IVFAIL = IVFAIL + 1 03330098
IVCORR = -39 03340098
WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 03350098
C 03360098
C TEST 918 AND 919 CONTAIN INTRINSIC FUNCTION TESTS FOR CHOOSING 03370098
C LARGEST VALUE WHERE ARGUMENTS AND FUNCTION ARE INTEGER 03380098
C 03390098
9181 CONTINUE 03400098
IVTNUM = 918 03410098
C 03420098
C **** TEST 918 **** 03430098
C 03440098
IF (ICZERO) 39180, 9180, 39180 03450098
9180 CONTINUE 03460098
IVON01 = 317 03470098
IVON02 = -99 03480098
IVON03 = 1 03490098
IVCOMP = MAX0 (263,IVON01,IVON02,IVON03) 03500098
GO TO 49180 03510098
39180 IVDELE = IVDELE + 1 03520098
WRITE (I02,80003) IVTNUM 03530098
IF (ICZERO) 49180, 9191, 49180 03540098
49180 IF (IVCOMP - 317) 29180,19180,29180 03550098
19180 IVPASS = IVPASS + 1 03560098
WRITE (I02,80001) IVTNUM 03570098
GO TO 9191 03580098
29180 IVFAIL = IVFAIL + 1 03590098
IVCORR = 317 03600098
WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 03610098
9191 CONTINUE 03620098
IVTNUM = 919 03630098
C 03640098
C **** TEST 919 **** 03650098
C 03660098
IF (ICZERO) 39190, 9190, 39190 03670098
9190 CONTINUE 03680098
IVON01 = 2572 03690098
IVON02 = 2570 03700098
IVCOMP = MAX0 (IVON01,IVON02) 03710098
GO TO 49190 03720098
39190 IVDELE = IVDELE + 1 03730098
WRITE (I02,80003) IVTNUM 03740098
IF (ICZERO) 49190, 9201, 49190 03750098
49190 IF (IVCOMP - 2572) 29190,19190,29190 03760098
19190 IVPASS = IVPASS + 1 03770098
WRITE (I02,80001) IVTNUM 03780098
GO TO 9201 03790098
29190 IVFAIL = IVFAIL + 1 03800098
IVCORR = 2572 03810098
WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 03820098
C 03830098
C TEST 920 AND 921 CONTAIN INTRINSIC FUNCTION TESTS FOR CHOOSING 03840098
C LARGEST VALUE WHERE ARGUMENTS ARE REAL AND FUNCTION IS INTEGER 03850098
C 03860098
9201 CONTINUE 03870098
IVTNUM = 920 03880098
C 03890098
C **** TEST 920 **** 03900098
C 03910098
IF (ICZERO) 39200, 9200, 39200 03920098
9200 CONTINUE 03930098
RVON01 = .326E+2 03940098
RVON02 = 22.075 03950098
RVON03 = 76E-1 03960098
IVCOMP = MAX1 (RVON01,RVON02,RVON03) 03970098
GO TO 49200 03980098
39200 IVDELE = IVDELE + 1 03990098
WRITE (I02,80003) IVTNUM 04000098
IF (ICZERO) 49200, 9211, 49200 04010098
49200 IF (IVCOMP - 32) 29200,19200,29200 04020098
19200 IVPASS = IVPASS + 1 04030098
WRITE (I02,80001) IVTNUM 04040098
GO TO 9211 04050098
29200 IVFAIL = IVFAIL + 1 04060098
IVCORR = 32 04070098
WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 04080098
9211 CONTINUE 04090098
IVTNUM = 921 04100098
C 04110098
C **** TEST 921 **** 04120098
C 04130098
IF (ICZERO) 39210, 9210, 39210 04140098
9210 CONTINUE 04150098
RVON01 = -6.3E2 04160098
RVON02 = -21.0 04170098
IVCOMP = MAX1 (-463.3,RVON01,RVON02) 04180098
GO TO 49210 04190098
39210 IVDELE = IVDELE + 1 04200098
WRITE (I02,80003) IVTNUM 04210098
IF (ICZERO) 49210, 9221, 49210 04220098
49210 IF (IVCOMP + 21) 29210,19210,29210 04230098
19210 IVPASS = IVPASS + 1 04240098
WRITE (I02,80001) IVTNUM 04250098
GO TO 9221 04260098
29210 IVFAIL = IVFAIL + 1 04270098
IVCORR = -21 04280098
WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 04290098
C 04300098
C TEST 922 AND 923 CONTAIN INTRINSIC FUNCTION TESTS FOR CHOOSING 04310098
C SMALLEST VALUE WHERE ARGUMENTS AND FUNCTION ARE INTEGER 04320098
C 04330098
9221 CONTINUE 04340098
IVTNUM = 922 04350098
C 04360098
C **** TEST 922 **** 04370098
C 04380098
IF (ICZERO) 39220, 9220, 39220 04390098
9220 CONTINUE 04400098
IVON01 = -75 04410098
IVON02 = -243 04420098
IVCOMP = MIN0 (IVON01,IVON02) 04430098
GO TO 49220 04440098
39220 IVDELE = IVDELE + 1 04450098
WRITE (I02,80003) IVTNUM 04460098
IF (ICZERO) 49220, 9231, 49220 04470098
49220 IF (IVCOMP + 243) 29220,19220,29220 04480098
19220 IVPASS = IVPASS + 1 04490098
WRITE (I02,80001) IVTNUM 04500098
GO TO 9231 04510098
29220 IVFAIL = IVFAIL + 1 04520098
IVCORR = -243 04530098
WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 04540098
9231 CONTINUE 04550098
IVTNUM = 923 04560098
C 04570098
C **** TEST 923 **** 04580098
C 04590098
IF (ICZERO) 39230, 9230, 39230 04600098
9230 CONTINUE 04610098
IVON01 = -11 04620098
IVON02 = 11 04630098
IVCOMP = MIN0 (0,IVON01,IVON02) 04640098
GO TO 49230 04650098
39230 IVDELE = IVDELE + 1 04660098
WRITE (I02,80003) IVTNUM 04670098
IF (ICZERO) 49230, 9241, 49230 04680098
49230 IF (IVCOMP + 11) 29230,19230,29230 04690098
19230 IVPASS = IVPASS + 1 04700098
WRITE (I02,80001) IVTNUM 04710098
GO TO 9241 04720098
29230 IVFAIL = IVFAIL + 1 04730098
IVCORR = -11 04740098
WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 04750098
C 04760098
C TEST 924 AND 925 CONTAIN INTRINSIC FUNCTION TESTS FOR CHOOSING 04770098
C SMALLEST VALUE WHERE ARGUMENTS ARE REAL AND FUNCTION IS INTEGER 04780098
C 04790098
9241 CONTINUE 04800098
IVTNUM = 924 04810098
C 04820098
C **** TEST 924 **** 04830098
C 04840098
IF (ICZERO) 39240, 9240, 39240 04850098
9240 CONTINUE 04860098
RVON01 = 1.1111 04870098
RVON02 = 22.222 04880098
RVON03 = 333.33 04890098
IVCOMP = MIN1 (RVON01,RVON02,RVON03) 04900098
GO TO 49240 04910098
39240 IVDELE = IVDELE + 1 04920098
WRITE (I02,80003) IVTNUM 04930098
IF (ICZERO) 49240, 9251, 49240 04940098
49240 IF (IVCOMP - 1) 29240,19240,29240 04950098
19240 IVPASS = IVPASS + 1 04960098
WRITE (I02,80001) IVTNUM 04970098
GO TO 9251 04980098
29240 IVFAIL = IVFAIL + 1 04990098
IVCORR = 1 05000098
WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 05010098
9251 CONTINUE 05020098
IVTNUM = 925 05030098
C 05040098
C **** TEST 925 **** 05050098
C 05060098
IF (ICZERO) 39250, 9250, 39250 05070098
9250 CONTINUE 05080098
RVON01 = 28.8 05090098
RVON02 = 2.88E1 05100098
RVON03 = 288E-1 05110098
RVON04 = 35.0 05120098
IVCOMP = MIN1 (RVON01,RVON02,RVON03,RVON04) 05130098
GO TO 49250 05140098
39250 IVDELE = IVDELE + 1 05150098
WRITE (I02,80003) IVTNUM 05160098
IF (ICZERO) 49250, 9261, 49250 05170098
49250 IF (IVCOMP - 28) 29250,19250,29250 05180098
19250 IVPASS = IVPASS + 1 05190098
WRITE (I02,80001) IVTNUM 05200098
GO TO 9261 05210098
29250 IVFAIL = IVFAIL + 1 05220098
IVCORR = 28 05230098
WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 05240098
C 05250098
C TEST 926 THROUGH TEST 929 CONTAIN THE INTRINSIC FUNCTION FIX 05260098
C WHICH CONVERTS REAL ARGUMENTS TO INTEGER FUNCTION RESULTS 05270098
C 05280098
9261 CONTINUE 05290098
IVTNUM = 926 05300098
C 05310098
C **** TEST 926 **** 05320098
C 05330098
IF (ICZERO) 39260, 9260, 39260 05340098
9260 CONTINUE 05350098
IVCOMP = IFIX (-6.06) 05360098
GO TO 49260 05370098
39260 IVDELE = IVDELE + 1 05380098
WRITE (I02,80003) IVTNUM 05390098
IF (ICZERO) 49260, 9271, 49260 05400098
49260 IF (IVCOMP + 6) 29260,19260,29260 05410098
19260 IVPASS = IVPASS + 1 05420098
WRITE (I02,80001) IVTNUM 05430098
GO TO 9271 05440098
29260 IVFAIL = IVFAIL + 1 05450098
IVCORR = -6 05460098
WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 05470098
9271 CONTINUE 05480098
IVTNUM = 927 05490098
C 05500098
C **** TEST 927 **** 05510098
C 05520098
IF (ICZERO) 39270, 9270, 39270 05530098
9270 CONTINUE 05540098
RVON01 = 71.01 05550098
IVCOMP = IFIX (RVON01) 05560098
GO TO 49270 05570098
39270 IVDELE = IVDELE + 1 05580098
WRITE (I02,80003) IVTNUM 05590098
IF (ICZERO) 49270, 9281, 49270 05600098
49270 IF (IVCOMP - 71) 29270,19270,29270 05610098
19270 IVPASS = IVPASS + 1 05620098
WRITE (I02,80001) IVTNUM 05630098
GO TO 9281 05640098
29270 IVFAIL = IVFAIL + 1 05650098
IVCORR = 71 05660098
WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 05670098
9281 CONTINUE 05680098
IVTNUM = 928 05690098
C 05700098
C **** TEST 928 **** 05710098
C 05720098
IF (ICZERO) 39280, 9280, 39280 05730098
9280 CONTINUE 05740098
RVON01 = 3.211E2 05750098
IVCOMP = IFIX (RVON01) 05760098
GO TO 49280 05770098
39280 IVDELE = IVDELE + 1 05780098
WRITE (I02,80003) IVTNUM 05790098
IF (ICZERO) 49280, 9291, 49280 05800098
49280 IF (IVCOMP - 321) 29280,19280,29280 05810098
19280 IVPASS = IVPASS + 1 05820098
WRITE (I02,80001) IVTNUM 05830098
GO TO 9291 05840098
29280 IVFAIL = IVFAIL + 1 05850098
IVCORR = 321 05860098
WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 05870098
9291 CONTINUE 05880098
IVTNUM = 929 05890098
C 05900098
C **** TEST 929 **** 05910098
C 05920098
IF (ICZERO) 39290, 9290, 39290 05930098
9290 CONTINUE 05940098
RVON01 = 777E-1 05950098
IVCOMP = IFIX (RVON01) 05960098
GO TO 49290 05970098
39290 IVDELE = IVDELE + 1 05980098
WRITE (I02,80003) IVTNUM 05990098
IF (ICZERO) 49290, 9301, 49290 06000098
49290 IF (IVCOMP - 77) 29290,19290,29290 06010098
19290 IVPASS = IVPASS + 1 06020098
WRITE (I02,80001) IVTNUM 06030098
GO TO 9301 06040098
29290 IVFAIL = IVFAIL + 1 06050098
IVCORR = 77 06060098
WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 06070098
C 06080098
C TEST 930 THROUGH TEST 932 CONTAIN INTRINSIC FUNCTION TESTS FOR 06090098
C TRANSFER OF SIGN WHERE ARGUMENTS AND FUNCTION ARE INTEGER 06100098
C 06110098
9301 CONTINUE 06120098
IVTNUM = 930 06130098
C 06140098
C **** TEST 930 **** 06150098
C 06160098
IF (ICZERO) 39300, 9300, 39300 06170098
9300 CONTINUE 06180098
IVON01 = 643 06190098
IVCOMP = ISIGN (IVON01,-1) 06200098
GO TO 49300 06210098
39300 IVDELE = IVDELE + 1 06220098
WRITE (I02,80003) IVTNUM 06230098
IF (ICZERO) 49300, 9311, 49300 06240098
49300 IF (IVCOMP + 643) 29300,19300,29300 06250098
19300 IVPASS = IVPASS + 1 06260098
WRITE (I02,80001) IVTNUM 06270098
GO TO 9311 06280098
29300 IVFAIL = IVFAIL + 1 06290098
IVCORR = -643 06300098
WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 06310098
9311 CONTINUE 06320098
IVTNUM = 931 06330098
C 06340098
C **** TEST 931 **** 06350098
C 06360098
IF (ICZERO) 39310, 9310, 39310 06370098
9310 CONTINUE 06380098
IVON01 = -22 06390098
IVON02 = 723 06400098
IVCOMP = ISIGN (IVON01,IVON02) 06410098
GO TO 49310 06420098
39310 IVDELE = IVDELE + 1 06430098
WRITE (I02,80003) IVTNUM 06440098
IF (ICZERO) 49310, 9321, 49310 06450098
49310 IF (IVCOMP - 22) 29310,19310,29310 06460098
19310 IVPASS = IVPASS + 1 06470098
WRITE (I02,80001) IVTNUM 06480098
GO TO 9321 06490098
29310 IVFAIL = IVFAIL + 1 06500098
IVCORR = 22 06510098
WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 06520098
9321 CONTINUE 06530098
IVTNUM = 932 06540098
C 06550098
C **** TEST 932 **** 06560098
C 06570098
IF (ICZERO) 39320, 9320, 39320 06580098
9320 CONTINUE 06590098
IVON01 = 3532 06600098
IVON02 = 1 06610098
IVCOMP = ISIGN (IVON01,IVON02) 06620098
GO TO 49320 06630098
39320 IVDELE = IVDELE + 1 06640098
WRITE (I02,80003) IVTNUM 06650098
IF (ICZERO) 49320, 9331, 49320 06660098
49320 IF (IVCOMP - 3532) 29320,19320,29320 06670098
19320 IVPASS = IVPASS + 1 06680098
WRITE (I02,80001) IVTNUM 06690098
GO TO 9331 06700098
29320 IVFAIL = IVFAIL + 1 06710098
IVCORR = 3532 06720098
WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 06730098
C 06740098
C TEST 933 THROUGH TEST 936 CONTAIN INTRINSIC FUNCTION TESTS FOR 06750098
C POSITIVE DIFFERENCE WHERE ARGUMENTS AND FUNCTION ARE INTEGERS 06760098
C 06770098
9331 CONTINUE 06780098
IVTNUM = 933 06790098
C 06800098
C **** TEST 933 **** 06810098
C 06820098
IF (ICZERO) 39330, 9330, 39330 06830098
9330 CONTINUE 06840098
IVON01 = 222 06850098
IVCOMP = IDIM (IVON01,1) 06860098
GO TO 49330 06870098
39330 IVDELE = IVDELE + 1 06880098
WRITE (I02,80003) IVTNUM 06890098
IF (ICZERO) 49330, 9341, 49330 06900098
49330 IF (IVCOMP - 221) 29330,19330,29330 06910098
19330 IVPASS = IVPASS + 1 06920098
WRITE (I02,80001) IVTNUM 06930098
GO TO 9341 06940098
29330 IVFAIL = IVFAIL + 1 06950098
IVCORR = 221 06960098
WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 06970098
9341 CONTINUE 06980098
IVTNUM = 934 06990098
C 07000098
C **** TEST 934 **** 07010098
C 07020098
IF (ICZERO) 39340, 9340, 39340 07030098
9340 CONTINUE 07040098
IVON01 = 45 07050098
IVON02 = 41 07060098
IVCOMP = IDIM (IVON01,IVON02) 07070098
GO TO 49340 07080098
39340 IVDELE = IVDELE + 1 07090098
WRITE (I02,80003) IVTNUM 07100098
IF (ICZERO) 49340, 9351, 49340 07110098
49340 IF (IVCOMP - 4) 29340,19340,29340 07120098
19340 IVPASS = IVPASS + 1 07130098
WRITE (I02,80001) IVTNUM 07140098
GO TO 9351 07150098
29340 IVFAIL = IVFAIL + 1 07160098
IVCORR = 4 07170098
WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 07180098
9351 CONTINUE 07190098
IVTNUM = 935 07200098
C 07210098
C **** TEST 935 **** 07220098
C 07230098
IF (ICZERO) 39350, 9350, 39350 07240098
9350 CONTINUE 07250098
IVON01 = 2 07260098
IVON02 = 10 07270098
IVCOMP = IDIM (IVON01,IVON02) 07280098
GO TO 49350 07290098
39350 IVDELE = IVDELE + 1 07300098
WRITE (I02,80003) IVTNUM 07310098
IF (ICZERO) 49350, 9361, 49350 07320098
49350 IF (IVCOMP) 29350,19350,29350 07330098
19350 IVPASS = IVPASS + 1 07340098
WRITE (I02,80001) IVTNUM 07350098
GO TO 9361 07360098
29350 IVFAIL = IVFAIL + 1 07370098
IVCORR = 0 07380098
WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 07390098
9361 CONTINUE 07400098
IVTNUM = 936 07410098
C 07420098
C **** TEST 936 **** 07430098
C 07440098
IF (ICZERO) 39360, 9360, 39360 07450098
9360 CONTINUE 07460098
IVON01 = 165 07470098
IVON02 = -2 07480098
IVCOMP = IDIM (IVON01,IVON02) 07490098
GO TO 49360 07500098
39360 IVDELE = IVDELE + 1 07510098
WRITE (I02,80003) IVTNUM 07520098
IF (ICZERO) 49360, 9371, 49360 07530098
49360 IF (IVCOMP - 167) 29360,19360,29360 07540098
19360 IVPASS = IVPASS + 1 07550098
WRITE (I02,80001) IVTNUM 07560098
GO TO 9371 07570098
29360 IVFAIL = IVFAIL + 1 07580098
IVCORR = 167 07590098
WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 07600098
C 07610098
C TESTS 937 AND 938 CONTAIN EXPRESSIONS CONTAINING MORE THAN ONE 07620098
C INTRINSIC FUNCTION - THE FUNCTIONS ARE INTEGER AND THE ARGUMENTS 07630098
C ARE REAL AND INTEGER 07640098
C 07650098
9371 CONTINUE 07660098
IVTNUM = 937 07670098
C 07680098
C **** TEST 937 **** 07690098
C 07700098
IF (ICZERO) 39370, 9370, 39370 07710098
9370 CONTINUE 07720098
RVON01 = 33.3 07730098
IVON01 = -12 07740098
IVCOMP = INT (RVON01) + IABS (IVON01) 07750098
GO TO 49370 07760098
39370 IVDELE = IVDELE + 1 07770098
WRITE (I02,80003) IVTNUM 07780098
IF (ICZERO) 49370, 9381, 49370 07790098
49370 IF (IVCOMP - 45) 29370,19370,29370 07800098
19370 IVPASS = IVPASS + 1 07810098
WRITE (I02,80001) IVTNUM 07820098
GO TO 9381 07830098
29370 IVFAIL = IVFAIL + 1 07840098
IVCORR = 45 07850098
WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 07860098
9381 CONTINUE 07870098
IVTNUM = 938 07880098
C 07890098
C **** TEST 938 **** 07900098
C 07910098
IF (ICZERO) 39380, 9380, 39380 07920098
9380 CONTINUE 07930098
IVON01 = 76 07940098
IVON02 = 21 07950098
IVON03 = 30 07960098
IVCOMP = MAX0 (IVON01,IVON02,IVON03) - MIN0 (IVON01,IVON02,IVON03)07970098
GO TO 49380 07980098
39380 IVDELE = IVDELE + 1 07990098
WRITE (I02,80003) IVTNUM 08000098
IF (ICZERO) 49380, 9391, 49380 08010098
49380 IF (IVCOMP - 55) 29380,19380,29380 08020098
19380 IVPASS = IVPASS + 1 08030098
WRITE (I02,80001) IVTNUM 08040098
GO TO 9391 08050098
29380 IVFAIL = IVFAIL + 1 08060098
IVCORR = 55 08070098
WRITE (I02,80004) IVTNUM, IVCOMP, IVCORR 08080098
9391 CONTINUE 08090098
C 08100098
C WRITE PAGE FOOTINGS AND RUN SUMMARIES 08110098
99999 CONTINUE 08120098
WRITE (I02,90002) 08130098
WRITE (I02,90006) 08140098
WRITE (I02,90002) 08150098
WRITE (I02,90002) 08160098
WRITE (I02,90007) 08170098
WRITE (I02,90002) 08180098
WRITE (I02,90008) IVFAIL 08190098
WRITE (I02,90009) IVPASS 08200098
WRITE (I02,90010) IVDELE 08210098
C 08220098
C 08230098
C TERMINATE ROUTINE EXECUTION 08240098
STOP 08250098
C 08260098
C FORMAT STATEMENTS FOR PAGE HEADERS 08270098
90000 FORMAT ("1") 08280098
90002 FORMAT (" ") 08290098
90001 FORMAT (" ",10X,"FORTRAN COMPILER VALIDATION SYSTEM" ) 08300098
90003 FORMAT (" ",21X,"VERSION 2.1" ) 08310098
90004 FORMAT (" ",10X,"FOR OFFICIAL USE ONLY - COPYRIGHT 1978" ) 08320098
90005 FORMAT (" ",5X,"TEST",5X,"PASS/FAIL", 5X,"COMPUTED",8X,"CORRECT") 08330098
90006 FORMAT (" ",5X,"----------------------------------------------" ) 08340098
90011 FORMAT (" ",18X,"SUBSET LEVEL TEST" ) 08350098
C 08360098
C FORMAT STATEMENTS FOR RUN SUMMARIES 08370098
90008 FORMAT (" ",15X,I5," ERRORS ENCOUNTERED" ) 08380098
90009 FORMAT (" ",15X,I5," TESTS PASSED" ) 08390098
90010 FORMAT (" ",15X,I5," TESTS DELETED" ) 08400098
C 08410098
C FORMAT STATEMENTS FOR TEST RESULTS 08420098
80001 FORMAT (" ",4X,I5,7X,"PASS") 08430098
80002 FORMAT (" ",4X,I5,7X,"FAIL") 08440098
80003 FORMAT (" ",4X,I5,7X,"DELETED") 08450098
80004 FORMAT (" ",4X,I5,7X,"FAIL",10X,I6,9X,I6) 08460098
80005 FORMAT (" ",4X,I5,7X,"FAIL",4X,E12.5,3X,E12.5) 08470098
C 08480098
90007 FORMAT (" ",20X,"END OF PROGRAM FM098" ) 08490098
END 08500098