diff options
author | Joseph Hunkeler <jhunkeler@gmail.com> | 2015-07-08 20:46:52 -0400 |
---|---|---|
committer | Joseph Hunkeler <jhunkeler@gmail.com> | 2015-07-08 20:46:52 -0400 |
commit | fa080de7afc95aa1c19a6e6fc0e0708ced2eadc4 (patch) | |
tree | bdda434976bc09c864f2e4fa6f16ba1952b1e555 /pkg/tbtables/tbhgt.x | |
download | iraf-linux-fa080de7afc95aa1c19a6e6fc0e0708ced2eadc4.tar.gz |
Initial commit
Diffstat (limited to 'pkg/tbtables/tbhgt.x')
-rw-r--r-- | pkg/tbtables/tbhgt.x | 244 |
1 files changed, 244 insertions, 0 deletions
diff --git a/pkg/tbtables/tbhgt.x b/pkg/tbtables/tbhgt.x new file mode 100644 index 00000000..d7ebe759 --- /dev/null +++ b/pkg/tbtables/tbhgt.x @@ -0,0 +1,244 @@ +include <tbset.h> +include "tbtables.h" +include "tblerr.h" + +# Get a parameter from the table header. +# +# Phil Hodge, 28-Dec-1987 Different data types combined into one file. +# Phil Hodge, 9-Mar-1989 Change dtype from char to int. +# Phil Hodge, 22-Jan-1993 Change "== INDEFD" to "IS_INDEFD". +# Phil Hodge, 15-Dec-1994 Allow converting from text string parameter. +# Phil Hodge, 30-Mar-1995 Include keyword name in error message. +# Phil Hodge, 8-Jun-1995 Modify for FITS tables. +# Phil Hodge, 7-Jun-1999 In tbhgtb, check for "yes", "y", "no", "n", +# "true", "t", "false", "f" if a numerical value was not +# found and data type is text. + +# tbhgtb -- get Boolean header parameter +# Get a parameter from the table header. This is for data type bool. + +bool procedure tbhgtb (tp, keyword) + +pointer tp # i: pointer to table descriptor +char keyword[ARB] # i: name of parameter to get +#-- +pointer sp +pointer par # buffer for header record for parameter +pointer errmess # scratch for possible error message +int dtype # data type +int parnum # parameter number (> 0 if keyword was found) +double dblval # buffer for reading value from string +bool bval # buffer for value +int nscan() +bool streq() +errchk tbhfkr, tbfhgb + +begin + if (TB_TYPE(tp) == TBL_TYPE_FITS) { + call tbfhgb (tp, keyword, bval) + return (bval) + } + + call smark (sp) + call salloc (par, SZ_PARREC, TY_CHAR) + + call tbhfkr (tp, keyword, dtype, Memc[par], parnum) # find keyword + if (parnum > 0) { + dblval = INDEFD + call sscan (Memc[par]) + call gargd (dblval) # read the value as a double + if (nscan() < 1 && dtype == TY_CHAR) { + call strlwr (Memc[par]) + if (streq (Memc[par], "yes") || streq (Memc[par], "y") || + streq (Memc[par], "true") || streq (Memc[par], "t")) { + dblval = double(YES) + } else if (streq (Memc[par], "no") || streq (Memc[par], "n") || + streq (Memc[par], "false") || streq (Memc[par], "f")) { + dblval = double(NO) + } + } + } else { + call salloc (errmess, SZ_LINE, TY_CHAR) + call sprintf (Memc[errmess], SZ_LINE, + "tbhgtb: table header parameter `%s' not found") + call pargstr (keyword) + call error (ER_TBPARNOTFND, Memc[errmess]) + } + call sfree (sp) + + if (IS_INDEFD (dblval)) + return (false) + else if (nint(dblval) == YES) + return (true) + else + return (false) +end + + +# tbhgtd -- get double header parameter +# Get a parameter from the table header. This is for data type double. + +double procedure tbhgtd (tp, keyword) + +pointer tp # i: pointer to table descriptor +char keyword[ARB] # i: name of parameter to get +#-- +pointer sp +pointer par # buffer for header record for parameter +pointer errmess # scratch for possible error message +int dtype # data type +int parnum # parameter number (> 0 if keyword was found) +double dblval # buffer for reading value from string +errchk tbhfkr, tbfhgd + +begin + if (TB_TYPE(tp) == TBL_TYPE_FITS) { + call tbfhgd (tp, keyword, dblval) + return (dblval) + } + + call smark (sp) + call salloc (par, SZ_PARREC, TY_CHAR) + call tbhfkr (tp, keyword, dtype, Memc[par], parnum) # find keyword + if (parnum > 0) { + dblval = INDEFD + call sscan (Memc[par]) + call gargd (dblval) + } else { + call salloc (errmess, SZ_LINE, TY_CHAR) + call sprintf (Memc[errmess], SZ_LINE, + "tbhgtd: table header parameter `%s' not found") + call pargstr (keyword) + call error (ER_TBPARNOTFND, Memc[errmess]) + } + call sfree (sp) + + return (dblval) +end + + +# tbhgti -- get integer header parameter +# Get a parameter from the table header. This is for data type int. + +int procedure tbhgti (tp, keyword) + +pointer tp # i: pointer to table descriptor +char keyword[ARB] # i: name of parameter to get +#-- +pointer sp +pointer par # buffer for header record for parameter +pointer errmess # scratch for possible error message +int dtype # data type +int parnum # parameter number (> 0 if keyword was found) +double dblval # buffer for reading value from string +int ival +errchk tbhfkr, tbfhgi + +begin + if (TB_TYPE(tp) == TBL_TYPE_FITS) { + call tbfhgi (tp, keyword, ival) + return (ival) + } + + call smark (sp) + call salloc (par, SZ_PARREC, TY_CHAR) + call tbhfkr (tp, keyword, dtype, Memc[par], parnum) # find keyword + if (parnum > 0) { + dblval = INDEFD + call sscan (Memc[par]) + call gargd (dblval) # read the value as a double + } else { + call salloc (errmess, SZ_LINE, TY_CHAR) + call sprintf (Memc[errmess], SZ_LINE, + "tbhgti: table header parameter `%s' not found") + call pargstr (keyword) + call error (ER_TBPARNOTFND, Memc[errmess]) + } + call sfree (sp) + + if (IS_INDEFD (dblval)) + return (INDEFI) + else + return (nint(dblval)) +end + + +# tbhgtr -- get real header parameter +# Get a parameter from the table header. This is for data type real. + +real procedure tbhgtr (tp, keyword) + +pointer tp # i: pointer to table descriptor +char keyword[ARB] # i: name of parameter to get +#-- +pointer sp +pointer par # buffer for header record for parameter +pointer errmess # scratch for possible error message +int dtype # data type +int parnum # parameter number (> 0 if keyword was found) +real realval # buffer for reading value from string +errchk tbhfkr, tbfhgr + +begin + if (TB_TYPE(tp) == TBL_TYPE_FITS) { + call tbfhgr (tp, keyword, realval) + return (realval) + } + + call smark (sp) + call salloc (par, SZ_PARREC, TY_CHAR) + call tbhfkr (tp, keyword, dtype, Memc[par], parnum) # find keyword + if (parnum > 0) { + realval = INDEFR + call sscan (Memc[par]) + call gargr (realval) + } else { + call salloc (errmess, SZ_LINE, TY_CHAR) + call sprintf (Memc[errmess], SZ_LINE, + "tbhgtr: table header parameter `%s' not found") + call pargstr (keyword) + call error (ER_TBPARNOTFND, Memc[errmess]) + } + call sfree (sp) + + return (realval) +end + + +# tbhgtt -- get character header parameter +# Get a parameter from the table header. This is for character data type. + +procedure tbhgtt (tp, keyword, text, maxch) + +pointer tp # i: pointer to table descriptor +char keyword[ARB] # i: name of parameter +char text[ARB] # o: value of parameter +int maxch # i: maximum number of characters to get +#-- +pointer sp +pointer par # buffer for header record for parameter +pointer errmess # scratch for possible error message +int dtype # data type +int parnum # parameter number (> 0 if keyword was found) +errchk tbhfkr, tbfhgt + +begin + if (TB_TYPE(tp) == TBL_TYPE_FITS) { + call tbfhgt (tp, keyword, text, maxch) + return + } + + call smark (sp) + call salloc (par, SZ_PARREC, TY_CHAR) + call tbhfkr (tp, keyword, dtype, Memc[par], parnum) # find keyword + if (parnum > 0) { + call strcpy (Memc[par], text, maxch) + } else { + call salloc (errmess, SZ_LINE, TY_CHAR) + call sprintf (Memc[errmess], SZ_LINE, + "tbhgtt: table header parameter `%s' not found") + call pargstr (keyword) + call error (ER_TBPARNOTFND, Memc[errmess]) + } + call sfree (sp) +end |