next up previous contents
Next: Scope of Names Up: Program Units Previous: Scoping Rules

 

Host Association - Global Data

Consider,

    PROGRAM CalculatePay
     IMPLICIT NONE
     REAL :: Pay, Tax, Delta
     INTEGER :: NumberCalcsDone = 0
     Pay = ...;  Tax = ... ; Delta = ...
     CALL PrintPay(Pay,Tax)
     Tax = NewTax(Tax,Delta)
      ....
    CONTAINS
     SUBROUTINE PrintPay(Pay,Tax)
      REAL, INTENT(IN) :: Pay, Tax
      REAL :: TaxPaid
       TaxPaid = Pay * Tax
       PRINT*, TaxPaid
       NumberCalcsDone = NumberCalcsDone + 1
     END SUBROUTINE PrintPay
     REAL FUNCTION NewTax(Tax,Delta)
      REAL, INTENT(IN) :: Tax, Delta
       NewTax =  Tax + Delta*Tax
       NumberCalcsDone = NumberCalcsDone + 1
     END FUNCTION NewTax
    END PROGRAM CalculatePay

Here, NumberCalcsDone is a global variable. It is available in all procedures by host association.

For more information, click here gif

Now try this question gif


next up previous contents
Next: Scope of Names Up: Program Units Previous: Scoping Rules

©University of Liverpool, 1997
Wed May 28 23:37:18 BST 1997
Not for commercial use.