Save it as a snippet?
-----Original Message-----
From: RPG400-L [mailto:rpg400-l-bounces@xxxxxxxxxxxx] On Behalf Of Mark Murphy/STAR BASE Consulting Inc.
Sent: Wednesday, March 25, 2015 8:30 AM
To: RPG programming on the IBM i (AS/400 and iSeries)
Subject: New Template Type
You know what would be useful? A prototype template, let me explain.
I created a procedure that takes as a parameter a pointer to a callback procedure. The module with the caller (procA) and the callback (procB) procedures doesn't really need a prototype for procB as it isn't really called in a traditional way. But, the called procdedure (procC) which receives a pointer to procB and executes it, does need a prototype that references the procedure pointer. Now that prototype in procC has to be local because it references the procedure pointer being passed in as a parameter, but even if I found a way to make the pointer and prototype global, I couldn't use the same prototype for procB because it references the pointer, and I really don't necessarily always want to use the same name for procB. It is a callback after all, and I might have more than one procedure in a given program providing services to procC. A prototype template would allow me to define the prototype in procC LikeProc(callback_t) with a reverence to the local procedure pointer be
ing passed in as a parameter, and also define the callback procB LikeProc(callback_t) which would provide the matching procedure interface without the procedure pointer, but the parameters and return would be the same. Here is what I would like to see.
dcl-pr callback_t Int(10) Template;
Parm1 <keywords>;
Parm2 <keywords>;
end-pr;
dcl-proc procA;
...
procC(%paddr(procB));
...
end-proc;
dcl-proc procB LikeProc(callback_t);
<procedure body>
end-proc;
dcl-proc procC;
dcl-pi *n;
callbackPtr Pointer(*Proc);
end-pi;
dcl-pr callback LikeProc(callback_t) ExtProc(callbackPtr);
callback(...: ...);
...
end-proc;
Mark Murphy
STAR BASE Consulting, Inc.
mmurphy@xxxxxxxxxxxxxxx
--
This is the RPG programming on the IBM i (AS/400 and iSeries) (RPG400-L) mailing list To post a message email: RPG400-L@xxxxxxxxxxxx To subscribe, unsubscribe, or change list options,
visit:
http://lists.midrange.com/mailman/listinfo/rpg400-l
or email: RPG400-L-request@xxxxxxxxxxxx
Before posting, please take a moment to review the archives at
http://archive.midrange.com/rpg400-l.
As an Amazon Associate we earn from qualifying purchases.