📄 zparcheck.pro
字号:
pro zparcheck,progname,parameter,parnum,types,dimens,message;+; NAME:; ZPARCHECK; PURPOSE:; Routine to check user parameters to a procedure;; CALLING SEQUENCE:; zparcheck, progname, parameter, parnum, types, dimens, [ message ];; INPUTS:; progname - scalar string name of calling procedure; parameter - parameter passed to the routine; parnum - integer parameter number; types - integer scalar or vector of valid types; 1 - byte 2 - integer 3 - int*4; 4 - real*4 5 - real*8 6 - complex; 7 - string 8 - structure 9 - double complex; 10 - pointer 11 - object ref 12 - Unsigned integer; 13 - unsigned int*4 ; 14 - int*8 ; 15 - Unsigned int*8; dimens - integer scalar or vector giving number; of allowed dimensions.; OPTIONAL INPUT:; message - string message describing the parameter to be printed if an ; error is found;; OUTPUTS:; none;; EXAMPLE:; IDL> zparcheck, 'HREBIN', hdr, 2, 7, 1, 'FITS Image Header';; This example checks whether the parameter 'hdr' is of type string (=7); and is a vector (1 dimension). If either of these tests fail, a ; message will be printed; "Parameter 2 (FITS Image Header) is undefined"; "Valid dimensions are 1"; "Valid types are string" ;; SIDE EFFECTS:; If an error in the parameter is a message is printed; a RETALL issued;; HISTORY; version 1 D. Lindler Dec. 86; documentation updated. M. Greason, May 1990.; Recognize double complex datatype W. Landsman September 1995; Converted to IDL V5.0 W. Landsman September 1997; Check for new data types (e.g. unsigned) W. Landsman February 2000;-;---------------------------------------------------------- if N_params() LT 4 then begin print, $ 'Syntax - ZPARCHECK, progname, parameter, parnum, types, dimens, [message ] return endif; get type and size of parameter s = size(parameter) ndim = s[0] type = s[ndim+1]; check if parameter defined. if type EQ 0 then begin err = ' is undefined.' goto, ABORT endif; check for valid dimensions valid = where( ndim EQ dimens, Nvalid) if Nvalid LT 1 then begin err = 'has wrong number of dimensions' goto, ABORT endif; check for valid type valid = where(type EQ types, Ngood) if ngood lt 1 then begin err = 'is an invalid data type' goto, ABORT endif return; bad parameterABORT: mess = ' ' if N_params() lt 6 then message = '' if message NE '' then mess = ' ('+message+') ' print,string(7b) + 'Parameter '+strtrim(parnum,2) + mess,$ ' of routine ', strupcase(progname) + ' ', err sdim = ' ' for i = 0,N_elements(dimens)-1 do begin if dimens[i] eq 0 then sdim = sdim + 'scalar' $ else sdim = sdim + string(dimens[i],'(i3)') end print,'Valid dimensions are:'+sdim stype = ' ' for i = 0, N_elements( types )-1 do begin case types[i] of 1: stype = stype + ' byte' 2: stype = stype + ' int*2' 3: stype = stype + ' int*4' 4: stype = stype + ' real*4' 5: stype = stype + ' real*8' 6: stype = stype + ' complex' 7: stype = stype + ' string' 8: stype = stype + ' structure' 9: stype = stype + ' dcomplex' 10: stype = stype + ' pointer' 11: stype = stype + ' Object' 12: stype = stype + ' Unsigned(i*2)' 13: stype = stype + ' Unsigned(i*4)' 14: stype = stype + ' int*8' 15: stype = stype + ' Unsigned(i*8)' endcase endfor print,'Valid types are:' + stype ;if !debug then stop retall ; zparcheck end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -