; pro vstrx,flag,na,nx,val,str ; ;***** 18mar02 ***** ; if flag eq -1 then begin print,' ' print,' pro vstrx,flag,na,nx,val,str' print,' ' print,' returns a string of the form a.aae+xx' print,' na,nx are the # of chars in abcissa & exponent' print,' ' return end ; nna=na>2 nnx=21 ; if val eq 0.0 then begin str=' 0.0 ' & goto,jump & end ; aval=abs(val) if val ge 0 then asign=' ' else asign='-' fl=fix(100+alog10(aval))-100 aexp=abs(fl) if fl ge 0 then xsign='+' else xsign='-' ; sabs=asign+strmid(aval/10.^fl,6,1+nna) sexp=xsign+strmid(100+aexp,8-nnx,nnx) str=sabs+sexp ; jump:; if flag eq 1 then print,val,' ',str ; return end ; pro vstre,flag,na,nx,vals,strs ; ;***** 24may04 ***** ; if flag eq -1 then begin print,' ' print,' pro vstre,flag,na,nx,vals,strs' print,' ' print,' returns string(s) of the form a.aa(+xx)' print,' na,nx are the # of chars in abcissa & exponent' print,' ' return end ; nna=na>2 & nnx=21 nvs=n_elements(vals) & strs=strarr(nvs) ; wz =where(vals eq 0) & nwz =n_elements( wz) wnz=where(vals ne 0) & nwnz=n_elements(wnz) if wz(0) ne -1 then begin ztr=' 0.0' & if nna gt 2 then for i=2,nna-1 do ztr=ztr+'0' ztr=ztr+'(+00)' strs(wz)=ztr if wnz(0) eq -1 then goto,jump end ; nnz=n_elements(wnz) valz=vals(wnz) & avlz=abs(valz) asnz=strarr(nnz)+' ' wa=where(valz lt 0) & if wa(0) ne -1 then asnz(wa)='-' flz=fix(100+alog10(avlz))-100 sabz=asnz+strmid(avlz/10.^flz,6,1+nna) expz=abs(flz) xsnz=strarr(nwnz)+'+' wx=where(flz lt 0) & if wx(0) ne -1 then xsnz(wx)='-' sxpz=xsnz+strmid(1000+expz,8-nnx,nnx) ; strs(wnz)=sabz+'('+sxpz+')' ; jump:; if flag ge 1 then for i=0,nvs-1 do print,vals(i),' ',strs(i) ; return end ; pro vstrf,flag,nc,val,str ; ;***** 06nov90 ***** ; if flag eq -1 then begin print,' ' print,' pro vstrf,flag,nc,val,str' print,' ' print,' returns a string of the form x.x' print,' nc is the number of digits' print,' ' return end ; if val ge 0 then sign=' ' else sign='-' aval=abs(val) if aval eq 0. then begin str=sign+strmid(aval,5,1+nc) & goto,jump end ; fl=fix(100+alog10(aval))-100 if fl ge 3 then begin vstre,0,nc,1,val,str & goto,jump & end if fl ge 0 then begin str=sign+strmid(aval,6,1+nc) & goto,jump end if fl ge -1 then begin str=sign+strmid(1+aval,7,1+nc) & goto,jump end if fl le -2 then vstre,0,3,1,val,str ; jump:; if flag eq 1 then print,val,' ',str ; return end ; pro vstrp,flag,nf,np,val,str ; ;***** 21feb95 ***** ; if n_elements(flag) eq 1 then if flag ne -1 then goto,cont print,' ' print,' pro vstrp,flag,nf,np,val,str' print,' ' print,' returns floating-pt value' print,' nf = # of char, np = # of places after decimal' print,' ' return cont:; ; pflg=(flag mod 10)/1 ; fval=float(val) sign=1.*(val ge 0)-1.*(val lt 0) aval=abs(fval)+5*10.^(-(np+1)) if aval lt 1 then begin ; paval=1+aval ; spaval=string(paval) dpos=strpos(1+aval,'.') str=strmid(1+aval,dpos,np+1) for n=np+1,nf-2 do str=' '+str end if aval ge 1 then begin saval=string(aval) dpos=strpos(saval,'.') str=strmid(saval,dpos+(np+1)-(nf-1),nf-1) end if sign eq 1 then str=' '+str if sign eq -1 then begin xstr=str & ystr='' loop:; if strmid(xstr,0,1) eq ' ' then begin ystr=ystr+' ' sl=strlen(xstr) & xstr=strmid(xstr,1,sl-1) goto,loop end str=ystr+'-'+xstr end ; if pflg eq 1 then print,val,' ',str ; return end ;