Вы можете использовать внутреннее чтение или запись (то есть IO из / в переменные типа CHARACTER и файлы для обычного IO):
!Demonstrate internal read/write
program intio
implicit none
character(len=20) :: a, b
a = "hello world!"
! Read a into b with A format
read(a, '(A)') b
print *, b ! Should print "hello world!"
! Now write into b
write(b, *) "I said hello!"
print *, b
! Read into b from literal
!read("Well, hello!", '(A)') b
!print *, b
end program intio
Если раскомментировать последние две строки, вы получите
intread.f90:13.7:
read("Well, hello!", '(A)') b
1
Error: UNIT specification at (1) must be an INTEGER expression or a CHARACTER variable
Так что нет, вы не можете читать по буквам.