Viewing contents of file '../idllib/contrib/icur/fun2.pro'
;*************************************************************************
PRO FUN2,WAVE,FLUX,EPS,BADW,BADF,F1   ; ICUR LOOP 3
;vax version 1.0 8/19/86
;  CURSOR COMMANDS:
; A:  PLOT ALL DATA                       a:  ADD A LINE TO THE DATA
; B:  BLOWUP PLOT                         b:  REDEFINE BAD DATA
; C:  COMPUTE CENTROID OF FEATURE         c:  COADD BINS
; D:  INDICATE BAD DATA (SAME AS R)
; E:  GET EQUIVALENT WIDTHS               e:  RESTORE EPS VECTOR
; F:  ENTER ICFIT TO FIT LINES            f:  LINE IDENTIFICATIONS
; G:  FOLD DATA                           g:  MULTIPLE SUM/CONCATENATION
; H:                                      h:  update current record
; I:  INITIALIZE SCREEN                   i:  LINEAR INTERPOLATION ,X ONLY 
; J:  JUMP IN X DIRECTION;                j:  LINEAR INTERP W BOTH X,Y GIVEN
; K:  SAVE DATA ON GENERIC DISK FILES     k:  PERMANENTLY SMOOTH FLUX 
; L:  LOCATE WAVELENGTH USING CURSOR
; M:  PLOT MEAN BETWEEN LIMITS
; N:  RESET !Y.RANGE TO 0.
; O:  OVERPLOT FOLDED DATA                o:  OVERWRITE INPUT W/CURRENT VECTORS
; P:  TOGGLE !P.PSYM 0<->10               p:  PRINT CURRENT STATUS
; Q:  QUIT
; R:  REPLOT, WITH CURRENT NSM            r:  ROTATIONAL BROADENING
; S:  SMOOTH DATA                         s:  GAUSSIAN SMOOTHING
; T:  SUM TOTAL FLUX                      t:  CHANGE TITLE
; U:  FLUX HIGH RESOLUTION DATA           u:  UNREDDEN DATA
; V:  LOCATE AND EXPAND PLOT              v:  CHANGE WAVE VECTOR TO VELOCITY
; W:  RETURN WAVELENGTH AND FLUX          w:  RESTORE WAVE VECTOR
; X:  EXPAND IN X DIRECTION               x:  RESET EPSILON VALUE TO -1111
; Y:  EXPAND IN Y DIRECTION               y:  CHANGE FLUX VECTOR UNITS
; Z:  STOP
; 0:  DRAW ZERO LINE                      1:  DRAW LINE AT UNIT VALUE
; 2:  HALVE F VECTOR
; +-*/&%:  AS IN FUNCTION
; ?: LIST CURSOR COMMANDS
COMMON COM1,HD,IK,IFT,NSM,C,NDAT,IFSM,KBLO
COMMON COMXY,X,Y,ZERR,resetsscale,lu3
common vars,var1,var2,var3,var4,bdf,psdel
COMMON ICURUNITS,XUNITS,YUNITS,TITLE,C1,C2,C3
common icdisk,icurdisk,icurdata,ismdata,objfile,stdfile,userdata,recno
RESET=0
F=FLUX
W=WAVE
E=EPS
H=HD
NDAT=0
IK=0
IFT=0
IFLX=0
IWAV=0
e1=0
PRINT,' *** FUN2 ***'
;
BDATA,h,-1,W,F,E,BADW,BADF
GO1:   ; LABEL FOR LOOP START
hc=hd
BLOWUP,-1
IF (zerr eq 26) or (ZERR EQ 81) or (ZERR eq 113) THEN GOTO,GO2    ;<Q>
Z=WHERE(ZERR EQ KBLO,kz) & IF kz GT 0 THEN BLOWUP,ZERR   ;(>,<,^,6,[)
IF ZERR EQ 63 THEN HDLST,3         ;<?>
IF ZERR EQ 65 THEN PLDATA,-2,W,F   ;<A>
IF ZERR EQ 66 THEN BLOWUP,0        ;<B>
IF ZERR EQ 67 THEN FTOT,2,W,F      ;<C>
IF ZERR EQ 68 THEN pldata,0,w,f,badw,badf     ;<D>
IF ZERR EQ 69 THEN IFEAT,W,F,BADF   ;<E>
IF ZERR EQ 70 THEN ICFIT2,W,F,E     ;<F>
IF ZERR EQ 71 THEN FOLD,0,X,W,F,F1  ;<G>
IF ZERR EQ 73 THEN PLDATA,-1,0.,0. ;<I>
IF ZERR EQ 74 THEN jump            ;<J>
IF ZERR EQ 75 THEN KDAT,objfile,HC,W,F,E     ;<K>
IF ZERR EQ 76 THEN LOCATE,0,W,F    ;<L>
IF ZERR EQ 77 THEN FTOT,1,W,F      ;<M>
IF ZERR EQ 78 THEN !y.range(*)=0.  ;<N>
IF (ZERR EQ 79) AND (NDAT EQ 1) THEN PLDATA,1,W,F1,PCOL=C2  ;<O>
IF ZERR EQ 80 THEN !P.PSYM=((!P.PSYM/10+1) MOD 2)*10  ;<P>
IF ZERR EQ 82 THEN PLDATA,0,W,F    ;<R>
IF ZERR EQ 83 THEN ROTVEL,0,W      ;<S>
IF ZERR EQ 84 THEN FTOT,0,W,F      ;<T>
IF ZERR EQ 85 THEN RECALH,HD,W,F,E ;<U>
IF ZERR EQ 86 THEN LOCATE,1,W,F    ;<V>
IF ZERR EQ 87 THEN WAVEL           ;<W>
IF ZERR EQ 88 THEN BLOWUP,1        ;<X>
IF ZERR EQ 89 THEN BLOWUP,2        ;<Y>
IF ZERR EQ 90 THEN STOP,'    FUN2 STOP '  ;<Z>
IF (ZERR GE 37) AND (ZERR LT 48) THEN BEGIN  ;<+-*/&> 
     MANIP,F,F1,TF,E,e1,badf
     F=TF
     ENDIF
IF ZERR EQ 48 THEN DRLIN,0.        ;<0>
IF ZERR EQ 49 THEN DRLIN,1.        ;<1>
IF ZERR EQ 50 THEN F=F/2.          ;<2>
IF ZERR EQ 97 THEN ADDLINE,W,F     ;<a>
; ZERR EQ 98 <b> moved down
IF ZERR EQ 99 THEN begin           ;c
   COADD,WAVE,F,E   
   if n_elements(lu3) eq 1 then begin
      printf,lu3,'-4' & printf,lu3,hd(53),' bins coadded'
      endif
   zerr=98
   endif
IF ZERR EQ 101 THEN E=EPS      ;<e>
IF ZERR EQ 102 THEN FINDLIN,W  ;<f>
IF ZERR EQ 103 THEN MULTSUM,W,F,E,BADW,BADF   ;<g>
IF ZERR EQ 104 THEN KDAT,objfile,HC,W,F,E,recno     ;<h>  update current record
IF ZERR EQ 105 THEN FTOT,3,W,F ;<i>
IF ZERR EQ 106 THEN FTOT,4,W,F ;<j>
IF ZERR EQ 107 THEN FOLD,-1,X,W,F,F1  ;<k>
if zerr eq 108 then ldat,objfile         ;<l>
if zerr eq 109 then begin                ;<m>
   r2=0 & fl2='0'
   read,' SPECMERGE: enter record and file name of second spectrum: ',r2,fl2
   if r2 lt 0 then r2=recno+1
   if strupcase(objfile) eq 'NOFILE' then begin
      read,' enter name of data file',objfile
      endif else fl1=objfile
   if (fl2 eq '') or (fl2 eq ' ') then fl2=objfile
   case 1 of
      ifstring(fl2) eq 1: if strtrim(fl2,2) eq '' then fl2=fl1
      else: if fl2 lt 0 then fl2=fl1
      endcase
   if (recno eq r2) and (fl1 eq fl2) then print,' WARNING: you are coadding the same data'
   specmerge,w,f,e,recno,r2,fl1,fl2    ;overwrite input vector
   zerr=111
   bdf1=bdf
   BDATA,h,-1,W,F,E,BADW,BADF,bdf      ;set up bad data vector
   bdf=bdf1
   endif
IF ZERR EQ 111 THEN OVERWRT,2,FLUX,EPS,WAVE,F,E,W,RESET   ;<o>
IF ZERR EQ 112 THEN PSTAT,2,W               ;<p>
IF ZERR EQ 114 THEN ROTVEL,1,WAVE           ;<r>
IF ZERR EQ 115 THEN ROTVEL,-1,WAVE          ;<s>
IF ZERR EQ 116 THEN FUN3,0,0,0,H,HD         ;<t>
IF ZERR EQ 117 THEN ADDRED,0,HD,W,F         ;<u>
IF ZERR EQ 118 THEN RWAVE,W,F               ;<v>
IF ZERR EQ 119 THEN BEGIN                   ;<w>
   FUN3,-1,IWAV,0,WAVE,W
   NSM=1
   ENDIF
IF ZERR EQ 120 THEN BDATA,h,X,W,F,E,BADW,BADF ;<x>
IF ZERR EQ 121 THEN FUN3,1,IFLX,WAVE,FLUX,F ;<y>
IF ZERR EQ 122 THEN BADF=BADF*0.            ;<z>
IF ZERR EQ 98 THEN BDATA,h,-1,W,F,E,BADW,BADF,bdf ;<b>
IF ZERR EQ 64 THEN IBIT,var3,0,-1           ;<@>
IF ZERR EQ 35 THEN IBIT,var3,1,-1           ;<#>
if (zerr lt 26) or (zerr gt 122) then zrecover
GOTO,GO1
GO2:
IF RESET EQ 0 THEN HD=H
ZERR=112   ;<p>
RETURN
END