6.8 Row Selection and Calculator Routines
These routines all parse and evaluate an input string containing a user
defined arithmetic expression. The first 3 routines select rows in a
FITS table, based on whether the expression evaluates to true (not
equal to zero) or false (zero). The other routines evaluate the
expression and calculate a value for each row of the table. The
allowed expression syntax is described in the row filter section in the
earlier `Extended File Name Syntax' chapter of this document. The
expression may also be written to a text file, and the name of the
file, prepended with a '@' character may be supplied for the 'expr'
parameter (e.g. '@filename.txt'). The expression in the file can
be arbitrarily complex and extend over multiple lines of the file.
Lines that begin with 2 slash characters ('//') will be ignored and
may be used to add comments to the file.
- 1
- Evaluate a boolean expression over the indicated rows, returning an
array of flags indicating which rows evaluated to TRUE/FALSE
FTFROW(unit,expr,firstrow, nrows, > n_good_rows, row_status, status)
- 2
- Find the first row which satisfies the input boolean expression
FTFFRW(unit, expr, > rownum, status)
- 3
- Evaluate an expression on all rows of a table. If the input and output
files are not the same, copy the TRUE rows to the output file; if the output
table is not empty, then this routine will append the new
selected rows after the existing rows. If the
files are the same, delete the FALSE rows (preserve the TRUE rows).
FTSROW(inunit, outunit, expr, > status)
- 4
- Calculate an expression for the indicated rows of a table, returning
the results, cast as datatype (TSHORT, TDOUBLE, etc), in array. If
nulval==NULL, UNDEFs will be zeroed out. For vector results, the number
of elements returned may be less than nelements if nelements is not an
even multiple of the result dimension. Call FTTEXP to obtain
the dimensions of the results.
FTCROW(unit,datatype,expr,firstrow,nelements,nulval, >
array,anynul,status)
- 5
- Evaluate an expression and write the result either to a column (if
the expression is a function of other columns in the table) or to a
keyword (if the expression evaluates to a constant and is not a
function of other columns in the table). In the former case, the
parName parameter is the name of the column (which may or may not already
exist) into which to write the results, and parInfo contains an
optional TFORM keyword value if a new column is being created. If a
TFORM value is not specified then a default format will be used,
depending on the expression. If the expression evaluates to a constant,
then the result will be written to the keyword name given by the
parName parameter, and the parInfo parameter may be used to supply an
optional comment for the keyword. If the keyword does not already
exist, then the name of the keyword must be preceded with a '#' character,
otherwise the result will be written to a column with that name.
FTCALC(inunit, expr, outunit, parName, parInfo, > status)
- 6
- This calculator routine is similar to the previous routine, except
that the expression is only evaluated over the specified
row ranges. nranges specifies the number of row ranges, and firstrow
and lastrow give the starting and ending row number of each range.
FTCALC_RNG(inunit, expr, outunit, parName, parInfo,
nranges, firstrow, lastrow, > status)
- 7
- Evaluate the given expression and return dimension and type information
on the result. The returned dimensions correspond to a single row entry
of the requested expression, and are equivalent to the result of fits_read_tdim().
Note that strings are considered to be one element regardless of string length.
If maxdim == 0, then naxes is optional.
FTTEXP(unit, expr, maxdim > datatype, nelem, naxis, naxes, status)