Examples
Example 5
Consider, for example, a program that consists of three files: main.f90, code.f90, anddata.f90
. The main program unit is in main.f90, as follows.
Example 6 Example
PROGRAM keep_stats
!stats_code contains module procedures for operating
!on statistical database
USE stats_code INTEGER :: n
! print prompt, using nonadvancing I/O
WRITE (*, FMT='(A)', ADVANCE='NO') 'Enter an integer '// & '(hint: 77 is current average): '
READ *, n
IF (n == 0) THEN
PRINT *, 'But not that one.'
ELSE
CALL update_db(n)
IF (n >= get_avg()) THEN ! get_avg is in stats_code PRINT *, 'Average or better.'
ELSE
PRINT *, 'Below average.'
END IF
END IF
END PROGRAM keep_stats
The first specification statement (USE) in the main program indicates that it uses the module stats_code. This module is defined in code.f90, as follows:
Example 7 Example
!stats_code: a (partial!) package of module procedures for
!performing statistical operations
MODULE stats_code
!shared data to be used by procedures declared below USE stats_db
CONTAINS ! module procedures
!update_db: updates shared variables in module stats_db SUBROUTINE update_db (new_item)
INTEGER :: new_item n_items = n_items +1 item(n_items) = new_item sum = sum + new_item END SUBROUTINE update_db
!get_avg: returns arithmetic mean
INTEGER FUNCTION get_avg () get_avg = sum / n_items END FUNCTION get_avg
END MODULE stats_code
This program unit also begins with a USEstatement, which identifies the module it uses as stats_db. This module is defined in data.f90, as follows:
56 Compiling and linking