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