Viewing contents of file '../idllib/contrib/tappin/graffer/grf_tlv_get.pro'
function Grf_tlv_get, vn, n_var
;+
; GRF_TLV_GET
; Get a variable from the top level.
;
; Usage:
; var = grf_tlv_get(vn, n_var)
;
; Return value:
; var any The value or array of values returned from the
; top level.
;
; Arguments:
; VN string input the variable name to get including
; possible slice information
; N_VAR int output the number of elements returned.
;
; Method:
; Uses the undocumented ROUTINE_NAMES intrinsic function to get
; the requested variable.
;
; History:
; Original: 21/9/95; SJT
; Moved to its own file to allow use in multiple input routines:
; 6/12/96; SJT
;-
bp = strpos(vn, '(')
if (bp ge 0) then begin
var = strupcase(strmid(vn, 0, bp))
slice = strmid(vn, bp, strlen(vn))
endif else var = strupcase(vn)
vbls = routine_names(variables = 1) ; Get all top-level variables.
locs = where(vbls eq var, nv) ; Check that requested variable exists
if (nv eq 0) then begin
n_var = 0
return, -1l
endif
v = routine_names(var, fetch = 1) ; Retrieve the variable
sv = size(v)
if (sv(sv(0)+1) eq 0 or sv(sv(0)+1) ge 7) then begin ; Non-numeric
n_var = 0
return, -1l
endif
v1 = 0
if (n_elements(slice) gt 0) then begin
r = execute('v1 = v'+slice)
if (r ne 1) then begin
n_var = 0
return, -1l
endif
endif else v1 = v
n_var = n_elements(v1)
return, v1
end