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