[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Feb 2002
    Beiträge
    61

    Substring aus nummerischen Feld

    Hallo Forum,

    gibt es die Möglichkeit in RPG mit einer Built-In-Function eine gewisse Anzahl von Stellen aus einem nummerischen Feld zu extrahieren ?

    Konkret: ich möchte aus einem 8/0 Num-Feld, den Wert der Stellen 3 und 4 haben.

    Lg

  2. #2
    Registriert seit
    Nov 2003
    Beiträge
    2.403

  3. #3
    Registriert seit
    Feb 2008
    Beiträge
    104
    in Free Form geht das so:

    string = %subst(%editc(zahl):'X'):3:2);

  4. #4
    Registriert seit
    Feb 2002
    Beiträge
    61
    Zitat Zitat von Khholm Beitrag anzeigen
    in Free Form geht das so:

    string = %subst(%editc(zahl):'X'):3:2);
    Nicht in Freeform, sondern "normal" und das Ergebnis soll kein String sein, sondern ein nummerisches Feld

  5. #5
    Registriert seit
    Mar 2006
    Beiträge
    5
    d Struc ds
    D Zahl 8s 0
    D Teil 2s 0 overlay(Zahl:3)

  6. #6
    Registriert seit
    Nov 2003
    Beiträge
    2.403
    EVAL NUM2 = %ABS(%REM(%INT(NUM/100):100))

  7. #7
    Registriert seit
    Mar 2006
    Beiträge
    5

    Wink

    Zitat Zitat von Pikachu Beitrag anzeigen
    EVAL NUM2 = %ABS(%REM(%INT(NUM/100):100))

    Hallo Pikachu,

    Du hast 2 Nullen vergessen:

    EVAL NUM2 = %ABS(%REM(%INT(NUM/10000):100))

  8. #8
    Registriert seit
    Nov 2003
    Beiträge
    2.403
    Kommt drauf an, welche Stellen 3 und 4 gemeint sind.

  9. #9
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Naja, es gibt wie immer viele Wege:

    eval num2 = %dec(%subst(%editc(mynum:'X'):Ab:Len):Len:0);

    Ab = ab Stelle
    Len = Anzahl Stellen
    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

  10. #10
    Registriert seit
    Aug 2001
    Beiträge
    2.928
    eval num2 = %dec(%subst(%editc(mynum:'X'):Ab:Len):Len:0);

    Ab = ab Stelle
    Len = Anzahl Stellen
    Len darf allerdings keine Variable sein, allenfalls eine Konstante, da die Werte für die Parameter 2 und 3 in der Built-In-Function %DEC() zur Compile-Zeit bekannt sein müssen.

    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

  11. #11
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Hab ich irgendwas von Variablen erwähnt ?
    Ist doch nur Syntaxbeispiel.

    Im Handbuch steht
    %DEC(numeric or character expression{: precision:decimal places})

    Wobei auch erst aus dem Text hervorgeht, dass es variabel nicht geht.
    Ich kann es aber ohne Fehler variabel gestalten:

    D MyPos 5I 0
    D MyLen 5I 0

    eval num2 = %dec(%subst(%editc(MyNum:'X'):MyPos:MyLen):31:0);

    Das Gemeine hier ist, dass MyNum ja nicht variabel ist und somit Variabilität sich (fast) erübrigt.

    Wobei, wenn ich die Syntax ansehe:
    eval num2 = %dec(%subst(%editc(MyNum:'X'):MyPos:MyLen));
    ja auch geht.
    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

Similar Threads

  1. Subfile - Feld anzeigen
    By christian_lettner in forum NEWSboard Programmierung
    Antworten: 10
    Letzter Beitrag: 01-09-10, 15:21
  2. per SQL Feld ändern...
    By svente in forum NEWSboard Programmierung
    Antworten: 4
    Letzter Beitrag: 23-01-07, 09:49
  3. Nur einzelnes Feld vor write ändern
    By RaMai in forum NEWSboard Programmierung
    Antworten: 3
    Letzter Beitrag: 28-11-06, 07:59
  4. Timestamp Feld von MS Access abfragen
    By andreas.lundschien in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 05-09-06, 14:55
  5. ILE Feld in Feld ansprechen
    By jogisarge in forum NEWSboard Programmierung
    Antworten: 5
    Letzter Beitrag: 10-05-06, 16:26

Berechtigungen

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