1!!!!!!!!!!! 外部手続きの定義場所 (1) !!!!!!!!!!
2function square_ext1(x) result(y)
3 implicit none
4 real(8) :: x
5 real(8) :: y
6
7 y = x**2
8
9 return
10endfunction square_ext1
11!!!!!!!!!!!
12
13! メインプログラム
14program sample
15 implicit none
16 !
17 ! 外部関数のinterface宣言
18 ! (本当は後で学ぶモジュールを使うほうがスマート)
19 !
20 interface
21 real(8) function square_ext1(x)
22 real(8) :: x
23 endfunction square_ext1
24 endinterface
25
26 !
27 ! 外部サブルーチンのinterface宣言
28 !
29 interface
30 subroutine sub_ext()
31 endsubroutine sub_ext
32 endinterface
33
34 ! 外部関数を呼び出すには実はこの書き方でも良いが,色々と問題が多いので非推奨
35 real(8), external :: square_ext2
36
37 ! 外部関数呼び出し
38 write(*, *) square_ext1(2.0_8), square_ext2(4.0_8)
39
40 ! 外部サブルーチン呼び出し
41 call sub_ext()
42
43 stop
44endprogram sample
45
46!!!!!!!!!!! 外部手続きの定義場所 (2) !!!!!!!!!!
47function square_ext2(x) result(y)
48 implicit none
49 real(8) :: x
50 real(8) :: y
51
52 y = x**2
53
54 return
55endfunction square_ext2
56
57subroutine sub_ext()
58 implicit none
59
60 write(*, *) 'sub_ext'
61
62 return
63endsubroutine sub_ext
64!!!!!!!!!!!