PDA

View Full Version : aus einem String Werte ziehen die durch *BLANKS getrennt sind



falke34
26-09-05, 16:10
Hallo,
hab mich total verrannt, brauche dringend eure Hilfe.

Habe einen String TEXT50 = 50 A , der sich ständig ändert.
z.B.
'CON 12/05 01/06 04/06 07/06'
'CON 11/05 01/06 04/06 08/06'


Möchte hierraus jetzt die Werte 12/05 usw. ziehen, die
nicht immer an der gleichen Stelle stehen.

Hat da jemand einen eleganten Lösungsvorschlag in RPGLE ??

Danke
falke34

kuempi von stein
26-09-05, 16:17
Hallo,
hab mich total verrannt, brauche dringend eure Hilfe.

Habe einen String TEXT50 = 50 A , der sich ständig ändert.
z.B.
'CON 12/05 01/06 04/06 07/06'
'CON 11/05 01/06 04/06 08/06'


Möchte hierraus jetzt die Werte 12/05 usw. ziehen, die
nicht immer an der gleichen Stelle stehen.

Hat da jemand einen eleganten Lösungsvorschlag ??

Danke
falke34
hello,

in CLP
RPG
ILE-RPG
or what?

k.

und nachsatz:
wenn sich die pos. ändert, ändert sich die pos von CON?

nachsatz2:
wenn CON sich ändert, kommt CON aber immer vor und DANACH sind die positionen immer da?

falke34
26-09-05, 21:16
hello,

in CLP
RPG
ILE-RPG
or what?

k.

und nachsatz:
wenn sich die pos. ändert, ändert sich die pos von CON?

nachsatz2:
wenn CON sich ändert, kommt CON aber immer vor und DANACH sind die positionen immer da?


In ILE-RPG

CON steht am Anfang des String, daran erkenne ich das ich daraus die Werte ziehen muss !

MfG
Falke34

Fuerchau
26-09-05, 23:09
Hier hilft nur programmieren !
Die Funktion %scan liefert das gefundene Zeichen, die Funtion %check die Position des ersten ungleichen zeichens.

Als C-Funktionen gibt es da "char* strtok(char* Start, char* TZ)", die einem einiges abnimmt.

kuempi von stein
27-09-05, 08:07
In ILE-RPG

CON steht am Anfang des String, daran erkenne ich das ich daraus die Werte ziehen muss !

MfG
Falke34also wenn die ersten gewünschten Daten immer an Pos.5 starten ist es ja noch leichter...
hier mal so grob wie man es ungefähr machen könnte...
gibt tausend andere/bessere Lösungen..
und Achtung, ist nur ne Grobvorlage, kein Anspruch auf Korrektheit.

* Beispiel 'BLABLACON 12/05 01/06 04/06 07/06'
C 'CON' scan strin:1 po 5 0
* liefert (Start)Position von CON [=7?)
C add 4 po
* addiert 4 drauf (=Startposition 11?)
C eval cdatum=%triml(%subst(strin:po:5))
* ergibt "12/05" ?? usw.usw

k.

NEich
27-09-05, 08:16
Ich hab hier noch ne selbstgeschrieben Prozedur rumliegen namens SplitString (ILE-RPG), damit kann man die Tokens aus einem String easy extrahieren. Wenn Interesse besteht, kann ich den Quelltext zusenden.

falke34
27-09-05, 22:11
Danke für die Hilfe,

falke34

falke34
27-09-05, 22:12
Ich hab hier noch ne selbstgeschrieben Prozedur rumliegen namens SplitString (ILE-RPG), damit kann man die Tokens aus einem String easy extrahieren. Wenn Interesse besteht, kann ich den Quelltext zusenden.

Wäre nett und vielen Dank für die Hilfe
falke34