[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Jan 2006
    Beiträge
    112

    Datenstruktur als Parameter bei einem Prototyp verwenden

    Hallo zusammen,

    ich möchte den InputBuffer eines gelesenen Datensatzes an ein Modul (Prototyp) übergeben, woraufhin dann dort Berechnungen gemacht werden.

    Wie mache ich sowas am besten ?


    Programm welches die Daten liest:

    Code:
     
         FMWKCREL1  IF   E           K DISK    USROPN RENAME (FKCREMR: LogRec)
         F                                     PREFIX('B.')
     
         D   B             DS                  LikeRec (LogRec) INZ

    LogRec soll jetzt an den Prototyp übergeben werden / wie müsste das Prozedurinterface und die Prozedur nun definiert werden ?



    Gruß
    Bratmaxxe

  2. #2
    Registriert seit
    Mar 2002
    Beiträge
    5.365
    Hallo,

    ebenfalls mit like, value ist immer gut, bei neueren Releaseständen geht wohl auch likeds

    D*B

    Zitat Zitat von Bratmaxxe Beitrag anzeigen
    Hallo zusammen,

    ich möchte den InputBuffer eines gelesenen Datensatzes an ein Modul (Prototyp) übergeben, woraufhin dann dort Berechnungen gemacht werden.

    Wie mache ich sowas am besten ?


    Programm welches die Daten liest:

    Code:
     
         FMWKCREL1  IF   E           K DISK    USROPN RENAME (FKCREMR: LogRec)
         F                                     PREFIX('B.')
     
         D   B             DS                  LikeRec (LogRec) INZ

    LogRec soll jetzt an den Prototyp übergeben werden / wie müsste das Prozedurinterface und die Prozedur nun definiert werden ?



    Gruß
    Bratmaxxe
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  3. #3
    Registriert seit
    Jan 2006
    Beiträge
    112
    Hallo Herr Bender,

    ich möchte aber ein "autarkes Modul" davon bauen. Mit LikeDs ginge es im gleichen Programm, wo auch die Datei deklariert ist.

    Soweit bin ich derzeit:


    Code:
     
    Das Programm 
     
         FMWKCRELU  IF   E           K DISK    rename (FKCREZO:LogRec)
          *
         D/COPY PGMSRC/QRPGLESRC,MOD_GBUD_P
         D   L             DS                  LikeRec(LogRec) INZ
         D   A             DS                  LikeRec(LogRec) INZ
          *
         C     REDKEY        KLIST
         C                   KFLD                    MANDANT           3
         C                   KFLD                    KTR               4 0
         C
         C
         C                   movel     '100'         mandant
         C                   movel     '0687'        ktr
         C                   movel     *zeros        x_gew            15 2
         C                   movel     *zeros        x_gew2           15 2
         C
         C     redkey        setll     mwkcrelu
         C                   DOU       %EOF(mwkcrelu)
         C     redkey        reade     mwkcrelu
         C                   IF        NOT %EOF(mwkcrelu)
         C                    
         C                   callp     GET_BED_GEW(L:x_gew:x_gew2)
         C
         C                   ENDIF
         C                   ENDDO
         C
         C*‚--------------------------------------------------------------------
         C                   eval      *inlr = *on
    Code:
     
    Der Prototyp
     
         P GET_BED_GEW     B                   EXPORT
         D GET_BED_GEW     PI
         D   PADS        e ds                  ExtName(MWKCREL1)
         D   PAGEW                       15  2
         D   PAREW                       15  2
         D*---------------------------------------------------------------------
          *
         C
          *
         C                   RETURN
         D*---------------------------------------------------------------------
         P GET_BED_GEW     E

    Bei der Umwandlung gibts einen Fehler, dass mehr Parameter übergeben werden, als die Prozedur es zulässt.

    Wahrscheinlich beißen sich die LikeRec und die Deklaration des Parameters im Protoyp (ExtName(MWKCREL1) )

    Wo liegt der Fehler ?

    Gruß
    Bratmaxxe

  4. #4
    Registriert seit
    Mar 2002
    Beiträge
    5.365
    mal abgesehen davon, dass das das Procedure Interface ist...
    die Deklarationsart PI, PR und DS stehen auf gleicher Stufe, das heißt, dass der Prototyp, das Interface, die Datenstruktur jeweils da fertig ist, wo eine neue Deklarationsart angegeben ist. Das heißt dein PI endet in der DS Zeile, die Procedure gibt also nix zurück und will auch nix haben, deshlab der Fehler.
    Es geht also nicht ohne eine zugehörige Deklaration!

    Was ich da mache ist folgendes:

    Prototyp in Copy Strecke ablegen und dort eine Datenstruktur als Pseudtyp deklarieren auf die man dann Bezug nimmt (RPG ist halt eine Huddel Programmiersprache, die einen zu Workarounds zwingt) also so in etwa.

    /IF NOT DEFINED (MYMOD_QRPGLEH)
    /DEFINE MYMOD_QRPGLEH
    /************************************************** *******************/
    D MyProc PR EXTPROC('MYMOD_MyProc')
    D MyDS like(myDSType)

    D myDSType e DS extname(myFile)
    d based(dummy)
    d qualified
    /ENDIF





    Zitat Zitat von Bratmaxxe Beitrag anzeigen
    Code:
     
    Der Prototyp
     
         P GET_BED_GEW     B                   EXPORT
         D GET_BED_GEW     PI
         D   PADS        e ds                  ExtName(MWKCREL1)
         D   PAGEW                       15  2
         D   PAREW                       15  2
         D*---------------------------------------------------------------------
          *
         C
          *
         C                   RETURN
         D*---------------------------------------------------------------------
         P GET_BED_GEW     E

    Bei der Umwandlung gibts einen Fehler, dass mehr Parameter übergeben werden, als die Prozedur es zulässt.

    Wahrscheinlich beißen sich die LikeRec und die Deklaration des Parameters im Protoyp (ExtName(MWKCREL1) )

    Wo liegt der Fehler ?

    Gruß
    Bratmaxxe
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  5. #5
    Registriert seit
    Jan 2006
    Beiträge
    112
    danke,

    ich werd mein Glück mal so versuchen

    LG
    Bratmaxxe

Similar Threads

  1. SNDDST Parameter für Dateianhänge
    By Luebbert in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 23-11-06, 13:22
  2. Parameter empfangen in Free
    By kr1s in forum NEWSboard Programmierung
    Antworten: 6
    Letzter Beitrag: 08-09-06, 11:59
  3. Datenstruktur mit Mehrfachvorkommen
    By JP in forum NEWSboard Programmierung
    Antworten: 6
    Letzter Beitrag: 09-08-06, 08:35
  4. Datenstruktur
    By Bratmaxxe in forum NEWSboard Programmierung
    Antworten: 1
    Letzter Beitrag: 24-07-06, 13:25
  5. sbmjob und ' im Parameter
    By muadeep in forum NEWSboard Programmierung
    Antworten: 1
    Letzter Beitrag: 27-06-06, 11:31

Berechtigungen

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