34 lines
1.7 KiB
Text
34 lines
1.7 KiB
Text
/*NetRexx program to expand a range of integers into a list. *************
|
|
* 09.08.2012 Walter Pachl derived from my Rexx version
|
|
* Changes: translate(old,' ',',') -> old.translate(' ',',')
|
|
* dashpos=pos('-',x,2) -> dashpos=x.pos('-',2)
|
|
* Do -> Loop
|
|
* Parse Var a x a -> Parse a x a
|
|
* Parse Var x ... -> Parse x ...
|
|
**********************************************************************/
|
|
|
|
parse arg old
|
|
if old = '' then
|
|
old='-6,-3--1,3-5,7-11,14,15,17-20' /*original list of nums/ranges */
|
|
|
|
Say 'old='old /*show old list of nums/ranges. */
|
|
a=old.translate(' ',',') /*translate commas to blanks */
|
|
new='' /*new list of numbers (so far). */
|
|
|
|
comma=''
|
|
Loop While a<>'' /* as long as there is input */
|
|
Parse a x a /* get one element */
|
|
dashpos=x.pos('-',2) /* find position of dash, if any */
|
|
If dashpos>0 Then Do /* element is low-high */
|
|
Parse x low =(dashpos) +1 high /* split the element */
|
|
Loop j=low To high /* output all numbers in range */
|
|
new=new||comma||j /* with separating commas */
|
|
comma=',' /* from now on use comma */
|
|
End
|
|
End
|
|
Else Do /* element is a number */
|
|
new=new||comma||x /* append (with comma) */
|
|
comma=',' /* from now on use comma */
|
|
End
|
|
End
|
|
Say 'new='new /*show the expanded list */
|