Viewing contents of file '../idllib/contrib/buie/calval.pro'
;+
; NAME:
; calval
; PURPOSE: (one line)
; Validate overscan, cropping region, and calibration file settings.
; DESCRIPTION:
;
; CATEGORY:
; CCD data processing
; CALLING SEQUENCE:
; calval, isize, csize, mlow, mhigh, errflg
; INPUTS:
; isize : Image size.
; csize : Calibration file size.
; mlow : Starting subscript in image.
; nhigh : Ending subscript in image.
; OPTIONAL INPUT PARAMETERS:
;
; KEYWORD PARAMETERS:
; BANNER : Banner line printed with error report (if SILENT=0).
; CSIZELAB : Label for csize parameter, if error condition is printed.
; MLOWLAB : Label for mlowlab parameter, if error condition is printed.
; MHIGHLAB : Label for mhighlab parameter, if error condition is printed.
; DELTAMLAB : Label for deltamlab parameter, if error condition is printed.
; SILENT : If set, No error report is generated.
; ISIZELAB : Label for isize parameter, if error condition is printed.
; OUTPUTS:
;
; COMMON BLOCKS:
;
; SIDE EFFECTS:
;
; RESTRICTIONS:
;
; PROCEDURE:
;
; MODIFICATION HISTORY:
; Written by Doug Loucks, Lowell Observatory, April, 1994.
;-
PRO calval, in_isize, in_csize, in_mlow, in_mhigh, out_error, $
BANNER=in_banner, CSIZELAB=in_csizelab, MLOWLAB=in_mlowlab, $
MHIGHLAB=in_mhighlab, DELTAMLAB=in_deltamlab, ISIZELAB=in_isizelab, $
SILENT=in_silent
IF N_PARAMS() NE 5 THEN BEGIN
PRINT, 'calval, isize, csize, mlow, mhigh, errflg'
RETURN
ENDIF
IF KEYWORD_SET( in_banner ) THEN BEGIN
banner = in_banner
ENDIF ELSE BEGIN
banner = 'Validation error(s) encountered:'
ENDELSE
IF KEYWORD_SET( in_isizelab ) THEN isizelab=in_isizelab ELSE isizelab=''
IF KEYWORD_SET( in_csizelab ) THEN csizelab=in_csizelab ELSE csizelab=''
IF KEYWORD_SET( in_mlowlab ) THEN mlowlab=in_mlowlab ELSE mlowlab=''
IF KEYWORD_SET( in_mhighlab ) THEN mhighlab=in_mhighlab ELSE mhighlab=''
IF KEYWORD_SET( in_deltamlab ) THEN deltamlab=in_deltamlab ELSE nmmlab=''
IF KEYWORD_SET( in_silent ) THEN spill = 0 ELSE spill = 1
out_error = 0
errtyp = 0
dm = in_mhigh - in_mlow + 1
IF (in_mlow LT 0) AND (in_mhigh LT 0) THEN BEGIN
IF in_isize GT 0 THEN BEGIN
IF in_csize GT 0 THEN BEGIN
IF in_isize EQ in_csize THEN BEGIN
;NOP
ENDIF ELSE BEGIN
;isize must equal csize.
out_error = 1
errtyp = 5
ENDELSE
ENDIF ELSE BEGIN
;NOP
ENDELSE
ENDIF ELSE BEGIN
; NOP
ENDELSE
ENDIF ELSE BEGIN
IF in_mlow GT in_mhigh THEN BEGIN
;mlow must be <= mhigh.
out_error = 1
errtyp = 1
ENDIF ELSE BEGIN
IF in_isize GT 0 THEN BEGIN
IF in_csize GT 0 THEN BEGIN
IF dm EQ in_csize THEN BEGIN
IF in_mhigh LT in_isize THEN BEGIN
;OK
ENDIF ELSE BEGIN
out_error = 1
errtyp = 3
;mhigh must be < isize.
ENDELSE
ENDIF ELSE BEGIN
out_error = 1
errtyp = 2
;deltam must equal csize.
ENDELSE
ENDIF ELSE BEGIN
IF dm LE in_isize THEN BEGIN
IF in_mhigh LT in_isize THEN BEGIN
;OK
ENDIF ELSE BEGIN
out_error = 1
errtyp = 3
;mhigh must be < isize.
ENDELSE
ENDIF ELSE BEGIN
out_error = 1
errtyp = 4
;deltam must be <= isize.
ENDELSE
ENDELSE
ENDIF ELSE BEGIN
IF in_csize GT 0 THEN BEGIN
IF dm EQ in_csize THEN BEGIN
;OK
ENDIF ELSE BEGIN
out_error = 1
errtyp = 2
;deltam must equal csize.
ENDELSE
ENDIF ELSE BEGIN
;OK
ENDELSE
ENDELSE
ENDELSE
ENDELSE
IF out_error AND spill THEN BEGIN
fmt = '(I4)'
PRINT, ''
MESSAGE, banner + STRING( 7B ), /INFO
IF errtyp EQ 1 THEN BEGIN
;mlow must be <= mhigh.
MESSAGE, STRING( in_mlow, FORMAT=fmt ) + ' = ' + mlowlab, /INFO
MESSAGE, STRING( in_mhigh, FORMAT=fmt ) + ' = ' + mhighlab, /INFO
MESSAGE, mlowlab + ' must be <= ' + mhighlab, /INFO
ENDIF
IF errtyp EQ 2 THEN BEGIN
;deltam must equal csize.
MESSAGE, STRING( in_csize,FORMAT=fmt ) + ' = ' + csizelab, /INFO
MESSAGE, STRING( dm, FORMAT=fmt ) + ' = ' + deltamlab, /INFO
MESSAGE, deltamlab + ' must equal ' + csizelab, /INFO
ENDIF
IF errtyp EQ 3 THEN BEGIN
;mhigh must be < isize.
MESSAGE, STRING( in_isize, FORMAT=fmt ) + ' = ' + isizelab, /INFO
MESSAGE, STRING( in_mhigh, FORMAT=fmt ) + ' = ' + mhighlab, /INFO
MESSAGE, mhighlab + ' must be < ' + isizelab, /INFO
ENDIF
IF errtyp EQ 4 THEN BEGIN
;deltam must be <= isize.
MESSAGE, STRING( in_isize, FORMAT=fmt ) + ' = ' + isizelab, /INFO
MESSAGE, STRING( dm, FORMAT=fmt ) + ' = ' + deltamlab, /INFO
MESSAGE, deltamlab + ' must be <= ' + isizelab, /INFO
ENDIF
IF errtyp EQ 5 THEN BEGIN
;isize must equal csize.
MESSAGE, STRING( in_isize, FORMAT=fmt ) + ' = ' + isizelab, /INFO
MESSAGE, STRING( in_csize,FORMAT=fmt ) + ' = ' + csizelab, /INFO
MESSAGE, isizelab + ' must equal ' + csizelab, /INFO
ENDIF
ENDIF
END