aboutsummaryrefslogtreecommitdiff
path: root/pkg/tbtables/tbffkw.x
blob: 7410fb232a3dfb758eea5389ed4dc401839ee71e (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
include <tbset.h>
include "tbtables.h"
define	SZ_FITS_REC	81	# size of buffer for a FITS header record

# tbffkw -- find keyword number
# This routine finds a header record for a given keyword.  If the keyword
# is found the number of the parameter in the table will be returned;
# otherwise, the number will be set to zero.  The search begins with the
# first keyword and includes special keywords such as NAXIS.
#
# Phil Hodge, 22-Jan-1996  Subroutine created.

procedure tbffkw (tp, keyword, parnum)

pointer tp			# i: Pointer to table descriptor
char	keyword[SZ_KEYWORD]	# i: Keyword to be found
int	parnum			# o: Parameter number or zero if not found
#--
pointer sp
pointer par			# buffer for header record for parameter
int	status			# error return code from fitsio
int	k			# loop index
char	uckey[SZ_KEYWORD]	# keyword converted to upper case
bool	tbhkeq()
errchk	tbferr

begin
	call smark (sp)
	call salloc (par, SZ_FITS_REC, TY_CHAR)

	call strcpy (keyword, uckey, SZ_KEYWORD)
	call strupr (uckey)

	do k = 1, TB_NPAR(tp) {
	    # Read parameter record.
	    call fsgrec (TB_FILE(tp), k, Memc[par], status)
	    if (status != 0)
		call tbferr (status)
	    if (tbhkeq (uckey, Memc[par])) {		# keywords equal?
		parnum = k
		call sfree (sp)
		return		# keyword has been found
	    }
	}
	parnum = 0		# keyword not found
	call sfree (sp)
end