File: /nfs/home/0/users/jenkins/mfix.git/model/thermochemical/get_values.f

1     !      program test; call tester; end program test
2     
3           subroutine get_values_tester
4           implicit none
5     
6           integer          :: i
7           double precision :: value1 , value2 , value3
8            character(len=81)     :: line
9     
10           open (unit=10,file='BURCAT.THR',status='old')
11           do i = 1,9765
12             read (10,'(a80)') line
13           end do
14     
15           write (*,'(1x,a80)') line
16     
17           call get_values(line,value1,value2,value3)
18     
19           write (*,*) value1
20           write (*,*) value2
21           write (*,*) value3
22     
23           stop
24           end subroutine get_values_tester
25     
26     
27           subroutine get_values(line,value1,value2,value3)
28     
29           implicit none
30     
31           character(*)    :: line
32           character(len=80)     :: tokens(80)
33           logical          :: bSpace
34           integer          :: nTokens , start , i
35           double precision :: value1 , value2 , value3
36     
37           bSpace = .false.
38           nTokens = 0
39           start = 1
40     
41           do i = 1,len(line)
42             if (line(i:i).eq.char(9) .or. line(i:i).eq.char(32)) then
43                if (.not.bSpace) then
44                   bSpace = .true.
45                    nTokens = nTokens + 1
46                   tokens(nTokens) = line(start:i-1)
47                end if
48             else
49                if (bSpace) start = i
50                bSpace = .false.
51             end if
52           end do
53     
54           if (start .ne. len(line)) nTokens = nTokens - 1
55     
56           if (nTokens .ge. 4) then
57              read (tokens(nTokens  ),'(f16.8)') value3
58              read (tokens(nTokens-1),'(f16.8)',err=111) value2
59              read (tokens(nTokens-2),'(f16.8)') value1
60              return
61      111     continue
62              read (tokens(nTokens-3),'(f16.8)') value1
63              read (tokens(nTokens-2),'(f16.8)') value2
64            end if
65     
66     
67            return
68            end
69