[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Apr 2012
    Beiträge
    360

    Parameterübergabe

    Hallo,

    habe mir da ein kleines Programm geschrieben, das mir in einem Sfl bestimmte Werte aus einem Artikelstamm anzeigt.

    Leider hat der Pf keinen eindeutigen Key.

    Kann ich eigentlich die ganze Datenstruktur vom Pf als Parameter übergeben lassen oder kann mir jemand einen stupser in die richtige Richtung geben?

    Gruß

    Tarki

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Meist liegen die Keys bei einer solchen PF in einer LF.
    Schau mal per DSPDBR nach, welche Keys (LF's) denn vorhanden sind und such dir den passenden aus.

    Eine Datenstruktur als Parameter macht nur zwischen HLL-Programmen, also RPG, ILERPG und COBOL sinn.
    Mit CLP wirds da schon problematisch.

    Es ist aber immer besser, die Parameter qualifiziert zu definieren, schließlich kannst du bis zu 256 definieren.
    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
    Apr 2012
    Beiträge
    360
    Die Parameter werden/sollten zwischen 2 ILERPG-Programmen hin und her übertragen werden.

    Mit Parameter qualifiziert definieren ist alle Felder einzeln anführen gemeint oder?

    Gruß

    Tarki

  4. #4
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Zwischen 2 ILE's ist sowas durchaus üblich.
    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

  5. #5
    Registriert seit
    Apr 2012
    Beiträge
    360
    sorry, aber wie definiert man eine solche Datenstruktur die den ganzen PF beinhalten soll?

    Dank im Voraus

  6. #6
    Registriert seit
    Jul 2001
    Beiträge
    2.713
    Zitat Zitat von Fuerchau Beitrag anzeigen
    Eine Datenstruktur als Parameter macht nur zwischen HLL-Programmen, also RPG, ILERPG und COBOL sinn.
    Mit CLP wirds da schon problematisch.
    Ach, mit der LDA und normalen Data areas kann man da die tollsten Tricks zaubern. Da sind auch 5000-Zeichen-Bereiche kein Thema mehr.

    Ok, reden wir nicht über Stil und Performance

    -h
    IBM Champion 2022, 2023, 2024, 2025
    Common Europe Advisory Council / Hall of Fame
    http://pub400.com
    visit www.POWERbunker.com for bespoke IBM i hosting

  7. #7
    Registriert seit
    Aug 2001
    Beiträge
    2.928
    Zitat Zitat von tarkusch Beitrag anzeigen
    sorry, aber wie definiert man eine solche Datenstruktur die den ganzen PF beinhalten soll?

    Dank im Voraus
    Warum willst Du eine komplette physische Datei übertragen?
    In dem aufgerufenen Programm musst Du die Datei sowie so irgendwie lesen und verarbeiten.

    Wenn Du die Datei mit native I/O lesen weißt Du wie die Datei heißt und aufgebaut ist, da Du das in den F-Bestimmungen hinterlegst. Falls die Datei mit dem gleichen Aufbau mehrfach vorhanden ist, entweder mit unterschieldichen Namen oder in unterschiedlichen Bibliotheken, kannst Du über das Schlüssel-Wort EXTFILE(Variable) die Datei zur Laufzeit setzen und user controlled (Schlüssel-Wort USRCTL und OpCode OPEN) öffnen. In diesem Fall genügt es, wenn Du den Datei (und ggf. Bibliotheksnamen) als Parameter an das Programm übergibst.

    Wenn es sich um unterschiedliche Dateien mit unterschiedlichem Aufbau handelt, wird das Ganze kompliziert, da Du dann nur noch mit dynamischem embedded SQL arbeiten kannst.

    Wenn Du jedoch nur einen kompletten Datensatz übertragen willst, kannst Du ein Template für eine externe Datenstruktur definieren und den Parameter im Prototyp über LikeDS definieren:

    Prototyp-Definition
    Code:
    D RefDSMyFile   E DS                  ExtName(MyFile) Template      
                                                                        
    D MyPgm           PR                  ExtPgm('MyPGM')               
    D   ParmKey                     10I 0 const                         
    D   ParmDSFile                        LikeDS(RefDSMyFile)
    Programm
    Code:
     /Include QPROLESRC,MyProto
    D MyDS            DS                  LikeDS(RefDSMyFile) inz       
     /Free                                                              
       MyPgm(10: MyDS);                                                 
       If MyDS.Fld1 > *Zeros;                                           
          //........                                                    
       EndIf;
    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. Parameterübergabe RPG zu C
    By Marsman in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 31-03-06, 17:24
  2. Parameterübergabe CL/RPG
    By mott in forum NEWSboard Programmierung
    Antworten: 4
    Letzter Beitrag: 09-12-05, 09:06
  3. Parameterübergabe in Prozedur -> Compiler schmiert ab
    By JonnyRico in forum NEWSboard Programmierung
    Antworten: 5
    Letzter Beitrag: 23-11-04, 16:46
  4. Externe Java Procedur / Parameterübergabe
    By roko in forum IBM i Hauptforum
    Antworten: 17
    Letzter Beitrag: 27-10-04, 16:28
  5. Embedded SQL Parameterübergabe
    By shorty in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 02-08-04, 13:24

Berechtigungen

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