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

📄 dbdelete.pro

📁 basic median filter simulation
💻 PRO
字号:
pro dbdelete, list, name, DEBUG = debug;+; NAME:;       DBDELETE; PURPOSE:;       Deletes specified entries from data base;; CALLING SEQUENCE:;       DBDELETE, list, [ name, /DEBUG ]   ;; INPUTS:;       list - list of entries to be deleted, scalar or vector;       name - optional name of data base, scalar string.  If not specified;               then the data base file must be previously opened for update ;               by DBOPEN.;; OPERATIONAL NOTES:;       !PRIV must be at least 3 to execute.;; SIDE EFFECTS:;       The data base file (ZDBASE:name.dbf) is modified by removing the;       specified entries and reordering the remaining entry numbers;       accordingly (ie. if you delete entry 100, it will be replaced;       by entry 101 and the database will contain 1 less entry.;; EXAMPLE:;        Delete entries in a database STARS where RA=DEC = 0.0;;        IDL> !PRIV= 3                           ;Set privileges;        IDL> dbopen,'STARS',1                   ;Open for update;        IDL> list = dbfind('ra=0.0,dec=0.0')    ;Obtain LIST vector;        IDL> dbdelete, list             ;Delete specified entries from db;; NOTES:;       The procedure is rather slow because the entire database is re-;       created with the specified entries deleted.; OPTIONAL KEYWORD INPUT:;        DEBUG - if this keyword is set and non-zero, then additional ;               diagnostics will be printed as each entry is deleted.; COMMON BLOCKS:;       DBCOM; PROCEDURE CALLS:;       DBINDEX, DB_INFO(), DBOPEN, DBPUT, ZPARCHECK; HISTORY;       Version 2  D. Lindler  July, 1989;       Updated documentation   W. Landsman    December 1992;       William Thompson, GSFC, 28 February 1995;                       Fixed bug when external representation used.;       Fixed for case where second parameter supplied W. Landsman April 1996;       Use keyword DEBUG rather than !DEBUG   W. Landsman    May 1997;       Don't call DBINDEX if no indexed items  W. Landsman May 2006  ;       Use TRUNCATE_LUN if V5.6 or later W. Landsman   Sep 2006 ;       Fix problem when deleting last entry   W. Landsman Mar 2007;       Assume since V5.6 so TRUNCATE_LUN is available   W. Landsman;       ;-;-------------------------------------------------------------------------------  On_error,2  compile_opt idl2  if N_params() EQ 0 then begin      print,'Syntax - DBDELETE, entry, [ dbname ]'      return  endif ; data base common block common db_com,QDB,QITEMS,QDBREC; Check parameters zparcheck, 'DBDELETE', list, 1, [1,2,3], [0,1], 'entry list' if N_params() GT 1 then $        zparcheck, 'dbdelete', name, 2, 7, 0, 'data base name'  if !PRIV lt 3 then $        message,'!priv must be at least 3 to execute'; Open data base if name supplied  if N_params() GT 1 then dbopen,name,1 else begin    ;Open specified database     if not db_info( 'OPEN') then $        message,'No database open for update'     if not db_info('update') then $            message,'Database '+ db_info('NAME',0) + ' not open for update'     endelse; Determine whether or not the database uses external data representation. external = qdb[119] eq 1; Create vector if list is a scalar  outrec = 0L                           ; Create counter of output record  len = db_info('length') ; loop on entries in data base  qnentry = db_info('ENTRIES',0)    for i = 1L, qnentry do begin        ; Is it to be kept?        found = where( list EQ i, Nfound)        if keyword_set(debug) then print,i,nfound           ; allow diags.        if ( Nfound LE 0 ) then begin                outrec = outrec + 1                ; increment counter                if ( outrec NE i ) then begin                        entry = qdbrec[i]                        tmp = outrec                        if external then byteorder,tmp,/htonl                        dbput, 0, tmp, entry   ; modify entry number                        qdbrec[outrec] = entry                endif        endif  endfor; Update adjusted total number of entries.  qdb[84] = byte( outrec,0,4 ); Truncate the .dbf file at the current position.  unit = db_info('unit_dbf')  point_lun, unit, long64(outrec+1)*len  truncate_lun, unit; Update index file  indextype = db_item_info( 'INDEX')  if total(indextype) NE 0 then dbindex  if N_params() GT 1 then dbclose  return  ; dbdelete  end  ; dbdelete

⌨️ 快捷键说明

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