chap07/sample8.f90

サンプルコードのダウンロード

 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!!!!!!!!!!!