Viewing contents of file '../idllib/ghrs/pro/calhrs_out.pro'
pro calhrs_out,ioblock,type,flag,headers,data,epsilon,errors
;
;+
;				calhrs_out
;
; routine to write calibration results generated by CALHRS
;
; CALLING SEQUENCE:
;	calhrs_out,ioblock,type,flag,headers,data,epsilon,errors
;
; INPUTS:
;	ioblock - output file description vector (from HRS_OPEN)
;	type - type of data (string)
;		type		description
;		DQI		data quality initialization
;		EXP		count rates (data/exposure time)
;		PPC		paired pulse corrected
;		MAP		mapping function completed
;		PHC		photocathode response
;		VIG		vignetting correction
;		MER		substep bins merged
;		BCK		background data
;		NET		background subtracted
;		ADC		wavelengths before incidence angle correction.
;		IAC		wavelengths after incidince angle correction.
;		HEL		heliocentric wavelengths
;		RIP		ripple corrected flux
;		ABS		absolute sensitiviy corrected flux
;		AIR		air wavelengths
;	flag - output flag
;		less than 2 - do not write results
;		2 - write data
;		3 - write data and epsilon
;		4 - write data and errors
;		5 or greater - write everything
; 	headers - header vectors
;	data - data vectors
;	epsilon - epsilon vectors
;	errors - propagated statistical errors
;
; HISTORY:
;	version 1.0  D. Lindler   Mar 89
;-
;----------------------------------------------------------------------------
	if flag lt 2 then return
;
; decode input type
;
	case strupcase(type) of
		'RAW': t=10
		'EXP': t=40
		'PPC': t=70
		'DIO': t=100
		'MAP': t=130
		'PHC': t=160
		'VIG': t=190
		'MER': t=220
		'BCK': t=250
		'NET': t=280
		'RIP': t=310
		'ABS': t=340
 
		'ADC': t=500
		'IAC': t=530
		'HEL': t=560
		'AIR': t=590
	endcase
;
; decode flag
;
	if flag eq 3 then outeps=1 else outeps=0
	if flag eq 4 then outerr=1 else outerr=0
	if flag ge 5 then begin & outerr=1 & outeps=1 & end
;
; write data
;
	binids=headers(0,*) mod 10
	headers(0,0)=binids + t		;change record type
	hrs_write,ioblock,headers,data
 
	if (outeps) and (n_elements(epsilon) gt 0) then begin
		headers(0,0)= binids + (t+10)
		hrs_write,ioblock,headers,epsilon
	endif
 
	if (outerr) and (n_elements(errors) gt 1) then begin
		headers(0,0) = binids + (t+20)
		hrs_write,ioblock,headers,errors
	endif
return
end