[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    Registriert seit
    Sep 2006
    Beiträge
    132
    Zitat Zitat von B.Hauser
    Das ist so nicht korrekt!
    Solange der Aufbau der verwendeten Dateien bzw. Teil-Dateien identisch ist, kann die Datei variabel gestaltet werden. (Das ist bei sicher Quellen-(Teil-)Dateien der Fall!)
    Dazu werden die Schlüssel-Worte EXTFILE und EXTMBR verwendet. In diesen Schlüssel-Worten können die verwendete Datei (sogar qualifiziert mit Bibliothek), sowie die Teil-Datei als Variable hinterlegt werden. Voraussetzung ist allerdings, dass die Datei user controlled geöffnet wird und zwar erst dann, wenn die Variablen entsprechend gefüllt sind.

    Damit kann man sich den Override im CL sparen und bekommt auch keine Probleme, sollte man vergessen den OVRSCOPE zu ändern und unterschiedliche Aktivierungs-Gruppen verwenden.

    Zur Umwandlungszeit muss eine Datei mit dem in dem F-Bestimmungen angegeben Namen und dem erwarteten Aufbau existieren.

    Birgitta
    Also müsste ich nur während der Umwandlung eine Datei die so heißt erstellen und könnte sie nach der Kompilierung wieder löschen?

    Hm aber warum braucht die Datei einen erwarteten Aufbau wenn es doch eine DDS Datei ist/sein soll. Ich will ja sozusagen ein PF erstellen. (dh SCRDTA = " A fldnam 10A text('testbalbla')" )

    Tut mir Leid sollte ich mich oben falsch ausgedrückt habe. Bin heut irgendwie nicht gut drauf.(Kopfschmerzen & Co)

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.748
    Da gibts wohl ein bisschen Begriffsverwirrung:

    In einer Source-Datei legt man die Quellbestimmungen ab.
    Bei einem CRTPF gibt man diese Sourcedatei wiederum als Quelle mit den Erstellangaben an.

    Also:
    Du musst deine A-Bestimmungen in eine PF-SRC schreiben um anschliessend mittels CRTPF-Kommando eine DDS-beschriebene Datei erstellen zu können.
    Einen direkten Weg gibt es sonst nicht.

    Die Alternative ist dann eher SQL, da beim CREATE TABLE der Satzaufbau direkt mitgegeben wird, eine DDS-Quelle also nicht erforderlich ist.
    Trotzdem kann eine TABLE-Datei wie eine DDS-beschriebene Datei verwendet werden.

    Was deine Umwandlung angeht, so kannst du doch deine CLP-Quelle (QCLPSRC) z.B. als F-Bestimmung angeben.
    Ein Löschen der PF-SRC ist nicht erforderlich oder sinnvoll, da du diese sonst vor jeder Umwandlung wieder neu erstellen musst.
    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
    Sep 2006
    Beiträge
    132
    Zitat Zitat von Fuerchau
    Da gibts wohl ein bisschen Begriffsverwirrung:

    In einer Source-Datei legt man die Quellbestimmungen ab.
    Bei einem CRTPF gibt man diese Sourcedatei wiederum als Quelle mit den Erstellangaben an.

    Also:
    Du musst deine A-Bestimmungen in eine PF-SRC schreiben um anschliessend mittels CRTPF-Kommando eine DDS-beschriebene Datei erstellen zu können.
    Einen direkten Weg gibt es sonst nicht.

    Die Alternative ist dann eher SQL, da beim CREATE TABLE der Satzaufbau direkt mitgegeben wird, eine DDS-Quelle also nicht erforderlich ist.
    Trotzdem kann eine TABLE-Datei wie eine DDS-beschriebene Datei verwendet werden.

    Was deine Umwandlung angeht, so kannst du doch deine CLP-Quelle (QCLPSRC) z.B. als F-Bestimmung angeben.
    Ein Löschen der PF-SRC ist nicht erforderlich oder sinnvoll, da du diese sonst vor jeder Umwandlung wieder neu erstellen musst.
    Wieder vielen Dank für die freundlich Hilfe.
    Nochmal konkret zusammengefasst:

    1. Über mein CL Programm mithilfe von crtsrcpf eine Source Datei anlegen.
    2. RPG Programm aufrufen und damit die Beschreibungen in die Datei zu schreiben.(F Bestimmung wie oben gesagt?)
    3. Zurück im CL Programm das pf-src zu einer pf-dta umwandeln.

    Stimmt das dann so?

    Gruß

    Martin

  4. #4
    Registriert seit
    Sep 2006
    Beiträge
    132
    Noch eine Frage.
    Muss ich beim Übergeben von Parametern von CL zu RPG irgendetwas beachten?

    Bekomme gerade diesen Fehler:

    PHP-Code:
    *RNF3776 10 a      001200  Externes Programm im Prototyp für Hauptprozedur ist nicht identisch mit dem Programmdas erstellt wird
    Das ist mein Call:
    PHP-Code:
                CALL       PGM(DDSWRITEPARM('DDS' 'DDS'
    und das mein auffangen der Übergabe.
    PHP-Code:
    Daufnehm          PR                  EXTPGM('DDSTEST')
    D field1                        21A                    
    D field2                        10A                    
                                                           
    Daufnehm          PI                                   
    D MyFile                        21A                    
    D MyMbr                         10A 
    EDIT: Problem behoben.
    Es gitb jedoch noch Fehler beim Open...

  5. #5
    Registriert seit
    Sep 2006
    Beiträge
    132
    Hallo habe noch ein Problem und zwar lässt sich die neu erstellte Datei "DDS" nicht öffnen.

    PHP-Code:
    FDDS       O    F   92        Disk    UsrOpn         
    f                                     ExtFile
    (MyFile)
    f                                     ExtMbr(MyMbr)  
                                                         
    DCMDREC           DS            92                             
    DSRCSEQ                          6S 2                          
    DSRCDAT                          6S 0                          
    DSRCDTA                         80A                            
                                                                   
    C
    *     *entry        plist                                      
    C
    *                   parm                    MyFile           21
    C
    *                   parm                    MyMbr            10
    C                   
    eval      MyFile 'LIB/DDS'        
    C                   eval      MyMbr 'DDS'                
    C                                                          
    C                   
    eval      srcseq 0001.00             
    C                   
    eval      srcdat 0609121             
    C                   
    eval      srcdta 'dies ist ein test' 
    C                   open(e)   dds                          
    C
    *                  IF        not %ERROR                   
    C                   write     dds           cmdrec         
    C
    *                  endif                                  
    C                   close     dds                          
    C                   
    return 
    Hat jmd eine Idee warum bzw wie ich herausfinden kann warum? Die Fehlermeldung sagt nur das Write fehlschlägt weil die Datei geschlossen ist.

  6. #6
    Registriert seit
    Feb 2001
    Beiträge
    20.748
    Schau mal ins Joblog, lass mal das "(e)" beim Open weg.
    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
    Sep 2006
    Beiträge
    132
    Zitat Zitat von Fuerchau
    Schau mal ins Joblog, lass mal das "(e)" beim Open weg.
    Ich kann leider nicht in meinen Joblog schaun da ich nur PGMR bin und nicht über *JOBCTL verfüge.

    Das (e) weglassen hat auch nichts gebracht. (das (e) ist doch nur für das Errorhandling zuständig oder?)

    EDIT: Woran könnte es sonst noch liegen das ich das File nicht öffnen kann? DIe Datei DDS mit Teildatei DDS wird korrekt erstellt.

    Hier nochmal mein CL:
    PHP-Code:
                 PGM                                                         
                                                                             
     
    /**         CPYSRCF    FROMFILE(LIB/TESTDDS) +                **/    
     /**                      TOFILE(LIB/TESTDDS2) FROMMBR(TESTDDS)   **/ 
     /**         ADDPFM     FILE(LIB/TESTDDS2) MBR(TESTDDS3)          **/ 
                 
    CRTSRCPF   FILE(LIB/DDSMBR(DDS)                        
                 
    OVRDBF     FILE(DDSTOFILE(LIB/DDS) +                   
                              
    MBR(DDSOVRSCOPE(*JOB)                        
                 
    CALL       PGM(DDSWRITEPARM('DDS' 'DDS')                  
                 
    DLTOVR     FILE(DDSLVL(*JOB)                              
     
    ENDE:       RETURN                                                      
                                                                             
                 
    ENDPGM 
    und hier mein RPG Programm:
    PHP-Code:
    H DftActGrp(*NOActGrp(*CALLER)                           
    H alwnull(*USRCTL)                                         
                                                               
    FDDS       O    F   92        Disk    UsrOpn               
    f                                     ExtFile
    (MyFile)      
    f                                     ExtMbr(MyMbr)        
                                                               
    F*DDS       uf A f           K disk                        
                                                               
                                                               
    D
    *aufnehm          PR                  EXTPGM('DDSTEST')   
    Dfield1                        21A   OPTIONS(*VARSIZE)   
    Dfield2                        10A   OPTIONS(*VARSIZE)   
                                                               
    D*aufnehm          PI                                      
    D
    MyFile                        21A   OPTIONS(*VARSIZE)   
    DMyMbr                         10A   OPTIONS(*VARSIZE)   
                                                               
    DCMDREC           DS            92                         
    DSRCSEQ                          6S 2                          
    DSRCDAT                          6S 0                          
    DSRCDTA                         80A                            
                                                                   
    C     
    *entry        plist                                      
    C                   parm                    MyFile           21
    C                   parm                    MyMbr            10
    C                                                              
    C                   
    eval      MyFile 'LIB/DDS'            
    C                   eval      MyMbr 'DDS'                    
    C                                                              
    C                   
    eval      srcseq 0001.00                 
    C                   
    eval      srcdat 0609121                 
    C                   
    eval      srcdta 'dies ist ein test'     
    C                   open      dds                              
    C
    *                  IF        not %ERROR                       
    C                   write     dds           cmdrec             
    C
    *                  endif                                      
    C                   close     dds                              
    C                   
    return 

  8. #8
    Registriert seit
    Aug 2004
    Beiträge
    923
    Zitat Zitat von Squall
    Ich kann leider nicht in meinen Joblog schaun da ich nur PGMR bin und nicht über *JOBCTL verfüge.
    Bin ja heute schon genug verwirrt.
    Aber ich denke mal, das *JOBCTL mehr den Sinn hat ALLE Jobs kontrollieren zu dürfen.

    Kommst Du wirklich nicht über die Systemanfrage 3 auf Deinen eigenen Job?

    k.

  9. #9
    Registriert seit
    Sep 2006
    Beiträge
    132
    Zitat Zitat von kuempi von stein
    Bin ja heute schon genug verwirrt.
    Aber ich denke mal, das *JOBCTL mehr den Sinn hat ALLE Jobs kontrollieren zu dürfen.

    Kommst Du wirklich nicht über die Systemanfrage 3 auf Deinen eigenen Job?

    k.
    Ich bekomme bei dspjoblog immer nur:
    3>> DSPJOBLOG JOB(*)

    Bei Main komme ich mit 3 und dann 1 zu den Jobs aber von da weiß ich nicht wie ich zu dem joblog für diesen Job kommen soll. Bin wie gesagt Neuling auf der i5.

  10. #10
    Registriert seit
    Aug 2004
    Beiträge
    923
    Zitat Zitat von Squall
    3>> DSPJOBLOG JOB(*)
    Jajajaja,

    und dann die F10 und dann Rückwärtsblättern und dann lesen was da so steht.

    Sach mal, sucht Ihr noch Leute?

    :-)

    k.

  11. #11
    Registriert seit
    Sep 2006
    Beiträge
    132
    Zitat Zitat von kuempi von stein
    Jajajaja,

    und dann die F10 und dann Rückwärtsblättern und dann lesen was da so steht.

    Sach mal, sucht Ihr noch Leute?

    :-)

    k.
    ah...Sry tut mir Leid... Vielen Dank für deine Hilfe.

    Hab grad das Programm nochmal laufen lass und plötzlich gehts... hab diesmal in meiner DDS->DDS meinen Testsatz stehn...Fragt mich bitte nicht wie und warum habe gerade nur mit den jobs herumhantiert.

Similar Threads

  1. ILE RPG / SQL Füllen einer Feldgruppe
    By homue in forum NEWSboard Programmierung
    Antworten: 5
    Letzter Beitrag: 18-07-07, 17:47
  2. Problem mit Java-Methoden Aufruf aus ILE RPG?
    By Stoeberl in forum NEWSboard Programmierung
    Antworten: 8
    Letzter Beitrag: 10-01-07, 11:58
  3. ILE RPG und dynamisches Array
    By Squall in forum NEWSboard Programmierung
    Antworten: 9
    Letzter Beitrag: 10-10-06, 09:53
  4. Return ILE RPG
    By Squall in forum IBM i Hauptforum
    Antworten: 31
    Letzter Beitrag: 28-09-06, 18:53
  5. Rechnen mit Datumsfeldern in ILE RPG
    By Angela in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 22-08-06, 11:11

Berechtigungen

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