28 lines
724 B
Fortran
28 lines
724 B
Fortran
! count letters from stdin
|
|
program LetterFrequency
|
|
implicit none
|
|
character (len=1) :: s
|
|
integer, dimension(26) :: a
|
|
integer :: ios, i, t
|
|
data a/26*0/,i/0/
|
|
open(unit=7, file='/dev/stdin', access='direct', form='formatted', recl=1, status='old', iostat=ios)
|
|
if (ios .ne. 0) then
|
|
write(0,*)'Opening stdin failed'
|
|
stop
|
|
endif
|
|
do i=1, huge(i)
|
|
read(unit=7, rec = i, fmt = '(a)', iostat = ios ) s
|
|
if (ios .ne. 0) then
|
|
!write(0,*)'ios on failure is ',ios
|
|
close(unit=7)
|
|
exit
|
|
endif
|
|
t = ior(iachar(s(1:1)), 32) - iachar('a')
|
|
if ((0 .le. t) .and. (t .le. iachar('z'))) then
|
|
t = t+1
|
|
a(t) = a(t) + 1
|
|
endif
|
|
end do
|
|
write(6, *) a
|
|
end program LetterFrequency
|