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

📄 dbcreate.pro

📁 basic median filter simulation
💻 PRO
📖 第 1 页 / 共 2 页
字号:
                        else: message,'Invalid data type "'+ item_type+ $                                       '" specified',/IOERROR                endcase                format[nitems]=ff                       ;default print format                headers[1,nitems]=names[nitems] ;default print header                type[nitems]=idltype            ;idl data type for item                nbytes[nitems]=nb               ;number of bytes for item                sbyte[nitems]=nextbyte          ;position in record for item                nextbyte=nextbyte+nb*numvals[nitems] ;next byte position                nitems=nitems+1                end        'FORMATS': begin;;                process strings in form:;                       <item name> <format> <header1>,<header2>,<header3>;                item_name=" "                item_name=strupcase(gettok(st,' '))                item_no=0                while item_no lt nitems do begin                        if strtrim(names[item_no]) eq item_name then begin                                st = strtrim(st, 1)                                format[item_no]=gettok(st,' ')                                if strtrim(st,2) ne '' then begin                                        st = strtrim(st, 1)                                        headers[0,item_no]=gettok(st,',')                                        headers[1,item_no]=gettok(st,',')                                        headers[2,item_no]=strtrim(st)                                endif                        endif                        item_no=item_no+1                endwhile                end        'POINTERS': begin;;               process record in form:;                       <item name> <data base name>;                item_name=strupcase(gettok(st,' '))                item_no=0                while item_no lt nitems do begin                        if strtrim(names[item_no]) eq item_name then $                                pointers[item_no]=strupcase(strtrim(st, 1))                        item_no=item_no+1                endwhile                endcase        'INDEX': begin;;               process record of type:;               <item name> <index type>;                item_name=strupcase(gettok(st,' '))                st = strtrim(st, 1)                indextype=gettok(st,' ')                item_no=0                while item_no lt nitems do begin                        if strtrim(names[item_no]) eq item_name then begin                            case strupcase(indextype) of                                'INDEX' : index[item_no]=1                                'SORTED': index[item_no]=2                                'SORT'  : index[item_no]=3                                'SORT/INDEX' : index[item_no]=4                                else    : message,'Invalid index type',/IOERROR                            endcase                        endif                        item_no=item_no+1                endwhile                end        else : begin                print,'DBCREATE-- invalid block specfication of ',block                print,'   Valid values are #TITLE, #ITEMS, #FORMATS, #INDEX,'                print,'   #MAXENTRIES or #POINTERS'               end        endcasenext:endwhile; loop on records;; create data base descriptor record --------------------------------------;;       byte array of 120 values;;       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-118 values filled in by DBOPEN;         119    equals 1 if keyword EXTERNAL is true.;totbytes=((nextbyte+3)/4*4)  ;make record length a multiple of 4drec = bytarr(120)drec[0:79]=32b                      ;blanksdrec[0] = byte(strupcase(filename))drec[19] = byte(title)drec[80] = byte(fix(nitems),0,2)drec[82] = byte(fix(totbytes),0,2)drec[119] = byte(extern);; create item description records;;  irec(*,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 i record (integer*2);       26-27   Number of bytes per data value (integer*2);       28      Index type;       29-97   Item description;       98-99   Field length of the print format;       100     Pointer flag;       101-119 Data base this item points to;       120-125 Print format;       126-170 Print headers;       171-199 Added by DBOPENirec=bytarr(200,nitems)rec=bytarr(200)headers = strmid(headers,0,15)       ;Added 15-Sep-92for i=0,nitems-1 do begin        rec[0:19]=32b  &  rec[101:170]=32b    ;Default string values are blanks        rec[29:87] = 32b        rec[0]  = byte(names[i])        rec[20] = byte(type[i],0,2)        rec[22] = byte(numvals[i],0,2)        rec[24] = byte(sbyte[i],0,2)        rec[26] = byte(nbytes[i],0,2)        rec[28] = index[i]        rec[29] = byte(desc[i])        if strtrim(pointers[i]) ne '' then rec[100]=1 else rec[100]=0        rec[101]= byte(strupcase(pointers[i]))        rec[120]= byte(format[i])        ff=strtrim(format[i])        flen=fix(gettok(strmid(ff,1,strlen(ff)-1),'.'))        rec[98] = byte(flen,0,2)        rec[126]= byte(headers[0,i]) > 32b    ;Modified Nov-91        rec[141]= byte(headers[1,i]) > 32b        rec[156]= byte(headers[2,i]) > 32b        irec[0,i]=recend;; Make sure user is on ZDBASE and write description file; close,unit openw,unit,zdir + filename+'.dbh'   On_ioerror, NULL if extern then begin        tmp = fix(drec,80,1) & host_to_ieee,tmp & drec[80] = byte(tmp,0,2)        tmp = fix(drec,82,1) & host_to_ieee,tmp & drec[82] = byte(tmp,0,2);        tmp = fix(irec[20:27,*],0,4,nitems)        host_to_ieee,tmp        irec[20,0] = byte(tmp,0,8,nitems);        tmp = fix(irec[98:99,*],0,1,nitems)        host_to_ieee,tmp        irec[98,0] = byte(tmp,0,2,nitems);        tmp = fix(irec[171:178,*],0,4,nitems)        host_to_ieee,tmp        irec[171,0] = byte(tmp,0,8,nitems)endifwriteu, unit, drecwriteu, unit, irec;; if new data base create .dbf and .dbx files -----------------------------;if newdb then begin    close,unit    openw, unit, zdir + filename+'.dbf'    header = bytarr(totbytes)    p = assoc(unit,header)    p[0] = headerend;; determine if any indexed items;nindex = total(index GT 0);; create empty index file if needed;if (nindex GT 0) and (newindex) then begin        indexed = where(index GT 0);; create header array;       header=intarr(7,nindex);               header(i,*) contains values;               i=0     item number;               i=1     index type;               i=2     idl data type for the item;               i=3     starting block for header;               i=4     starting block for data;               i=5     starting block for indices (type 3);               i=6     starting block for unsorted data (type 4);        nb = (maxentries+511)/512       ;number of 512 value groups        nextblock = 1        header = lonarr(7,nindex)        for ii = 0, nindex-1 do begin                item = indexed[ii]                header[0,ii] = item                header[1,ii] = index[item]                header[2,ii] = type[item]                data_blocks = nbytes[item]*nb                if index[item] NE 1 $                             then header_blocks = (nbytes[item]*nb+511)/512 $                             else header_blocks = 0                if (index[item] eq 3) or (index[item] EQ 4) then $                                 index_blocks=(4*nb) else index_blocks=0                if index[item] EQ 4 then unsort_blocks = data_blocks else $                                                        unsort_blocks=0                header[3,ii] = nextblock                header[4,ii] = nextblock+header_blocks                header[5,ii] = header[4,ii]+data_blocks                header[6,ii] = header[5,ii]+index_blocks                nextblock = header[6,ii]+unsort_blocks        end        totblocks = nextblock        close, unit        openw, unit, zdir + filename+'.dbx';        p = assoc(unit,lonarr(2))        tmp = [long(nindex),maxentries]        if extern then host_to_ieee, tmp        p[0] = tmp;        p = assoc(unit,lonarr(7,nindex),8)        tmp = header        if extern then host_to_ieee, tmp        p[0] = tmpendiffree_lun, unitreturn;BAD_IO: free_lun,unitprint, !ERROR_STATE.MSG_PREFIX + !ERROR_STATE.MSGprint, !ERROR_STATE.MSG_PREFIX + !ERROR_STATE.SYS_mSGreturn;end

⌨️ 快捷键说明

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