-
String Verarbeitung Free Format
Hallo zusammen,
ich stolper mal wieder über ein Problem.
Ich habe ein 5 stellige Alpha Feld in einer Maske. Dieses Feld muß gefüllt werden mit einer Uhrzeit: z.B: 08:05
Nun habe ich numerische Felder in denen die Zeit steht. (z.B. #_rem s 5 0) Da die 8 aus dem numerischen Feld mit Eval ganz links stehen würde habe ich probiert mit
%Subst eine Null davor zu setzen.
Wenn ich nun diese Folge benutze funktionert das: (für die Minuten)
%subst(d_zbb:4:1) = '0';
%subst(d_zbb:5:1) = %char(#_rem);
Dagegen das hier nicht ?
%subst(d_zbb:4:1) = '0' + %char(#_rem);
oder
%subst(d_zbb:4:1) = '0' + %subst(d_zbb:5:1) = %char(#_rem);
Geht das nicht in Verbindung mit %Subst ??? Oder mache ich hier einen Denkfehler
Gruß co_steffl
-
warum machst du es nicht so:
rechtsbündig füllen mit
evalR d_zbb = %char(#_rem);
und dann ggf. links mit Nullen auffüllen mit
d_zbb = %xlate(' ':'0':d_zbb);
-
Hi Woki
danke für die Antwort.
Klar. Viele Wege führen nach Rom
Auch deiner. Aber was mich mehr interessiert, ist die Tatsache das es scheinbar in Verbindung mit %subst nicht funktioniert!
co_steffl
-
Bei den foldenfen Statements
%subst(d_zbb:4:1) = '0' + %char(#_rem);
%subst(d_zbb:4:1) = '0' + %subst(d_zbb:5:1) = %char(#_rem);
füllst du ja nur die 4. Position (4:1), und das mit einem Wert, der länger als eine Position ist. Das geht so nicht. Hier wird nur die 4. Stelle gefüllt mit der ersten Stelle aus deinem Ausdruck ('0' + %char(#_rem) bzw. '0' + %subst(d_zbb:5:1) = %char(#_rem)).
welchen Wert hat denn die Variable #_rem, und welchen Wert soll d_zbb bekommen?
-
Das geht doch auch (+ plus ist verkettung)
Vorher
#_REST = 00005.
d_zbb = '_____'
d_zbv = '0' + %char(#_rest) + ':';
Nachher
D_ZBV = '05: '
Ich verkette hier 0 (Null) auf Position 4 mit #_rem (Sollte so gehen wie oben #_rem auf Position 5)
Das hier geht ja auch nicht !!
%subst(d_zbb:4:1) = '0' + %subst(d_zbb:5:1) = %char(#_rem);
-
du must das in 2 Schritten machen:
1. setze 4. Position von d_zbb
2. setze 5. Position von d_zbb
%subst(d_zbb:4:1) = '0';
%subst(d_zbb:5:1) = %char(#_rem);
Beide Anweisingen in einem Statement geht so nicht,
aber so würde es gehen:
%subst(d_zbb:4:2) = '0 '+ %char(#_rem);
-
Hallo
O.K Debugger
%subst(d_zbb:1:2) = %char(#_rest) + ':';
D_ZBB = '08: '
#_REM = 00002.
%subst(d_zbb:4:2) = '0 ' + %char(#_rem);
D_ZBB = '08:0 '
...und wo ist die Zwei (2) ??
-
%subst(d_zbb:4:2) = '0' + %char(#_rem);
ohne Leerzeichen hinter der 0.
-
O.K.
war von dir das Leerzeichen
Es funktioniert!
Danke
-
aber warum machst du es so kompliziert?
so wie ich verstanden habe, steht in #_rest die Stunden und in #_rem die Minuten. Das soll alles in d_zbb mit dem Format hh:mm geschrieben werden. Deine Lösung klappt für Uhrzeiten mit einstelligen Werten wie 08:02, aber was ist mit beispielsweise 16:12 Uhr?
Hier mein Vorschlag:
definiere zwei zusätzliche 2stellige Alphafelder für die Stunden und Minuten, hier d_zbb_hh und d_zbb_mm und dann:
1. schreibe die Stunden in das Feld d_zbb_hh, setze ggf. Vornullen
evalR d_zbb_hh = %char(#_rest);
d_zbb_hh = %xlate(' ':'0':d_zbb_hh);
2. schreibe die Minuten in das Feld d_zbb_mm, setze ggf. Vornullen
evalR d_zbb_mm = %char(#_rem);
d_zbb_mm = %xlate(' ':'0':d_zbb_mm);
3. schreibe die Stunden in das Feld d_zbb, setze : und schreibe die Minuten
d_zbb = d_zbb_hh + ':' + d_zbb_mm;
oder so ohne zusätzliche Variablen:
evalR d_zbb = %char(#_rem);
evalR %subst(d_zbb:1:3) = %char(#_rest) + ':';
d_zbb = %xlate(' ':'0':d_zbb);
Der Quellcode funktioniert dann nicht nur für die Uhrzeit 08:02, wie dein Quellcode, sondern auch für Stunden und Minuten mit jeweils 2 Stellen.
-
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
-
natürlich geht das auch mit den 11 Zeilen Quellcode zum füllen von d_zbb
hier mit 3 Zeilen:
evalR d_zbb = %char(#_rem);
evalR %subst(d_zbb:1:3) = %char(#_rest) + ':';
d_zbb = %xlate(' ':'0':d_zbb);
Similar Threads
-
By Fucasdreh in forum NEWSboard Server Job
Antworten: 0
Letzter Beitrag: 10-01-07, 13:12
-
By kr1s in forum NEWSboard Programmierung
Antworten: 6
Letzter Beitrag: 08-09-06, 11:59
-
By codierknecht in forum NEWSboard Programmierung
Antworten: 5
Letzter Beitrag: 03-07-06, 15:25
-
By redsky in forum NEWSboard Programmierung
Antworten: 2
Letzter Beitrag: 04-05-05, 12:26
-
By woki in forum NEWSboard Programmierung
Antworten: 2
Letzter Beitrag: 13-04-04, 12:09
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- You may not post attachments
- You may not edit your posts
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks