NAME: rangepar PURPOSE: (one line) Parse a string with numbers and ranges to get an expanded list of numbers. DESCRIPTION: You can provide single numbers or a range of numbers. Ranges are delineated by a hyphen (for example 120-125). Ranges or single numbers are separated by either a comma or space. Spaces (even multiples) are tolerated anywhere. But, only one comma is allowed between numbers or ranges. The string can have an optional exclusion descriptor. Anything after the first 'x' is used as an exclusion set (ranges or numbers, same syntax). For example, the string '100-105x103' would return [100,101,102,104,105] as an array of integers. If the input is [100,101,102,104,105] the result would be '100-102,105-105' CATEGORY: Utility CALLING SEQUENCE: rangepar,input,output INPUTS: input - if input is a string, it is parsed to generate a list of numbers (see description) if input is an array of numbers it is converted to a string. OPTIONAL INPUT PARAMETERS: KEYWORD PARAMETERS: OUTPUTS: output - string or integer array depending on the input. COMMON BLOCKS: SIDE EFFECTS: RESTRICTIONS: In the reverse conversion (from numbers to a string), the routine will handle negative numbers but will produce output like -5--3 which rangepar can't parse in the other direction. Also, the 'x' construct is not used in this direction. Thus there is no promise that applying rangepar twice will return you to an identical starting point (though the implied list is the same). PROCEDURE: MODIFICATION HISTORY: 2001/07/25 - Written by Marc W. Buie, Lowell Observatory. 2008/12/05 - Peter L. Collins, Lowell Observatory, added /REVERSE. 2009/11/19, MWB, removed REVERSE and made operation context dependent.