PDA

View Full Version : SQLRPGLE Länge vom Inhalt einer Variablen ermitteln



Seiten : 1 [2]

Pikachu
13-02-17, 13:58
Wie rufst du das Programm derzeit auf?


Gibt das rufende PGM den 2000 byte weg?
oder weniger?
Ab 32 Byte muß die Länge stimmen, sonnst füllt das BS den Wert mit 'irgendetwas'.

Was zeigt der debug, als hex ?

Rue
13-02-17, 13:59
Wie rufst du das Programm derzeit auf?

Probiers mal mit: ... = %TRIM(ADRESSEN)

Moin,

simpel über call PGM(Mail) PARM('test@test.de')

hab's so schon probiert, kein Erfolg :(

Gruß und Danke
Rue

Rue
13-02-17, 14:02
Hallo,

hab die letzten werte mal angesehen er wirft mir lt. Auszug für die letzten 10-Stellen
"00000000000000000000'X" aus...das scheint der Knackpunkt zu sein. Korrekt wäre doch eher
40404040404040404040'X oder?

besten Dank

MfG
Rue

Rue
13-02-17, 14:03
Wenn Du ein Feld mit Fixer Länge (ADRESSEN) in ein Feld mit Variabler Länge schiebst, werden die folgenden Blanks immer mit übernommen.
Du musst also die Blanks von dem Feld ADRESSEN explizit mit %TRIM oder %TRIMR entfernen.

Allerdings sollte bei %Len(%Trim()) das richtige Ergebnis heraus kommen. Wahrscheinlich steht auf der letzten Stelle noch irgendein Sonderwert (z.B. x'00').

Anstatt 4B 0 solltest Du Int(5) oder Uns(5) verwenden.

Wenn Du Protoypting verwenden würdest, könntest Du mit OPTIONS(*TRIM) führende und folgende Blanks bei der Übergabe automatisch entfernen lassen.

Birgitta.

Hallo,

hab die letzten werte mal angesehen er wirft mir lt. Auszug für die letzten 10-Stellen
"00000000000000000000'X" aus...das scheint der Knackpunkt zu sein. Korrekt wäre doch eher
40404040404040404040'X oder?

besten Dank

MfG
Rue

Fuerchau
13-02-17, 14:11
Das Problem hatten wir schon häufiger hier.
Wenn dein Programm 2000 Zeichen erwartet so musst du auch 2000 Zeichen übergeben.
Der CALL generiert ein Hilfsfeld mit mindestens 32 Stellen oder in der angegeben Länge.
Was danach im Speicher steht ist uninitialisierter bzw. übrig gebliebener Müll.
Sorge also einfach dafür, am besten mit einer Variablen, dass du 2000 Zeichen bereitstellst oder mach ein CMD drumherum, dieses sorgt dann automatisch dafür.

Robi
13-02-17, 14:13
Moin,

simpel über call PGM(Mail) PARM('test@test.de')

hab's so schon probiert, kein Erfolg :(

Gruß und Danke
Rue

test@test.de sind eindeutig weniger als 2000 Zeichen
also ...

Robi

Rue
13-02-17, 14:36
Danke Fuerchau, das war mein Problem

Rue
13-02-17, 14:38
Vielen Dank an alle,
ich hab den Parameter nicht ganz gefüllt und dies führte zu meinem Problem.
Daraus lernt man.

liebe Grüße
Rue