Viewing contents of file '../idllib/ghrs/pro/calhrs_udl.pro'
pro calhrs_udl,ihudl,ihsdp,udls,udl_begin,udl_end
;
;+
;			calhrs_udl
;
; procedure to match udls to science data packets.
;
; CALLING SEQUENCE:
;	calhrs_udl,ihudl,ihsdp,udls,udl_begin,udl_end
;
; INPUTS:
;	ihudl - headers for udl packets (returned from HRS_READ)
;	ihsdp - headers for science packets (returned fro HRS_READ)
; 	udls - udl array
; OUTPUTS:
;	udl_begin - vector giving beggining UDL number for each science
;		packet (set to -1 if not found)
;	udl_end - vector giving ending udl number for each science packet.
;
; HISTORY:
;	version 1  D. Lindler  Mar 89
;	version 2  JKF/ACC    11-nov-92	- moved to IDL Version 2.
;	version 3  JKF/ACC     4-apr-92	- check for 1D UDL and SDP inputs.
;-
;------------------------------------------------------------------------
	s=size(ihudl) & nudl=n_elements(ihudl)/s(1)
	s=size(ihsdp) & nsdp=n_elements(ihsdp)/s(1)
;
; prelaunch data or ddlink data (ddlink added 11/1/91)
;
	if (!prelaunch ne 0) or (ihsdp(0) eq 10) then begin
		udl_begin=lonarr(nsdp)
		udl_end=replicate(nudl-1,nsdp)
		return
	endif
;
; post launch data
;
	obsnum_udl=transpose(ihudl(19,*))
	obsnum_sdp=transpose(ihsdp(19,*))
	if min(obsnum_sdp) lt 0 then begin	;GCOST?
		obsnum_udl=-obsnum_udl
		obsnum_sdp=-obsnum_sdp
	endif
	max_obsnum=max(obsnum_udl)>max(obsnum_sdp)
 
	fincod=udls(87,*)			;observation fin code
	beginu=where(fincod eq 101) & n_begin=!err
	endu=where(fincod ne 101) & n_end=!err
	obsnum_begin=replicate(-1,max_obsnum+1)
	obsnum_end=replicate(-1,max_obsnum+1)
	if n_begin gt 0 then obsnum_begin(obsnum_udl(beginu))=beginu
	if n_end gt 0 then obsnum_end(obsnum_udl(endu))=endu
	udl_begin=obsnum_begin(obsnum_sdp)
	udl_end=obsnum_end(obsnum_sdp)
	return
	end