Anmelden

View Full Version : ILE RPG



jerry
10-02-06, 15:05
Hallo,
ich steh' gerade auf dem Schlauch - wir haben in alpha Feldern teilweise ungültige Daten (Hex <=40).
Wenn die Felder auf dem BS (DSPF) angezeigt werden sollen, kommt ein Abbruch CPF5192.
Kann mir jemand ein Beispiel geben, wie ich diese Werte aud den Feldern zeichenweise rausfischen kann? Oder ggf auch nur Testen ob solche Werte im Feld sind und dieses dann leer machen?

Vielen dank im voraus
Jerry

Fuerchau
10-02-06, 15:11
Tja, das geht nur über eine Schleife, in dem jedes Zeichen geprüft wird.
Am besten geht es über eine Funktion á la:

d myfield pr 32000 varying
d parm1 32000 varying value

myfield = myreplace(myfield);

p myreplace b
d myreplace pi 32000 varying
d parm1 32000 varying value
d ind s 10I 0

c for ind = 1 to %len(parm1);
c if %sst(parm1:ind:1) < ' ';
c %sst(parm1:ind:1)=' ';
c endif;
c endfor;
c return parm1;

ungefähr so ;)

Pikachu
10-02-06, 15:16
Hallo Jerry!

Sieh' dir mal den RPG-Befehl XLATE (http://publib.boulder.ibm.com/iseries/v5r1/ic2924/books/c0925083740.htm) an.

Gruß
Jürgen

Fuerchau
10-02-06, 15:23
Xlate geht aber nur, wenn man alle Codes von x'00' bis X'3F' aufführt und durch Blanks ersetzt (geht natürlich auch und ist ggf. schneller).

jerry
10-02-06, 15:43
Kann ich bitte ein Beispiel haben?




Xlate geht aber nur, wenn man alle Codes von x'00' bis X'3F' aufführt und durch Blanks ersetzt (geht natürlich auch und ist ggf. schneller).

Fuerchau
10-02-06, 15:58
d xlfrom c const(x'000102....3F')
d xlto c const('.....') <= 64 Blanks

c myfield = %xlate(myfield:xlfrom:xlto);

jerry
10-02-06, 16:26
Danke!!!! - ich war einfach zu müde zum selber Denken.

Aber zum Abscheiben reichts noch ;-)