/usr/share/gnudatalanguage/astrolib/fxbdimen.pro is in gdl-astrolib 2018.02.16+dfsg-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
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 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 | FUNCTION FXBDIMEN, UNIT, COL, ERRMSG=ERRMSG
;+
; NAME:
; FXBDIMEN()
;
; PURPOSE:
; Returns the dimensions for a column in a FITS binary table.
;
; Explanation : This procedure returns the dimensions associated with a column
; in a binary table opened for read with the command FXBOPEN.
;
; Use : Result = FXBDIMEN(UNIT,COL)
;
; Inputs : UNIT = Logical unit number returned by FXBOPEN routine.
; Must be a scalar integer.
;
; COL = Column in the binary table to read data from, either
; as a character string containing a column label
; (TTYPE), or as a numerical column index starting from
; column one.
;
; Opt. Inputs : None.
;
; Outputs : The result of the function is an array containing the
; dimensions for the specified column in the FITS binary table
; that UNIT points to.
;
; Opt. Outputs: None.
;
; Keywords : ERRMSG = If defined and passed, then any error messages will
; be returned to the user in this parameter rather than
; depending on the MESSAGE routine in IDL. If no
; errors are encountered, then a null string is
; returned. In order to use this feature, ERRMSG must
; be defined first, e.g.
;
; ERRMSG = ''
; Result = FXBDIMEN( ERRMSG=ERRMSG, ... )
; IF ERRMSG NE '' THEN ...
;
; Calls : FXBCOLNUM, FXBFINDLUN
;
; Common : Uses common block FXBINTABLE--see "fxbintable.pro" for more
; information.
;
; Restrictions: None.
;
; Side effects: The dimensions will be returned whether or not the table is
; still open or not.
;
; If UNIT does not point to a binary table, then 0 is returned.
;
; If UNIT is an undefined variable, then 0 is returned.
;
; Category : Data Handling, I/O, FITS, Generic.
;
; Prev. Hist. : None.
;
; Written : William Thompson, GSFC, 4 March 1994.
;
; Modified : Version 1, William Thompson, GSFC, 4 March 1994.
; Version 2, William Thompson, GSFC, 21 June 1994
; Added ERRMSG keyword.
; Version 3, William Thompson, GSFC, 23 June 1994
; Modified so that ERRMSG is not touched if not defined.
;
; Version : Version 3, 23 June 1994
; Converted to IDL V5.0 W. Landsman September 1997
;-
;
@fxbintable
ON_ERROR, 2
;
; Check the number of parameters.
;
IF N_PARAMS() NE 2 THEN BEGIN
MESSAGE = 'Syntax: Result = FXBDIMEN(UNIT,COL)'
IF N_ELEMENTS(ERRMSG) NE 0 THEN BEGIN
ERRMSG = MESSAGE
RETURN, 0
END ELSE MESSAGE, MESSAGE
ENDIF
;
; If UNIT is undefined, then return zero.
;
IF N_ELEMENTS(UNIT) EQ 0 THEN RETURN, 0
;
; Check the validity of UNIT.
;
IF N_ELEMENTS(UNIT) GT 1 THEN BEGIN
MESSAGE = 'UNIT must be a scalar'
IF N_ELEMENTS(ERRMSG) NE 0 THEN BEGIN
ERRMSG = MESSAGE
RETURN, 0
END ELSE MESSAGE, MESSAGE
ENDIF
SZ = SIZE(UNIT)
IF SZ[SZ[0]+1] GT 3 THEN BEGIN
MESSAGE = 'UNIT must be an integer'
IF N_ELEMENTS(ERRMSG) NE 0 THEN BEGIN
ERRMSG = MESSAGE
RETURN, 0
END ELSE MESSAGE, MESSAGE
ENDIF
;
; Find the column number for the requested column.
;
IF N_ELEMENTS(ERRMSG) NE 0 THEN BEGIN
ICOL = FXBCOLNUM(UNIT,COL,ERRMSG=ERRMSG)
IF MESSAGE NE '' THEN RETURN, 0
END ELSE ICOL = FXBCOLNUM(UNIT,COL)
IF ICOL EQ 0 THEN BEGIN
MESSAGE = 'No such column'
IF N_ELEMENTS(ERRMSG) NE 0 THEN BEGIN
ERRMSG = MESSAGE
RETURN, 0
END ELSE MESSAGE, MESSAGE
ENDIF
;
; Get the dimensions associated with UNIT and COL.
;
ILUN = FXBFINDLUN(UNIT)
DIMS = N_DIMS[*,ICOL-1,ILUN]
IF N_ELEMENTS(ERRMSG) NE 0 THEN ERRMSG = ''
RETURN, DIMS[1:DIMS[0]]
;
END
|