program backwords
use M_process, only : process_readall
implicit none
integer :: ierr
integer :: i
character(len=:),allocatable :: string
character(len=4096) :: command
write(*,'(a)',advance='no')'Enter command to read output from:'
read(*,'(a)')command
! NOTE: the file is being read into memory. Doing this with a
! large file would use an excessive amount of memory.
string=process_readall(command,delim=NEW_LINE("A"),ierr=ierr)
! parse on newline character and process the data
! using routines like split(3f) from M_strings(3fm) or in
! this case, just echo it back reversed
write(*,'(a)')'BACKWARDS'
write(*,'(*(a))',advance='no')(string(i:i),i=len(string),1,-1)
write(*,'(a)')
write(*,*)'FORWARDS'
write(*,'(a)',advance='no')string
end program backwords