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/tbrgt.x | |
download | iraf-linux-fa080de7afc95aa1c19a6e6fc0e0708ced2eadc4.tar.gz |
Initial commit
Diffstat (limited to 'pkg/tbtables/tbrgt.x')
-rw-r--r-- | pkg/tbtables/tbrgt.x | 267 |
1 files changed, 267 insertions, 0 deletions
diff --git a/pkg/tbtables/tbrgt.x b/pkg/tbtables/tbrgt.x new file mode 100644 index 00000000..466edf76 --- /dev/null +++ b/pkg/tbtables/tbrgt.x @@ -0,0 +1,267 @@ +include <tbset.h> +include "tbtables.h" +include "tblerr.h" + +# Read column values from a row. +# +# Phil Hodge, 28-Dec-1987 Different data types combined into one file. +# Phil Hodge, 5-Feb-1992 Add option for text table type. +# Phil Hodge, 31-Mar-1993 Include short datatype. +# Phil Hodge, 4-Nov-1993 Include check on row number out of range. +# Phil Hodge, 9-Apr-1995 Modify for FITS tables. +# Phil Hodge, 2-Mar-1998 Map selected row number to actual row number. +# Phil Hodge, 18-Jun-1998 Use tbfagi instead of tbfagb to get boolean. +# Phil Hodge, 28-Aug-2002 Use strsearch to check for INDEF in tbrgtt. + +# tbrgtd -- getrow double +# Read column values from a row. This is for data type double. + +procedure tbrgtd (tp, cp, buffer, nullflag, numcols, selrow) + +pointer tp # i: pointer to table descriptor +pointer cp[ARB] # i: array of pointers to column descriptors +double buffer[ARB] # o: buffer for values +bool nullflag[ARB] # o: true if element is undefined in table +int numcols # i: number of columns from which to get values +int selrow # i: row number (or selected row number) +#-- +int rownum # actual row number +int k # index into buffer & nullflag +int nret # for fits tables +int tbfagd() +errchk tbsirow, tbxrgd, tbyrgd, tbzgtd, tbfagd + +begin + call tbsirow (tp, selrow, rownum) + + if (TB_TYPE(tp) == TBL_TYPE_S_ROW) { + call tbxrgd (tp, cp, buffer, nullflag, numcols, rownum) + } else if (TB_TYPE(tp) == TBL_TYPE_S_COL) { + call tbyrgd (tp, cp, buffer, nullflag, numcols, rownum) + } else if (TB_TYPE(tp) == TBL_TYPE_TEXT) { + do k = 1, numcols { + call tbzgtd (tp, cp[k], rownum, buffer[k]) + nullflag[k] = (IS_INDEFD (buffer[k])) + } + } else if (TB_TYPE(tp) == TBL_TYPE_FITS) { + do k = 1, numcols { + nret = tbfagd (tp, cp[k], rownum, buffer[k], 1, 1) + nullflag[k] = (IS_INDEFD (buffer[k])) + } + } else { + call error (ER_TBCORRUPTED, "tbrgtd: table type is messed up") + } +end + +# tbrgtr -- getrow real +# Read column values from a row. This is for data type real. + +procedure tbrgtr (tp, cp, buffer, nullflag, numcols, selrow) + +pointer tp # i: pointer to table descriptor +pointer cp[ARB] # i: array of pointers to column descriptors +real buffer[ARB] # o: buffer for values +bool nullflag[ARB] # o: true if element is undefined in table +int numcols # i: number of columns from which to get values +int selrow # i: row number (or selected row number) +#-- +int rownum # actual row number +int k # index into buffer & nullflag +int nret # for fits tables +int tbfagr() +errchk tbsirow, tbxrgr, tbyrgr, tbzgtr, tbfagr + +begin + call tbsirow (tp, selrow, rownum) + + if (TB_TYPE(tp) == TBL_TYPE_S_ROW) { + call tbxrgr (tp, cp, buffer, nullflag, numcols, rownum) + } else if (TB_TYPE(tp) == TBL_TYPE_S_COL) { + call tbyrgr (tp, cp, buffer, nullflag, numcols, rownum) + } else if (TB_TYPE(tp) == TBL_TYPE_TEXT) { + do k = 1, numcols { + call tbzgtr (tp, cp[k], rownum, buffer[k]) + nullflag[k] = (IS_INDEFR (buffer[k])) + } + } else if (TB_TYPE(tp) == TBL_TYPE_FITS) { + do k = 1, numcols { + nret = tbfagr (tp, cp[k], rownum, buffer[k], 1, 1) + nullflag[k] = (IS_INDEFR (buffer[k])) + } + } else { + call error (ER_TBCORRUPTED, "tbrgtr: table type is messed up") + } +end + +# tbrgti -- getrow integer +# Read column values from a row. This is for data type integer. + +procedure tbrgti (tp, cp, buffer, nullflag, numcols, selrow) + +pointer tp # i: pointer to table descriptor +pointer cp[ARB] # i: array of pointers to column descriptors +int buffer[ARB] # o: buffer for values +bool nullflag[ARB] # o: true if element is undefined in table +int numcols # i: number of columns from which to get values +int selrow # i: row number (or selected row number) +#-- +int rownum # actual row number +int k # index into buffer & nullflag +int nret # for fits tables +int tbfagi() +errchk tbsirow, tbxrgi, tbyrgi, tbzgti, tbfagi + +begin + call tbsirow (tp, selrow, rownum) + + if (TB_TYPE(tp) == TBL_TYPE_S_ROW) { + call tbxrgi (tp, cp, buffer, nullflag, numcols, rownum) + } else if (TB_TYPE(tp) == TBL_TYPE_S_COL) { + call tbyrgi (tp, cp, buffer, nullflag, numcols, rownum) + } else if (TB_TYPE(tp) == TBL_TYPE_TEXT) { + do k = 1, numcols { + call tbzgti (tp, cp[k], rownum, buffer[k]) + nullflag[k] = (IS_INDEFI (buffer[k])) + } + } else if (TB_TYPE(tp) == TBL_TYPE_FITS) { + do k = 1, numcols { + nret = tbfagi (tp, cp[k], rownum, buffer[k], 1, 1) + nullflag[k] = (IS_INDEFI (buffer[k])) + } + } else { + call error (ER_TBCORRUPTED, "tbrgti: table type is messed up") + } +end + +# tbrgts -- getrow short +# Read column values from a row. This is for data type short integer. + +procedure tbrgts (tp, cp, buffer, nullflag, numcols, selrow) + +pointer tp # i: pointer to table descriptor +pointer cp[ARB] # i: array of pointers to column descriptors +short buffer[ARB] # o: buffer for values +bool nullflag[ARB] # o: true if element is undefined in table +int numcols # i: number of columns from which to get values +int selrow # i: row number (or selected row number) +#-- +int rownum # actual row number +int k # index into buffer & nullflag +int nret # for fits tables +int tbfags() +errchk tbsirow, tbxrgs, tbyrgs, tbzgts, tbfags + +begin + call tbsirow (tp, selrow, rownum) + + if (TB_TYPE(tp) == TBL_TYPE_S_ROW) { + call tbxrgs (tp, cp, buffer, nullflag, numcols, rownum) + } else if (TB_TYPE(tp) == TBL_TYPE_S_COL) { + call tbyrgs (tp, cp, buffer, nullflag, numcols, rownum) + } else if (TB_TYPE(tp) == TBL_TYPE_TEXT) { + do k = 1, numcols { + call tbzgts (tp, cp[k], rownum, buffer[k]) + nullflag[k] = (IS_INDEFS (buffer[k])) + } + } else if (TB_TYPE(tp) == TBL_TYPE_FITS) { + do k = 1, numcols { + nret = tbfags (tp, cp[k], rownum, buffer[k], 1, 1) + nullflag[k] = (IS_INDEFS (buffer[k])) + } + } else { + call error (ER_TBCORRUPTED, "tbrgts: table type is messed up") + } +end + +# tbrgtb -- getrow Boolean +# This is for data type Boolean. + +procedure tbrgtb (tp, cp, buffer, nullflag, numcols, selrow) + +pointer tp # i: pointer to table descriptor +pointer cp[ARB] # i: array of pointers to column descriptors +bool buffer[ARB] # o: buffer for values +bool nullflag[ARB] # o: true if element is undefined in table +int numcols # i: number of columns from which to get values +int selrow # i: row number (or selected row number) +#-- +int rownum # actual row number +int k # index into buffer & nullflag +int nret # for fits tables +int ival # for getting from a fits table +int tbfagi() +errchk tbsirow, tbxrgb, tbyrgb, tbzgtb, tbfagi + +begin + call tbsirow (tp, selrow, rownum) + + if (TB_TYPE(tp) == TBL_TYPE_S_ROW) { + call tbxrgb (tp, cp, buffer, nullflag, numcols, rownum) + } else if (TB_TYPE(tp) == TBL_TYPE_S_COL) { + call tbyrgb (tp, cp, buffer, nullflag, numcols, rownum) + } else if (TB_TYPE(tp) == TBL_TYPE_TEXT) { + do k = 1, numcols { + call tbzgtb (tp, cp[k], rownum, buffer[k]) + nullflag[k] = false + } + } else if (TB_TYPE(tp) == TBL_TYPE_FITS) { + do k = 1, numcols { + nret = tbfagi (tp, cp[k], rownum, ival, 1, 1) + if (IS_INDEFI(ival)) { + buffer[k] = false + nullflag[k] = true + } else { + buffer[k] = (ival == 1) + nullflag[k] = false + } + } + } else { + call error (ER_TBCORRUPTED, "tbrgtb: table type is messed up") + } +end + +# tbrgtt -- getrow text +# Read column values from a row. This is for character strings. + +procedure tbrgtt (tp, cp, buffer, nullflag, lenstr, numcols, selrow) + +pointer tp # i: pointer to table descriptor +pointer cp[ARB] # i: array of pointers to column descriptors +char buffer[lenstr,ARB] # o: buffer for values +bool nullflag[ARB] # o: true if element is undefined in table +int lenstr # i: length of each string in array buffer +int numcols # i: number of columns from which to get values +int selrow # i: row number (or selected row number) +#-- +int rownum # actual row number +int k # index into buffer & nullflag +int nret # for fits tables +int tbfagt() +int strsearch() +errchk tbxrgt, tbyrgt, tbzgtt, tbfagt + +begin + call tbsirow (tp, selrow, rownum) + + if (TB_TYPE(tp) == TBL_TYPE_S_ROW) { + call tbxrgt (tp, cp, buffer, nullflag, + lenstr, numcols, rownum) + } else if (TB_TYPE(tp) == TBL_TYPE_S_COL) { + call tbyrgt (tp, cp, buffer, nullflag, + lenstr, numcols, rownum) + } else if (TB_TYPE(tp) == TBL_TYPE_TEXT) { + do k = 1, numcols { + call tbzgtt (tp, cp[k], rownum, buffer[1,k], lenstr) + nullflag[k] = (buffer[1,k] == EOS || + (strsearch (buffer[1,k], "INDEF") > 0)) + } + } else if (TB_TYPE(tp) == TBL_TYPE_FITS) { + do k = 1, numcols { + nret = tbfagt (tp, cp[k], rownum, buffer[1,k], lenstr, 1, 1) + nullflag[k] = (buffer[1,k] == EOS || + (strsearch (buffer[1,k], "INDEF") > 0)) + } + } else { + call error (ER_TBCORRUPTED, "tbrgtt: table type is messed up") + } +end |