1program sample
2 implicit none
3
4 call sub1(4.0_8)
5 call sub2()
6
7 stop
8contains
9 ! sub1
10 subroutine sub1(exponent)
11 implicit none
12 real(8) :: exponent
13
14 !
15 ! 基本的に内部でのみ使う変数はここで宣言して使う
16 ! 特にループ変数(以下の例ではi)は必須
17 ! これらの変数は外部からは見えないので,メインプログラムや他のサブプログラム
18 ! で同名の変数が宣言されていてもそれらとは完全に独立であることに注意
19 !
20 ! (引数に値を代入して返す場合,メインプログラムの変数を参照する場合について
21 ! はレジュメのintent属性や内部手続きの節を参照のこと)
22 !
23 integer, parameter :: n = 10
24 integer :: i
25 real(8) :: x(n), sum
26
27 ! 代入
28 do i = 1, n
29 x(i) = i**exponent
30 enddo
31
32 ! 和を計算
33 sum = 0.0_8
34 do i = 1, n
35 sum = sum + x(i)
36 enddo
37
38 write(*, *) 'sum of array = ', sum
39
40 endsubroutine sub1
41
42 ! sub2
43 subroutine sub2()
44 implicit none
45
46 ! このように定義されていても問題無い(sub1のnとは独立な変数である)
47 integer, parameter :: n = 100
48
49 write(*, *) 'n = ', n
50
51 endsubroutine sub2
52
53endprogram sample