📄 db_item_info.pro
字号:
function db_item_info,request,itnums;+; NAME:; DB_ITEM_INFO; PURPOSE:; routine to return information on selected item(s) in the opened; data bases.;; CALLING SEQUENCE:; result = db_item_info( request, itnums); INPUTS:; request - string giving the requested information.; 'name' - item names; 'idltype' - IDL data type (integers); see documentation of intrinsic SIZE funtion; 'nvalues' - vector item length (1 for scalar); 'sbyte' - starting byte in .dbf record (use bytepos; to get starting byte in record returned by; dbrd); 'nbytes' - bytes per data value; 'index' - index types; 'description' - description of the item; 'pflag' - pointer item flags; 'pointer' - data bases the items point to; 'format' - print formats; 'flen' - print field length; 'headers' - print headers; 'bytepos' - starting byte in dbrd record for the items; 'dbnumber' - number of the opened data base; 'pnumber' - number of db it points to (if the db is; opened); 'itemnumber' - item number in the file;; itnums -(optional) Item numbers. If not supplied info on all items; are returned.; OUTPUT:; Requested information is returned as a vector. Its type depends; on the item requested.; HISTORY:; version 1 D. Lindler Nov. 1987; Converted to IDL V5.0 W. Landsman September 1997;-;------------------------------------------------------------------------; data base common block; common db_com,QDB,QITEMS,QLINK;; QDB(*,i) contains the following for each data base opened;; bytes; 0-18 data base name character*19; 19-79 data base title character*61; 80-81 number of items (integer*2); 82-83 record length of DBF file (integer*2); 84-87 number of entries in file (integer*4); 88-89 position of first item for this file in QITEMS (I*2); 90-91 position of last item for this file (I*2); 92-95 Last Sequence number used (item=SEQNUM) (I*4); 96 Unit number of .DBF file; 97 Unit number of .IND file (0 if none exists); 98-99 Index number of item pointing to this file (0 for first db); 100-103 Number of entries with space allocated; 104 Update flag (0 open for read only, 1 open for update); 119 Equals 1 if external data representation (IEEE) is used; ; QITEMS(*,i) contains decription of item number i with following; byte assignments:;; 0-19 item name (character*20); 20-21 IDL data type (integet*2); 22-23 Number of values for item (1 for scalar) (integer*2); 24-25 Starting byte position in original DBF record (integer*2); 26-27 Number of bytes per data value (integer*2); 28 Index type; 29-97 Item description; 98-99 Print format field length; 100 Flag set to one if pointer item; 101-119 Data base this item points to; 120-125 Print format; 126-170 Print headers; 171-172 Starting byte in record returned by DBRD; 173-174 Data base number in QDB; 175-176 Data base number this item points to; 177-178 item number within file;; QLINK(i) contains the entry number in the second data base; corresponding to entry i in the first data base.;-------------------------------------------------------------------------s=size(qitems) & n=s[2]case strupcase(strtrim(request)) of 'NAME' : x=string(qitems[0:19,*]) 'IDLTYPE' : x=fix(qitems[20:21,*],0,n) 'NVALUES' : x=fix(qitems[22:23,*],0,n) 'SBYTE' : x=fix(qitems[24:25,*],0,n) 'NBYTES' : x=fix(qitems[26:27,*],0,n) 'INDEX' : x=qitems[28,*] 'DESCRIPTION' : x=string(qitems[29:99,*]) 'PFLAG' : x=qitems[100,*] 'POINTER' : x=string(qitems[101:119,*]) 'FORMAT' : x=string(qitems[120:125,*]) 'FLEN' : x=fix(qitems[98:99,*],0,n) 'HEADERS' : x=string(qitems[126:170,*]) 'BYTEPOS' : x=fix(qitems[171:172,*],0,n) 'DBNUMBER' : x=fix(qitems[173:174,*],0,n) 'PNUMBER' : x=fix(qitems[175:176,*],0,n) 'ITEMNUMBER' : x=fix(qitems[177:178,*],0,n) else: begin print,'DB_ITEM_INFO-- invalid information request' retall endendcaseif n_params(0) eq 1 then return,x else return,x[itnums]end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -