PDA

View Full Version : PList, Parm und Call in Free.



Wavum
14-07-16, 11:01
Wie sieht dieser Code in Free aus?

C Call 'CT0001CL'
C parm USER PUSER 10
C parm 'QPGMR' PCHK 10
C parm XQPGMR 1

Und welchen Ersatz gibt es zu PList in Free?

C *ENTRY PLIST
C PARM PWORT
C PARM PKZ
C PARM XMBR
C PARM XMBRART
C PARM PIREF 70

andreaspr@aon.at
14-07-16, 11:51
Um PGM wie proceduren aufzurufen musst du das PGM einfach nur als Prototype definieren


DCL-PR deinName EXTPGM('CT0001CL');
parm1 char(10) OPTIONS(*VARSIZE) CONST;
parm2 char(10) OPTIONS(*VARSIZE) CONST;
parm3 char(1) const;


Um die *ENTRY durch Prototype ersetzen zu können, packst du den Source deines PGMs in eine Prozedur und definierst diese in den H-Specs als Haupteinstiegspunkt


CTL-OPT MAIN(deinEingang);

DCL-PROC deinEingang;
DCL-PI *n EXTPGM;
parm1 char(10);
parm2 char(10);
END-PI;


Je nach Release gibt es Unterschiede in der Deklaration.
Die oben beschriebene Variante geht ab 7.1.

lg Andreas

dschroeder
14-07-16, 11:52
Den CALL kann man nicht direkt umsetzen. Du musst einen Prototype definieren kannst das dann mit call ct0001cl(puser:chk:xqpgmr) aufrufen.


Die Entry Plist solltest du so umsetzen, dass die Variablen direkt deklariert werden,

z.B.:



dcl-pi *n;
pwort char(...);
pkz packed(5:2);
end-pi


Ich kenne natürlich nicht deine konkreten Defitionen! Du kannst die Parameter in der dcl-pi-Anweisung auch mit like definieren, wenn du eine passende Referenzvariable hast.

Dieter