FUNCTION dec2seg, array, RA=ra, DEG=deg ;CONVERTS RA OR DEC IN DECIMAL HOURS/DEGREES TO SEXIGESIMAL FORMAT ; ;INPUT: ARRAY OF FLOATS. IF KEYWORD RA SET, THEN OUTPUT WILL BE ##:##:##.# ; (10 CHARS WIDE), ELSE IT WILL BE s##:##:## (9 CHARS WIDE, WHERE ; s IS '-' IF DEC IS NEGATIVE). NO ERROR CHECKING IS DONE OTHER ; THAN SKIPPING VALUES OF -99.99, SO ANY ADDITION CHECKING SHOULD ; BE DONE BEFORE CALLING. ; ;RETURNS: ARRAY OF STRINGS ; ;WRITTEN: 000620, DJK ; ;UPDATED: 030110, DJK - Added decimal degrees for RA: IF KEYWORD DEG IS SET, ; ALONG WITH RA, IT IS ASSUMED THAT THE RA INPUT ARRAY IS IN DECIMAL ; DEGREE FORMAT, NOT HOURS. newarray = strarr(N_ELEMENTS(array)) FOR i=0, N_ELEMENTS(array)-1 DO BEGIN decval = array[i] IF decval EQ -99.99 THEN BEGIN ;DEAL WITH -99.99 VALUES IF KEYWORD_SET(RA) THEN BEGIN newarray[i] = '-99.99 ' ENDIF ELSE newarray[i] = '-99.99 ' ENDIF ELSE BEGIN IF KEYWORD_SET(DEG) THEN decval=decval*24.0/360.0 hd = FIX(ABS(decval)) num = STRING(decval) ;had to do this to avoid precision problems mins = FLOAT(STRMID(num, STRPOS(num, '.'))*60.) min = FIX(mins) sec = (mins-min)*60. IF KEYWORD_SET(RA) THEN BEGIN newarray[i]= STRING(hd, min, sec, $ FORMAT='(i2, ":", i2, ":", f4.1)') ENDIF ELSE BEGIN IF decval LT 0 THEN sign='-' ELSE sign = ' ' sec = ROUND(sec) newarray[i]= STRING(sign, hd, min, sec, $ FORMAT='(a1, i2, ":", i2, ":", i2)') ENDELSE ENDELSE ENDFOR RETURN, newarray END