blob: 48a7024e90ffa620a016325e42f05c17f9529045 [file] [log] [blame]
PROGRAM FM308 00010308
C 00020308
C 00030308
C THIS ROUTINE TESTS INTRINSIC FUNCTIONS WHERE THE ACTUAL 00040308
C ARGUMENTS CONSIST OF INTRINSIC FUNCTION REFERENCES, EXTERNAL 00050308
C FUNCTION REFERENCES, STATEMENT FUNCTION REFERENCES, AND 00060308
C EXPRESSIONS INVOLVING OPERATORS. THE ARGUMENT AND FUNCTION 00070308
C TYPES OF ALL INTRINSIC FUNCTIONS TESTED ARE EITHER INTEGER OR 00080308
C REAL. THE INTRINSIC AND EXTERNAL SPECIFICATION STATEMENTS ARE 00090308
C SPECIFIED IN ORDER TO ALLOW INTRINSIC AND EXTERNAL FUNCTIONS TO 00100308
C BE USED AS ACTUAL ARGUMENTS. THE IMPLICIT STATEMENT AND THE 00110308
C TYPE-STATEMENT ARE TESTED TO ENSURE THAT THEY DO NOT CHANGE THE 00120308
C TYPE OF AN INTRINSIC FUNCTION. THE COMMON STATEMENT IS USED TO 00130308
C PASS DATA ENTITIES TO AN EXTERNAL FUNCTION. THE DATA STATEMENT 00140308
C IS USED TO ENSURE THAT INITIALLY DEFINED ENTITIES CAN BE USED AS 00150308
C ACTUAL ARGUMENTS. THE EQUIVALENCE STATEMENT IS USED TO EQUATE A 00160308
C VARIABLE USED AS AN ACTUAL ARGUMENT. THE INTRINSIC FUNCTIONS 00170308
C TESTED IN THIS ROUTINE INCLUDE. 00180308
C 00190308
C SPECIFIC TYPE OF 00200308
C INTRINSIC FUNCTION NAME ARGUMENT FUNCTION00210308
C ------------------ -------- -------- --------00220308
C TYPE CONVERSION INT REAL INTEGER 00230308
C TYPE CONVERSION IFIX REAL INTEGER 00240308
C TYPE CONVERSION FLOAT INTEGER REAL 00250308
C TYPE CONVERSION REAL INTEGER REAL 00260308
C TRUNCATION AINT REAL REAL 00270308
C NEAREST WHOLE NUMBER ANINT REAL REAL 00280308
C NEAREST INTEGER NINT REAL INTEGER 00290308
C ABSOLUTE VALUE IABS INTEGER INTEGER 00300308
C ABSOLUTE VALUE ABS REAL REAL 00310308
C REMAINDERING MOD INTEGER INTEGER 00320308
C REMAINDERING AMOD REAL REAL 00330308
C TRANSFER OF SIGN ISIGN INTEGER INTEGER 00340308
C TRANSFER OF SIGN SIGN REAL REAL 00350308
C POSITIVE DIFFERENCE IDIM INTEGER INTEGER 00360308
C POSITIVE DIFFERENCE DIM REAL REAL 00370308
C CHOOSING LARGEST VALUE MAX0 INTEGER INTEGER 00380308
C CHOOSING LARGEST VALUE AMAX0 INTEGER REAL 00390308
C CHOOSING LARGEST VALUE MAX1 REAL INTEGER 00400308
C CHOOSING SMALLEST VALUE AMIN1 REAL REAL 00410308
C CHOOSING SMALLEST VALUE MIN1 REAL INTEGER 00420308
C SQUARE ROOT SQRT REAL REAL 00430308
C EXPONENTIAL EXP REAL REAL 00440308
C NATURAL LOGARITHM ALOG REAL REAL 00450308
C SINE SIN REAL REAL 00460308
C COSINE COS REAL REAL 00470308
C TANGENT TAN REAL REAL 00480308
C ARCSINE ASIN REAL REAL 00490308
C ARCCOSINE ACOS REAL REAL 00500308
C ARCTANGENT ATAN REAL REAL 00510308
C HYPERBOLIC SINE SINH REAL REAL 00520308
C HYPERBOLIC COSINE COSH REAL REAL 00530308
C HYPERBOLIC TANGENT TANH REAL REAL 00540308
C 00550308
C SUBSET LEVEL ROUTINES FM097, FM098, FM099 AND FM307 TEST THE 00560308
C USE OF INTEGER AND REAL INTRINSIC FUNCTIONS USING INTEGER AND REAL00570308
C CONSTANTS, VARIABLES AND ARRAY ELEMENT ENTITIES AS ACTUAL 00580308
C ARGUMENTS. 00590308
C 00600308
C REFERENCES. 00610308
C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, 00620308
C X3.9-1978 00630308
C 00640308
C SECTION 8.2, EQUIVALENCE STATEMENT 00650308
C SECTION 8.3, COMMON STATEMENT 00660308
C SECTION 8.4, TYPE-STATEMENTS 00670308
C SECTION 8.5, IMPLICIT STATEMENT 00680308
C SECTION 8.7, EXTERNAL STATEMENT 00690308
C SECTION 8.8, INTRINSIC STATEMENT 00700308
C SECTION 9, DATA STATEMENT 00710308
C SECTION 15.3, INTRINSIC FUNCTION 00720308
C SECTION 15.4, STATEMENT FUNCTION 00730308
C SECTION 15.5, EXTERNAL FUNCTION 00740308
C SECTION 15.5.2, .REFERENCING AN EXTERNAL FUNCTION 00750308
C SECTION 15.9.2, ACTUAL ARGUMENTS 00760308
C SECTION 15.9.3, ASSOCIATION OF DUMMY AND ACTUAL ARGUMENTS 00770308
C TABLE 5, INTRINSIC FUNCTIONS (INCLUDING NOTES) 00780308
C SECTION 15.10.1, RESTRICTIONS ON RANGE OF ARGUMENTS AND RESULTS00790308
C 00800308
C 00810308
C ******************************************************************00820308
C A COMPILER VALIDATION SYSTEM FOR THE FORTRAN LANGUAGE 00830308
C BASED ON SPECIFICATIONS AS DEFINED IN AMERICAN STANDARD FORTRAN 00840308
C X3.9-1978, HAS BEEN DEVELOPED BY THE DEPARTMENT OF THE NAVY. THE 00850308
C FORTRAN COMPILER VALIDATION SYSTEM (FCVS) CONSISTS OF AUDIT 00860308
C ROUTINES, THEIR RELATED DATA, AND AN EXECUTIVE SYSTEM. EACH AUDIT00870308
C ROUTINE IS A FORTRAN PROGRAM OR SUBPROGRAM WHICH INCLUDES TESTS 00880308
C OF SPECIFIC LANGUAGE ELEMENTS AND SUPPORTING PROCEDURES INDICATING00890308
C THE RESULT OF EXECUTING THESE TESTS. 00900308
C 00910308
C THIS PARTICULAR PROGRAM OR SUBPROGRAM CONTAINS ONLY FEATURES 00920308
C FOUND IN THE SUBSET LEVEL OF THE STANDARD. 00930308
C 00940308
C SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO 00950308
C NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY 00960308
C SOFTWARE STANDARDS VALIDATION GROUP 00970308
C BUILDING 225 RM A266 00980308
C GAITHERSBURG, MD 20899 00990308
C ******************************************************************01000308
C 01010308
C 01020308
IMPLICIT LOGICAL (L) 01030308
IMPLICIT CHARACTER*14 (C) 01040308
C 01050308
IMPLICIT INTEGER (E) 01060308
IMPLICIT REAL (N) 01070308
INTEGER MAX1 01080308
REAL SINH 01090308
DIMENSION RADN11(5) 01100308
DIMENSION IADN11(5) 01110308
COMMON RVCN01 01120308
EQUIVALENCE (IVOE01,IVOE02) 01130308
EXTERNAL FF309,FF310 01140308
INTRINSIC ABS, AINT, IABS, ISIGN, SQRT 01150308
DATA RVON04/2.23/ 01160308
RFOS01(RDON01) = RDON01 + 1.0 01170308
C 01180308
C 01190308
C 01200308
C INITIALIZATION SECTION. 01210308
C 01220308
C INITIALIZE CONSTANTS 01230308
C ******************** 01240308
C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER 01250308
I01 = 5 01260308
C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER 01270308
I02 = 6 01280308
C SYSTEM ENVIRONMENT SECTION 01290308
C 01300308
CX010 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-010 CONTROL CARD.01310308
C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 01320308
C (UNIT NUMBER FOR CARD READER). 01330308
CX011 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-011 CONTROL CARD01340308
C THE CX011 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL 01350308
C FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX010 ABOVE. 01360308
C 01370308
CX020 THIS CARD IS PEPLACED BY CONTENTS OF FEXEC X-020 CONTROL CARD.01380308
C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02 = 6 01390308
C (UNIT NUMBER FOR PRINTER). 01400308
CX021 THIS CARD IS PEPLACED BY CONTENTS OF FEXEC X-021 CONTROL CARD.01410308
C THE CX021 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL 01420308
C FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX020 ABOVE. 01430308
C 01440308
IVPASS = 0 01450308
IVFAIL = 0 01460308
IVDELE = 0 01470308
ICZERO = 0 01480308
C 01490308
C WRITE OUT PAGE HEADERS 01500308
C 01510308
WRITE (I02,90002) 01520308
WRITE (I02,90006) 01530308
WRITE (I02,90008) 01540308
WRITE (I02,90004) 01550308
WRITE (I02,90010) 01560308
WRITE (I02,90004) 01570308
WRITE (I02,90016) 01580308
WRITE (I02,90001) 01590308
WRITE (I02,90004) 01600308
WRITE (I02,90012) 01610308
WRITE (I02,90014) 01620308
WRITE (I02,90004) 01630308
C 01640308
C 01650308
C TEST 032 THROUGH TEST 040 TEST INTRINSIC FUNCTIONS USING 01660308
C INTRINSIC FUNCTION REFERENCES AS ACTUAL ARGUMENTS. 01670308
C 01680308
C 01690308
C **** FCVS PROGRAM 308 - TEST 032 **** 01700308
C 01710308
C 01720308
IVTNUM = 32 01730308
IF (ICZERO) 30320, 0320, 30320 01740308
0320 CONTINUE 01750308
RVCOMP = 10.0 01760308
RVCOMP = ANINT (ABS (-2.78) ) 01770308
RVCORR = 3.0 01780308
40320 IF (RVCOMP - 2.9995) 20320, 10320, 40321 01790308
40321 IF (RVCOMP - 3.0005) 10320, 10320, 20320 01800308
30320 IVDELE = IVDELE + 1 01810308
WRITE (I02,80000) IVTNUM 01820308
IF (ICZERO) 10320, 0331, 20320 01830308
10320 IVPASS = IVPASS + 1 01840308
WRITE (I02,80002) IVTNUM 01850308
GO TO 0331 01860308
20320 IVFAIL = IVFAIL + 1 01870308
WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 01880308
0331 CONTINUE 01890308
C 01900308
C **** FCVS PROGRAM 308 - TEST 033 **** 01910308
C 01920308
C 01930308
IVTNUM = 33 01940308
IF (ICZERO) 30330, 0330, 30330 01950308
0330 CONTINUE 01960308
RVCOMP = 10.0 01970308
RVCOMP = ATAN (AINT (1.2) ) 01980308
RVCORR = .78540 01990308
40330 IF (RVCOMP - .78535) 20330, 10330, 40331 02000308
40331 IF (RVCOMP - .78545) 10330, 10330, 20330 02010308
30330 IVDELE = IVDELE + 1 02020308
WRITE (I02,80000) IVTNUM 02030308
IF (ICZERO) 10330, 0341, 20330 02040308
10330 IVPASS = IVPASS + 1 02050308
WRITE (I02,80002) IVTNUM 02060308
GO TO 0341 02070308
20330 IVFAIL = IVFAIL + 1 02080308
WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 02090308
0341 CONTINUE 02100308
C 02110308
C **** FCVS PROGRAM 308 - TEST 034 **** 02120308
C 02130308
C 02140308
IVTNUM = 34 02150308
IF (ICZERO) 30340, 0340, 30340 02160308
0340 CONTINUE 02170308
RVCOMP = 10.0 02180308
RVCOMP = COS (ABS (-.78540) ) 02190308
RVCORR = .70711 02200308
40340 IF (RVCOMP - .70706) 20340, 10340, 40341 02210308
40341 IF (RVCOMP - .70716) 10340, 10340, 20340 02220308
30340 IVDELE = IVDELE + 1 02230308
WRITE (I02,80000) IVTNUM 02240308
IF (ICZERO) 10340, 0351, 20340 02250308
10340 IVPASS = IVPASS + 1 02260308
WRITE (I02,80002) IVTNUM 02270308
GO TO 0351 02280308
20340 IVFAIL = IVFAIL + 1 02290308
WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 02300308
0351 CONTINUE 02310308
C 02320308
C **** FCVS PROGRAM 308 - TEST 035 **** 02330308
C 02340308
C 02350308
IVTNUM = 35 02360308
IF (ICZERO) 30350, 0350, 30350 02370308
0350 CONTINUE 02380308
RVCOMP = 10.0 02390308
IVON01 = 6 02400308
RVCOMP = AMAX0 (1, IVON01, IABS(-7) ) 02410308
RVCORR = 7.0 02420308
40350 IF (RVCOMP - 6.9995) 20350, 10350, 40351 02430308
40351 IF (RVCOMP - 7.0005) 10350, 10350, 20350 02440308
30350 IVDELE = IVDELE + 1 02450308
WRITE (I02,80000) IVTNUM 02460308
IF (ICZERO) 10350, 0361, 20350 02470308
10350 IVPASS = IVPASS + 1 02480308
WRITE (I02,80002) IVTNUM 02490308
GO TO 0361 02500308
20350 IVFAIL = IVFAIL + 1 02510308
WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 02520308
0361 CONTINUE 02530308
C 02540308
C **** FCVS PROGRAM 308 - TEST 036 **** 02550308
C 02560308
C 02570308
IVTNUM = 36 02580308
IF (ICZERO) 30360, 0360, 30360 02590308
0360 CONTINUE 02600308
IVCOMP = 10 02610308
IVCOMP = IABS (ISIGN (7, -2)) 02620308
IVCORR = 7 02630308
40360 IF (IVCOMP - 7) 20360, 10360, 20360 02640308
30360 IVDELE = IVDELE + 1 02650308
WRITE (I02,80000) IVTNUM 02660308
IF (ICZERO) 10360, 0371, 20360 02670308
10360 IVPASS = IVPASS + 1 02680308
WRITE (I02,80002) IVTNUM 02690308
GO TO 0371 02700308
20360 IVFAIL = IVFAIL + 1 02710308
WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 02720308
0371 CONTINUE 02730308
C 02740308
C **** FCVS PROGRAM 308 - TEST 037 **** 02750308
C 02760308
C 02770308
IVTNUM = 37 02780308
IF (ICZERO) 30370, 0370, 30370 02790308
0370 CONTINUE 02800308
IVCOMP = 10 02810308
IVCOMP = MOD (5, IABS (-3) ) 02820308
IVCORR = 2 02830308
40370 IF (IVCOMP - 2) 20370, 10370, 20370 02840308
30370 IVDELE = IVDELE + 1 02850308
WRITE (I02,80000) IVTNUM 02860308
IF (ICZERO) 10370, 0381, 20370 02870308
10370 IVPASS = IVPASS + 1 02880308
WRITE (I02,80002) IVTNUM 02890308
GO TO 0381 02900308
20370 IVFAIL = IVFAIL + 1 02910308
WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 02920308
0381 CONTINUE 02930308
C 02940308
C **** FCVS PROGRAM 308 - TEST 038 **** 02950308
C 02960308
C 02970308
IVTNUM = 38 02980308
IF (ICZERO) 30380, 0380, 30380 02990308
0380 CONTINUE 03000308
IVCOMP = 10 03010308
IVCOMP = ISIGN (-3, IABS (-5) ) 03020308
IVCORR = 3 03030308
40380 IF (IVCOMP - 3) 20380, 10380, 20380 03040308
30380 IVDELE = IVDELE + 1 03050308
WRITE (I02,80000) IVTNUM 03060308
IF (ICZERO) 10380, 0391, 20380 03070308
10380 IVPASS = IVPASS + 1 03080308
WRITE (I02,80002) IVTNUM 03090308
GO TO 0391 03100308
20380 IVFAIL = IVFAIL + 1 03110308
WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 03120308
0391 CONTINUE 03130308
C 03140308
C **** FCVS PROGRAM 308 - TEST 039 **** 03150308
C 03160308
C REPEAT FUNCTION REFERENCE TWICE IN ONE INTRINSIC FUNCTION 03170308
C REFERENCE. 03180308
C 03190308
IVTNUM = 39 03200308
IF (ICZERO) 30390, 0390, 30390 03210308
0390 CONTINUE 03220308
IVCOMP = 10 03230308
IVCOMP = MAX0 (IABS (-5), IABS (-6) ) 03240308
IVCORR = 6 03250308
40390 IF (IVCOMP -6) 20390, 10390, 20390 03260308
30390 IVDELE = IVDELE + 1 03270308
WRITE (I02,80000) IVTNUM 03280308
IF (ICZERO) 10390, 0401, 20390 03290308
10390 IVPASS = IVPASS + 1 03300308
WRITE (I02,80002) IVTNUM 03310308
GO TO 0401 03320308
20390 IVFAIL = IVFAIL + 1 03330308
WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 03340308
0401 CONTINUE 03350308
C 03360308
C **** FCVS PROGRAM 308 - TEST 040 **** 03370308
C 03380308
C USE INTRINSIC FUNCTION REFERENCE AS ACTUAL ARGUMENT TO ITSELF. 03390308
C 03400308
IVTNUM = 40 03410308
IF (ICZERO) 30400, 0400, 30400 03420308
0400 CONTINUE 03430308
RVCOMP = 10.0 03440308
RVCOMP = SQRT (SQRT (25.) ) 03450308
RVCORR = 2.2361 03460308
40400 IF (RVCOMP - 2.2356) 20400, 10400, 40401 03470308
40401 IF (RVCOMP - 2.2366) 10400, 10400, 20400 03480308
30400 IVDELE = IVDELE + 1 03490308
WRITE (I02,80000) IVTNUM 03500308
IF (ICZERO) 10400, 0411, 20400 03510308
10400 IVPASS = IVPASS + 1 03520308
WRITE (I02,80002) IVTNUM 03530308
GO TO 0411 03540308
20400 IVFAIL = IVFAIL + 1 03550308
WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 03560308
0411 CONTINUE 03570308
C 03580308
C TEST 041 THROUGH TEST 045 TEST INTRINSIC FUNCTIONS USING EXTERNAL 03590308
C FUNCTION REFERENCES AS ACTUAL ARGUMENTS. 03600308
C 03610308
C 03620308
C **** FCVS PROGRAM 308 - TEST 041 **** 03630308
C 03640308
C 03650308
IVTNUM = 41 03660308
IF (ICZERO) 30410, 0410, 30410 03670308
0410 CONTINUE 03680308
RVCOMP = 10.0 03690308
RVCOMP = ALOG (FF309 (29.0) ) 03700308
RVCORR = 3.4012 03710308
40410 IF (RVCOMP - 3.4007) 20410, 10410, 40411 03720308
40411 IF (RVCOMP - 3.4017) 10410, 10410, 20410 03730308
30410 IVDELE = IVDELE + 1 03740308
WRITE (I02,80000) IVTNUM 03750308
IF (ICZERO) 10410, 0421, 20410 03760308
10410 IVPASS = IVPASS + 1 03770308
WRITE (I02,80002) IVTNUM 03780308
GO TO 0421 03790308
20410 IVFAIL = IVFAIL + 1 03800308
WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 03810308
0421 CONTINUE 03820308
C 03830308
C **** FCVS PROGRAM 308 - TEST 042 **** 03840308
C 03850308
C 03860308
IVTNUM = 42 03870308
IF (ICZERO) 30420, 0420, 30420 03880308
0420 CONTINUE 03890308
RVCOMP = 10.0 03900308
RVCOMP = ASIN (FF309 (0.) ) 03910308
RVCORR = 1.5708 03920308
40420 IF (RVCOMP - 1.5703) 20420, 10420, 40421 03930308
40421 IF (RVCOMP - 1.5713) 10420, 10420, 20420 03940308
30420 IVDELE = IVDELE + 1 03950308
WRITE (I02,80000) IVTNUM 03960308
IF (ICZERO) 10420, 0431, 20420 03970308
10420 IVPASS = IVPASS + 1 03980308
WRITE (I02,80002) IVTNUM 03990308
GO TO 0431 04000308
20420 IVFAIL = IVFAIL + 1 04010308
WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 04020308
0431 CONTINUE 04030308
C 04040308
C **** FCVS PROGRAM 308 - TEST 043 **** 04050308
C 04060308
C 04070308
IVTNUM = 43 04080308
IF (ICZERO) 30430, 0430, 30430 04090308
0430 CONTINUE 04100308
RVCOMP = 10.0 04110308
RVON01 = 1.5 04120308
RVCOMP = COSH (FF309 (RVON01) ) 04130308
RVCORR = 6.1323 04140308
40430 IF (RVCOMP - 6.1318) 20430, 10430, 40431 04150308
40431 IF (RVCOMP - 6.1328) 10430, 10430, 20430 04160308
30430 IVDELE = IVDELE + 1 04170308
WRITE (I02,80000) IVTNUM 04180308
IF (ICZERO) 10430, 0441, 20430 04190308
10430 IVPASS = IVPASS + 1 04200308
WRITE (I02,80002) IVTNUM 04210308
GO TO 0441 04220308
20430 IVFAIL = IVFAIL + 1 04230308
WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 04240308
0441 CONTINUE 04250308
C 04260308
C **** FCVS PROGRAM 308 - TEST 044 **** 04270308
C 04280308
C 04290308
IVTNUM = 44 04300308
IF (ICZERO) 30440, 0440, 30440 04310308
0440 CONTINUE 04320308
IVCOMP = 10 04330308
IVCOMP = IFIX (FF309 (33.3) ) 04340308
IVCORR = 34 04350308
40440 IF (IVCOMP - 34) 20440, 10440, 20440 04360308
30440 IVDELE = IVDELE + 1 04370308
WRITE (I02,80000) IVTNUM 04380308
IF (ICZERO) 10440, 0451, 20440 04390308
10440 IVPASS = IVPASS + 1 04400308
WRITE (I02,80002) IVTNUM 04410308
GO TO 0451 04420308
20440 IVFAIL = IVFAIL + 1 04430308
WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 04440308
0451 CONTINUE 04450308
C 04460308
C **** FCVS PROGRAM 308 - TEST 045 **** 04470308
C 04480308
C 04490308
IVTNUM = 45 04500308
IF (ICZERO) 30450, 0450, 30450 04510308
0450 CONTINUE 04520308
RVCOMP = 10.0 04530308
RADN11(2) = 2.1416 04540308
RVCOMP = TAN (FF309 (RADN11(2))) 04550308
RVCORR = 0.0 04560308
40450 IF (RVCOMP + .00005) 20450, 10450, 40451 04570308
40451 IF (RVCOMP - .00005) 10450, 10450, 20450 04580308
30450 IVDELE = IVDELE + 1 04590308
WRITE (I02,80000) IVTNUM 04600308
IF (ICZERO) 10450, 0461, 20450 04610308
10450 IVPASS = IVPASS + 1 04620308
WRITE (I02,80002) IVTNUM 04630308
GO TO 0461 04640308
20450 IVFAIL = IVFAIL + 1 04650308
WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 04660308
0461 CONTINUE 04670308
C 04680308
C TEST 046 THROUGH TEST 052 TEST INTRINSIC FUNCTIONS USING 04690308
C EXPRESSIONS INVOLVING OPERATORS AS ACTUAL ARGUMENTS. 04700308
C 04710308
C 04720308
C **** FCVS PROGRAM 308 - TEST 046 **** 04730308
C 04740308
C 04750308
IVTNUM = 46 04760308
IF (ICZERO) 30460, 0460, 30460 04770308
0460 CONTINUE 04780308
RVCOMP = 10.0 04790308
RVCOMP = ABS (3.4 - 8.2) 04800308
RVCORR = 4.8 04810308
40460 IF (RVCOMP - 4.7995) 20460, 10460, 40461 04820308
40461 IF (RVCOMP - 4.8005) 10460, 10460, 20460 04830308
30460 IVDELE = IVDELE + 1 04840308
WRITE (I02,80000) IVTNUM 04850308
IF (ICZERO) 10460, 0471, 20460 04860308
10460 IVPASS = IVPASS + 1 04870308
WRITE (I02,80002) IVTNUM 04880308
GO TO 0471 04890308
20460 IVFAIL = IVFAIL + 1 04900308
WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 04910308
0471 CONTINUE 04920308
C 04930308
C **** FCVS PROGRAM 308 - TEST 047 **** 04940308
C 04950308
C 04960308
IVTNUM = 47 04970308
IF (ICZERO) 30470, 0470, 30470 04980308
0470 CONTINUE 04990308
RVCOMP = 10.0 05000308
IVON01 = 2 05010308
RVON01 = 3.0 05020308
RVCOMP = ACOS (IVON01 - RVON01 * .5) 05030308
RVCORR = 1.0472 05040308
40470 IF (RVCOMP - 1.0467) 20470, 10470, 40471 05050308
40471 IF (RVCOMP - 1.0477) 10470, 10470, 20470 05060308
30470 IVDELE = IVDELE + 1 05070308
WRITE (I02,80000) IVTNUM 05080308
IF (ICZERO) 10470, 0481, 20470 05090308
10470 IVPASS = IVPASS + 1 05100308
WRITE (I02,80002) IVTNUM 05110308
GO TO 0481 05120308
20470 IVFAIL = IVFAIL + 1 05130308
WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 05140308
0481 CONTINUE 05150308
C 05160308
C **** FCVS PROGRAM 308 - TEST 048 **** 05170308
C 05180308
C 05190308
IVTNUM = 48 05200308
IF (ICZERO) 30480, 0480, 30480 05210308
0480 CONTINUE 05220308
RVCOMP = 10.0 05230308
IVON01 = 2 05240308
RVON01 = -4.8 05250308
RVON02 = 4.5 05260308
RVCOMP = AMIN1 (RVON01, (IVON01 - 3.2) * RVON02) 05270308
RVCORR = -5.4 05280308
40480 IF (RVCOMP + 5.4005 ) 20480, 10480, 40481 05290308
40481 IF (RVCOMP + 5.3995 ) 10480, 10480, 20480 05300308
30480 IVDELE = IVDELE + 1 05310308
WRITE (I02,80000) IVTNUM 05320308
IF (ICZERO) 10480, 0491, 20480 05330308
10480 IVPASS = IVPASS + 1 05340308
WRITE (I02,80002) IVTNUM 05350308
GO TO 0491 05360308
20480 IVFAIL = IVFAIL + 1 05370308
WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 05380308
0491 CONTINUE 05390308
C 05400308
C **** FCVS PROGRAM 308 - TEST 049 **** 05410308
C 05420308
C 05430308
IVTNUM = 49 05440308
IF (ICZERO) 30490, 0490, 30490 05450308
0490 CONTINUE 05460308
RVCOMP = 10.0 05470308
RVON01 = 12.0 05480308
IADN11(1) = 3 05490308
RADN11(2) = 2.5 05500308
RVCOMP = AMOD (RVON01 / IADN11(1), 12 / RADN11(2)) 05510308
RVCORR = 4.0 05520308
40490 IF (RVCOMP - 3.9995) 20490, 10490, 40491 05530308
40491 IF (RVCOMP - 4.0005) 10490, 10490, 20490 05540308
30490 IVDELE = IVDELE + 1 05550308
WRITE (I02,80000) IVTNUM 05560308
IF (ICZERO) 10490, 0501, 20490 05570308
10490 IVPASS = IVPASS + 1 05580308
WRITE (I02,80002) IVTNUM 05590308
GO TO 0501 05600308
20490 IVFAIL = IVFAIL + 1 05610308
WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 05620308
0501 CONTINUE 05630308
C 05640308
C **** FCVS PROGRAM 308 - TEST 050 **** 05650308
C 05660308
C 05670308
IVTNUM = 50 05680308
IF (ICZERO) 30500, 0500, 30500 05690308
0500 CONTINUE 05700308
IVCOMP = 10 05710308
IVON01 = 2 05720308
IVON02 = 9 05730308
IVCOMP = IDIM (IVON01 ** 3, IVON02) 05740308
IVCORR = 0 05750308
40500 IF (IVCOMP) 20500, 10500, 20500 05760308
30500 IVDELE = IVDELE + 1 05770308
WRITE (I02,80000) IVTNUM 05780308
IF (ICZERO) 10500, 0511, 20500 05790308
10500 IVPASS = IVPASS + 1 05800308
WRITE (I02,80002) IVTNUM 05810308
GO TO 0511 05820308
20500 IVFAIL = IVFAIL + 1 05830308
WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 05840308
0511 CONTINUE 05850308
C 05860308
C **** FCVS PROGRAM 308 - TEST 051 **** 05870308
C 05880308
C 05890308
IVTNUM = 51 05900308
IF (ICZERO) 30510, 0510, 30510 05910308
0510 CONTINUE 05920308
RVCOMP = 10.0 05930308
IVON01 = 6 05940308
RVCOMP = REAL (IABS (-3) + IVON01) 05950308
RVCORR = 9.0 05960308
40510 IF (RVCOMP - 8.9995) 20510, 10510, 40511 05970308
40511 IF (RVCOMP - 9.0005) 10510, 10510, 20510 05980308
30510 IVDELE = IVDELE + 1 05990308
WRITE (I02,80000) IVTNUM 06000308
IF (ICZERO) 10510, 0521, 20510 06010308
10510 IVPASS = IVPASS + 1 06020308
WRITE (I02,80002) IVTNUM 06030308
GO TO 0521 06040308
20510 IVFAIL = IVFAIL + 1 06050308
WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 06060308
0521 CONTINUE 06070308
C 06080308
C **** FCVS PROGRAM 308 - TEST 052 **** 06090308
C 06100308
C 06110308
IVTNUM = 52 06120308
IF (ICZERO) 30520, 0520, 30520 06130308
0520 CONTINUE 06140308
RVCOMP = 10.0 06150308
RVON01 = 2.3 06160308
IVON01 = 150 06170308
IADN11(1) = 3 06180308
RVCOMP = SIGN(13+RVON01*IABS(-4)-IVON01/FF309(1.)**IADN11(1),-1.) 06190308
RVCORR = -3.45 06200308
40520 IF (RVCOMP + 3.4505) 20520, 10520, 40521 06210308
40521 IF (RVCOMP + 3.4495) 10520, 10520, 20520 06220308
30520 IVDELE = IVDELE + 1 06230308
WRITE (I02,80000) IVTNUM 06240308
IF (ICZERO) 10520, 0531, 20520 06250308
10520 IVPASS = IVPASS + 1 06260308
WRITE (I02,80002) IVTNUM 06270308
GO TO 0531 06280308
20520 IVFAIL = IVFAIL + 1 06290308
WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 06300308
0531 CONTINUE 06310308
C 06320308
C TEST 053 THROUGH TEST 056 TEST INTRINSIC FUNCTIONS USING 06330308
C STATEMENT FUNCTION REFERENCES AS ACTUAL ARGUMENTS. 06340308
C 06350308
C 06360308
C **** FCVS PROGRAM 308 - TEST 053 **** 06370308
C 06380308
C 06390308
IVTNUM = 53 06400308
IF (ICZERO) 30530, 0530, 30530 06410308
0530 CONTINUE 06420308
RVCOMP = 10.0 06430308
RVCOMP = DIM (RFOS01(5.4), 6.0) 06440308
RVCORR = .4 06450308
40530 IF (RVCOMP - .39995) 20530, 10530, 40531 06460308
40531 IF (RVCOMP - .40005) 10530, 10530, 20530 06470308
30530 IVDELE = IVDELE + 1 06480308
WRITE (I02,80000) IVTNUM 06490308
IF (ICZERO) 10530, 0541, 20530 06500308
10530 IVPASS = IVPASS + 1 06510308
WRITE (I02,80002) IVTNUM 06520308
GO TO 0541 06530308
20530 IVFAIL = IVFAIL + 1 06540308
WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 06550308
0541 CONTINUE 06560308
C 06570308
C **** FCVS PROGRAM 308 - TEST 054 **** 06580308
C 06590308
C 06600308
IVTNUM = 54 06610308
IF (ICZERO) 30540, 0540, 30540 06620308
0540 CONTINUE 06630308
IVCOMP = 10 06640308
IVCOMP = INT(RFOS01(2.01)) 06650308
IVCORR = 3 06660308
40540 IF (IVCOMP - 3) 20540, 10540, 20540 06670308
30540 IVDELE = IVDELE + 1 06680308
WRITE (I02,80000) IVTNUM 06690308
IF (ICZERO) 10540, 0551, 20540 06700308
10540 IVPASS = IVPASS + 1 06710308
WRITE (I02,80002) IVTNUM 06720308
GO TO 0551 06730308
20540 IVFAIL = IVFAIL + 1 06740308
WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 06750308
0551 CONTINUE 06760308
C 06770308
C **** FCVS PROGRAM 308 - TEST 055 **** 06780308
C 06790308
C 06800308
IVTNUM = 55 06810308
IF (ICZERO) 30550, 0550, 30550 06820308
0550 CONTINUE 06830308
RVCOMP = 10.0 06840308
RVON01 = 0.5708 06850308
RVCOMP = SIN (RFOS01 (RVON01) / 2) 06860308
RVCORR = .70711 06870308
40550 IF (RVCOMP - .70706) 20550, 10550, 40551 06880308
40551 IF (RVCOMP - .70716) 10550, 10550, 20550 06890308
30550 IVDELE = IVDELE + 1 06900308
WRITE (I02,80000) IVTNUM 06910308
IF (ICZERO) 10550, 0561, 20550 06920308
10550 IVPASS = IVPASS + 1 06930308
WRITE (I02,80002) IVTNUM 06940308
GO TO 0561 06950308
20550 IVFAIL = IVFAIL + 1 06960308
WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 06970308
0561 CONTINUE 06980308
C 06990308
C **** FCVS PROGRAM 308 - TEST 056 **** 07000308
C 07010308
C 07020308
IVTNUM = 56 07030308
IF (ICZERO) 30560, 0560, 30560 07040308
0560 CONTINUE 07050308
RVCOMP = 10.0 07060308
RADN11(2) = 1.5 07070308
RVCOMP = TANH(RFOS01(RADN11(2))) 07080308
RVCORR = .98661 07090308
40560 IF (RVCOMP - .98656) 20560, 10560, 40561 07100308
40561 IF (RVCOMP - .98666) 10560, 10560, 20560 07110308
30560 IVDELE = IVDELE + 1 07120308
WRITE (I02,80000) IVTNUM 07130308
IF (ICZERO) 10560, 0571, 20560 07140308
10560 IVPASS = IVPASS + 1 07150308
WRITE (I02,80002) IVTNUM 07160308
GO TO 0571 07170308
20560 IVFAIL = IVFAIL + 1 07180308
WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 07190308
0571 CONTINUE 07200308
C 07210308
C **** FCVS PROGRAM 308 - TEST 057 **** 07220308
C 07230308
C TEST 057 TESTS THE INTRINSIC FUNCTION AINT USING AN EXTERNAL 07240308
C FUNCTION REFERENCE AS AN ACTUAL ARGUMENT AND THE COMMON 07250308
C STATEMENT AS A MEANS OF PASSING DATA TO THE EXTERNAL FUNCTION. 07260308
C 07270308
IVTNUM = 57 07280308
IF (ICZERO) 30570, 0570, 30570 07290308
0570 CONTINUE 07300308
RVCOMP = 10.0 07310308
RVCN01 = 25.3 07320308
RVCOMP = AINT(FF310( )) 07330308
RVCORR = 26.0 07340308
40570 IF (RVCOMP - 25.995) 20570, 10570, 40571 07350308
40571 IF (RVCOMP - 26.005) 10570, 10570, 20570 07360308
30570 IVDELE = IVDELE + 1 07370308
WRITE (I02,80000) IVTNUM 07380308
IF (ICZERO) 10570, 0581, 20570 07390308
10570 IVPASS = IVPASS + 1 07400308
WRITE (I02,80002) IVTNUM 07410308
GO TO 0581 07420308
20570 IVFAIL = IVFAIL + 1 07430308
WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 07440308
0581 CONTINUE 07450308
C 07460308
C **** FCVS PROGRAM 308 - TEST 058 **** 07470308
C 07480308
C TEST 058 TESTS THE INTRINSIC FUNCTION FLOAT BY USING A VARIABLE 07490308
C EQUATED BY EQUIVALENCE ASSOCIATION AS AN ACTUAL ARGUMENT. 07500308
C 07510308
IVTNUM = 58 07520308
IF (ICZERO) 30580, 0580, 30580 07530308
0580 CONTINUE 07540308
RVCOMP = 10.0 07550308
IVOE01 = 5 07560308
RVCOMP = FLOAT(IVOE01) 07570308
RVCORR = 5.0 07580308
40580 IF (RVCOMP - 4.9995) 20580, 10580, 40581 07590308
40581 IF (RVCOMP - 5.0005) 10580, 10580, 20580 07600308
30580 IVDELE = IVDELE + 1 07610308
WRITE (I02,80000) IVTNUM 07620308
IF (ICZERO) 10580, 0591, 20580 07630308
10580 IVPASS = IVPASS + 1 07640308
WRITE (I02,80002) IVTNUM 07650308
GO TO 0591 07660308
20580 IVFAIL = IVFAIL + 1 07670308
WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 07680308
0591 CONTINUE 07690308
C 07700308
C **** FCVS PROGRAM 308 - TEST 059 **** 07710308
C 07720308
C TEST 059 TESTS THE INTRINSIC FUNCTION MIN1 BY USING A VARIABLE 07730308
C INITIALIZED BY THE DATA STATEMENT AS AN ACTUAL ARGUMENT. 07740308
C 07750308
IVTNUM = 59 07760308
IF (ICZERO) 30590, 0590, 30590 07770308
0590 CONTINUE 07780308
IVCOMP = 10 07790308
IVCOMP = MIN1(6., RVON04, 7.3) 07800308
IVCORR = 2 07810308
40590 IF (IVCOMP - 2) 20590, 10590, 20590 07820308
30590 IVDELE = IVDELE + 1 07830308
WRITE (I02,80000) IVTNUM 07840308
IF (ICZERO) 10590, 0601, 20590 07850308
10590 IVPASS = IVPASS + 1 07860308
WRITE (I02,80002) IVTNUM 07870308
GO TO 0601 07880308
20590 IVFAIL = IVFAIL + 1 07890308
WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 07900308
0601 CONTINUE 07910308
C 07920308
C **** FCVS PROGRAM 308 - TEST 060 **** 07930308
C 07940308
C TEST 060 ATTEMPTS TO OVERRIDE THE TYPING OF REAL FOR THE 07950308
C INTRINSIC FUNCTION EXP WITH IMPLICIT INTEGER TYPING. 07960308
C 07970308
IVTNUM = 60 07980308
IF (ICZERO) 30600, 0600, 30600 07990308
0600 CONTINUE 08000308
RVCOMP = 10.0 08010308
RVON01 = 2.05 08020308
RVCOMP = EXP(RVON01) 08030308
RVCORR = 7.7679 08040308
40600 IF (RVCOMP - 7.7674) 20600, 10600, 40601 08050308
40601 IF (RVCOMP - 7.7684) 10600, 10600, 20600 08060308
30600 IVDELE = IVDELE + 1 08070308
WRITE (I02,80000) IVTNUM 08080308
IF (ICZERO) 10600, 0611, 20600 08090308
10600 IVPASS = IVPASS + 1 08100308
WRITE (I02,80002) IVTNUM 08110308
GO TO 0611 08120308
20600 IVFAIL = IVFAIL + 1 08130308
WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 08140308
0611 CONTINUE 08150308
C 08160308
C **** FCVS PROGRAM 308 - TEST 061 **** 08170308
C 08180308
C TEST 061 ATTEMPTS TO OVERRIDE THE TYPING OF INTEGER FOR THE 08190308
C INTRINSIC FUNCTION NINT WITH IMPLICIT REAL TYPING. 08200308
C 08210308
IVTNUM = 61 08220308
IF (ICZERO) 30610, 0610, 30610 08230308
0610 CONTINUE 08240308
RVCOMP = 10.0 08250308
RVON01 = 3.78 08260308
RVCOMP = NINT(RVON01) / 5 08270308
RVCORR = 0.0 08280308
40610 IF (RVCOMP + .00005) 20610, 10610, 40611 08290308
40611 IF (RVCOMP - .00005) 10610, 10610, 20610 08300308
30610 IVDELE = IVDELE + 1 08310308
WRITE (I02,80000) IVTNUM 08320308
IF (ICZERO) 10610, 0621, 20610 08330308
10610 IVPASS = IVPASS + 1 08340308
WRITE (I02,80002) IVTNUM 08350308
GO TO 0621 08360308
20610 IVFAIL = IVFAIL + 1 08370308
WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 08380308
0621 CONTINUE 08390308
C 08400308
C **** FCVS PROGRAM 308 - TEST 062 **** 08410308
C 08420308
C TEST 062 ATTEMPTS TO OVERRIDE THE TYPING OF REAL FOR THE 08430308
C INTRINSIC FUNCTION SINH WITH TYPE-STATEMENT TYPING OF INTEGER. 08440308
C 08450308
IVTNUM = 62 08460308
IF (ICZERO) 30620, 0620, 30620 08470308
0620 CONTINUE 08480308
RVCOMP = 10.0 08490308
RVCOMP = SINH(2.0) 08500308
RVCORR = 3.6269 08510308
40620 IF (RVCOMP - 3.6264) 20620, 10620, 40621 08520308
40621 IF (RVCOMP - 3.6274) 10620, 10620, 20620 08530308
30620 IVDELE = IVDELE + 1 08540308
WRITE (I02,80000) IVTNUM 08550308
IF (ICZERO) 10620, 0631, 20620 08560308
10620 IVPASS = IVPASS + 1 08570308
WRITE (I02,80002) IVTNUM 08580308
GO TO 0631 08590308
20620 IVFAIL = IVFAIL + 1 08600308
WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 08610308
0631 CONTINUE 08620308
C 08630308
C **** FCVS PROGRAM 308 - TEST 063 **** 08640308
C 08650308
C TEST 063 ATTEMPTS TO OVERRIDE THE TYPING OF INTEGER FOR THE 08660308
C INTRINSIC FUNCTION MAX1 WITH TYPE-STATEMENT TYPING OF REAL. 08670308
C 08680308
IVTNUM = 63 08690308
IF (ICZERO) 30630, 0630, 30630 08700308
0630 CONTINUE 08710308
RVCOMP = 10.0 08720308
RVCOMP = MAX1(2.3, 3.1, 4.4) / 5 08730308
RVCORR = 0.0 08740308
40630 IF (RVCOMP + .00005) 20630, 10630, 40631 08750308
40631 IF (RVCOMP - .00005) 10630, 10630, 20630 08760308
30630 IVDELE = IVDELE + 1 08770308
WRITE (I02,80000) IVTNUM 08780308
IF (ICZERO) 10630, 0641, 20630 08790308
10630 IVPASS = IVPASS + 1 08800308
WRITE (I02,80002) IVTNUM 08810308
GO TO 0641 08820308
20630 IVFAIL = IVFAIL + 1 08830308
WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 08840308
0641 CONTINUE 08850308
C 08860308
C 08870308
C WRITE OUT TEST SUMMARY 08880308
C 08890308
WRITE (I02,90004) 08900308
WRITE (I02,90014) 08910308
WRITE (I02,90004) 08920308
WRITE (I02,90000) 08930308
WRITE (I02,90004) 08940308
WRITE (I02,90020) IVFAIL 08950308
WRITE (I02,90022) IVPASS 08960308
WRITE (I02,90024) IVDELE 08970308
STOP 08980308
90001 FORMAT (" ",24X,"FM308") 08990308
90000 FORMAT (" ",20X,"END OF PROGRAM FM308" ) 09000308
C 09010308
C FORMATS FOR TEST DETAIL LINES 09020308
C 09030308
80000 FORMAT (" ",4X,I5,6X,"DELETED") 09040308
80002 FORMAT (" ",4X,I5,7X,"PASS") 09050308
80010 FORMAT (" ",4X,I5,7X,"FAIL",10X,I6,9X,I6) 09060308
80012 FORMAT (" ",4X,I5,7X,"FAIL",4X,E12.5,3X,E12.5) 09070308
80018 FORMAT (" ",4X,I5,7X,"FAIL",2X,A14,1X,A14) 09080308
C 09090308
C FORMAT STATEMENTS FOR PAGE HEADERS 09100308
C 09110308
90002 FORMAT ("1") 09120308
90004 FORMAT (" ") 09130308
90006 FORMAT (" ",10X,"FORTRAN COMPILER VALIDATION SYSTEM" ) 09140308
90008 FORMAT (" ",21X,"VERSION 2.1" ) 09150308
90010 FORMAT (" ",8X,"FOR OFFICIAL USE ONLY - COPYRIGHT 1978" ) 09160308
90012 FORMAT (" ",5X,"TEST",5X,"PASS/FAIL",5X,"COMPUTED",8X,"CORRECT") 09170308
90014 FORMAT (" ",5X,"----------------------------------------------" ) 09180308
90016 FORMAT (" ",18X,"SUBSET LEVEL TEST" ) 09190308
C 09200308
C FORMAT STATEMENTS FOR RUN SUMMARY 09210308
C 09220308
90020 FORMAT (" ",19X,I5," TESTS FAILED" ) 09230308
90022 FORMAT (" ",19X,I5," TESTS PASSED" ) 09240308
90024 FORMAT (" ",19X,I5," TESTS DELETED" ) 09250308
END 09260308
REAL FUNCTION FF309(RDON01) 00010309
C THIS FUNCTION IS USED TO INCREMENT THE ARGUMENT VALUE BY 00020309
C ONE AND RETURN THE RESULT AS THE FUNCTION VALUE. 00030309
FF309 = RDON01 + 1.0 00040309
RETURN 00050309
END 00060309
REAL FUNCTION FF310 ( ) 00010310
C THIS FUNCTION IS USED TO INCREMENT BY ONE A VALUE PASSED 00020310
C TO THE FUNCTION THROUGH COMMON. 00030310
COMMON RVCN01 00040310
FF310 = RVCN01 + 1.0 00050310
RETURN 00060310
END 00070310