Anmelden

View Full Version : führende Nullen



Seiten : 1 [2]

Fuerchau
06-02-20, 09:18
Dieser Hinweis hätte doch bereits reichen müssen;-):

"Du weisst schon, dass Du nur ein Dezimalfeld mit einem Editcode versehen kannst ..."

Was die Umwandlung angeht so muss diese u.U. noch erweitert werden, da Leerzeichen nicht erlaubt sind:

feld = %editc(%dec(%trim( %subst(feld2:1:7)):7:0):'X');

Was allerdings bei einem leeren Feld auch auf die Nase fällt, also geht auch:

feld = %editc(%dec(%trim( %subst('0' + feld2:1:7)):7:0):'X');

Wenn Feld2 sowieso kurz genug ist, reicht auch ein:

feld = %editc(%dec(%trim( '0' + feld2):7:0):'X');

B.Hauser
06-02-20, 09:33
Und wer das Ganze gerne mit SQL machen würde ...
Das folgende Beispiel richtet den Inhalt der OrigFields rechtsbündig aus und füllt bis zur Länge von 15 Zeichen linksbündig mit Nullen auf. Funktioniert im übrigen sowohl für numerische als auch alphanumerische Werte. Bei alphanumerischen Werten sollten folgende Blanks entfernt werden.


Exec SQL Set :OutputField = LPAD(RTrim(:OrigField), 15, '0');

Birgitta

Fuerchau
06-02-20, 14:42
Wem letztlich die Performance egal ist...
Wenn RPGLE das doch schon hergibt, warum dann auf SQL ausweichen;-)?
Und wenn schon dann richtig:

Exec SQL Set :OutputField = LPAD(Trim(:OrigField), 15, '0');
Denn RTrim lässt ggf. vorhandene führende Leerzeichen stehen.