FM056.f Source File


Contents

Source Code


Source Code

      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