6.7.1 Column Information Subroutines
- 1
- Get the number of rows or columns in the current FITS table.
The number of rows is given by the NAXIS2 keyword and the
number of columns is given by the TFIELDS keyword in the header
of the table. The FTGNRWLL routine is identical to FTGNRW except
that the number of rows is returned as a 64-bit integer rather
than a 32-bit integer.
FTGNRW(unit, > nrows, status)
FTGNRWLL(unit, > nrowsll, status)
FTGNCL(unit, > ncols, status)
- 2
- Get the table column number (and name) of the column whose name
matches an input template name. The table column names are defined by
the TTYPEn keywords in the FITS header. If a column does not have a
TTYPEn keyword, then these routines assume that the name consists of
all blank characters. These 2 subroutines perform the same function
except that FTGCNO only returns the number of the matching column whereas
FTGCNN also returns the name of the column. If CASESEN = .true. then
the column name match will be case-sensitive.
The input column name template (COLTEMPLATE) is (1) either the exact
name of the column to be searched for, or (2) it may contain wild cards
characters (*, ?, or #), or (3) it may contain the number of the desired
column (where the number is expressed as ASCII digits). The first 2 wild
cards behave similarly to UNIX filename matching: the '*' character matches
any sequence of characters (including zero characters) and the '?'
character matches any single character. The # wildcard will match
any consecutive string of decimal digits (0-9). As an example, the template
strings 'AB?DE', 'AB*E', and 'AB*CDE' will all match the string
'ABCDE'. If more than one column name in the table matches the
template string, then the first match is returned and the status value
will be set to 237 as a warning that a unique match was not found. To
find the other cases that match the template, simply call the
subroutine again leaving the input status value equal to 237 and the
next matching name will then be returned. Repeat this process until a
status = 219 (column name not found) is returned. If these subroutines
fail to match the template to any of the columns in the table, they
lastly check if the template can be interpreted as a simple positive
integer (e.g., '7', or '512') and if so, they return that column
number. If no matches are found then a status = 219 error is
returned.
Note that the FITS Standard recommends that only letters, digits, and
the underscore character be used in column names (with no embedded
spaces in the name). Trailing blank characters are not significant.
FTGCNO(unit,casesen,coltemplate, > colnum,status)
FTGCNN(unit,casesen,coltemplate, > colname,colnum,status)
- 3
- Get the datatype of a column in an ASCII or binary table. This
routine returns an integer code value corresponding to the datatype
of the column. (See the FTBNFM and FTASFM subroutines in the Utilities
section of this document for a list of the code values). The vector
repeat count (which is alway 1 for ASCII table columns) is also returned.
If the specified column has an ASCII character datatype (code = 16) then
the width of a unit string in the column is also returned. Note that
this routine supports the local convention for specifying arrays of
strings within a binary table character column, using the syntax
TFORM = 'rAw' where 'r' is the total number of characters (= the width
of the column) and 'w' is the width of a unit string within the column.
Thus if the column has TFORM = '60A12' then this routine will return
datacode = 16, repeat = 60, and width = 12. (The TDIMn
keyword may also be used to specify the unit string length; The pair
of keywords TFORMn = '60A' and TDIMn = '(12,5)' would have the
same effect as TFORMn = '60A12').
The second routine, FTEQTY is similar except that in
the case of scaled integer columns it returns the 'equivalent' data
type that is needed to store the scaled values, and not necessarily
the physical data type of the unscaled values as stored in the FITS
table. For example if a '1I' column in a binary table has TSCALn =
1 and TZEROn = 32768, then this column effectively contains unsigned
short integer values, and thus the returned value of typecode will
be the code for an unsigned short integer, not a signed short integer.
Similarly, if a column has TTYPEn = '1I'
and TSCALn = 0.12, then the returned typecode
will be the code for a 'real' column.
FTGTCL(unit,colnum, > datacode,repeat,width,status)
FTEQTY(unit,colnum, > datacode,repeat,width,status)
- 4
- Return the display width of a column. This is the length
of the string that will be returned
when reading the column as a formatted string. The display width is
determined by the TDISPn keyword, if present, otherwise by the data
type of the column.
FTGCDW(unit, colnum, > dispwidth, status)
- 5
- Get information about an existing ASCII table column. (NOTE: TSCAL and
TZERO must be declared as Double Precision variables). All the
returned parameters are scalar quantities.
FTGACL(unit,colnum, >
ttype,tbcol,tunit,tform,tscal,tzero,snull,tdisp,status)
- 6
- Get information about an existing binary table column. (NOTE: TSCAL and
TZERO must be declared as Double Precision variables). DATATYPE is a
character string which returns the datatype of the column as defined
by the TFORMn keyword (e.g., 'I', 'J','E', 'D', etc.). In the case
of an ASCII character column, DATATYPE will have a value of the
form 'An' where 'n' is an integer expressing the width of the field
in characters. For example, if TFORM = '160A8' then FTGBCL will return
DATATYPE='A8' and REPEAT=20. All the returned parameters are scalar
quantities.
FTGBCL(unit,colnum, >
ttype,tunit,datatype,repeat,tscal,tzero,tnull,tdisp,status)
- 7
- Put (append) a TDIMn keyword whose value has the form '(l,m,n...)'
where l, m, n... are the dimensions of a multidimensional array
column in a binary table.
FTPTDM(unit,colnum,naxis,naxes, > status)
- 8
- Return the number of and size of the dimensions of a table column.
Normally this information is given by the TDIMn keyword, but if
this keyword is not present then this routine returns NAXIS = 1
and NAXES(1) equal to the repeat count in the TFORM keyword.
FTGTDM(unit,colnum,maxdim, > naxis,naxes,status)
- 9
- Decode the input TDIMn keyword string (e.g. '(100,200)') and return the
number of and size of the dimensions of a binary table column. If the input
tdimstr character string is null, then this routine returns naxis = 1
and naxes[0] equal to the repeat count in the TFORM keyword. This routine
is called by FTGTDM.
FTDTDM(unit,tdimstr,colnum,maxdim, > naxis,naxes, status)
- 10
- Return the optimal number of rows to read or write at one time for
maximum I/O efficiency. Refer to the “Optimizing Code” section
in Chapter 5 for more discussion on how to use this routine.
FTGRSZ(unit, > nrows,status)