RosettaCodeData/Task/Range-expansion/NetRexx/range-expansion.netrexx
Ingy döt Net 6f050a029e update
2013-06-05 21:47:54 +00:00

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 */