1program sample
2 implicit none
3
4 integer, parameter :: max_line = 256
5 integer :: ios, nline
6 character(max_line) :: line
7
8 nline = 0
9
10 !
11 ! fmt='(a)' : 行末までを読み込むのに必要(途中のスペースで途切れないように)
12 ! iostat=ios : ステータスがiosに代入される
13 !
14 read(*, fmt='(a)', iostat=ios) line
15
16 !
17 ! ios > 0 : 何らかのエラー
18 ! ios == 0 : 正常に読み込まれた
19 ! ios < 0 : ファイルの終端に達した
20 !
21 do while(ios == 0)
22 ! 空白行以外をカウント(line == '' なら空白行である)
23 if(line /= '') then
24 nline = nline + 1
25 endif
26 ! 次の行を読み込む
27 read(*, fmt='(a)', iostat=ios) line
28 enddo
29
30 write(*, *) 'Number of lines (without brank) : ', nline
31
32 stop
33endprogram sample