/usr/share/gnudatalanguage/astrolib/dbget.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 | function dbget,item,values,listin,SILENT=silent, FULLSTRING = fullstring, $
Count = count
;+
; NAME:
; DBGET
; PURPOSE:
; Find entry numbers which contain specified values of a given item.
; EXPLANATION:
; DBGET() is useful as an alternative to DBFIND() when the desired
; search values are not easily expressed as a string.
;
; CALLING SEQUENCE:
; list = dbget( item, values, [ listin ], /SILENT, /FULLSTRING )
;
; INPUTS:
; item - Item name or number
; values - scalar or vector containing item values to search for.
;
; OPTIONAL INPUTS:
; listin - list of entries to be searched. If not supplied, or
; set to -1, then all entries are searched
;
; OUTPUT:
; list - vector giving the entry number of entries containing desired
; item values. The number of elements in LIST may be different
; from that of VALUE, since a value might be located zero, once,
; or many times in the database. Use the function DBMATCH if a
; one to one correspondence is desired between VALUES and LIST.
; OPTIONAL INPUT KEYWORDS:
; /SILENT - If this keyword is set, then DBGET will not display
; the number of entries found
; /FULLSTRING - By default, one has a match if a search string is
; included in any part of a database value (substring match).
; But if /FULLSTRING is set, then all characters in the database
; value must match the search string (excluding leading and
; trailing blanks). Both types of string searches are case
; insensitive.
; OPTIONAL OUTPUT KEYWORD:
; COUNT - Integer scalar giving the number of valid matches
;
; RESTRICTIONS:
; When linked databases are opened together, DBGET can only be used to
; search on items in the primary database.
; EXAMPLE:
; Get info on selected HD stars in Bright Star catalogue
;
; IDL> dbopen, 'YALE_BS'
; IDL> hdno = [1141,2363,3574,4128,6192,6314,6668] ;Desired HD numbers
; IDL> list = dbget( 'HD', hdno ) ;Get corresponding entry numbers
;
; SYSTEM VARIABLES:
; The obsolete system variable !ERR is set to number of entries found
; REVISION HISTORY:
; Written, W. Landsman STX February, 1989
; William Thompson, GSFC, 14 March 1995 Added keyword FULLSTRING
; Converted to IDL V5.0 W. Landsman September 1997
; Added COUNT keyword, deprecate !ERR W. Landsman March 2000
; Fix bug introduced March 2000 W. Landsman November 2000
; Fix possible bug when sublist supplied W. Landsman August 2008
;-
;
On_error,2 ;Return to caller
compile_opt idl2
if N_params() LT 2 then begin
print,'Syntax -- list = ' + $
'DBGET( item, values, [listin, /SILENT, /FULLSTRING, Count=]'
return,-1
endif
if N_params() LT 3 then listin = lonarr(1)-1
nvals = N_elements(values)
if nvals EQ 0 then message,'No search values supplied'
db_item, item, itnum
index = db_item_info( 'INDEX', itnum)
list = listin
if nvals EQ 1 then val = [values,values] $ ;Need at least 2 elements
else val = values
if index[0] GE 2 then begin ;Sorted item
if N_elements(list) EQ 1 then list = lonarr(1) + list
dbfind_sort, itnum[0], nvals, val, list, $
FULLSTRING = fullstring, Count =count
endif else begin ;Non-sorted item
dbext, list, itnum, itvals
dbsearch, nvals, val, itvals, good, FULLSTRING = fullstring, Count = count
if count GT 0 then $ ;Updated Aug 2008
if list[0] NE -1 then list = list[good] else list = good+1
endelse
if count LE 0 then begin
if not keyword_set(SILENT) then $
print, 'No entries found by DBGET in ' + db_info( 'NAME',0 )
list = intarr(1)
endif else if not keyword_set( SILENT ) then $
print,count,' entries found in '+db_info('name',0)
return, list[ sort(list) ]
end
|