[NEWSboard IBMi Forum]
Seite 1 von 2 1 2 Letzte
  1. #1
    Registriert seit
    Nov 2005
    Beiträge
    59

    free-format unterschiedliche Felddefinitionen

    Moin, moin,

    folgende Anforderung kann ich zur Zeit nur mit einem workaround (zumindest nach meiner Ansícht) lösen.
    PHP-Code:
         ˜*****************************************************************        
         D BPER            s              8  0       inz
    (20120817)
         
    ##BP            s              6  0       inz(*zeros) 
    Der Inhalt von BPER soll jetzt linksbündig in ##BP eingestellt werden. Wenn ich die Handbücher richtig verstanden habe, sollte eine enfache Zuweisung (eval) ausreichen.

    Folgendes führt aber immer zu einem Programmabbruch:
    PHP-Code:
          /free

               dsply bper
    ;
               
    //##bp = %dec(%subst(%char(bper):1:6):6:0);
               ##bp = bper;
               
    dsply ##bp;

              
    *inlr = *on;

          /
    end-free 
    Auskommentiert habe ich meinen workaround.

    Im "klassischen" RPG konnte ich so etwas mit einem "move" lösen. Gibt es im free-format eine "elegantere" Lösung?

    Schon mal schönen Dank Eure Anregungen
    Gruß

    Andreas

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Ein Eval führt zu einem Dezimalüberlauf was zu dem MCH-Fehler führt, da der Eval als Z-Add ausgeführt wird.
    MOVE hat rechtsbündig übertragen und den Rest halt abgeschnitten. Ein Z-Add hätte den selben Fehler ausgelöst.

    Du kannst das halt nur mit einer Overlay-Definition lösen:

    D DS
    D BPER 8 0
    D ##BP 6 0 overlay(BPER:3)

    Dann sparst du dir den Eval.
    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

  3. #3
    Registriert seit
    Jan 2003
    Beiträge
    759
    Interessehalber: was gefällt Dir an an
    ##bp=%Dec(%Subst(%Char(bper):1:6):6:0) nicht?

  4. #4
    Registriert seit
    Aug 2003
    Beiträge
    1.508

  5. #5
    Registriert seit
    Nov 2005
    Beiträge
    59
    Moin, moin,

    vielen Dank an Alle!

    Der overlay ist mir nicht in den Sinn gekommen, aber das gefällt mir!

    Am workaround gefällt mir "massive" Tiparbeit nicht -> Fehlerquelle

    Schöness WE allen.

    Gruß

    Andreas

  6. #6
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    @Andreas
    Damit bekommst du nur den linken Teil, es soll aber der Rechte Teil ermittelt werden.
    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

  7. #7
    Registriert seit
    Aug 2003
    Beiträge
    1.508
    Zitat Zitat von Fuerchau Beitrag anzeigen
    @Andreas
    Damit bekommst du nur den linken Teil, es soll aber der Rechte Teil ermittelt werden.
    Ich dachte dass das die Anforderung ist?
    Kann ja sein dass ich grad an legasthenie leide, aber %Subst(%Char(bper):1:6) liefert meines wissens den Linken Teil.

    Außerdem
    Zitat Zitat von lucullus
    Der Inhalt von BPER soll jetzt linksbündig in ##BP eingestellt werden.

  8. #8
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Jepp, das habe ich ja doch überlesen .
    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

  9. #9
    Registriert seit
    Mar 2002
    Beiträge
    5.365
    ... das Problem ist doch das lesen, nicht das schreiben!!!
    fixed format:
    move tuch hut
    dsply hut
    * zeigt Kaninchen vor, erst zu verstehen, wenn man die Deklaration von tuch und hut liest!!!

    Overlay ds noch schlimmer!!!
    eval hut = tuch;
    dsply kaninchen;

    jetzt ist sogar der Zusammenhang zwischen kaninchen und hut nur noch in der Deklaration (an völlig anderer Stelle) zu finden.

    D*B

    der schon weiß, warum für ihn RPG keine ordentliche Programmiersprache ist!
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  10. #10
    Registriert seit
    Jan 2003
    Beiträge
    759
    Ähem,

    wären wir zweisprachig, könnten wir durchaus Gefallen an der selbsterklärenden Schreibweise finden. Das läse sich dann so:

    BuchungsPeriodeJ4M2 = %Ziffern(%TeilAus(%Zeichenfolge(Datum8nEur):1:6):6 :0);


  11. #11
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Nun ja, wenn man den 1. Beitrag genau liest, sieht man, dass auch der Schreiber da nicht sauber arbeitet:

    a) per substr(xxx:1:6) wird der linksbündige teil genommen
    b) per "move" wird der rechtsbündige Teil genommen.
    Ich habe mich von b) leiten lassen.

    @Dieter
    Das kann man in anderen Sprachen ja genauso machen in dem man nur mehrere unterschiedlich benannte Zeiger auf den selben Inhalt verwendet, was auch oft genug gemacht wird.
    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.928
    Vielleicht noch eine Anmerkung zu dem o.g. Statement:

    Code:
    ##bp = %dec(%subst(%char(bper):1:6):6:0);
    %CHAR richtet linksbündig aus und entfernt führende Nullen:
    BPER = 20120810 --> ##BP = 201208
    BPER = 123456 --> #BP = 123456
    BPER = 123 --> Abbruch!

    ... habe zufällgi gerade eben einen solchen Fehler uns rausgefischt!

    Besser wäre in diesem Fall:
    Code:
    ##BP = %Int(%Subst(%EditC(BPER: 'X'): 1: 6));
    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

Similar Threads

  1. free Format RPG und Zyklus-Verarbeitung nach last record
    By MarcG in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 20-09-11, 12:09
  2. RPG fixed format in free format umwandeln
    By mott in forum NEWSboard Programmierung
    Antworten: 1
    Letzter Beitrag: 14-03-11, 13:09
  3. String Verarbeitung Free Format
    By co_steffl in forum IBM i Hauptforum
    Antworten: 19
    Letzter Beitrag: 08-12-09, 12:14
  4. Frei Porn Site!
    By Fucasdreh in forum NEWSboard Server Job
    Antworten: 0
    Letzter Beitrag: 10-01-07, 13:12
  5. timestamp im free format
    By redsky in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 04-05-05, 12:26

Berechtigungen

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