PDA

View Full Version : %editc



ILEMax
18-05-12, 10:01
Hi,
ich suche nach einer Erklährung für folgendes:

H DECEDIT('0,') DATEDIT(*DMY.)
D S_DLS_DT S 11
D P001DLS S 3 inz('XXX')
D HEUTEJ S 4S 0 INZ(2012)
D HEUTEM S 2S 0 INZ(05)
D HEUTET S 2S 0 INZ(18)
D STRING S 8
C EVAL S_DLS_DT = P001DLS + %EDITC(
C HEUTEJ*10000+HEUTEM*100+HEUTET:'X')
C EVAL STRING = %EDITC(
C HEUTEJ*10000+HEUTEM*100+HEUTET:'X')
C S_DLS_DT DSPLY
C STRING DSPLY
C SETON LR Erwartet hätte ich
XXX20120518 und
20120518

bekommen tu ich

DSPLY XXX00020120
DSPLY 00020120 Warum werden da noch 3 Nullen vor gestellt

Seh ich den Wald vor lauter Bäumen nicht?

Danke
Der ILEMax

Fuerchau
18-05-12, 10:06
Weil der Compiler für die Berechnung von Zwischenergebnissen halt größere Felder anlegt und immer das mögliche Maximum berücksichtigt.
Wenn dein Ergebnis eine max. Größe nicht überschreitet, kannst du das wieder entsprechend verpacken:

%dec(Ergebnis:8:0)

ILEMax
18-05-12, 10:17
ok, thx.
mit %editc(%dec(j*10000+m*100+t:8:0):'X')
geht es.

hatte es vorher mit %substr(%editc(j*10000+m*100+t:'X'):4) gelöst und hab mich gefragt woher ich in anderen fällen wissen kann wieviele nullen davor gestellt werden.

aber mit dem %dec geht es

Danke
ILEMax