blob: 0f5a992a9faa7ee49a7a7ccc8a27356392498c15 [file] [log] [blame]
PROGRAM FM056
C 00010056
C COMMENT SECTION 00020056
C 00030056
C FM056 00040056
C 00050056
C FM056 IS A MAIN WHICH TESTS THE ARGUMENT PASSING LINKAGE OF 00060056
C A 2 LEVEL NESTED SUBROUTINE AND AN EXTERNAL FUNCTION REFERENCE. 00070056
C THE MAIN PROGRAM FM056 CALLS SUBROUTINE FS057 PASSING ONE 00080056
C ARGUMENT. SUBROUTINE FS057 CALLS SUBROUTINE FS058 PASSING TWO 00090056
C ARGUMENTS. SUBROUTINE FS058 REFERENCES EXTERNAL FUNCTION FF059 00100056
C PASSING 3 ARGUMENTS. FUNCTION FF059 ADDS THE VALUES OF THE 3 00110056
C ARGUMENTS TOGETHER. SUBROUTINE FS057 AND FS058 THEN MERELY 00120056
C RETURN THE RESULT TO FM056 IN THE FIRST ARGUMENT. 00130056
C 00140056
C THE VALUES OF THE ARGUMENTS THAT ARE PASSED TO EACH 00150056
C SUBPROGRAM AND FUNCTION, AND RETURNED TO THE CALLING OR 00160056
C REFERENCING PROGRAM ARE SAVED IN AN INTEGER ARRAY. FM056 THEN 00170056
C USES THESE VALUES TO TEST THE COMPILER'S ARGUMENT PASSING 00180056
C CAPABILITIES. 00190056
C 00200056
C REFERENCES 00210056
C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, 00220056
C X3.9-1978 00230056
C 00240056
C SECTION 15.6.2, SUBROUTINE REFERENCE 00250056
COMMON IACN11 (12) 00260056
C 00270056
C ********************************************************** 00280056
C 00290056
C A COMPILER VALIDATION SYSTEM FOR THE FORTRAN LANGUAGE 00300056
C BASED ON SPECIFICATIONS AS DEFINED IN AMERICAN NATIONAL STANDARD 00310056
C PROGRAMMING LANGUAGE FORTRAN X3.9-1978, HAS BEEN DEVELOPED BY THE 00320056
C FEDERAL COBOL COMPILER TESTING SERVICE. THE FORTRAN COMPILER 00330056
C VALIDATION SYSTEM (FCVS) CONSISTS OF AUDIT ROUTINES, THEIR RELATED00340056
C DATA, AND AN EXECUTIVE SYSTEM. EACH AUDIT ROUTINE IS A FORTRAN 00350056
C PROGRAM, SUBPROGRAM OR FUNCTION WHICH INCLUDES TESTS OF SPECIFIC 00360056
C LANGUAGE ELEMENTS AND SUPPORTING PROCEDURES INDICATING THE RESULT 00370056
C OF EXECUTING THESE TESTS. 00380056
C 00390056
C THIS PARTICULAR PROGRAM/SUBPROGRAM/FUNCTION CONTAINS FEATURES 00400056
C FOUND ONLY IN THE SUBSET AS DEFINED IN X3.9-1978. 00410056
C 00420056
C SUGGESTIONS AND COMMENTS SHOULD BE FORWARDED TO - 00430056
C 00440056
C NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY 00450056
C SOFTWARE STANDARDS VALIDATION GROUP 00460056
C BUILDING 225 RM A266 00470056
C GAITHERSBURG, MD 20899 00480056
C ********************************************************** 00490056
C 00500056
C 00510056
C 00520056
C INITIALIZATION SECTION 00530056
C 00540056
C INITIALIZE CONSTANTS 00550056
C ************** 00560056
C I01 CONTAINS THE LOGICAL UNIT NUMBER FOR THE CARD READER. 00570056
I01 = 5 00580056
C I02 CONTAINS THE LOGICAL UNIT NUMBER FOR THE PRINTER. 00590056
I02 = 6 00600056
C SYSTEM ENVIRONMENT SECTION 00610056
C 00620056
CX010 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-010 CONTROL CARD. 00630056
C THE CX010 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I01 = 5 00640056
C (UNIT NUMBER FOR CARD READER). 00650056
CX011 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-011 CONTROL CARD. 00660056
C THE CX011 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL 00670056
C FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX010 ABOVE. 00680056
C 00690056
CX020 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-020 CONTROL CARD. 00700056
C THE CX020 CARD IS FOR OVERRIDING THE PROGRAM DEFAULT I02 = 6 00710056
C (UNIT NUMBER FOR PRINTER). 00720056
CX021 THIS CARD IS REPLACED BY CONTENTS OF FEXEC X-021 CONTROL CARD. 00730056
C THE CX021 CARD IS FOR SYSTEMS WHICH REQUIRE ADDITIONAL 00740056
C FORTRAN STATEMENTS FOR FILES ASSOCIATED WITH CX020 ABOVE. 00750056
C 00760056
IVPASS=0 00770056
IVFAIL=0 00780056
IVDELE=0 00790056
ICZERO=0 00800056
C 00810056
C WRITE PAGE HEADERS 00820056
WRITE (I02,90000) 00830056
WRITE (I02,90001) 00840056
WRITE (I02,90002) 00850056
WRITE (I02, 90002) 00860056
WRITE (I02,90003) 00870056
WRITE (I02,90002) 00880056
WRITE (I02,90004) 00890056
WRITE (I02,90002) 00900056
WRITE (I02,90011) 00910056
WRITE (I02,90002) 00920056
WRITE (I02,90002) 00930056
WRITE (I02,90005) 00940056
WRITE (I02,90006) 00950056
WRITE (I02,90002) 00960056
C 00970056
C TEST SECTION 00980056
C 00990056
C SUBROUTINE SUBPROGRAM 01000056
C 01010056
IVON01 = 5 01020056
CALL FS057 (IVON01) 01030056
IACN11 (12) = IVON01 01040056
IVTNUM = 430 01050056
C 01060056
C **** TEST 430 **** 01070056
C 01080056
C TEST 430 TESTS THE VALUE OF THE ARGUMENT RECEIVED BY FS057 FROM 01090056
C A FM056 CALL TO FS057 01100056
C 01110056
IF (ICZERO) 34300, 4300, 34300 01120056
4300 CONTINUE 01130056
IVCOMP = IACN11 (1) 01140056
GO TO 44300 01150056
34300 IVDELE = IVDELE + 1 01160056
WRITE (I02,80003) IVTNUM 01170056
IF (ICZERO) 44300, 4311, 44300 01180056
44300 IF (IVCOMP - 5) 24300,14300,24300 01190056
14300 IVPASS = IVPASS + 1 01200056
WRITE (I02,80001) IVTNUM 01210056
GO TO 4311 01220056
24300 IVFAIL = IVFAIL + 1 01230056
IVCORR = 5 01240056
WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 01250056
4311 CONTINUE 01260056
IVTNUM = 431 01270056
C 01280056
C **** TEST 431 **** 01290056
C 01300056
C TEST 431 TESTS THE VALUE OF THE SECOND ARGUMENT THAT WAS PASSED 01310056
C FROM A FS057 CALL TO FS058 01320056
C 01330056
C 01340056
IF (ICZERO) 34310, 4310, 34310 01350056
4310 CONTINUE 01360056
IVCOMP = IACN11 (2) 01370056
GO TO 44310 01380056
34310 IVDELE = IVDELE + 1 01390056
WRITE (I02,80003) IVTNUM 01400056
IF (ICZERO) 44310, 4321, 44310 01410056
44310 IF (IVCOMP - 4) 24310,14310,24310 01420056
14310 IVPASS = IVPASS + 1 01430056
WRITE (I02,80001) IVTNUM 01440056
GO TO 4321 01450056
24310 IVFAIL = IVFAIL + 1 01460056
IVCORR = 4 01470056
WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 01480056
4321 CONTINUE 01490056
IVTNUM = 432 01500056
C 01510056
C **** TEST 432 **** 01520056
C 01530056
C TEST 432 TESTS THE VALUE OF THE FIRST ARGUMENT RECEIVED BY FS058 01540056
C FROM A FS057 CALL TO FS058 01550056
C 01560056
C 01570056
IF (ICZERO) 34320, 4320, 34320 01580056
4320 CONTINUE 01590056
IVCOMP = IACN11 (3) 01600056
GO TO 44320 01610056
34320 IVDELE = IVDELE + 1 01620056
WRITE (I02,80003) IVTNUM 01630056
IF (ICZERO) 44320, 4331, 44320 01640056
44320 IF (IVCOMP - 5) 24320,14320,24320 01650056
14320 IVPASS = IVPASS + 1 01660056
WRITE (I02,80001) IVTNUM 01670056
GO TO 4331 01680056
24320 IVFAIL = IVFAIL + 1 01690056
IVCORR = 5 01700056
WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 01710056
4331 CONTINUE 01720056
IVTNUM = 433 01730056
C 01740056
C **** TEST 433 **** 01750056
C 01760056
C TEST 433 TESTS THE VALUE OF THE SECOND ARGUMENT RECEIVED BY FS058 01770056
C FROM A FS057 CALL TO FS058 01780056
C 01790056
C 01800056
IF (ICZERO) 34330, 4330, 34330 01810056
4330 CONTINUE 01820056
IVCOMP = IACN11 (4) 01830056
GO TO 44330 01840056
34330 IVDELE = IVDELE + 1 01850056
WRITE (I02,80003) IVTNUM 01860056
IF (ICZERO) 44330, 4341, 44330 01870056
44330 IF (IVCOMP - 4) 24330,14330,24330 01880056
14330 IVPASS = IVPASS + 1 01890056
WRITE (I02,80001) IVTNUM 01900056
GO TO 4341 01910056
24330 IVFAIL = IVFAIL + 1 01920056
IVCORR = 4 01930056
WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 01940056
4341 CONTINUE 01950056
IVTNUM = 434 01960056
C 01970056
C **** TEST 434 **** 01980056
C 01990056
C TEST 434 TESTS THE VALUE OF THE THIRD ARGUMENT THAT WAS PASSED 02000056
C FROM A FS058 REFERENCE OF FUNCTION FF059 02010056
C 02020056
C 02030056
IF (ICZERO) 34340, 4340, 34340 02040056
4340 CONTINUE 02050056
IVCOMP = IACN11 (5) 02060056
GO TO 44340 02070056
34340 IVDELE = IVDELE + 1 02080056
WRITE (I02,80003) IVTNUM 02090056
IF (ICZERO) 44340, 4351, 44340 02100056
44340 IF (IVCOMP - 3) 24340,14340,24340 02110056
14340 IVPASS = IVPASS + 1 02120056
WRITE (I02,80001) IVTNUM 02130056
GO TO 4351 02140056
24340 IVFAIL = IVFAIL + 1 02150056
IVCORR = 3 02160056
WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 02170056
4351 CONTINUE 02180056
IVTNUM = 435 02190056
C 02200056
C **** TEST 435 **** 02210056
C 02220056
C TEST 435 TESTS THE VALUE OF THE FIRST ARGUMENT RECEIVED BY FF059 02230056
C FROM A FS058 REFERENCE OF FUNCTION FF059 02240056
C 02250056
C 02260056
IF (ICZERO) 34350, 4350, 34350 02270056
4350 CONTINUE 02280056
IVCOMP = IACN11 (6) 02290056
GO TO 44350 02300056
34350 IVDELE = IVDELE + 1 02310056
WRITE (I02,80003) IVTNUM 02320056
IF (ICZERO) 44350, 4361, 44350 02330056
44350 IF (IVCOMP - 5) 24350,14350,24350 02340056
14350 IVPASS = IVPASS + 1 02350056
WRITE (I02,80001) IVTNUM 02360056
GO TO 4361 02370056
24350 IVFAIL = IVFAIL + 1 02380056
IVCORR = 5 02390056
WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 02400056
4361 CONTINUE 02410056
IVTNUM = 436 02420056
C 02430056
C **** TEST 436 **** 02440056
C 02450056
C TEST 436 TESTS THE VALUE OF THE SECOND ARGUMENT RECEIVED BY FF059 02460056
C FROM A FS058 REFERENCE OF FUNCTION FF059 02470056
C 02480056
C 02490056
IF (ICZERO) 34360, 4360, 34360 02500056
4360 CONTINUE 02510056
IVCOMP = IACN11 (7) 02520056
GO TO 44360 02530056
34360 IVDELE = IVDELE + 1 02540056
WRITE (I02,80003) IVTNUM 02550056
IF (ICZERO) 44360, 4371, 44360 02560056
44360 IF (IVCOMP - 4) 24360,14360,24360 02570056
14360 IVPASS = IVPASS + 1 02580056
WRITE (I02,80001) IVTNUM 02590056
GO TO 4371 02600056
24360 IVFAIL = IVFAIL + 1 02610056
IVCORR = 4 02620056
WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 02630056
4371 CONTINUE 02640056
IVTNUM = 437 02650056
C 02660056
C **** TEST 437 **** 02670056
C 02680056
C TEST 437 TESTS THE VALUE OF THE THIRD ARGUMENT RECEIVED BY FF059 02690056
C FROM A FS058 REFERENCE OF FUNCTION FF059 02700056
C 02710056
C 02720056
IF (ICZERO) 34370, 4370, 34370 02730056
4370 CONTINUE 02740056
IVCOMP = IACN11 (8) 02750056
GO TO 44370 02760056
34370 IVDELE = IVDELE + 1 02770056
WRITE (I02,80003) IVTNUM 02780056
IF (ICZERO) 44370, 4381, 44370 02790056
44370 IF (IVCOMP - 3) 24370,14370,24370 02800056
14370 IVPASS = IVPASS + 1 02810056
WRITE (I02,80001) IVTNUM 02820056
GO TO 4381 02830056
24370 IVFAIL = IVFAIL + 1 02840056
IVCORR = 3 02850056
WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 02860056
4381 CONTINUE 02870056
IVTNUM = 438 02880056
C 02890056
C **** TEST 438 **** 02900056
C 02910056
C TEST 438 TESTS THE VALUE OF THE FUNCTION DETERMINED BY FF059 02920056
C 02930056
C 02940056
IF (ICZERO) 34380, 4380, 34380 02950056
4380 CONTINUE 02960056
IVCOMP = IACN11 (9) 02970056
GO TO 44380 02980056
34380 IVDELE = IVDELE + 1 02990056
WRITE (I02,80003) IVTNUM 03000056
IF (ICZERO) 44380, 4391, 44380 03010056
44380 IF (IVCOMP - 12) 24380,14380,24380 03020056
14380 IVPASS = IVPASS + 1 03030056
WRITE (I02,80001) IVTNUM 03040056
GO TO 4391 03050056
24380 IVFAIL = IVFAIL + 1 03060056
IVCORR = 12 03070056
WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 03080056
4391 CONTINUE 03090056
IVTNUM = 439 03100056
C 03110056
C **** TEST 439 **** 03120056
C 03130056
C TEST 439 TESTS THE VALUE OF THE FUNCTION RETURNED TO FS058 BY 03140056
C FF059 03150056
C 03160056
C 03170056
IF (ICZERO) 34390, 4390, 34390 03180056
4390 CONTINUE 03190056
IVCOMP = IACN11 (10) 03200056
GO TO 44390 03210056
34390 IVDELE = IVDELE + 1 03220056
WRITE (I02,80003) IVTNUM 03230056
IF (ICZERO) 44390, 4401, 44390 03240056
44390 IF (IVCOMP - 12) 24390,14390,24390 03250056
14390 IVPASS = IVPASS + 1 03260056
WRITE (I02,80001) IVTNUM 03270056
GO TO 4401 03280056
24390 IVFAIL = IVFAIL + 1 03290056
IVCORR = 12 03300056
WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 03310056
4401 CONTINUE 03320056
IVTNUM = 440 03330056
C 03340056
C **** TEST 440 **** 03350056
C 03360056
C TEST 440 TESTS THE VALUE OF THE FIRST ARGUMENT RETURNED TO FS057 03370056
C BY FS058 03380056
C 03390056
IF (ICZERO) 34400, 4400, 34400 03400056
4400 CONTINUE 03410056
IVCOMP = IACN11 (11) 03420056
GO TO 44400 03430056
34400 IVDELE = IVDELE + 1 03440056
WRITE (I02,80003) IVTNUM 03450056
IF (ICZERO) 44400, 4411, 44400 03460056
44400 IF (IVCOMP - 12) 24400,14400,24400 03470056
14400 IVPASS = IVPASS + 1 03480056
WRITE (I02,80001) IVTNUM 03490056
GO TO 4411 03500056
24400 IVFAIL = IVFAIL + 1 03510056
IVCORR = 12 03520056
WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 03530056
4411 CONTINUE 03540056
IVTNUM = 441 03550056
C 03560056
C **** TEST 441 **** 03570056
C 03580056
C TEST 441 TESTS THE VALUE OF THE FIRST ARGUMENT RETURNED TO FM056 03590056
C BY FS057 03600056
C 03610056
C 03620056
IF (ICZERO) 34410, 4410, 34410 03630056
4410 CONTINUE 03640056
IVCOMP = IACN11 (12) 03650056
GO TO 44410 03660056
34410 IVDELE = IVDELE + 1 03670056
WRITE (I02,80003) IVTNUM 03680056
IF (ICZERO) 44410, 4421, 44410 03690056
44410 IF (IVCOMP - 12) 24410,14410,24410 03700056
14410 IVPASS = IVPASS + 1 03710056
WRITE (I02,80001) IVTNUM 03720056
GO TO 4421 03730056
24410 IVFAIL = IVFAIL + 1 03740056
IVCORR = 12 03750056
WRITE (I02,80004) IVTNUM, IVCOMP ,IVCORR 03760056
4421 CONTINUE 03770056
C 03780056
C WRITE PAGE FOOTINGS AND RUN SUMMARIES 03790056
99999 CONTINUE 03800056
WRITE (I02,90002) 03810056
WRITE (I02,90006) 03820056
WRITE (I02,90002) 03830056
WRITE (I02,90002) 03840056
WRITE (I02,90007) 03850056
WRITE (I02,90002) 03860056
WRITE (I02,90008) IVFAIL 03870056
WRITE (I02,90009) IVPASS 03880056
WRITE (I02,90010) IVDELE 03890056
C 03900056
C 03910056
C TERMINATE ROUTINE EXECUTION 03920056
STOP 03930056
C 03940056
C FORMAT STATEMENTS FOR PAGE HEADERS 03950056
90000 FORMAT ("1") 03960056
90002 FORMAT (" ") 03970056
90001 FORMAT (" ",10X,"FORTRAN COMPILER VALIDATION SYSTEM" ) 03980056
90003 FORMAT (" ",21X,"VERSION 2.1" ) 03990056
90004 FORMAT (" ",10X,"FOR OFFICIAL USE ONLY - COPYRIGHT 1978" ) 04000056
90005 FORMAT (" ",5X,"TEST",5X,"PASS/FAIL", 5X,"COMPUTED",8X,"CORRECT") 04010056
90006 FORMAT (" ",5X,"----------------------------------------------" ) 04020056
90011 FORMAT (" ",18X,"SUBSET LEVEL TEST" ) 04030056
C 04040056
C FORMAT STATEMENTS FOR RUN SUMMARIES 04050056
90008 FORMAT (" ",15X,I5," ERRORS ENCOUNTERED" ) 04060056
90009 FORMAT (" ",15X,I5," TESTS PASSED" ) 04070056
90010 FORMAT (" ",15X,I5," TESTS DELETED" ) 04080056
C 04090056
C FORMAT STATEMENTS FOR TEST RESULTS 04100056
80001 FORMAT (" ",4X,I5,7X,"PASS") 04110056
80002 FORMAT (" ",4X,I5,7X,"FAIL") 04120056
80003 FORMAT (" ",4X,I5,7X,"DELETED") 04130056
80004 FORMAT (" ",4X,I5,7X,"FAIL",10X,I6,9X,I6) 04140056
80005 FORMAT (" ",4X,I5,7X,"FAIL",4X,E12.5,3X,E12.5) 04150056
C 04160056
90007 FORMAT (" ",20X,"END OF PROGRAM FM056" ) 04170056
END 04180056
C 00010057
C COMMENT SECTION 00020057
C 00030057
C FS057 00040057
C 00050057
C THIS SUBROUTINE IS CALLED BY THE MAIN PROGRAM FM056. THE 00060057
C SINGLE ARGUMENT PASSED FROM FM056 ALONG WITH A SECOND PARAMETER 00070057
C CREATED IN FS057 ARE THEN PASSED VIA A CALL TO SUBROUTINE FS058. 00080057
C A RESULT FROM AN ARITHMETIC OPERATION IS RETURNED FROM FS058 IN 00090057
C THE FIRST ARGUMENT. FS057 ACCEPTS THIS RESULT AND RETURNS CONTROL00100057
C TO FM056 WITHOUT ANY ADDITIONAL PROCESSING. 00110057
C 00120057
C THE VALUES OF THE ARGUMENTS THAT ARE PASSED FROM FM056 TO 00130057
C FS057 AND RETURNED ARE SAVED IN AN INTEGER ARRAY FOR LATER 00140057
C VERIFICATION BY THE MAIN PROGRAM. 00150057
C 00160057
C REFERENCES 00170057
C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, 00180057
C X3.9-1978 00190057
C 00200057
C SECTION 15.6, SUBROUTINES 00210057
C SECTION 15.6.2, SUBROUTINE REFERENCE 00220057
C SECTION 15.8, RETURN STATEMENT 00230057
C 00240057
C TEST SECTION 00250057
C 00260057
C SUBROUTINE SUBPROGRAM 00270057
C 00280057
SUBROUTINE FS057 (IVON01) 00290057
COMMON IACN11 (12) 00300057
IACN11 (1) = IVON01 00310057
IVON02 = 4 00320057
IACN11 (2) = IVON02 00330057
CALL FS058 (IVON01,IVON02) 00340057
IACN11 (11) = IVON01 00350057
RETURN 00360057
END 00370057
C 00010058
C COMMENT SECTION 00020058
C 00030058
C FS058 00040058
C 00050058
C THIS SUBROUTINE IS CALLED BY SUBROUTINE FS057. THE TWO 00060058
C ARGUMENTS PASSED FROM FS057 ALONG WITH A THIRD PARAMETER CREATED 00070058
C IN FS058 ARE THEN PASSED TO FUNCTION FF059 WHERE THEY ARE USED IN 00080058
C AN ARITHMETIC OPERATION. FS058 THEN SAVES THE RESULT OF THIS 00090058
C OPERATION IN THE FIRST ARGUMENT AND RETURNS CONTROL TO FS057 00100058
C WITHOUT ANY ADDITIONAL PROCESSING. 00110058
C 00120058
C THE VALUES OF THE ARGUMENTS THAT ARE PASSED FROM FS057 TO 00130058
C FS058 AND RETURNED ARE SAVED IN AN INTEGER ARRAY FOR LATER 00140058
C VERIFICATION BY THE MAIN PROGRAM. 00150058
C 00160058
C REFERENCES 00170058
C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, 00180058
C X3.9-1978 00190058
C 00200058
C SECTION 15.5.2, REFERENCING EXTERNAL FUNCTIONS 00210058
C SECTION 15.6, SUBROUTINES 00220058
C SECTION 15.8, RETURN STATEMENT 00230058
C 00240058
C TEST SECTION 00250058
C 00260058
C SUBROUTINE SUBPROGRAM 00270058
C 00280058
SUBROUTINE FS058 (IVON01,IVON02) 00290058
COMMON IACN11 (12) 00300058
INTEGER FF059 00310058
IVON03 = 3 00320058
IACN11 (3) = IVON01 00330058
IACN11 (4) = IVON02 00340058
IACN11 (5) = IVON03 00350058
IVON01 = FF059 (IVON01,IVON02,IVON03) 00360058
IACN11 (10) = IVON01 00370058
RETURN 00380058
END 00390058
C 00010059
C COMMENT SECTION 00020059
C 00030059
C FF059 00040059
C 00050059
C THIS EXTERNAL FUNCTION IS REFERENCED WITHIN SUBROUTINE FS058.00060059
C THE THREE ARGUMENTS THAT ARE PASSED ARE SIMPLY ADDED TOGETHER AND 00070059
C THE RESULT SUBSTITUTED FOR THE ORIGINAL REFERENCE. CONTROL IS 00080059
C THEN RETURNED TO FS058. 00090059
C 00100059
C THE VALUES OF THE ARGUMENTS THAT ARE PASSED FROM FS058 TO 00110059
C FF059 AND THE RESULT THAT IS RETURNED ARE SAVED IN AN INTEGER 00120059
C ARRAY FOR LATER VERIFICATION BY THE MAIN PROGRAM. 00130059
C 00140059
C REFERENCES 00150059
C AMERICAN NATIONAL STANDARD PROGRAMMING LANGUAGE FORTRAN, 00160059
C X3.9-1978 00170059
C 00180059
C SECTION 15.5.1, FUNCTION SUBPROGRAM AND FUNCTION STATEMENT 00190059
C SECTION 15.8, RETURN STATEMENT 00200059
C TEST SECTION 00210059
C 00220059
C FUNCTION SUBPROGRAM 00230059
C 00240059
INTEGER FUNCTION FF059 (IVON01,IVON02,IVON03) 00250059
COMMON IACN11 (12) 00260059
IACN11 (6) = IVON01 00270059
IACN11 (7) = IVON02 00280059
IACN11 (8) = IVON03 00290059
FF059 = IVON01 + IVON02 + IVON03 00300059
IACN11 (9) = IVON01 + IVON02 + IVON03 00310059
RETURN 00320059
END 00330059