Anmelden

View Full Version : String Verarbeitung Free Format



Seiten : 1 [2]

co_steffl
08-12-09, 09:32
Hi

wie gesagt! Weg nach Rom

oder so

#_rem = %rem(z_timefrom:60);

%subst(d_zbv:4:2) = %char(#_rem);

#_rest = %div(z_timeto:60);

if z_timeto < 600;

d_zbb = '0' + %char(#_rest) + ':';

else;

%subst(d_zbb:1:3) = %char(#_rest) + ':';
endif;

#_rem = %rem(z_timeto:60);

if #_rem < 10;
%subst(d_zbb:4:2) = '0' + %char(#_rem);

else;

%subst(d_zbb:4:2) = %char(#_rem);
endif;

Gruß co_steffl

woki
08-12-09, 09:36
natürlich geht das auch mit den 11 Zeilen Quellcode zum füllen von d_zbb :D
hier mit 3 Zeilen:
evalR d_zbb = %char(#_rem);
evalR %subst(d_zbb:1:3) = %char(#_rest) + ':';
d_zbb = %xlate(' ':'0':d_zbb);

co_steffl
08-12-09, 09:52
Hi

danke. Habs unter Autor Woki eingebaut

Gruß co_steffl

woki
08-12-09, 09:56
;)
Grüße, Kathrin alias woki

co_steffl
08-12-09, 10:06
Grüße auch von Stefan alis co_steffl

Das eigentliche was ich daraus gelernt habe ist doch die Tatsache das der %Subst im Fall
(x : 1 : 2 ) nur auf die Adresse ab Stelle 1 in der Länge 2 verweist und KEINE nachfolgende Verkettung zulässt bzw. keinen weiteren String anfügt während dies bei einer einfachen String Verkettung ohne %Subst funktioniert.

Belassen wir es dabei

Gruß co_steffl

woki
08-12-09, 10:26
genau, nachfolgende Verkettungen müsstest du in einem separatem Statement angeben.

kitvb1
08-12-09, 11:06
Die geht naturlich auch ;)

d TimeNum s 4p 0 inz(0708)
d TimeChar s 5a
/free
TimeChar = %trim(%editw(TimeNum: '0 : '));

Pikachu
08-12-09, 11:17
Das eigentliche was ich daraus gelernt habe ist doch die Tatsache das der %Subst im Fall
(x : 1 : 2 ) nur auf die Adresse ab Stelle 1 in der Länge 2 verweist und KEINE nachfolgende Verkettung zulässt bzw. keinen weiteren String anfügt während dies bei einer einfachen String Verkettung ohne %Subst funktioniert.
Das ist auch richtig so, siehe Beschreibung (http://publib.boulder.ibm.com/infocenter/iadthelp/v7r0/topic/com.ibm.etools.iseries.langref.doc/c0925086671.htm#HDRBBSUBSA). Aber laß doch die Längenangabe einfach mal weg.

Spateneder
08-12-09, 12:05
Wenn es nur ums Aufbereiten geht, dann nimm doch %editw (einfach eine Konstante für das editword definieren und dann Bildschirmfeld = %editw(Variable : editword). Da brauchst Du doch sonst gar nichts. Eventuell halt noch deinen numerischen Wert mit Multiplikation ider Division zurechtmachen.
Wenn es sein kann, dass Du mit dem Zeug auch rechnen wirst, dann schieb es in ein Time-Feld und gib das dann entsprechend aus.

co_steffl
08-12-09, 12:14
Hi Pikachu

unglaublich aber wahr :)


...If the length is not specified then the string is referenced to its end.

Es funktioniert. Erscheint im nachhinein auch logisch. Danke !

Wieder einiges gelernt heute

Gruß und danke an alle

co_steffl