blob: 616042cbdd065172857406a9335dd45d82d94fc2 [file] [log] [blame]
PROGRAM FM328 00010328
C 00020328
C 00030328
C THIS ROUTINE TEST SUBSET LEVEL FEATURES OF 00040328
C SUBROUTINE SUBPROGRAMS. TESTS ARE DESIGNED TO CHECK THE 00050328
C ASSOCIATION OF ALL PERMISSIBLE FORMS OF ACTUAL ARGUMENTS WITH 00060328
C VARIABLE, ARRAY AND PROCEDURE NAME DUMMY ARGUMENTS. THESE 00070328
C INCLUDE, 00080328
C 00090328
C 1) ACTUAL ARGUMENTS ASSOCIATED TO VARIABLE NAME DUMMY 00100328
C ARGUMENT INCLUDE, 00110328
C 00120328
C A) CONSTANT 00130328
C B) VARIABLE NAME 00140328
C C) ARRAY ELEMENT NAME 00150328
C D) EXPRESSION INVOLVING OPERATORS 00160328
C E) EXPRESSION ENCLOSED IN PARENTHESES 00170328
C F) INTRINSIC FUNCTION REFERENCE 00180328
C G) EXTERNAL FUNCTION REFERENCE 00190328
C H) STATEMENT FUNCTION REFERENCE 00200328
C I) ACTUAL ARGUMENT NAME SAME AS DUMMY ARGUMENT NAME 00210328
C 00220328
C 2) ACTUAL ARGUMENTS ASSOCIATED TO ARRAY NAME DUMMY 00230328
C ARGUMENT INCLUDE, 00240328
C 00250328
C A) ARRAY NAME 00260328
C B) ARRAY ELEMENT NAME 00270328
C 00280328
C 3) ACTUAL ARGUMENTS ASSOCIATED TO PROCEDURE NAME DUMMY 00290328
C ARGUMENT INCLUDE, 00300328
C 00310328
C A) EXTERNAL FUNCTION NAME 00320328
C B) INTRINSIC FUNCTION NAME 00330328
C C) SUBROUTINE NAME 00340328
C 00350328
C ALL DATA PASSED TO THE REFERENCED SUBPROGRAMS ARE PASSED VIA 00360328
C ARGUMENT VALUES, WHILE ALL RESULTS RETURNED TO FM328 ARE 00370328
C RETURNED VIA VARIABLES IN NAMED COMMON. SUBSET LEVEL ROUTINES 00380328
C FM026, FM050 AND FM056 ALSO TEST THE USE OF SUBROUTINES. 00390328
C 00400328
C REFERENCES. 00410328
C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, 00420328
C X3.9-1978 00430328
C 00440328
C SECTION 2.8, DUMMY ARGUMENTS 00450328
C SECTION 5.1.2.2, DUMMY ARRAY DECLARATOR 00460328
C SECTION 5.5, DUMMY AND ACTUAL ARRAYS 00470328
C SECTION 8.1, DIMENSION STATEMENT 00480328
C SECTION 8.3, COMMON STATEMENT 00490328
C SECTION 8.4, TYPE-STATEMENT 00500328
C SECTION 8.7, EXTERNAL STATEMENT 00510328
C SECTION 8.8, INTRINSIC STATEMENT 00520328
C SECTION 15.2, REFERENCING A FUNCTION 00530328
C SECTION 15.3, INTRINSIC FUNCTIONS 00540328
C SECTION 15.5, EXTERNAL FUNCTIONS 00550328
C SECTION 15.6, SUBROUTINES 00560328
C SECTION 15.9, ARGUMENTS AND COMMON BLOCKS 00570328
C 00580328
C 00590328
C ******************************************************************00600328
C A COMPILER VALIDATION SYSTEM FOR THE FORTRAN LANGUAGE 00610328
C BASED ON SPECIFICATIONS AS DEFINED IN AMERICAN STANDARD FORTRAN 00620328
C X3.9-1978, HAS BEEN DEVELOPED BY THE DEPARTMENT OF THE NAVY. THE 00630328
C FORTRAN COMPILER VALIDATION SYSTEM (FCVS) CONSISTS OF AUDIT 00640328
C ROUTINES, THEIR RELATED DATA, AND AN EXECUTIVE SYSTEM. EACH AUDIT00650328
C ROUTINE IS A FORTRAN PROGRAM OR SUBPROGRAM WHICH INCLUDES TESTS 00660328
C OF SPECIFIC LANGUAGE ELEMENTS AND SUPPORTING PROCEDURES INDICATING00670328
C THE RESULT OF EXECUTING THESE TESTS. 00680328
C 00690328
C THIS PARTICULAR PROGRAM OR SUBPROGRAM CONTAINS ONLY FEATURES 00700328
C FOUND IN THE SUBSET LEVEL OF THE STANDARD. 00710328
C 00720328
C SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO 00730328
C NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY 00740328
C SOFTWARE STANDARDS VALIDATION GROUP 00750328
C BUILDING 225 RM A266 00760328
C GAITHERSBURG, MD 20899 00770328
C ******************************************************************00780328
C 00790328
C 00800328
IMPLICIT LOGICAL (L) 00810328
IMPLICIT CHARACTER*14 (C) 00820328
C 00830328
INTEGER IATN11(2,3) 00840328
REAL RATN11(3,4) 00850328
INTEGER FF330 00860328
DIMENSION IADN11(4), IADN12(4) 00870328
DIMENSION RADN11(4), RADN12(4) 00880328
DIMENSION LADN11(4) 00890328
COMMON /BLK1/IVCN01, RVCN01, LVCN01 00900328
COMMON IACN11(6), RACN11(10) 00910328
EXTERNAL FF330, FS335 00920328
INTRINSIC ABS, IABS, NINT 00930328
IFOS01(IDON04) = IDON04 + 1 00940328
RFOS01(RDON04) = RDON04 + 1.0 00950328
LFOS01(LDON04) = .NOT. LDON04 00960328
C 00970328
C 00980328
C 00990328
C INITIALIZATION SECTION. 01000328
C 01010328
C INITIALIZE CONSTANTS 01020328
C ******************** 01030328
C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER 01040328
I01 = 5 01050328
C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER 01060328
I02 = 6 01070328
C SYSTEM ENVIRONMENT SECTION 01080328
C 01090328
CX010 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-010 CONTROL CARD.01100328
C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 01110328
C (UNIT NUMBER FOR CARD READER). 01120328
CX011 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-011 CONTROL CARD01130328
C THE CX011 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL 01140328
C FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX010 ABOVE. 01150328
C 01160328
CX020 THIS CARD IS PEPLACED BY CONTENTS OF FEXEC X-020 CONTROL CARD.01170328
C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02 = 6 01180328
C (UNIT NUMBER FOR PRINTER). 01190328
CX021 THIS CARD IS PEPLACED BY CONTENTS OF FEXEC X-021 CONTROL CARD.01200328
C THE CX021 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL 01210328
C FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX020 ABOVE. 01220328
C 01230328
IVPASS = 0 01240328
IVFAIL = 0 01250328
IVDELE = 0 01260328
ICZERO = 0 01270328
C 01280328
C WRITE OUT PAGE HEADERS 01290328
C 01300328
WRITE (I02,90002) 01310328
WRITE (I02,90006) 01320328
WRITE (I02,90008) 01330328
WRITE (I02,90004) 01340328
WRITE (I02,90010) 01350328
WRITE (I02,90004) 01360328
WRITE (I02,90016) 01370328
WRITE (I02,90001) 01380328
WRITE (I02,90004) 01390328
WRITE (I02,90012) 01400328
WRITE (I02,90014) 01410328
WRITE (I02,90004) 01420328
C 01430328
C 01440328
C TEST 001 THROUGH TEST 013 ARE DESIGNED TO ASSOCIATE VARIOUS FORMS 01450328
C OF ACTUAL ARGUMENTS TO VARIABLE NAMES USED AS SUBROUTINE 01460328
C DUMMY ARGUMENTS. INTEGER, REAL AND LOGICAL DUMMY ARGUMENTS ARE 01470328
C TESTED. 01480328
C 01490328
C 01500328
C **** FCVS PROGRAM 328 - TEST 001 **** 01510328
C 01520328
C USE INTEGER, REAL AND LOGICAL CONSTANTS AS ACTUAL ARGUMENTS. 01530328
C 01540328
IVTNUM = 1 01550328
IF (ICZERO) 30010, 0010, 30010 01560328
0010 CONTINUE 01570328
CALL FS329(3, 3.0, .FALSE.) 01580328
IVCOMP = 1 01590328
IF (IVCN01 .EQ. 4) IVCOMP = IVCOMP * 2 01600328
IF (RVCN01 .GE. 3.9995 .AND. RVCN01 .LE. 4.0005) IVCOMP = IVCOMP*301610328
IF (LVCN01) IVCOMP = IVCOMP * 5 01620328
IVCORR = 30 01630328
40010 IF (IVCOMP - 30) 20010, 10010, 20010 01640328
30010 IVDELE = IVDELE + 1 01650328
WRITE (I02,80000) IVTNUM 01660328
IF (ICZERO) 10010, 0021, 20010 01670328
10010 IVPASS = IVPASS + 1 01680328
WRITE (I02,80002) IVTNUM 01690328
GO TO 0021 01700328
20010 IVFAIL = IVFAIL + 1 01710328
WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 01720328
0021 CONTINUE 01730328
C 01740328
C **** FCVS PROGRAM 328 - TEST 002 **** 01750328
C 01760328
C USE INTEGER, REAL AND LOGICAL VARIABLES AS ACTUAL ARGUMENTS. 01770328
C 01780328
IVTNUM = 2 01790328
IF (ICZERO) 30020, 0020, 30020 01800328
0020 CONTINUE 01810328
IVON01 = 7 01820328
RVON01 = 7.0 01830328
LVON01 = .TRUE. 01840328
CALL FS329(IVON01, RVON01, LVON01) 01850328
IVCOMP = 1 01860328
IF (IVCN01 .EQ. 8) IVCOMP =IVCOMP * 2 01870328
IF (RVCN01 .GE. 7.9995 .AND. RVCN01 .LE. 8.0005) IVCOMP = IVCOMP*301880328
IF (.NOT. LVCN01) IVCOMP = IVCOMP * 5 01890328
IVCORR = 30 01900328
40020 IF (IVCOMP - 30) 20020, 10020, 20020 01910328
30020 IVDELE = IVDELE + 1 01920328
WRITE (I02,80000) IVTNUM 01930328
IF (ICZERO) 10020, 0031, 20020 01940328
10020 IVPASS = IVPASS + 1 01950328
WRITE (I02,80002) IVTNUM 01960328
GO TO 0031 01970328
20020 IVFAIL = IVFAIL + 1 01980328
WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 01990328
0031 CONTINUE 02000328
C 02010328
C **** FCVS PROGRAM 328 - TEST 003 **** 02020328
C 02030328
C USE INTEGER, REAL AND LOGICAL ARRAY ELEMENT NAMES AS ACTUAL 02040328
C ARGUMENTS. 02050328
C 02060328
IVTNUM = 3 02070328
IF (ICZERO) 30030, 0030, 30030 02080328
0030 CONTINUE 02090328
IADN11(2) = 2 02100328
RADN11(4) = 4.0 02110328
LADN11(1) = .FALSE. 02120328
CALL FS329(IADN11(2), RADN11(4), LADN11(1)) 02130328
IVCOMP = 1 02140328
IF (IVCN01 .EQ. 3) IVCOMP = IVCOMP * 2 02150328
IF (RVCN01 .GE. 4.9995 .AND. RVCN01 .LE. 5.0005) IVCOMP = IVCOMP*302160328
IF (LVCN01) IVCOMP = IVCOMP * 5 02170328
IVCORR = 30 02180328
40030 IF (IVCOMP - 30) 20030, 10030, 20030 02190328
30030 IVDELE = IVDELE + 1 02200328
WRITE (I02,80000) IVTNUM 02210328
IF (ICZERO) 10030, 0041, 20030 02220328
10030 IVPASS = IVPASS + 1 02230328
WRITE (I02,80002) IVTNUM 02240328
GO TO 0041 02250328
20030 IVFAIL = IVFAIL + 1 02260328
WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 02270328
0041 CONTINUE 02280328
C 02290328
C **** FCVS PROGRAM 328 - TEST 004 **** 02300328
C 02310328
C INTEGER AND REAL EXPRESSIONS INVOLVING OPERATORS AS ACTUAL 02320328
C ARGUMENTS. 02330328
C 02340328
IVTNUM = 4 02350328
IF (ICZERO) 30040, 0040, 30040 02360328
0040 CONTINUE 02370328
IVON02 = 2 02380328
IVON03 = 3 02390328
RVON02 = 2. 02400328
RVON03 = 1.2 02410328
CALL FS329(IVON02 + 3 * IVON03 - 7, RVON02 *RVON03 / .6, .TRUE.) 02420328
IVCOMP = 1 02430328
IF (IVCN01 .EQ. 5) IVCOMP = IVCOMP * 2 02440328
IF (RVCN01 .GE. 4.9995 .AND. RVCN01 .LE. 5.0005) IVCOMP = IVCOMP*302450328
IVCORR = 6 02460328
40040 IF (IVCOMP - 6) 20040, 10040, 20040 02470328
30040 IVDELE = IVDELE + 1 02480328
WRITE (I02,80000) IVTNUM 02490328
IF (ICZERO) 10040, 0051, 20040 02500328
10040 IVPASS = IVPASS + 1 02510328
WRITE (I02,80002) IVTNUM 02520328
GO TO 0051 02530328
20040 IVFAIL = IVFAIL + 1 02540328
WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 02550328
0051 CONTINUE 02560328
C 02570328
C **** FCVS PROGRAM 328 - TEST 005 **** 02580328
C 02590328
C REAL EXPRESSION INVOLVING INTEGER AND REAL PRIMARIES AND OPERATORS02600328
C AS ACTUAL ARGUMENT. 02610328
C 02620328
IVTNUM = 5 02630328
IF (ICZERO) 30050, 0050, 30050 02640328
0050 CONTINUE 02650328
RVCOMP = 0.0 02660328
IVON01 = 2 02670328
RADN11(2) = 2.5 02680328
CALL FS329(1, IVON01**3 * (RADN11(2) - 1) + 2.0, .TRUE.) 02690328
RVCOMP = RVCN01 02700328
RVCORR = 15.0 02710328
40050 IF (RVCOMP - 14.995) 20050, 10050, 40051 02720328
40051 IF (RVCOMP - 15.005) 10050, 10050, 20050 02730328
30050 IVDELE = IVDELE + 1 02740328
WRITE (I02,80000) IVTNUM 02750328
IF (ICZERO) 10050, 0061, 20050 02760328
10050 IVPASS = IVPASS + 1 02770328
WRITE (I02,80002) IVTNUM 02780328
GO TO 0061 02790328
20050 IVFAIL = IVFAIL + 1 02800328
WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 02810328
0061 CONTINUE 02820328
C 02830328
C **** FCVS PROGRAM 328 - TEST 006 **** 02840328
C 02850328
C LOGICAL EXPRESSION INVOLVING LOGICAL OPERATOR (.NOT.) AS ACTUAL 02860328
C ARGUMENT. 02870328
C 02880328
IVTNUM = 6 02890328
IF (ICZERO) 30060, 0060, 30060 02900328
0060 CONTINUE 02910328
LVON01 = .TRUE. 02920328
CALL FS329(1, 1.0, .NOT. LVON01) 02930328
IVCOMP = 0 02940328
IF (LVCN01) IVCOMP = 1 02950328
IVCORR = 1 02960328
40060 IF (IVCOMP - 1) 20060, 10060, 20060 02970328
30060 IVDELE = IVDELE + 1 02980328
WRITE (I02,80000) IVTNUM 02990328
IF (ICZERO) 10060, 0071, 20060 03000328
10060 IVPASS = IVPASS + 1 03010328
WRITE (I02,80002) IVTNUM 03020328
GO TO 0071 03030328
20060 IVFAIL = IVFAIL + 1 03040328
WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 03050328
0071 CONTINUE 03060328
C 03070328
C **** FCVS PROGRAM 328 - TEST 007 **** 03080328
C 03090328
C LOGICAL EXPRESSION INVOLVING LOGICAL OPERATOR (.OR.) AS ACTIVE 03100328
C ARGUMENT. 03110328
C 03120328
IVTNUM = 7 03130328
IF (ICZERO) 30070, 0070, 30070 03140328
0070 CONTINUE 03150328
LVON01 = .TRUE. 03160328
LVON02 = .FALSE. 03170328
CALL FS329(1, 1.0, LVON01 .OR. LVON02) 03180328
IVCOMP = 0 03190328
IF (.NOT. LVCN01) IVCOMP = 1 03200328
IVCORR = 1 03210328
40070 IF (IVCOMP - 1) 20070, 10070, 20070 03220328
30070 IVDELE = IVDELE + 1 03230328
WRITE (I02,80000) IVTNUM 03240328
IF (ICZERO) 10070, 0081, 20070 03250328
10070 IVPASS = IVPASS + 1 03260328
WRITE (I02,80002) IVTNUM 03270328
GO TO 0081 03280328
20070 IVFAIL = IVFAIL + 1 03290328
WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 03300328
0081 CONTINUE 03310328
C 03320328
C **** FCVS PROGRAM 328 - TEST 008 **** 03330328
C 03340328
C LOGICAL EXPRESSION INVOLVING LOGICAL OPERATOR (.AND.) AS ACTUAL 03350328
C ARGUMENT. 03360328
C 03370328
IVTNUM = 8 03380328
IF (ICZERO) 30080, 0080, 30080 03390328
0080 CONTINUE 03400328
LVON01 = .FALSE. 03410328
LVON02 = .TRUE. 03420328
CALL FS329(1, 1.0, LVON01 .AND. LVON02) 03430328
IVCOMP = 0 03440328
IF (LVCN01) IVCOMP = 1 03450328
IVCORR = 1 03460328
40080 IF (IVCOMP - 1) 20080, 10080, 20080 03470328
30080 IVDELE = IVDELE + 1 03480328
WRITE (I02,80000) IVTNUM 03490328
IF (ICZERO) 10080, 0091, 20080 03500328
10080 IVPASS = IVPASS + 1 03510328
WRITE (I02,80002) IVTNUM 03520328
GO TO 0091 03530328
20080 IVFAIL = IVFAIL + 1 03540328
WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 03550328
0091 CONTINUE 03560328
C 03570328
C **** FCVS PROGRAM 328 - TEST 009 **** 03580328
C 03590328
C EXPRESSION ENCLOSED IN PARENTHESES AS ACTUAL ARGUMENT. 03600328
C 03610328
IVTNUM = 9 03620328
IF (ICZERO) 30090, 0090, 30090 03630328
0090 CONTINUE 03640328
IVCOMP = 0 03650328
IVON01 = 6 03660328
CALL FS329((IVON01 + 3), 1.0, .TRUE.) 03670328
IVCOMP = IVCN01 03680328
IVCORR = 10 03690328
40090 IF (IVCOMP - 10) 20090, 10090, 20090 03700328
30090 IVDELE = IVDELE + 1 03710328
WRITE (I02,80000) IVTNUM 03720328
IF (ICZERO) 10090, 0101, 20090 03730328
10090 IVPASS = IVPASS + 1 03740328
WRITE (I02,80002) IVTNUM 03750328
GO TO 0101 03760328
20090 IVFAIL = IVFAIL + 1 03770328
WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 03780328
0101 CONTINUE 03790328
C 03800328
C **** FCVS PROGRAM 328 - TEST 010 **** 03810328
C 03820328
C INTEGER AND REAL INTRINSIC FUNCTION REFERENCES AS ACTUAL ARGUMENTS03830328
C 03840328
IVTNUM = 10 03850328
IF (ICZERO) 30100, 0100, 30100 03860328
0100 CONTINUE 03870328
RVON01 = 4.7 03880328
RVON02 = -5.2 03890328
CALL FS329(NINT(RVON01), ABS(RVON02), .TRUE.) 03900328
IVCOMP = 1 03910328
IF (IVCN01 .EQ. 6) IVCOMP = IVCOMP * 2 03920328
IF (RVCN01 .GE. 6.1995 .AND. RVCN01 .LE. 6.2005) IVCOMP = IVCOMP*303930328
IVCORR = 6 03940328
40100 IF (IVCOMP - 6) 20100, 10100, 20100 03950328
30100 IVDELE = IVDELE + 1 03960328
WRITE (I02,80000) IVTNUM 03970328
IF (ICZERO) 10100, 0111, 20100 03980328
10100 IVPASS = IVPASS + 1 03990328
WRITE (I02,80002) IVTNUM 04000328
GO TO 0111 04010328
20100 IVFAIL = IVFAIL + 1 04020328
WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 04030328
0111 CONTINUE 04040328
C 04050328
C **** FCVS PROGRAM 328 - TEST 011 **** 04060328
C 04070328
C EXTERNAL FUNCTION REFERENCE AS ACTUAL ARGUMENT. 04080328
C 04090328
IVTNUM = 11 04100328
IF (ICZERO) 30110, 0110, 30110 04110328
0110 CONTINUE 04120328
IVCOMP = 0 04130328
IVON01 = 4 04140328
CALL FS329(FF330(IVON01), 1.0, .TRUE.) 04150328
IVCOMP = IVCN01 04160328
IVCORR = 6 04170328
40110 IF (IVCOMP - 6) 20110, 10110, 20110 04180328
30110 IVDELE = IVDELE + 1 04190328
WRITE (I02,80000) IVTNUM 04200328
IF (ICZERO) 10110, 0121, 20110 04210328
10110 IVPASS = IVPASS + 1 04220328
WRITE (I02,80002) IVTNUM 04230328
GO TO 0121 04240328
20110 IVFAIL = IVFAIL + 1 04250328
WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 04260328
0121 CONTINUE 04270328
C 04280328
C **** FCVS PROGRAM 328 - TEST 012 **** 04290328
C 04300328
C USE ACTUAL ARGUMENT NAMES WHICH ARE IDENTICAL TO THE DUMMY 04310328
C ARGUMENT NAMES. 04320328
C 04330328
IVTNUM = 12 04340328
IF (ICZERO) 30120, 0120, 30120 04350328
0120 CONTINUE 04360328
IDON01 = 10 04370328
RDON01 = 10.0 04380328
LDON01 = .FALSE. 04390328
CALL FS329(IDON01, RDON01, LDON01) 04400328
IVCOMP = 1 04410328
IF (IVCN01 .EQ. 11) IVCOMP = IVCOMP * 2 04420328
IF (RVCN01 .GE. 10.995 .AND. RVCN01 .LE. 11.005) IVCOMP = IVCOMP*304430328
IF (LVCN01) IVCOMP = IVCOMP * 5 04440328
IVCORR = 30 04450328
40120 IF (IVCOMP - 30) 20120, 10120, 20120 04460328
30120 IVDELE = IVDELE + 1 04470328
WRITE (I02,80000) IVTNUM 04480328
IF (ICZERO) 10120, 0131, 20120 04490328
10120 IVPASS = IVPASS + 1 04500328
WRITE (I02,80002) IVTNUM 04510328
GO TO 0131 04520328
20120 IVFAIL = IVFAIL + 1 04530328
WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 04540328
0131 CONTINUE 04550328
C 04560328
C **** FCVS PROGRAM 328 - TEST 013 **** 04570328
C 04580328
C USE INTEGER, REAL AND LOGICAL STATEMENT FUNCTION REFERENCES AS 04590328
C ARGUMENT NAMES. 04600328
C 04610328
IVTNUM = 13 04620328
IF (ICZERO) 30130, 0130, 30130 04630328
0130 CONTINUE 04640328
RVON01 = 5.0 04650328
CALL FS329(IFOS01(4), RFOS01(RVON01), LFOS01(.TRUE.)) 04660328
IVCOMP = 1 04670328
IF (IVCN01 .EQ. 6) IVCOMP = IVCOMP * 2 04680328
IF (RVCN01 .GE. 6.9995 .AND. RVCN01 .LE. 7.0005) IVCOMP = IVCOMP*304690328
IF (LVCN01) IVCOMP = IVCOMP * 5 04700328
IVCORR = 30 04710328
40130 IF (IVCOMP - 30) 20130, 10130, 20130 04720328
30130 IVDELE = IVDELE + 1 04730328
WRITE (I02,80000) IVTNUM 04740328
IF (ICZERO) 10130, 0141, 20130 04750328
10130 IVPASS = IVPASS + 1 04760328
WRITE (I02,80002) IVTNUM 04770328
GO TO 0141 04780328
20130 IVFAIL = IVFAIL + 1 04790328
WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 04800328
0141 CONTINUE 04810328
C 04820328
C TEST 014 THROUGH TEST 019 ARE DESIGNED TO ASSOCIATE VARIOUS FORMS 04830328
C OF ACTUAL ARGUMENTS TO ARRAY NAMES USED AS SUBROUTINE DUMMY 04840328
C ARGUMENTS. 04850328
C 04860328
C 04870328
C **** FCVS PROGRAM 328 - TEST 014 **** 04880328
C 04890328
C USE AN ARRAY NAME AS AN ACTUAL ARGUMENT IN WHICH THE ACTUAL 04900328
C ARGUMENT ARRAY DECLARATOR IS IDENTICAL TO THE ASSOCIATED DUMMY 04910328
C ARGUMENT ARRAY DECLARATOR. 04920328
C 04930328
IVTNUM = 14 04940328
IF (ICZERO) 30140, 0140, 30140 04950328
0140 CONTINUE 04960328
IVCOMP = 0 04970328
IADN12(1) = 1 04980328
IADN12(2) = 10 04990328
IADN12(3) = 100 05000328
IADN12(4) = 1000 05010328
CALL FS331(IADN12) 05020328
IVCOMP = IVCN01 05030328
IVCORR = 1111 05040328
40140 IF (IVCOMP - 1111) 20140, 10140, 20140 05050328
30140 IVDELE = IVDELE + 1 05060328
WRITE (I02,80000) IVTNUM 05070328
IF (ICZERO) 10140, 0151, 20140 05080328
10140 IVPASS = IVPASS + 1 05090328
WRITE (I02,80002) IVTNUM 05100328
GO TO 0151 05110328
20140 IVFAIL = IVFAIL + 1 05120328
WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 05130328
0151 CONTINUE 05140328
C 05150328
C **** FCVS PROGRAM 328 - TEST 015 **** 05160328
C 05170328
C USE AN ARRAY NAME AS AN ACTUAL ARGUMENT IN WHICH THE SIZE OF THE 05180328
C ACTUAL ARGUMENT ARRAY IS LARGER THAN THE SIZE OF THE ASSOCIATED 05190328
C DUMMY ARGUMENT ARRAY. 05200328
C 05210328
IVTNUM = 15 05220328
IF (ICZERO) 30150, 0150, 30150 05230328
0150 CONTINUE 05240328
IVCOMP = 0 05250328
IACN11(1) = 1 05260328
IACN11(2) = 10 05270328
IACN11(3) = 100 05280328
IACN11(4) = 1000 05290328
IACN11(5) = 10000 05300328
CALL FS331(IACN11) 05310328
IVCOMP = IVCN01 05320328
IVCORR = 1111 05330328
40150 IF (IVCOMP - 1111) 20150, 10150, 20150 05340328
30150 IVDELE = IVDELE + 1 05350328
WRITE (I02,80000) IVTNUM 05360328
IF (ICZERO) 10150, 0161, 20150 05370328
10150 IVPASS = IVPASS + 1 05380328
WRITE (I02,80002) IVTNUM 05390328
GO TO 0161 05400328
20150 IVFAIL = IVFAIL + 1 05410328
WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 05420328
0161 CONTINUE 05430328
C 05440328
C **** FCVS PROGRAM 328 - TEST 016 **** 05450328
C 05460328
C USE AN ARRAY NAME AS AN ACTUAL ARGUMENT IN WHICH THE ACTUAL 05470328
C ARGUMENT ARRAY DECLARATOR IS LARGER AND HAS MORE SUBSCRIPT 05480328
C EXPRESSIONS THAN THE ASSOCIATED DUMMY ARGUMENT ARRAY DECLARATOR. 05490328
C 05500328
IVTNUM = 16 05510328
IF (ICZERO) 30160, 0160, 30160 05520328
0160 CONTINUE 05530328
IVCOMP = 0 05540328
IATN11(1,1) = 1 05550328
IATN11(2,1) = 10 05560328
IATN11(1,2) = 100 05570328
IATN11(2,2) = 1000 05580328
IATN11(1,3) = 10000 05590328
CALL FS331(IATN11) 05600328
IVCOMP = IVCN01 05610328
IVCORR = 1111 05620328
40160 IF (IVCOMP - 1111) 20160, 10160, 20160 05630328
30160 IVDELE = IVDELE + 1 05640328
WRITE (I02,80000) IVTNUM 05650328
IF (ICZERO) 10160, 0171, 20160 05660328
10160 IVPASS = IVPASS + 1 05670328
WRITE (I02,80002) IVTNUM 05680328
GO TO 0171 05690328
20160 IVFAIL = IVFAIL + 1 05700328
WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 05710328
0171 CONTINUE 05720328
C 05730328
C **** FCVS PROGRAM 328 - TEST 017 **** 05740328
C 05750328
C USE AN ARRAY ELEMENT NAME AS AN ACTUAL ARGUMENT IN WHICH THE 05760328
C ASSOCIATED ACTUAL AND DUMMY ARRAY DECLARATORS ARE IDENTICAL. ALL 05770328
C ARRAY ELEMENTS OF THE ACTUAL ARRAY SHOULD BE PASSED TO THE 05780328
C DUMMY ARRAY OF THE SUBROUTINE. 05790328
C 05800328
IVTNUM = 17 05810328
IF (ICZERO) 30170, 0170, 30170 05820328
0170 CONTINUE 05830328
RVCOMP = 0.0 05840328
RADN12(1) = 1. 05850328
RADN12(2) = 10. 05860328
RADN12(3) = 100. 05870328
RADN12(4) = 1000. 05880328
CALL FS332(RADN12(1)) 05890328
RVCOMP = RVCN01 05900328
RVCORR = 1111. 05910328
40170 IF (RVCOMP - 1110.5) 20170, 10170, 40171 05920328
40171 IF (RVCOMP - 1111.5) 10170, 10170, 20170 05930328
30170 IVDELE = IVDELE + 1 05940328
WRITE (I02,80000) IVTNUM 05950328
IF (ICZERO) 10170, 0181, 20170 05960328
10170 IVPASS = IVPASS + 1 05970328
WRITE (I02,80002) IVTNUM 05980328
GO TO 0181 05990328
20170 IVFAIL = IVFAIL + 1 06000328
WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 06010328
0181 CONTINUE 06020328
C 06030328
C **** FCVS PROGRAM 328 - TEST 018 **** 06040328
C 06050328
C USE AN ARRAY ELEMENT NAME AS AN ACTUAL ARGUMENT IN WHICH THE SIZE 06060328
C OF THE ACTUAL ARGUMENT ARRAY IS LARGER AND HAS FEWER SUBSCRIPT 06070328
C EXPRESSIONS THAN THE ASSOCIATED DUMMY ARRAY. ONLY ACTUAL ARRAY 06080328
C ELEMENTS WITH SUBSCRIPT VALUES OF 5, 6, 7 AND 8 ( OUT OF A 06090328
C POSSIBLE 10 ELEMENTS) SHOULD BE PASSED TO THE DUMMY ARRAY OF 06100328
C THE SUBROUTINE. 06110328
C 06120328
IVTNUM = 18 06130328
IF (ICZERO) 30180, 0180, 30180 06140328
0180 CONTINUE 06150328
RVCOMP = 0.0 06160328
RACN11(4) = 1. 06170328
RACN11(5) = 10. 06180328
RACN11(6) = 100. 06190328
RACN11(7) = 1000. 06200328
RACN11(8) = 10000. 06210328
RACN11(9) = 100000. 06220328
CALL FS332(RACN11(5)) 06230328
RVCOMP = RVCN01 06240328
RVCORR = 11110. 06250328
40180 IF (RVCOMP - 11105.) 20180, 10180, 40181 06260328
40181 IF (RVCOMP - 11115.) 10180, 10180, 20180 06270328
30180 IVDELE = IVDELE + 1 06280328
WRITE (I02,80000) IVTNUM 06290328
IF (ICZERO) 10180, 0191, 20180 06300328
10180 IVPASS = IVPASS + 1 06310328
WRITE (I02,80002) IVTNUM 06320328
GO TO 0191 06330328
20180 IVFAIL = IVFAIL + 1 06340328
WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 06350328
0191 CONTINUE 06360328
C 06370328
C **** FCVS PROGRAM 328 - TEST 019 **** 06380328
C 06390328
C USE AN ARRAY ELEMENT NAME AS AN ACTUAL ARGUMENT IN WHICH THE SIZE 06400328
C OF THE ACTUAL ARGUMENT ARRAY IS LARGE THAN THE SIZE OF THE 06410328
C ASSOCIATED DUMMY ARGUMENT ARRAY. ONLY ACTUAL ARRAY ELEMENTS WITH 06420328
C SUBSCRIPT VALUES OF 9, 10, 11 AND 12 (OUT OF A POSSIBLE 12 06430328
C ELEMENTS) SHOULD BE PASSED TO THE DUMMY ARRAY OF THE SUBROUTINE. 06440328
C 06450328
IVTNUM = 19 06460328
IF (ICZERO) 30190, 0190, 30190 06470328
0190 CONTINUE 06480328
RVCOMP = 0.0 06490328
RATN11(2,3) = 1. 06500328
RATN11(3,3) = 10. 06510328
RATN11(1,4) = 100. 06520328
RATN11(2,4) = 1000. 06530328
RATN11(3,4) = 10000. 06540328
CALL FS332(RATN11(3,3)) 06550328
RVCOMP = RVCN01 06560328
RVCORR = 11110. 06570328
40190 IF (RVCOMP - 11105.) 20190, 10190, 40191 06580328
40191 IF (RVCOMP - 11115.) 10190, 10190, 20190 06590328
30190 IVDELE = IVDELE + 1 06600328
WRITE (I02,80000) IVTNUM 06610328
IF (ICZERO) 10190, 0201, 20190 06620328
10190 IVPASS = IVPASS + 1 06630328
WRITE (I02,80002) IVTNUM 06640328
GO TO 0201 06650328
20190 IVFAIL = IVFAIL + 1 06660328
WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 06670328
0201 CONTINUE 06680328
C 06690328
C TEST 020 THROUGH TEST 022 ARE DESIGNED TO ASSOCIATE VARIOUS FORMS 06700328
C OF ACTUAL ARGUMENTS TO PROCEDURES USED AS SUBROUTINE DUMMY 06710328
C ARGUMENTS. ACTUAL ARGUMENTS TESTED INCLUDE THE NAMES OF AN 06720328
C EXTERNAL FUNCTION, AN INTRINSIC FUNCTION AND A SUBROUTINE. 06730328
C 06740328
C 06750328
C **** FCVS PROGRAM 328 - TEST 020 **** 06760328
C 06770328
C USE AN EXTERNAL FUNCTION NAME AS AN ACTUAL ARGUMENT. 06780328
C 06790328
IVTNUM = 20 06800328
IF (ICZERO) 30200, 0200, 30200 06810328
0200 CONTINUE 06820328
IVCOMP = 0 06830328
CALL FS333(FF330, 5) 06840328
IVCOMP = IVCN01 06850328
IVCORR = 7 06860328
40200 IF (IVCOMP - 7) 20200, 10200, 20200 06870328
30200 IVDELE = IVDELE + 1 06880328
WRITE (I02,80000) IVTNUM 06890328
IF (ICZERO) 10200, 0211, 20200 06900328
10200 IVPASS = IVPASS + 1 06910328
WRITE (I02,80002) IVTNUM 06920328
GO TO 0211 06930328
20200 IVFAIL = IVFAIL + 1 06940328
WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 06950328
0211 CONTINUE 06960328
C 06970328
C **** FCVS PROGRAM 328 - TEST 021 **** 06980328
C 06990328
C USE AN INTRINSIC FUNCTION NAME AS AN ACTUAL ARGUMENT. 07000328
C 07010328
IVTNUM = 21 07020328
IF (ICZERO) 30210, 0210, 30210 07030328
0210 CONTINUE 07040328
IVCOMP = 0 07050328
CALL FS333(IABS, -7) 07060328
IVCOMP = IVCN01 07070328
IVCORR = 8 07080328
40210 IF (IVCOMP - 8) 20210, 10210, 20210 07090328
30210 IVDELE = IVDELE + 1 07100328
WRITE (I02,80000) IVTNUM 07110328
IF (ICZERO) 10210, 0221, 20210 07120328
10210 IVPASS = IVPASS + 1 07130328
WRITE (I02,80002) IVTNUM 07140328
GO TO 0221 07150328
20210 IVFAIL = IVFAIL + 1 07160328
WRITE (I02,80010) IVTNUM, IVCOMP, IVCORR 07170328
0221 CONTINUE 07180328
C 07190328
C **** FCVS PROGRAM 328 - TEST 022 **** 07200328
C 07210328
C USE A SUBROUTINE NAME AS AN ACTUAL ARGUMENT. 07220328
C 07230328
IVTNUM = 22 07240328
IF (ICZERO) 30220, 0220, 30220 07250328
0220 CONTINUE 07260328
RVCOMP = 0.0 07270328
RVON01 = 3.5 07280328
CALL FS334(FS335, RVON01) 07290328
RVCOMP = RVCN01 07300328
RVCORR = 5.5 07310328
40220 IF (RVCOMP - 5.4995) 20220, 10220, 40221 07320328
40221 IF (RVCOMP - 5.5005) 10220, 10220, 20220 07330328
30220 IVDELE = IVDELE + 1 07340328
WRITE (I02,80000) IVTNUM 07350328
IF (ICZERO) 10220, 0231, 20220 07360328
10220 IVPASS = IVPASS + 1 07370328
WRITE (I02,80002) IVTNUM 07380328
GO TO 0231 07390328
20220 IVFAIL = IVFAIL + 1 07400328
WRITE (I02,80012) IVTNUM, RVCOMP, RVCORR 07410328
0231 CONTINUE 07420328
C 07430328
C 07440328
C WRITE OUT TEST SUMMARY 07450328
C 07460328
WRITE (I02,90004) 07470328
WRITE (I02,90014) 07480328
WRITE (I02,90004) 07490328
WRITE (I02,90000) 07500328
WRITE (I02,90004) 07510328
WRITE (I02,90020) IVFAIL 07520328
WRITE (I02,90022) IVPASS 07530328
WRITE (I02,90024) IVDELE 07540328
STOP 07550328
90001 FORMAT (" ",24X,"FM328") 07560328
90000 FORMAT (" ",20X,"END OF PROGRAM FM328" ) 07570328
C 07580328
C FORMATS FOR TEST DETAIL LINES 07590328
C 07600328
80000 FORMAT (" ",4X,I5,6X,"DELETED") 07610328
80002 FORMAT (" ",4X,I5,7X,"PASS") 07620328
80010 FORMAT (" ",4X,I5,7X,"FAIL",10X,I6,9X,I6) 07630328
80012 FORMAT (" ",4X,I5,7X,"FAIL",4X,E12.5,3X,E12.5) 07640328
80018 FORMAT (" ",4X,I5,7X,"FAIL",2X,A14,1X,A14) 07650328
C 07660328
C FORMAT STATEMENTS FOR PAGE HEADERS 07670328
C 07680328
90002 FORMAT ("1") 07690328
90004 FORMAT (" ") 07700328
90006 FORMAT (" ",10X,"FORTRAN COMPILER VALIDATION SYSTEM" ) 07710328
90008 FORMAT (" ",21X,"VERSION 2.1" ) 07720328
90010 FORMAT (" ",8X,"FOR OFFICIAL USE ONLY - COPYRIGHT 1978" ) 07730328
90012 FORMAT (" ",5X,"TEST",5X,"PASS/FAIL",5X,"COMPUTED",8X,"CORRECT") 07740328
90014 FORMAT (" ",5X,"----------------------------------------------" ) 07750328
90016 FORMAT (" ",18X,"SUBSET LEVEL TEST" ) 07760328
C 07770328
C FORMAT STATEMENTS FOR RUN SUMMARY 07780328
C 07790328
90020 FORMAT (" ",19X,I5," TESTS FAILED" ) 07800328
90022 FORMAT (" ",19X,I5," TESTS PASSED" ) 07810328
90024 FORMAT (" ",19X,I5," TESTS DELETED" ) 07820328
END 07830328
SUBROUTINE FS329(IDON01, RDON01, LDON01) 00010329
C THIS SUBROUTINE IS USED BY VARIOUS TESTS IN THE MAIN PROGRAM 00020329
C FM328 TO TEST THE DIFFERENT FORMS OF INTEGER, REAL AND LOGICAL 00030329
C ACTUAL ARGUMENTS THAT CAN BE ASSOCIATED WITH INTEGER, REAL AND 00040329
C LOGICAL DUMMY ARGUMENTS. THIS ROUTINE INCREMENTS THE INTEGER 00050329
C AND REAL ARGUMENTS BY ONE AND NEGATES THE LOGICAL ARGUMENT. ALL 00060329
C RESULTS ARE THEN RETURNED TO FM328 VIA VARIABLES IN NAMED COMMON. 00070329
IMPLICIT LOGICAL (L) 00080329
COMMON /BLK1/ IVCN01, RVCN01, LVCN01 00090329
IVCN01 = IDON01 + 1 00100329
RVCN01 = RDON01 + 1.0 00110329
LVCN01 = .NOT. LDON01 00120329
RETURN 00130329
END 00140329
INTEGER FUNCTION FF330(IDON02) 00010330
C THIS FUNCTION IS USED BY TEST 011 OF THE MAIN PROGRAM FM328 TO00020330
C TEST THE USE OF AN EXTERNAL FUNCTION REFERENCE AS AN ACTUAL 00030330
C ARGUMENT WHEN THE ASSOCIATED DUMMY ARGUMENT IS A VARIABLE NAME. 00040330
C THIS FUNCTION IS ALSO REFERENCED FROM SUBROUTINE FS333 VIA A 00050330
C DUMMY PROCEDURE NAME REFERENCE. THIS FUNCTION INCREMENTS THE 00060330
C ARGUMENT VALUE BY ONE AND RETURNS THE RESULT AS THE FUNCTION 00070330
C VALUE. 00080330
FF330 = IDON02 + 1 00090330
RETURN 00100330
END 00110330
SUBROUTINE FS331(IDDN11) 00010331
C THIS SUBROUTINE IS USED BY VARIOUS TESTS IN THE MAIN PROGRAM 00020331
C FM328 TO TEST THE USE OF AN ARRAY NAME AS AN ACTUAL ARGUMENT WHEN 00030331
C THE ASSOCIATED DUMMY ARGUMENT IS AN ARRAY NAME. THIS ROUTINE 00040331
C ADDS TOGETHER THE FOUR ELEMENTS IN THE DUMMY ARGUMENT ARRAY AND 00050331
C RETURNS THE RESULTS VIA A VARIABLE IN NAMED COMMON. 00060331
LOGICAL LVCN01 00070331
DIMENSION IDDN11(4) 00080331
COMMON /BLK1/IVCN01, RVCN01, LVCN01 00090331
IVCN01 = IDDN11(1) + IDDN11(2) + IDDN11(3) + IDDN11(4) 00100331
RETURN 00110331
END 00120331
SUBROUTINE FS332(RDTN21) 00010332
C THIS SUBROUTINE IS USED BY VARIOUS TESTS IN THE MAIN PROGRAM 00020332
C FM328 TO TEST THE USE OF AN ARRAY ELEMENT NAME AS AN ACTUAL 00030332
C ARGUMENT WHEN THE ASSOCIATED DUMMY ARGUMENT IS AN ARRAY NAME. 00040332
C THIS ROUTINE ADDS TOGETHER THE FOUR ELEMENTS IN THE DUMMY 00050332
C ARGUMENT ARRAY AND RETURNS THE RESULT VIA A VARIABLE IN NAMED 00060332
C COMMON. 00070332
IMPLICIT LOGICAL (L) 00080332
REAL RDTN21(2,2) 00090332
COMMON /BLK1/IVCN01, RVCN01, LVCN01 00100332
RVCN01 = RDTN21(1,1) + RDTN21(2,1) + RDTN21(1,2) + RDTN21(2,2) 00110332
RETURN 00120332
END 00130332
SUBROUTINE FS333(NINT, IDON03) 00010333
C THIS SUBROUTINE IS USED BY TESTS 020 AND 021 OF THE MAIN 00020333
C PROGRAM FM328 TO TEST THE USE OF EXTERNAL AND INTRINSIC FUNCTION 00030333
C NAMES AS ACTUAL ARGUMENTS WHEN THE ASSOCIATED DUMMY ARGUMENT IS A 00040333
C PROCEDURE NAME. THIS SUBROUTINE REFERENCES THE EXTERNAL FUNCTION 00050333
C FF330 OR THE INTRINSIC FUNCTION IABS DEPENDING ON THE ACTUAL 00060333
C ARGUMENT PASSED TO IT. THE RESULT OF THIS FUNCTION REFERENCE IS 00070333
C THEN INCREMENTED BY ONE AND THE RESULT IS RETURNED TO FS328 VIA 00080333
C A VARIABLE IN NAMED COMMON. 00090333
IMPLICIT LOGICAL (L) 00100333
COMMON /BLK1/IVCN01, RVCN01, LVCN01 00110333
IVCN01 = NINT(IDON03) + 1 00120333
C **** THE NAME NINT IS A DUMMY ARGUMENT NAME 00130333
C AND NOT AN INTRINSIC FUNCTION REFERENCE **** 00140333
RETURN 00150333
END 00160333
SUBROUTINE FS334(IDON06, RDON03) 00010334
C THIS SUBROUTINE IS USED BY TEST 022 OF THE MAIN PROGRAM 00020334
C FM328 TO TEST THE USE OF A SUBROUTINE NAME AS AN ACTUAL ARGUMENT 00030334
C WHEN THE ASSOCIATED DUMMY ARGUMENT IS A PROCEDURE NAME. THIS 00040334
C SUBROUTINE CALLS THE SUBROUTINE FS335 VIA A DUMMY PROCEDURE NAME 00050334
C REFERENCE. THE ARGUMENT VALUE WHICH IS RETURNED FROM THE FS335 00060334
C REFERENCE IS THEN INCREMENTED BY ONE AND RETURNED TO FM328 VIA 00070334
C A VARIABLE IN NAMED COMMON. 00080334
IMPLICIT LOGICAL (L) 00090334
COMMON /BLK1/IVCN01, RVCN01, LVCN01 00100334
CALL IDON06(RDON03) 00110334
RVCN01 = RDON03 + 1.0 00120334
RETURN 00130334
END 00140334
SUBROUTINE FS335(RDON04) 00010335
C THIS SUBROUITNE IS USED BY TEST 022 OF THE MAIN PROGRAM FM32800020335
C TO TEST THE USE OF A SUBROUTINE NAME AS AN ACTUAL ARGUMENT WHEN 00030335
C THE ASSOCIATED DUMMY ARGUMENT IS A PROCEDURE NAME. FS335 IS 00040335
C CALLED FROM SUBROUTINE FS334 VIA A DUMMY PROCEDURE NAME REFERENCE.00050335
C THIS ROUTINE INCREMENTS THE ARGUMENT VALUE BY ONE. 00060335
RDON04 = RDON04 + 1.0 00070335
RETURN 00080335
END 00090335