FUNCTION gis_cqlds,qlds ; ;n=tag_names(qlds) ; i=qlds.ql_id ;print,i ;m=strarr(n_elements(n)) ; result = {ql_id:i,ql_no:qlds.ql_no,hdrtext:qlds.hdrtext,header:qlds.header,test:qlds.(5)} ;openw,1,'tes.pro' ;l='' ;for a=0,n_ELEMENTS(n)-1 do l=l+n(a)+":qlds.("+strcompress(string(a),/remove_all)+")," ;printf,1,l ;close,/all ;for q=0,n_ELEMENTS(n)-1 do print,n(q) ;for q=0,n_ELEMENTS(n)-1 do m(q)=n(q) ; help,m IF tag_exist(qlds,"DETDATA") THEN BEGIN qlds_names=tag_names(qlds) qlds_detdesc=where(qlds_names eq 'DETDESC') m1=[qlds.(qlds_detdesc(0)),qlds.(qlds_detdesc(0))] result={QL_ID:qlds.(0),QL_NO:qlds.(1),HDRTEXT:qlds.(2),HEADER:qlds.(3),DETDATA:qlds.(4),DETDESC:m1,BACKGROUND:qlds.(6),WAVECAL:qlds.(7),DEL_TIMEDATA:qlds.(8),DEL_TIMEDESC:qlds.(9),INS_XDATA:qlds.(10),INS_XDESC:qlds.(11),INS_YDATA:qlds.(12),INS_YDESC:qlds.(13),OPSLBITSDATA:qlds.(14),OPSLBITSDESC:qlds.(15),OPS_LDATA:qlds.(16),OPS_LDESC:qlds.(17),OPSRBITSDATA:qlds.(18),OPSRBITSDESC:qlds.(19),OPS_RDATA:qlds.(20),OPS_RDESC:qlds.(21),SLITBITSDATA:qlds.(22),SLITBITSDESC:qlds.(23),SLIT_POSDATA:qlds.(24),SLIT_POSDESC:qlds.(25),MIR_POSDATA:qlds.(26),MIR_POSDESC:qlds.(27),PTCHBITSDATA:qlds.(28),PTCHBITSDESC:qlds.(29),PITCHDATA:qlds.(30),PITCHDESC:qlds.(31),YAW_BITSDATA:qlds.(32),YAW_BITSDESC:qlds.(33),YAWDATA:qlds.(34),YAWDESC:qlds.(35),EV_LEVELDATA:qlds.(36),EV_LEVELDESC:qlds.(37),ONBOARDXDATA:qlds.(38),ONBOARDXDESC:qlds.(39),ONBOARDYDATA:qlds.(40),ONBOARDYDESC:qlds.(41),EV_RECOGDATA:qlds.(42),EV_RECOGDESC:qlds.(43),EV_DETECDATA:qlds.(44),EV_DETECDESC:qlds.(45),EV_VALIDDATA:qlds.(46),EV_VALIDDESC:qlds.(47),BKGRCDDATA:qlds.(48),BKGRCDDESC:qlds.(49),BKGPCDDATA:qlds.(50),BKGPCDDESC:qlds.(51),BKGULCDDATA:qlds.(52),BKGULCDDESC:qlds.(53)} endif IF NOT tag_exist(qlds,"DETDATA") THEN BEGIN qlds_names=tag_names(qlds) qlds_detdesc=where(qlds_names eq 'DETDESC') m1=[qlds.(qlds_detdesc(0)),qlds.(qlds_detdesc(0))] result={QL_ID:qlds.(0),QL_NO:qlds.(1),HDRTEXT:qlds.(2),HEADER:qlds.(3),DETDESC:m1,BACKGROUND:qlds.(5),WAVECAL:qlds.(6),DEL_TIMEDATA:qlds.(7),DEL_TIMEDESC:qlds.(8),INS_XDATA:qlds.(9),INS_XDESC:qlds.(10),INS_YDATA:qlds.(11),INS_YDESC:qlds.(12),OPSLBITSDATA:qlds.(13),OPSLBITSDESC:qlds.(14),OPS_LDATA:qlds.(15),OPS_LDESC:qlds.(16),OPSRBITSDATA:qlds.(17),OPSRBITSDESC:qlds.(18),OPS_RDATA:qlds.(19),OPS_RDESC:qlds.(20),SLITBITSDATA:qlds.(21),SLITBITSDESC:qlds.(22),SLIT_POSDATA:qlds.(23),SLIT_POSDESC:qlds.(24),MIR_POSDATA:qlds.(25),MIR_POSDESC:qlds.(26),PTCHBITSDATA:qlds.(27),PTCHBITSDESC:qlds.(28),PITCHDATA:qlds.(29),PITCHDESC:qlds.(30),YAW_BITSDATA:qlds.(31),YAW_BITSDESC:qlds.(32),YAWDATA:qlds.(33),YAWDESC:qlds.(34),EV_LEVELDATA:qlds.(35),EV_LEVELDESC:qlds.(36),ONBOARDXDATA:qlds.(37),ONBOARDXDESC:qlds.(38),ONBOARDYDATA:qlds.(39),ONBOARDYDESC:qlds.(40),EV_RECOGDATA:qlds.(41),EV_RECOGDESC:qlds.(42),EV_DETECDATA:qlds.(43),EV_DETECDESC:qlds.(44),EV_VALIDDATA:qlds.(45),EV_VALIDDESC:qlds.(46),BKGRCDDATA:qlds.(47),BKGRCDDESC:qlds.(48),BKGPCDDATA:qlds.(49),BKGPCDDESC:qlds.(50),BKGULCDDATA:qlds.(51),BKGULCDDESC:qlds.(52)} FOR i = 0,N_ELEMENTS(qlds.detdesc)-1 DO BEGIN IF qlds.detdesc(i).ixstop(0) GE 0 THEN BEGIN da = gt_windata(qlds,i) result.detdesc(i).handle = handle_create(value=da,/no_copy) END END FOR i = 0,N_ELEMENTS(qlds.detdesc)-1 DO BEGIN IF qlds.detdesc(i).ixstop(0) GE 0 THEN BEGIN da = gt_windata(qlds,i)*0. result.detdesc(i+N_ELEMENTS(qlds.detdesc)).handle = handle_create(value=da,/no_copy) END END ENDIF ELSE BEGIN ;;;;;;;;;;;;;;;;;; qlds_names=tag_names(qlds) qlds_detdesc=where(qlds_names eq 'DETDESC') m1=[qlds.(qlds_detdesc(0)),qlds.(qlds_detdesc(0))] m1.IXSTop(0,*)=[reform(qlds.(qlds_detdesc(0)).IXSTop(0,*)),reform((qlds.(qlds_detdesc(0)).IXSTOP)(0,*)+max((qlds.(qlds_detdesc(0)).IXSTOP)(0,*)+1.))] m1.IXSTart(0,*)=[reform(qlds.(qlds_detdesc(0)).IXSTart(0,*)),reform(max(qlds.(qlds_detdesc(0)).IXSTart(0,*))+2048+qlds.(qlds_detdesc(0)).IXSTart(0,*))] m1.label=[qlds.(qlds_detdesc(0)).label,qlds.(qlds_detdesc(0)).label+'_ERROR'] newdata=[qlds.detdata,qlds.detdata*0] result={QL_ID:qlds.(0),QL_NO:qlds.(1),HDRTEXT:qlds.(2),HEADER:qlds.(3),DETDATA:newdata,DETDESC:m1,BACKGROUND:qlds.(6),WAVECAL:qlds.(7),DEL_TIMEDATA:qlds.(8),DEL_TIMEDESC:qlds.(9),INS_XDATA:qlds.(10),INS_XDESC:qlds.(11),INS_YDATA:qlds.(12),INS_YDESC:qlds.(13),OPSLBITSDATA:qlds.(14),OPSLBITSDESC:qlds.(15),OPS_LDATA:qlds.(16),OPS_LDESC:qlds.(17),OPSRBITSDATA:qlds.(18),OPSRBITSDESC:qlds.(19),OPS_RDATA:qlds.(20),OPS_RDESC:qlds.(21),SLITBITSDATA:qlds.(22),SLITBITSDESC:qlds.(23),SLIT_POSDATA:qlds.(24),SLIT_POSDESC:qlds.(25),MIR_POSDATA:qlds.(26),MIR_POSDESC:qlds.(27),PTCHBITSDATA:qlds.(28),PTCHBITSDESC:qlds.(29),PITCHDATA:qlds.(30),PITCHDESC:qlds.(31),YAW_BITSDATA:qlds.(32),YAW_BITSDESC:qlds.(33),YAWDATA:qlds.(34),YAWDESC:qlds.(35),EV_LEVELDATA:qlds.(36),EV_LEVELDESC:qlds.(37),ONBOARDXDATA:qlds.(38),ONBOARDXDESC:qlds.(39),ONBOARDYDATA:qlds.(40),ONBOARDYDESC:qlds.(41),EV_RECOGDATA:qlds.(42),EV_RECOGDESC:qlds.(43),EV_DETECDATA:qlds.(44),EV_DETECDESC:qlds.(45),EV_VALIDDATA:qlds.(46),EV_VALIDDESC:qlds.(47),BKGRCDDATA:qlds.(48),BKGRCDDESC:qlds.(49),BKGPCDDATA:qlds.(50),BKGPCDDESC:qlds.(51),BKGULCDDATA:qlds.(52),BKGULCDDESC:qlds.(53)} FOR i = 0,N_ELEMENTS(qlds.detdesc)-1 DO BEGIN IF qlds.detdesc(i).ixstop(0) GE 0 THEN BEGIN da = gt_windata(qlds,i) result.detdesc(i).handle = handle_create(value=da,/no_copy) END END FOR i = 0,N_ELEMENTS(qlds.detdesc)-1 DO BEGIN IF qlds.detdesc(i).ixstop(0) GE 0 THEN BEGIN da = gt_windata(qlds,i)*0. result.detdesc(i+N_ELEMENTS(qlds.detdesc)).handle = handle_create(value=da,/no_copy) END END ;;;;;;;;; ENDELSE result.ql_id = 0 ;; To get a new QL_NO. qlmgr,result delete_qlds,qlds RETURN,result END