[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    Registriert seit
    Feb 2008
    Beiträge
    11

    Question Alpha Feld -> Alpha Feld ohne führende Nullen

    Hallo zusammen,

    ich möchte gerne ein Alpha-Feld
    mit Inhalt z.B. "0023" umformatieren,
    sodass der Inhalt ohne führende Nullen
    ist.
    Sprich " 23".
    Wie mache ich das am besten?

    Gruß Dirk

  2. #2
    Registriert seit
    Nov 2003
    Beiträge
    2.403
    Welche Programmiersprache?

  3. #3
    Registriert seit
    Feb 2008
    Beiträge
    11
    ILE RPG ist die Programmiersprache.

  4. #4
    Registriert seit
    Nov 2003
    Beiträge
    2.403
    So könnte es gehen:
    Code:
    D TEXT            S              4A   INZ('0034')                      
    D SIZE            S              2S 0 INZ(%SIZE(TEXT))                 
    D COUNT           S              3S 0                                  
    D**********************************************************************
    C     '0'           CHECK     TEXT          COUNT                      
    C     COUNT         IFEQ      *ZERO                                    
    C                   ADD       SIZE          COUNT                      
    C                   ENDIF                                              
    C                   SUBST(P)  TEXT:COUNT    TEXT                       
    C                   SUB       1             COUNT                      
    C     ''            CAT       TEXT:COUNT    TEXT                       
    C                   SETON                                        LR

  5. #5
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    dow %subst(Text:1:1)='0';
    Text = %subst(Text:2);
    enddo;
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  6. #6
    Registriert seit
    Feb 2008
    Beiträge
    11
    Besten Dank.
    An CHECK hatte ich gar nicht mehr gedacht.
    Habe es mit CHECK und SUBST(P) gelöst.

    Gruß Dirk

  7. #7
    Registriert seit
    Feb 2008
    Beiträge
    104
    müßte doch eigentlich noch einfacher gehen:

    text = %xlate('0':' ':text)

  8. #8
    Registriert seit
    Feb 2008
    Beiträge
    11
    Habe es aktuell mit dem CHECK gelöst.

    Ich werde aber in der nächsten Woche
    die beiden anderen Vorschläge von Euch
    auch noch einmal testen und
    dann Rückmeldung geben.

    Gruß Dirk

  9. #9
    Registriert seit
    Mar 2005
    Beiträge
    74
    Zitat Zitat von Khholm Beitrag anzeigen
    müßte doch eigentlich noch einfacher gehen:

    text = %xlate('0':' ':text)
    Diese Funktion würde alle Nullen entfernen, aus 00203 würde 2 3 werden.

    Ab V5R4 geht es mit %triml(text:'0').

  10. #10
    Registriert seit
    Nov 2003
    Beiträge
    2.403
    Sollen die führenden Nullen durch Leerzeichen ersetzt werden?

  11. #11
    Registriert seit
    Aug 2001
    Beiträge
    2.928
    Hallo,

    wenn Du Release V5R3 oder höher hast, kannst Du das Feld wie folgt umsetzen:

    PHP-Code:
     /Free
        EvalR MyNewFld 
    = %TrimR(%TrimL(MyOldFld'0'))
     /
    End-Free 
    Eventuell kann auf den %TrimR sogar verzichtet werden, da der Feld-Inhalt durch EVALR bereits rechtsbündig ausgerichtet wird.

    Solltest Du noch nicht auf Release V5R3 sein, kannst Du die führenden Nullen mit embedded SQL entfernen und das Ergebnis dann mit EVALR und %TrimR rechtsbündig ausrichten:

    PHP-Code:
    c/Exec SQL   Set :MyNewFld Trim(Leading '0' from :MyOldFld)
    C/End-Exec
    C                 EVALR   MyNewFld 
    = %TrimR(MyNewFld
    Birgitta
    Birgitta Hauser

    Anwendungsmodernisierung, Beratung, Schulungen, Programmierung im Bereich RPG, SQL und Datenbank
    IBM Champion seit 2020 - 5. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

  12. #12
    Registriert seit
    Nov 2007
    Beiträge
    7

    Und noch zwei Loesungen

    d TEXT S 4A INZ('0034')
    d NUM S 4S 0
    * No 1
    c eval TEXT = %trim(TEXT)
    c dow %subst(TEXT:1:1)='0'
    c if %subst(TEXT:1:1)='0'
    c eval %subst(TEXT:1:1)=' '
    c eval TEXT = %trim(TEXT)
    c endif
    c enddo
    c evalr TEXT = %trimr(TEXT)
    * No 2
    c move text num
    c eval text = %editc(num:'L')

Similar Threads

  1. SQL -> erstes Zeichen im Feld löschen
    By mikex01 in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 19-07-07, 07:18
  2. num -> alpha rechtsbündig mit dezimalzeichen
    By FNeurieser in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 09-02-07, 16:51
  3. num -> alpha aber linksbündig ohne führende nullen
    By FNeurieser in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 08-02-07, 14:26
  4. Alfa-Feld ----> Numerisches Feld
    By dino in forum IBM i Hauptforum
    Antworten: 1
    Letzter Beitrag: 30-11-06, 15:23
  5. RPG-ILE: Alpha --> Numeric
    By TomWaf in forum NEWSboard Programmierung
    Antworten: 4
    Letzter Beitrag: 12-05-06, 09:07

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •