;+
;NAME:
;	check_sci5k_trunc
;PURPOSE:
;	To review the SCI5K data and see if any data products were truncated
;	Mail a message if there were some truncations
;HISTORY:
;	Written 13-Jun-96 by M.Morrison
;	27-Jun-96 (MDM) - Modified to recognize "false" truncate flag setting
;	30-Jul-96 (MDM) - Modified mail address to be "mdiers", not "mdi"
;     13-Feb-2001 (RIB) - Modified mail address to be "mdiops"
;-
;
function fmt_sci5k, hdr, nwords

cnt_minutes = 0
l_val = intarr(2)

                        reftime = long(hdr, 2)
    daytim = anytim2ints('1-Jan-58', off=reftime*1D)
    daytim_str = fmt_tim(daytim)

                        ;
    str = string(fmt_tim(daytim), format = '(1x, a, $)')
    str = str + string(hdr(4), format = '(i6, $)')              ; DP Seg Len
                        l_val(0) = hdr(6) &  l_val(1) = hdr(5)
    str = str + string(long(l_val,0), format = '(i7, $)')       ; NpixTotal
                        l_val(0) = hdr(18) &  l_val(1) = hdr(17)
    str = str + string(long(l_val,0), format = '(i8, $)')       ; NpixImage
                        ;
    str = str + string(hdr(7), format = '(i7, $)')              ; NpixSegment
    str = str + string(hdr(8), format = '(1x, i3, $)')              ; Segment Number
    str = str + string(hdr(12), hdr(13), format = '(3x, 2i2, $)')   ; N, K
    str = str + string(long(hdr,30), format = '(1x, z8.8)')         ; DPC

    if (keyword_set(nwords)) then str = str + string(nwords, (hdr(4)-nwords)/float(hdr(4))*100, $
					format='(i7, f7.1)')


return, str
end
;-------------------------------------------------
pro check_sci5k_trunc, style, date, lun, out
;
;
;
if (n_elements(date) eq 0) then date = anytim2ints(ut_time(), off=-86400)
fid = ex2fid(anytim2ex(date))
infil = concat_dir('$MDI_SCI5K_DIR', strmid(fid, 0, 6)+'.sci')
;
printf, lun, 'CHECK_SCI5K_TRUNC Run for: ' + gt_day(date,/str)
printf, lun, '   Program run: ' + ut_time() + ' UT'
printf, lun, ' '
;
for i=0L,138351-10000,10000 do begin
    rec = rd_hk(infil, i, i+9999)
    print, i
    if (data_type(rec) eq 8) then begin
	out0 = fix(rec.ccsds(2:3),0,n_elements(rec))
	out0 = mask(unsign(out0,16),0,14)
	if (n_elements(out) eq 0) then out = out0 else out = [out, out0]
	;
	pkid = rec.hk(0)
	qtrunc = mask(pkid, 6, 1)
	ss = where(qtrunc, nss)
	;
	if (style eq 1) then for j=0,nss-1 do printf, lun, rec(ss(j)).hk(0:40), format='(41z3)'
	;
	if (nss ne 0) then begin
	    temp = fix(rec.hk(2:385),0,192,n_elements(rec))
	    temp = unsign(temp, 16)
            ss  = where(temp eq 'aa55'x, nss)
	    ss2 = where((ss mod 192) eq 0, nss2)
	    for j=1,nss2-1 do if (qtrunc(ss(ss2(j))/192)) then begin
		i1 = ss(ss2(j)-1)
		i2 = ss(ss2(j))
		;
		if (style eq 2) then begin
		    printf, lun, byte(fix(temp(i1-1:i1+19)), 0, 40), format='(42z3)'
		    printf, lun, byte(fix(temp(i2-1:i2+19)), 0, 40), format='(42z3)'
		    printf, lun, ' '
		end

		hdr1 = fix(temp(i1:i1+39))
		hdr2 = fix(temp(i2:i2+39))
		reftim1 = fmt_tim(anytim2ints('1-Jan-58', off=1D*long(hdr1, 2)))
		reftim2 = fmt_tim(anytim2ints('1-Jan-58', off=1D*long(hdr2, 2)))
                dpc1 = string(long(hdr1, 30), format='(z8.8)')                     ;DPC
                dpc2 = string(long(hdr2, 30), format='(z8.8)')                     ;DPC
		qtimok = (abs(int2secarr(date, reftim1)) lt 86400)
		nwords = (i2-i1-15)
		percent = (hdr1(4)-nwords)/float(hdr1(4))*100
		spercent = string(nwords, percent, format='(i7, f7.1)')
		out3or5 = string(reftim1, dpc1, reftim2, dpc2, spercent, format='(a,1x,a,10x,a,1x,a, 3x, a)')
		if (style eq 3) and (qtimok) then printf, lun, out3or5
		if (style eq 4) then begin
		    printf, lun, fmt_sci5k(hdr1, nwords)
		    printf, lun, fmt_sci5k(hdr2)
		end
		if (style eq 5) and (qtimok) and (percent gt 0) then printf, lun, out3or5
		print, out3or5
	    end
	end
    end
end
;
if (keyword_set(qplot)) then begin
    !p.multi = [0,1,3]
    plot, out, tit=infil, ytit='Packet #'
    plot,deriv_arr(out)>(-3)
    plot,deriv_arr(out)>(-3)<10
end
;
if (lun ne -1) then free_lun, lun
end
;-------------------------------------------
;
;
openw, lun, 'check_sci5k_trunc.txt', /get_lun
;
if (n_elements(date) eq 0) then date = anytim2ints(ut_time(), off=-86400)
if (n_elements(style) eq 0) then style = 5
;
check_sci5k_trunc, style, date, lun
;
mat = rd_tfile('check_sci5k_trunc.txt')
if (n_elements(mat) gt 3) then begin
    msg = ['**** SCI5K data products being truncated *****', ' ', $
				'Truncated: ' + strtrim(n_elements(mat)-3,2) + ' times', ' ', mat]
    if (not keyword_set(qnomail)) then mail, msg, users='mdiops@mdisas.nascom.nasa.gov'
end
;
end
