Etherion
12-08-14, 11:27
Hallo zusammen,
ich habe eine Prozedur von einem Copy Bound(per Copystrecke) auf eine Prozedur in eine Serviceprogramm umgestellt.
In der Copy Bound Version brauchte ich für das Compilieren keinen Prototyp.
Mit der Version als Serviceprogramm braucht man einen Prototyp.
Kann man die Definition des Prototyps in RPG irgendwie umgehen(ausser Copystrecke)?
Im CL mus z. B. auch kein Prototyp angelegt werden. Da holt der CL-Compiler die Daten wohl aus dem Binderverzeichnis.
Beispiel-CL, beim dem ich nicht dediziert einen Prototyp angebe:
PGM
DCLPRCOPT BNDDIR(MYLIB/BDSL)
DCL &z1$gue *CHAR 1
DCL &a1$dat *DEC (8 0) VALUE(01012014)
DCL &r1$d8n *DEC (8 0)
DCL &r1$d6n *DEC (6 0)
DCL &r1$tag *CHAR 2
DCL &r1$mon *CHAR 2
DCL &r1$jah *CHAR 4
DCL &r1$wot *DEC (1 0)
DCL &r1$ttx *CHAR 10
DCL &r1$rvd *DEC (5 0)
CALLPRC PRC(#DATUMPRUE) PARM((&A1$DAT) (&R1$D8N) +
(&R1$D6N) (&R1$TAG) (&R1$MON) (&R1$JAH) +
(&R1$WOT) (&R1$TTX) (&R1$RVD)) +
RTNVAL(&Z1$GUE)
CHGVAR VAR(&A1$DAT) VALUE(32012014)
CALLPRC PRC(#DATUMPRUE) PARM((&A1$DAT) (&R1$D8N) +
(&R1$D6N) (&R1$TAG) (&R1$MON) (&R1$JAH) +
(&R1$WOT) (&R1$TTX) (&R1$RVD)) +
RTNVAL(&Z1$GUE)
CHGVAR VAR(&z1$gue) VALUE(&z1$gue)
ENDPGM
Beispiel-RPG: Hier ist der Compile nur erfolgreich, wenn ich den Prototyp angebe:
H ACTGRP('ACTGRPSL') BNDDIR('MYLIB/BDSL')
*----------------------------------------------------------------
* DS #ddatprue - Variablen für Datumsroutine
d#ddatprue ds inz
d a1$dat 8p 0
d r1$d8n 8p 0
d r1$d6n 6p 0
d r1$tag 2
d r1$mon 2
d r1$jah 4
d r1$wot 1p 0
d r1$ttx 10
d r1$rvd 5p 0
* Datumsprüfung
d#datumprue pr 1
d a1$dat 8 0 const
d r1$d8n 8 0
d r1$d6n 6 0
d r1$tag 2
d r1$tag 2
d r1$mon 2
d r1$jah 4
d r1$wot 1 0
d r1$ttx 10
d r1$rvd 5 0
*================================================= ===============
* VARIABLEN
*----------------------------------------------------------------
d z1rueckgabe s 1
*================================================= ===============
* PROGRAMMERÖFFNUNG
*----------------------------------------------------------------
* Parameterliste
*----------------------------------------------------
* Aufruf Datumsprüfung
clear #ddatprue;
a1$dat= 01012014;
z1rueckgabe = #datumprue(
a1$dat : r1$d8n : r1$d6n :
r1$tag : r1$mon : r1$jah :
r1$wot : r1$ttx : r1$rvd);
a1$dat = 32012014;
z1rueckgabe = #datumprue(
a1$dat : r1$d8n : r1$d6n :
r1$tag : r1$mon : r1$jah :
r1$wot : r1$ttx : r1$rvd);
*inlr = *on;
Freundliche Grüße
Stefan
ich habe eine Prozedur von einem Copy Bound(per Copystrecke) auf eine Prozedur in eine Serviceprogramm umgestellt.
In der Copy Bound Version brauchte ich für das Compilieren keinen Prototyp.
Mit der Version als Serviceprogramm braucht man einen Prototyp.
Kann man die Definition des Prototyps in RPG irgendwie umgehen(ausser Copystrecke)?
Im CL mus z. B. auch kein Prototyp angelegt werden. Da holt der CL-Compiler die Daten wohl aus dem Binderverzeichnis.
Beispiel-CL, beim dem ich nicht dediziert einen Prototyp angebe:
PGM
DCLPRCOPT BNDDIR(MYLIB/BDSL)
DCL &z1$gue *CHAR 1
DCL &a1$dat *DEC (8 0) VALUE(01012014)
DCL &r1$d8n *DEC (8 0)
DCL &r1$d6n *DEC (6 0)
DCL &r1$tag *CHAR 2
DCL &r1$mon *CHAR 2
DCL &r1$jah *CHAR 4
DCL &r1$wot *DEC (1 0)
DCL &r1$ttx *CHAR 10
DCL &r1$rvd *DEC (5 0)
CALLPRC PRC(#DATUMPRUE) PARM((&A1$DAT) (&R1$D8N) +
(&R1$D6N) (&R1$TAG) (&R1$MON) (&R1$JAH) +
(&R1$WOT) (&R1$TTX) (&R1$RVD)) +
RTNVAL(&Z1$GUE)
CHGVAR VAR(&A1$DAT) VALUE(32012014)
CALLPRC PRC(#DATUMPRUE) PARM((&A1$DAT) (&R1$D8N) +
(&R1$D6N) (&R1$TAG) (&R1$MON) (&R1$JAH) +
(&R1$WOT) (&R1$TTX) (&R1$RVD)) +
RTNVAL(&Z1$GUE)
CHGVAR VAR(&z1$gue) VALUE(&z1$gue)
ENDPGM
Beispiel-RPG: Hier ist der Compile nur erfolgreich, wenn ich den Prototyp angebe:
H ACTGRP('ACTGRPSL') BNDDIR('MYLIB/BDSL')
*----------------------------------------------------------------
* DS #ddatprue - Variablen für Datumsroutine
d#ddatprue ds inz
d a1$dat 8p 0
d r1$d8n 8p 0
d r1$d6n 6p 0
d r1$tag 2
d r1$mon 2
d r1$jah 4
d r1$wot 1p 0
d r1$ttx 10
d r1$rvd 5p 0
* Datumsprüfung
d#datumprue pr 1
d a1$dat 8 0 const
d r1$d8n 8 0
d r1$d6n 6 0
d r1$tag 2
d r1$tag 2
d r1$mon 2
d r1$jah 4
d r1$wot 1 0
d r1$ttx 10
d r1$rvd 5 0
*================================================= ===============
* VARIABLEN
*----------------------------------------------------------------
d z1rueckgabe s 1
*================================================= ===============
* PROGRAMMERÖFFNUNG
*----------------------------------------------------------------
* Parameterliste
*----------------------------------------------------
* Aufruf Datumsprüfung
clear #ddatprue;
a1$dat= 01012014;
z1rueckgabe = #datumprue(
a1$dat : r1$d8n : r1$d6n :
r1$tag : r1$mon : r1$jah :
r1$wot : r1$ttx : r1$rvd);
a1$dat = 32012014;
z1rueckgabe = #datumprue(
a1$dat : r1$d8n : r1$d6n :
r1$tag : r1$mon : r1$jah :
r1$wot : r1$ttx : r1$rvd);
*inlr = *on;
Freundliche Grüße
Stefan