1program sample
2 implicit none
3
4 integer :: n
5
6 ! 動的配列(実行時にしかサイズが分からない場合)
7 integer, allocatable :: x(:)
8
9 ! 以下は動的(allocatable)配列の使い方
10 write(*, *) 'Input array size: '
11
12 ! 配列サイズ
13 read(*, *) n
14
15 ! allocateされていないことを確認してからallocate
16 if(.not. allocated(x)) then
17 allocate(x(n))
18 else
19 write(*, *) 'Error: already allocated'
20 endif
21
22 ! 確かにallocateされたか?
23 if(allocated(x)) then
24 write(*, *) 'Successfully allocated'
25 endif
26
27 ! 配列の各要素を読み込み
28 write(*, *) 'Input array elements: '
29 read(*, *) x
30
31 ! 出力
32 write(*, *) 'allocatable array : ', x
33
34 ! メモリを解放
35 deallocate(x)
36
37 stop
38endprogram sample