1program sample
2 implicit none
3
4 write(*, *) 'square1 => ', square1(2.0_8)
5 write(*, *) 'square2 => ', square2(2.0_8)
6
7 ! 以下はエラー (引数はreal(8)で宣言されているのに与えられたのはreal(4))
8 !write(*,*) square1(2.0), square2(2.0)
9
10 stop
11contains
12 !!!!!!!!!! 関数やサブルーチンの宣言はここから !!!!!!!!!!
13
14 !
15 ! 関数の宣言(1) : 関数名と同じ名前の変数に返値を代入する形式
16 !
17 real(8) function square1(x) ! square1という名前で関数を宣言
18 implicit none ! 暗黙の型宣言の禁止
19 real(8) :: x ! 引数を宣言
20
21 square1 = x**2 ! 返値は関数名と同じ名前の変数に代入
22
23 return ! 呼び出し元に制御を戻す
24 endfunction square1
25
26 !
27 ! 関数の宣言(2) : resultを使った形式
28 !
29 function square2(x) result(y) ! square2という名前で関数を宣言
30 implicit none ! 暗黙の型宣言の禁止
31 real(8) :: x ! 引数を宣言
32 real(8) :: y ! 返値となる変数(result)の宣言
33
34 y = x**2 ! 返値を代入
35
36 return ! 呼び出し元に制御を戻す
37 endfunction square2
38
39 !!!!!!!!!! ここまでの間に行う !!!!!!!!!!
40endprogram sample