title: In fortran how to read all strings line by line from a .dat file in fortran
body: <p>I have a .dat file , from which I am trying to read line by line and print it.
  Can anyone please help about how to do it in fortran?</p>
  
  <p>Thanks in advance!</p>
  
  <p>Data:</p>
  
  <pre><code>REMARK    GENERATED BY TRJCONV
  TITLE     UNNAMED t=   0.00000
  REMARK    THIS IS A SIMULATION BOX
  CRYST1   26.178   26.178   26.178  90.00  90.00  90.00 P 1           1
  MODEL        1
  ATOM      1  S2  LJ2     1      17.000  15.030  11.630  1.00  0.00            
  ATOM      2  S2  LJ2     2      13.290  11.340  15.900  1.00  0.00            
  ATOM      3  S2  LJ2     3      17.030  23.070  14.750  1.00  0.00            
  ATOM      4  S2  LJ2     4      15.360  14.840   9.480  1.00  0.00            
  ATOM      5  S2  LJ2     5      15.780   4.560   9.580  1.00  0.00            
  ATOM      6  S2  LJ2     6       5.350  22.490  11.110  1.00  0.00            
  ATOM      7  S2  LJ2     7      19.940   3.910  10.840  1.00  0.00            
  ATOM      8  S2  LJ2     8      20.380  13.360  15.680  1.00  0.00            
  ATOM      9  S2  LJ2     9      18.340   4.200   7.720  1.00  0.00            
  ATOM     10  S2  LJ2    10      18.610  16.530   9.910  1.00  0.00            
  TER
  ENDMDL
  </code></pre>
  
  <p>Code:</p>
  
  <pre><code>program atom_test
  
  implicit none
  
   character (LEN=75) ::inputdatafile,outputfile
   real,dimension(100) :: x, y
   integer :: i,n,nframes
  character (len=200),dimension(3000):: command
  
   print *,"Give the datafile name:"
   read *,inputdatafile
  outputfile=inputdatafile(1:len(trim(inputdatafile))-4)//"_output.dat"
  !write(*,*)outputfile
  Open(9, file=inputdatafile, status='old')
  
  call linesFile(inputdatafile,n)
  write(*,*)n
  
  do i=1,n
    read(*,*),command(i)
    write (*,*)command(i)
  
  end do
  close(9)
  
  end program atom_test
  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  !! find the number of lines in a file
  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  subroutine  linesFile(fileIn,n)
  implicit none
   Character(len = 50)   :: fileIn
  integer, intent(out) :: n
  ! locals
  integer :: iostatus, unit_read
  real    :: dummy
  
  
  unit_read = 9
  open(unit=unit_read, file=fileIn)
  
  n =0
  DO
    READ(unit_read, *, IOSTAT=iostatus) dummy
    IF (iostatus &lt; 0) EXIT
      n = n + 1
  END DO
  
   ! WRITE(*, '(i8, a, a)') n, ' bins read from file: ', fileIn
   close(unit_read)
  
  end subroutine  linesFile
  </code></pre>
  
  <p>Given marked answer works fine. As I am very new in Fortran I have one more question related this. I want to get the elements separately from the ATOM rows in my data file
  for example:
  ATOM      1  S2  LJ2     1      17.000  15.030  11.630  1.00  0.00 </p>
  
  <pre><code>from here i want to store 1,s2,LJ2,1,17.000,15.030 each in different parameters. In that case I am using this 
  </code></pre>
  
  <p>/* With the code marked as correct  </p>
  
  <pre><code>    ncount=0
   do i = 1, n
  
         IF (command(i)(1:4).eq.'ATOM') THEN
           ncount=ncount+1
           read(read_unit,*) p, p2, p3,p4,xatom(ncount)
           write(*,*),p
  
         endif
  end do
  </code></pre>
  
  <p>But it is not working.Can you please give me one suggestion about how to read individually from those lines which starts with ATOM?
  Thanks in advance!</p>