⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 db_info.pro

📁 basic median filter simulation
💻 PRO
字号:
function db_info,request,dbname;+; NAME:;	DB_INFO; PURPOSE:;	Function to obtain information on opened data base file(s);; CALLING SEQUENCES:;	1)  result = db_info(request);	2)  result = db_info(request,dbname); INPUTS (calling sequence 1):;;	request - string specifying requested value(s);		value of request	  value returned in result;			'open'		Flag set to 1 if data base(s) are opened;			'number'	Number of data base files opened;			'items'		Total number of items (all db's opened);			'update'	update flag (1 if opened for update);			'unit_dbf'	Unit number of the .dbf files;			'unit_dbx'	Unit number of the .dbx files;			'entries'	Number of entries in the db's;			'length'	Record lengths for the db's;			'external'	True if the db's are in external format;; INPUTS (calling sequence 2):;;	request - string specifying requested value(s);		   value of request	  value returned in result;			'name'		Name of the data base;			'number'	Sequential number of the db;			'items'		Number of items for this db;			'item1'		Position of item1 for this db;					in item list for all db's;			'item2'		Position of last item for this db.;			'pointer'	Number of the item which points;					to this db. 0 for first or primary;					db.  -1 if link file pointers.;			'length'	Record length for this db.;			'title'		Title of the data base;			'unit_dbf'	Unit number of the .dbf file;			'unit_dbx'	Unit number of the .dbx file;	    		'entries'	Number of entries in the db;			'seqnum'	Last sequence number used;			'alloc'		Allocated space (# entries);			'update'	1 if data base opened for update;			'external'	True if data base in external format;;	dbname - data base name or number; OUTPUTS:;	Requested value(s) are returned as the function value.;; HISTORY:;	version 1  D. Lindler    Oct. 1987;       changed type from 1 to 7 for IDLV2, J. Isensee, Nov., 1990;	William Thompson, GSFC/CDS (ARC), 30 May 1994;		Added EXTERNAL request type.;	Converted to IDL V5.0   W. Landsman   September 1997;-;------------------------------------------------------------------------on_error,2                       ;Return to caller;; 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 .dbx 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	 True if database is in external (IEEE) format;;  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 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;;; QLINK(i) contains the entry number in the second data base;	corresponding to entry i in the first data base.;-------------------------------------------------------------------------;req=strtrim(strupcase(request))		;requested values=size(qdb)if req eq 'OPEN' then begin	if s[0] eq 0 then return,0 else return,1endif s[0] eq 0 then message,'No data base file(s) opened'n=s[2]					;number of data bases;; calling sequence 1  result=db_info(request);if N_params(0) lt 2 then begin    case req of	'NUMBER'  : return,n			;number of files opened	'ITEMS'	  : begin			;total number of items		    	s=size(qitems)			return,s[2]		    end	'LENGTH'  : return,long(fix(qdb[82:83,*],0,n))						;total record length	'UPDATE'  : return,qdb[104,0]		;update flag	'UNIT_DBF'  : return,qdb[96,*]		;.dbf unit number	'UNIT_DBX'  : return,qdb[97,*]		;.dbx unit number	'ENTRIES'   : return,long(qdb[84:87,*],0,n)	;number of entries	'EXTERNAL'  : return,qdb[119,*] eq 1	;external format?	else :	message,'Invalid request for information'    endcaseendif;; second calling sequence:  result=db_info(request,dbname) ----------;s=size(dbname)ndim=s[0]type=s[ndim+1]if (ndim gt 0) or (type eq 0) then goto,abort;; convert name to number;if type eq 7 then begin	db_name=strtrim(strupcase(dbname))	for i=0,n-1 do $		if db_name eq strtrim(string(qdb[0:18,i])) then goto,found	goto,abort					;not foundfound:	dbnum=i   end else begin					;number supplied	dbnum=fix(dbname)	if (dbnum lt 0) or (dbnum ge n) then goto,abortendcase req of	'NAME'	   : return,strtrim(string(qdb[0:18,dbnum]))  ;db name	'NUMBER'   : return,dbnum			;data base number	'ITEMS'	   : begin				;number of items			x=fix(qdb[80:81,dbnum],0,1)			return,x[0]		     end	'ITEM1'	   : begin				;starting item number			x=fix(qdb[88:89,dbnum],0,1)			return,x[0]		     end	'ITEM2'	   : begin				;last item number			x=fix(qdb[90:91,dbnum],0,1)			return,x[0]		     end	'POINTER'   : begin				;item number pointer			x=fix(qdb[98:99,dbnum],0,1)			return,x[0]		      end	'LENGTH'    : begin				;record length			x=fix(qdb[82:83,dbnum],0,1)			return,long(x[0])		      end	'TITLE'     : return,strtrim(string(qdb[19:79,dbnum])) ;data base title	'UNIT_DBF'  : return,qdb[96,dbnum]		;.dbf unit number	'UNIT_DBX'  : return,qdb[97,dbnum]		;.dbx unit number	'ENTRIES'   : begin				;number of entries			x=long(qdb[84:87,dbnum],0,1)			return,x[0]		      end	'SEQNUM'    : begin				;last sequence number			x=long(qdb[92:95,dbnum],0,1)			return,x[0]		      end	'ALLOC'	    : begin				;allocated size			x=long(qdb[100:103,dbnum],0,1)			return,x[0]		      end	'UPDATE'    : return,qdb[104,dbnum]		;update flag	'EXTERNAL'  : begin				;External format?			x=qdb[119,*] eq 1			return,x[0]		      end	else: message,'Invalid information request'endcaseabort:	message,'Invalid data base name or number supplied'end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -