;+ ;Procedure: num_to_str_pad ; ;Purpose: ; This is a very basic operation that gets repeated a lot in date file output. ; This takes a number as input and pads zeros on the front so that the number outputs ; at fixed field width. ; ;Inputs: ; val: The number to be converted ; len: The final length requested ; ;Keywords: ; pad: Select a character other than '0' with which to pad ; integral: Normally, if val is a floating point type, if will add a .00, If this keyword is set, forces no decimal points. ; ;Notes: ; 1. For a while I resisted putting this in the distribution as it seemed too specific an operation, ; but at the point when I was considering implementing this routine for a 4th time in a separate ; namespace, I just decided to go ahead and add this instead. ; ; 2. There is no error checking to determine if the input is wider than 'len' ; ; 3. Currently floating point inputs will produce unreliable results. ; ;Example: ; ; date_str = num_to_str_pad(year,4)+num_to_str_pad(mon,2)+num_to_str_pad(day,2) ; ; $LastChangedBy: pcruce $ ; $LastChangedDate: 2010-03-16 18:00:51 -0700 (Tue, 16 Mar 2010) $ ; $LastChangedRevision: 7416 $ ; $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/thmsoc/tags/tdas_8_00/idl/themis/common/num_to_str_pad.pro $ ;- function num_to_str_pad,val,len,pad=pad,integral=integral compile_opt idl2,hidden if ~keyword_set(pad) then begin pad = '0' endif if keyword_set(integral) then begin str = strtrim(string(val,format='(I'+strtrim(max([len,ceil(alog10(val))]),2)+')'),2) endif else begin str = strtrim(val,2) endelse vlen = strlen(str) if vlen lt len then begin return,strjoin([replicate(pad,len-vlen),str]) endif else begin return,str endelse end