(file) Return to parse_name.f CVS log (file) (dir) Up to [HallC] / Optics / conversion

 1 jones 1.1 	subroutine me_parse_name (line, final_index, 
 2                >                            order, indices, line_number)
 3           
 4           	implicit none
 5           
 6           	include 'db.inc'
 7           
 8           	character*(*) line		! line to parse
 9           	integer final_index		! index of target variable
10           	integer order			! order of ME
11           	integer indices(1)		! initial indices
12           	integer line_number		! line # of input file
13           
14           	integer bar			! location of bar
15           	integer bracket			! location of bracket
16           	integer i			! index
17           
18           	character*12 name		! variable name to check for
19           
20           	integer EXTRA_VAR
21           	parameter (EXTRA_VAR = 11)
22 jones 1.1 	character*12 name_list(EXTRA_VAR) /
23                >       'x_det', 'y_det', 'theta_det', 'z', 'theta', 'phi',
24                >       'drift', 
25                >       'ang_slope_x', 'ang_slope_y', 'ang_offset_x', 'ang_offset_y'
26                >       /
27           
28           	order = -1			! invalid return code
29           	final_index = 1			! something by default
30           
31           	if (line(1:1) .ne. '<') then
32           	  write (*,*) ' The first character in a matrix element name',
33                >                ' must be a <'
34           	  if (line_number .gt. 0) write (*,*) ' Line #', line_number
35           	  return
36           	endif
37           
38           	bar = index(line, '|')		! find the bar
39           	if (bar .eq. 0) then
40           	  bracket = index(line, '>')	! try for the ending bracket
41           	  if (bracket .ne. 0) then	! now check if I know this name
42           	    name = line(2:bracket-1)	! strip out the name
43 jones 1.1 	    do i = 1, EXTRA_VAR
44           	      if (name .eq. name_list(i)) then
45           	        order = -1 - i
46           	        return
47           	      endif
48           	    enddo
49           	  endif
50           	  write (*,*) ' syntax error in matrix element name, ',
51                >                  'bar (|) not found.'
52           	  if (line_number .gt. 0) write (*,*) ' Line #', line_number
53           	  return
54           	endif
55           	if (bar .le. 2) then			! nothing given
56           	  write (*,*) ' You must specify a final matrix',
57                >                  ' element name.'
58           	  if (line_number .gt. 0) write (*,*) ' Line #', line_number
59           	endif
60           	call me_parse_final(line(2:bar-1), final_index, line_number)
61           	if (final_index .le. 0) return
62           
63           	bracket = index(line, '>')		! find >
64 jones 1.1 	if (bracket .eq. 0) then
65           	  write (*,*) ' syntax error in matrix element name, ',
66                >                  'bracket (>) not found.'
67           	  if (line_number .gt. 0) write (*,*) ' Line #', line_number
68           	  return
69           	endif
70           	if (bar+1 .eq. bracket) then		! zeroth order
71           	  call me_parse_initial(" ", order, indices, MAX_ORDER, line_number)
72           	else
73           	  call me_parse_initial(line(bar+1:bracket-1), order, indices,
74                >                          MAX_ORDER, line_number)
75           	endif
76           
77           	end
78           

Analyzer/Replay: Mark Jones, Documents: Stephen Wood
Powered by
ViewCVS 0.9.2-cvsgraph-1.4.0