[NEWSboard IBMi Forum]
Seite 1 von 2 1 2 Letzte
  1. #1
    Registriert seit
    Apr 2009
    Beiträge
    69

    Question 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

  2. #2
    Registriert seit
    Apr 2004
    Beiträge
    105
    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);

  3. #3
    Registriert seit
    Apr 2009
    Beiträge
    69
    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

  4. #4
    Registriert seit
    Apr 2004
    Beiträge
    105
    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?

  5. #5
    Registriert seit
    Apr 2009
    Beiträge
    69
    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);

  6. #6
    Registriert seit
    Apr 2004
    Beiträge
    105
    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);

  7. #7
    Registriert seit
    Apr 2009
    Beiträge
    69
    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) ??

  8. #8
    Registriert seit
    Apr 2004
    Beiträge
    105
    %subst(d_zbb:4:2) = '0' + %char(#_rem);
    ohne Leerzeichen hinter der 0.

  9. #9
    Registriert seit
    Apr 2009
    Beiträge
    69
    O.K.

    war von dir das Leerzeichen

    Es funktioniert!

    Danke

  10. #10
    Registriert seit
    Apr 2004
    Beiträge
    105
    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.

  11. #11
    Registriert seit
    Apr 2009
    Beiträge
    69
    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

  12. #12
    Registriert seit
    Apr 2004
    Beiträge
    105
    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

  1. Frei Porn Site!
    By Fucasdreh in forum NEWSboard Server Job
    Antworten: 0
    Letzter Beitrag: 10-01-07, 13:12
  2. Parameter empfangen in Free
    By kr1s in forum NEWSboard Programmierung
    Antworten: 6
    Letzter Beitrag: 08-09-06, 11:59
  3. Systemdatum nach String
    By codierknecht in forum NEWSboard Programmierung
    Antworten: 5
    Letzter Beitrag: 03-07-06, 15:25
  4. timestamp im free format
    By redsky in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 04-05-05, 12:26
  5. Embedded SQL - Datenbankoptionen in VARPG
    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
  •