[NEWSboard IBMi Forum]
Seite 1 von 2 1 2 Letzte
  1. #1
    Registriert seit
    Aug 2019
    Beiträge
    53

    führende Nullen

    Hallo,
    Ich habe gerade folgendes Problem. In meinem Programm würde ich gerne dem Feld im Display File führende Nullen zuweisen. Dies habe ich wie folgt probiert:

    HTML-Code:
    feld = %SUBST(%editc(feld2: 'X') :1 :7)
    Leider bekomme ich folgende Fehlermeldung beim umwandeln angezeigt.


    HTML-Code:
    Aufbereitung für nichtnumerisches Feld ungültig; für      
    Aufbereitungsschlüssel oder Schablone werden standardmäßig Leerz. angenommen.

  2. #2
    Registriert seit
    Aug 2006
    Beiträge
    2.072
    Zitat Zitat von pabloesco Beitrag anzeigen
    Hallo,
    Ich habe gerade folgendes Problem. In meinem Programm würde ich gerne dem Feld im Display File führende Nullen zuweisen. Dies habe ich wie folgt probiert:

    HTML-Code:
    feld = %SUBST(%editc(feld2: 'X') :1 :7)
    Leider bekomme ich folgende Fehlermeldung beim umwandeln angezeigt.


    HTML-Code:
    Aufbereitung für nichtnumerisches Feld ungültig; für      
    Aufbereitungsschlüssel oder Schablone werden standardmäßig Leerz. angenommen.
    Dann solltest Du mal die Felddefinitionen posten.

    GG

  3. #3
    Registriert seit
    Jan 2007
    Beiträge
    904
    Du weisst schon, dass Du nur ein Dezimalfeld mit einem Editcode versehen kannst ...

    Anmerkung:
    Wenn Du das so haben willst, musst Du das numerische Feld als Alpha-Feld ausgeben. Das Handling überlasse ich Dir.
    kf

  4. #4
    Registriert seit
    Aug 2019
    Beiträge
    53
    Ja. Das hab ich mittlerweile auch bemerkt. Gibt es etwas ähnliches für ein alphanumerisches Feld?

  5. #5
    Registriert seit
    Jan 2007
    Beiträge
    904
    Du kannst auf ein numerisches Feld keinen %subst machen. Dafür musst Du es erst in ein Alphafeld umwandeln. Ist es nur ein Ausgabefeld, kannst Du Alpha ausgeben, bei einem Inputfeld handelst Du dir, bzw. dem Benutzer nur Probleme ein.
    kf

  6. #6
    Registriert seit
    May 2007
    Beiträge
    295
    Trick 17: EvalR Feld = '0000000000' + Feld2
    Greets
    Christian
    Anwendungsentwickler und ein bissal Systemoperator
    https://github.com/prsbrc
    LinkedIn

  7. #7
    Registriert seit
    Aug 2019
    Beiträge
    53
    Ich habe es mittlerweile so probiert aber ich bekomme trotzdem die selbe Fehlermeldung.
    Beide Felder sind als Alphafelder definiert.
    feld = %subst(feld2 :1 :7)
    feld = %int(%editc(feld: ''))

  8. #8
    Registriert seit
    Jan 2007
    Beiträge
    904
    ok, die einfachste Lösung bei numerischem Feld: machst Du bei deinem Displayfile folgenden Zusatz zum feld: EDTWRD('0bbbbbbb'),
    b = Blank.
    kf

  9. #9
    Registriert seit
    Aug 2019
    Beiträge
    53
    Vielen Dank für eure Hilfe. Es funktioniert jetzt wie es soll :-)

  10. #10
    Registriert seit
    Jan 2007
    Beiträge
    904
    Noch eine Lösung zum mitschreiben mit verschachtelten Bifs für Alphafelder:

    feld = %editc(%dec(%subst(feld2:1:7):7:0):'X');
    kf

  11. #11
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    Dieser Hinweis hätte doch bereits reichen müssen;-):

    "Du weisst schon, dass Du nur ein Dezimalfeld mit einem Editcode versehen kannst ..."

    Was die Umwandlung angeht so muss diese u.U. noch erweitert werden, da Leerzeichen nicht erlaubt sind:

    feld = %editc(%dec(%trim( %subst(feld2:1:7)):7:0):'X');

    Was allerdings bei einem leeren Feld auch auf die Nase fällt, also geht auch:

    feld = %editc(%dec(%trim( %subst('0' + feld2:1:7)):7:0):'X');

    Wenn Feld2 sowieso kurz genug ist, reicht auch ein:

    feld = %editc(%dec(%trim( '0' + feld2):7:0):'X');
    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

  12. #12
    Registriert seit
    Aug 2001
    Beiträge
    2.869
    Und wer das Ganze gerne mit SQL machen würde ...
    Das folgende Beispiel richtet den Inhalt der OrigFields rechtsbündig aus und füllt bis zur Länge von 15 Zeichen linksbündig mit Nullen auf. Funktioniert im übrigen sowohl für numerische als auch alphanumerische Werte. Bei alphanumerischen Werten sollten folgende Blanks entfernt werden.

    Code:
    Exec SQL  Set :OutputField = LPAD(RTrim(:OrigField), 15, '0');
    Birgitta
    Birgitta Hauser

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

Berechtigungen

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