String in mehrere Zahlen umwandeln

Ich habe folgendes Problem und mir gedacht, dieses Forum mal wieder zu beleben.

Also, ich habe zwei Variablen, wobei die eine nur zur Kennzeichnung dient. Die zweite ist eine String-Variable, die nur Ziffern und einen oder keinen Bindestrich enthält.

In etwa so:

Kenn1 1-100
Kenn2 20-30
Kenn3 -4
Kenn4 15-
Kenn5 123
Kenn6 97-101
usw...

Ich möchte jetzt zwei neue Variablen, mit denen ich anschließend meine Datei "aufblähen" kann.

Über...
Kenn1 1-100 1 100
Kenn2 20-30 20 30
Kenn3 -4 4 4
Kenn4 15- 15 15
Kenn5 123 123 123
Kenn6 97-105 97 105

...will ich zu...

Kenn1 1
Kenn1 2
...
Kenn1 99
Kenn1 100
Kenn2 20
Kenn2 21
...
Kenn2 30
Kenn3 4
Kenn4 15
Kenn5 123
Kenn6 97
Kenn6 98
...
Kenn6 105

...gelangen. Das Prinzip ist denke ich klar. Nur wie komm ich dahin? Probiere mit indexw und length und so weiter zu hantieren, aber noch fehlt mir der entscheidene Clou. Vielleicht kann ja hier jemand helfen.

MfG und vielen Dank schonmal!

C.Heuer

Erledigt

Habs gelöst, ein wenig umständlich, aber ich bin zufrieden. :)

Wo ist die Lösung

Hallo Herr Heuer,
das Forum beleben zu wollen (obwohl es lebt) finde ich ja toll, viel besser fände ich, wenn Sie die gefundene Antwort in Ihrem Beitrag (oder einem neuen) veröffentlichen würden ... :-)
Dann haben die anderen auch 'was davon.
Gruß
Hans Kneilmann, Schäfer Shop GmbH (SSI)

Here it is!

Gerne doch, wollte aber vorhin nur kurz in der Euphorie meines Erfolgs mitteilen, dass ich eine Lösung gefunden habe und sich nicht andere unnütz mit der Problematik beschäftigen (brauchen). Also, hier meine Idee:

data test;
set test;
retain trennposition 0;
trennposition=indexc(var2,'-');
run;

Hier habe ich erstmal die Position des (einheitlichen) Trennzeichens bestimmt.

data test;
set test;
length zahl1 4;
length zahl2 4;
zahl1 = substr(var2,1,trennposition-1);/*(var,position,länge)*/
zahl2 = substr(var2,trennposition+1,4);
if trennposition = 1 then zahl1 = 1;
run;

Und schwups hab ich die beiden Zahlen, die ich haben wollte, ausgelesen.

data test (drop = zahl1 zahl2 var2);
set test;
length lfdnummer 4.;
do lfdnummer = zahl1 to zahl2;
if trennposition = 0 then output;
else if (trennposition > 0) then output;
end;
run;

Und hiermit habe ich var1 immer hochgezählt, also hatte ich dann
kenn1 1
kenn1 2
kenn1 3
usw.

Warum es genau funktioniert, weiß ich zwar nicht, aber ich weiß, DASS es funktioniert und das reicht mir. Für elegantere Lösungen bin ich aber gern zu haben. :)

MfG
C.Heuer