View Full Version : 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:
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
Hallo,
ebenfalls mit like, value ist immer gut, bei neueren Releaseständen geht wohl auch likeds
D*B
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:
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
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:
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
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
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
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
danke,
ich werd mein Glück mal so versuchen ;)
LG
Bratmaxxe