[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    Registriert seit
    Feb 2001
    Beiträge
    20.754
    Schau dir noch mal meine obige Beschreibung an.
    Du kannst es nur hinbekommen, wenn dein API-Programm so dynamisch ist, dass es auch die DSPF's selber verarbeitet und dein übergeordnetes Programm von dieser gar nichts mehr weiß.
    Dieses bedarf dann ggf. größerer Übergabestrukturen, die eben alle Felder enthält.

    Ich kenn da ein ERP-System (XPPS von ehemals BRAIN), die über Generatoren je DSPF ein Verarbeitungsprogramm für READ/WRITE/EXFMT erstellen, eine ziemliche große DS als Copy generieren, die dann von dem eigentlichen Programm verwendet wird.

    Das generierte Programm leistet dann auch z.B. die Varianten
    a) als Service-Job im Hintergrund (Umgehung von Dialog-CPW)
    b) PC-Clients mit grafischer Oberfläche
    c) eher selten auch als interaktives Programm

    Dies kommt dann Dieters Vorschlag schon näher, entsprechende Generatoren zu verwenden/entwickeln.
    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

  2. #2
    Registriert seit
    Nov 2007
    Beiträge
    371
    Erst einmal Danke für alle Antworten und übt ein bisschen nachsicht mit mir denn ich bin kein As/400 Crack.

    Hab da grad was gefunden.
    Diese Programm macht zwar ein bisschen was anderes aber naja.
    Aber die Funktionen die ich brauche und wie ich es mir vorstelle sind enthalten.
    Es liesst die Werte der Felder aus und gibt sie aus.

    Wenn ich jetzt dieses abändere könnte es funktionieren.
    evtl..
    Ich bin ja noch jung und deshalb stelle ich dieses Projekt unter das Motto


    JUGEND FORSCHT

  3. #3
    Registriert seit
    Feb 2001
    Beiträge
    20.754
    Was versuchst du mir damit zu zeigen ?
    Was erreichst du damit, die Datei zu öffnen ?

    Mit C-Routinen kannst du eine DSPF natürlich auch verarbeiten, dies hilft jedoch immer noch nicht dem übergeordneten Programm, wenn du keine defiierte Übergabestruktur zwischen den Programmen hast.

    Eine Datei (egal wieviele Formate bei DSPF/PRTF) hat intern nur genau einen einzigen Puffer, der je nach gewünschtem Format aufzubauen ist.
    Dies leistet RPG automatisch durch den Compiler, da ja (wie gesagt) die Adressen der Variablen im RPG-Programm überhaupt nichts mit der tatsächlichen Pufferposition zu tun haben.

    Hinzukommt ja noch, dass bei einer DSPF der Ausgabepuffer eines Satzformates anders aufgebaut ist, als der Eingabepuffer !
    Enthält ein Format O-Felder (also reine Ausgabe) so sind diese zwar im Ausgabe- jedoch nicht im Eingabeformat enthalten.

    Kodierst du ein WRITE FMT wird durch den Compiler halt der benötigte Code generiert um die Daten zusammenzubauen, kodierst du ein READ FMT, werden die Daten wieder zerpflückt.
    Kodierst du ein EXFMT wird der intern in WRITE und READ aufgelöst.

    Fazit:
    Die Speicheradressen deiner Variablen im Programm haben überhaupt nichts mit der Pufferposition der geöffneten Datei zu tun!
    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

  4. #4
    Registriert seit
    Nov 2007
    Beiträge
    371
    Nein wollte nur demonstrieren das es Programme gibt die den Wert eines Buffers auslesen und ausgeben. Aber das hätte ich Dir eigentlich ja nicht zu erzählen brauchen den das weißt du ja sowieso.

    Hab mir halt gedacht das ich mir über die beschriebenen Apis der IBM das Ganze realisieren kann.
    1:
    Api 1
    Feldnamen holen.
    2:
    Api 2 Buffer holen
    3:
    Serviceprogramm informationen verarbeiten (Buffer überschreiben).

    Aber wie du es ja beschrieben hast scheint dies nicht zu funktionieren

  5. #5
    Registriert seit
    Feb 2001
    Beiträge
    20.754
    Also das mit den API's ist mir persönlich nun mal nicht so ganz unbekannt .

    Ich habe mir früher mal die Mühe gemacht, MI-Code zu verstehen (daher biete ich ja auf meiner Seite auch einen MI-Compiler an, der in MI geschrieben ist).

    Um zu verstehen, was RPG da so treibt, kannst du ein Programm (nur RPG, nicht ILERPG) mit CRTRPGPGM ... OPTION(*SRCDBG) GENOPT(*LIST) umwandeln.

    In der MI-Ausgabe kannst du dann mal nach EXFMT suchen und analysieren, was der Compiler da so treibt.

    Zuerst werden da ein paar Hilfsvariablen gefüllt und anschliessend per CALLI (entspricht EXSR) eine Unterroutine gefüllt.
    In dieser Unterrouten siehst du dann die einzelnen CPY-Befehle:
    CPYBLA .BUFFER(0001:0001),*IN30
    CPYBLA .BUFFER(0002:0001),DAFIRM
    :

    Für die Leseroutine ist das dann analog generiert.

    Die Felddefinitionen werden vom Compiler in der Reihenfolge ihrer Verwendung definert. Suche mal in der Liste nach "ZFLDSTRT":

    DCL DD DSHENX CHAR (0010) INIT((0010)' ')
    DCL DD DSHENR PKD (08,0) INIT(P'0')
    DCL DD DSSTAP CHAR (0001) INIT((0001)' ')
    DCL DD DSMATC CHAR (0010) INIT((0010)' ')
    DCL DD DSNAME CHAR (0030) INIT((0030)' ')
    DCL DD DSBRAN CHAR (0030) INIT((0030)' ')
    DCL DD DSSTRA CHAR (0030) INIT((0030)' ')
    :
    :

    Nur Strukturen, also DS, sind tatsächlich korrekt in der Folge definiert und auch als solche erkennbar.

    DCL DD EXFIWK CHAR(0170) /*ZDATAS*/
    INIT /*ZDSINITS*/
    DCL DD DAFIRM CHAR (0001) DEF(EXFIWK) POS(0001)
    /*ZDSDEF*/
    INIT( <0001! >)
    DCL DD DAWKNR CHAR (0003) DEF(EXFIWK) POS(0002)
    /*ZDSDEF*/
    INIT((0003)<0001! >)
    DCL DD DAFINA CHAR (0030) DEF(EXFIWK) POS(0005)
    /*ZDSDEF*/
    INIT((0030)<0001! >)
    DCL DD DAWKNA CHAR (0030) DEF(EXFIWK) POS(0035)
    /*ZDSDEF*/

    Ich hoffe, du kannst nun meiner Argumentation folgen.
    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
    Mar 2002
    Beiträge
    5.379
    ... bei diesem Programm kann ich als Senior nur empfehlen erst mal über modulares Programmdesign zu forschen...

    Zitat Zitat von woodstock99 Beitrag anzeigen
    JUGEND FORSCHT
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  7. #7
    Registriert seit
    Nov 2007
    Beiträge
    371
    bin zwar noch Jung aber auch nicht mehr ganz so grün hinter den Ohren was die AS/400 betrifft .

Similar Threads

  1. Wert aus CSV Datei
    By mk in forum IBM i Hauptforum
    Antworten: 9
    Letzter Beitrag: 21-12-06, 09:56
  2. Variable Zahlenkonvertieren
    By Xanas in forum NEWSboard Programmierung
    Antworten: 4
    Letzter Beitrag: 28-08-06, 13:21
  3. String mit HexInhalt muss als Hex-Wert in Variable
    By cheffe1008 in forum NEWSboard Programmierung
    Antworten: 7
    Letzter Beitrag: 16-05-06, 08:45
  4. Variable zuweisung
    By steven_r in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 08-05-06, 12:01
  5. Können CLLE Module selbst einen Wert halten bzw. zurückgeben?
    By JonnyRico in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 25-04-06, 11:16

Berechtigungen

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