[NEWSboard IBMi Forum]
Seite 1 von 2 1 2 Letzte

Hybrid View

  1. #1
    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);

  2. #2
    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) ??

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

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

    war von dir das Leerzeichen

    Es funktioniert!

    Danke

  5. #5
    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.

  6. #6
    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

  7. #7
    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);

  8. #8
    Registriert seit
    Apr 2009
    Beiträge
    69
    Hi

    danke. Habs unter Autor Woki eingebaut

    Gruß co_steffl

  9. #9
    Registriert seit
    Apr 2004
    Beiträge
    105

    Grüße, Kathrin alias woki

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

  11. #11
    Registriert seit
    Apr 2004
    Beiträge
    105
    genau, nachfolgende Verkettungen müsstest du in einem separatem Statement angeben.

  12. #12
    Registriert seit
    Jan 2007
    Beiträge
    189
    Die geht naturlich auch
    Code:
    d TimeNum         s              4p 0 inz(0708)              
    d TimeChar        s              5a                          
     /free                                                       
      TimeChar = %trim(%editw(TimeNum: '0  :  '));
    mfg

    Kit
    www.ecofitonline.com
    DeskfIT - ChangefIT - XrefIT

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
  •