1program sample
2 implicit none ! 暗黙の型宣言禁止
3
4 ! 整数型
5 integer(kind=4) :: i4 ! 4バイト(32ビット)の整数型
6 integer(kind=8) :: i8 ! 8バイト(64ビット)の整数型
7
8 ! 実数型
9 real(kind=4) :: r4 ! 4バイト(32ビット)の実数型(単精度)
10 real(kind=8) :: r8 ! 8バイト(64ビット)の実数型(倍精度)
11 real(kind=16) :: r16 ! 16バイト(128ビット)の実数型(4倍精度)
12
13 ! 複素数型(実数2つ分の領域が必要になる)
14 complex(kind=4) :: c4 ! 8バイト(64ビット)の複素数型 = 単精度
15 complex(kind=8) :: c8 ! 16バイト(128ビット)の複素数型 = 倍精度
16
17 ! ただし'kind='を省略して例えば以下のように宣言しても良い
18 real(8) :: x, y, z
19
20 ! 文字列型は少し特殊で通常はkind=1である。文字列の長さはlen=で指定する
21 character(len=256) :: char ! 256文字分
22
23 ! 論理型(このように宣言文で初期化してもよい)
24 logical :: torf = .true.
25
26 ! 4バイト整数に値を代入
27 i4 = 2048
28 write(*, *) i4
29
30 ! 8バイト整数でも同様
31 i8 = 2048
32 write(*, *) i8
33
34 ! 単精度の実数 (デフォルトでは'_4'を指定したのと同じ)
35 r4 = 3.14
36 write(*, *) r4
37
38 ! 倍精度の実数 ('_8'でkind=8を指定)
39 r8 = 3.14_8
40 write(*, *) r8
41
42 ! 複素数型の変数に 2.71 + 0.99 i を代入
43 c4 = (2.71, 0.99)
44 write(*, *) c4
45
46 ! 同様にkindパラメータを指定可能
47 c8 = (2.71_8, 0.99_8)
48 write(*, *) c8
49
50 ! 文字型の変数に文字列を代入
51 char = 'this is text'
52
53 ! 実数を代入して表示
54 x = 3.14
55 write(*, *) 'real (original) => ', x
56
57 ! yにxの値を代入
58 y = x
59
60 ! xの値を変更
61 x = 2.71
62
63 ! yの値を表示(xを変更してもeは変更されない)
64 write(*, *) 'real (not modified) => ', y
65
66 ! 論理型の値を表示
67 write(*, *) 'logical => ', torf
68
69 stop
70endprogram sample