Viewing contents of file '../idllib/uit/pro/dbext.pro'
pro dbext,list,items,v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11,v12
;+
; NAME:
; DBEXT
; PURPOSE:
; Procedure to extract values of up to 12 items from
; data base file, and place into IDL variables
;
; CALLING SEQUECE:
; dbext,list,items,v1,[v2,v3,v4,v5,v6,v7,v8,v9,v10,v11,v12]
;
; INPUTS:
; list - list of entry numbers to be printed, vector or scalar
; If list = -1, then all entries will be extracted.
; list may be converted to a vector by DBEXT
; items - standard item list specification. See DBPRINT for
; the 6 different ways that items may be specified.
;
; OUTPUTS:
; v1...v12 - the vectors of values for up to 12 items.
;
; EXAMPLE:
; Extract all RA and DEC values from the currently opened database, and
; place into the IDL vectors, IDLRA and IDLDEC.
;
; IDL> DBEXT,-1,'RA,DEC',idlra,idldec
;
; HISTORY
; version 2 D. Lindler NOV. 1987
; check for INDEXED items W. Landsman Feb. 1989
;-
;*****************************************************************
On_error,2
if N_params() lt 3 then begin
print,'Syntax - dbext, list, items, v1, [ v2, v3....v12 ]
return
endif
zparcheck,'DBEXT',list,1,[1,2,3,4,5],[0,1],'Entry List'
db_item,items,it,ivalnum,idltype,sbyte,numvals,nbytes
nitems = N_elements(it)
nentries = db_info('entries')
if max(list) GT nentries(0) then $
message,db_info('name',0)+' entry numbers must be between 1 and ' + $
strtrim(nentries(0),2)
if nitems GT N_params()-2 then $
message,'Insufficient output variables supplied'
if nitems LT N_params()-2 then message, /INF, $
'WARNING - More output variables supplied than items specified'
; get item info.
dbno = db_item_info('dbnumber',it)
if max(dbno) eq 0 then dbno=0 $ ;flag that it is first db only
else dbno=-1
index = db_item_info('index',it)
ind = where( (index ge 1) and (index ne 3), Nindex )
if (Nindex eq nitems) and (dbno eq 0) then begin ;All indexed items?
if N_elements(list) eq 1 then list = lonarr(1) + list
for i=0,nitems - 1 do begin ;Get indexed items
itind = it(ind(i))
test = execute('dbext_ind,list,itind,dbno,v' + strtrim(ind(i)+1,2))
endfor
endif else begin
nvalues = db_item_info('nvalues',it)
dbext_dbf,list,dbno,sbyte,nbytes*nvalues,idltype,nvalues, $
v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11,v12
endelse
return
end