我在服务模块中使用回调。要作为过程参数传递的回调函数的指针。
如何在服务模块中调用我的回调函数?
psevdocode:
主要代码:
dcl-pr Proc2;
ptr pointer;
end-pr;
dcl-s ptr inz(%Addr(Proc1))
Proc2( ptr);
dcl-proc Proc1;
dcl-pi *n;
parm1 char(123);
end-pi;
...
end-proc Proc1;服务程序
dcl-proc Proc2;
dcl-pi *n;
ptr pointer;
end-pi;
dcl-s param char(123) inz('xxxaaaqqq')
*ptr( param ); // call callback
end-proc Proc2;发布于 2017-10-12 23:28:55
%PADDR() (Get过程地址)内置函数
PROCPTR关键字(固定格式的d-specs)
指针(*PROC)(自由格式的d-规格)
dcl-pr Proc2;
ptr pointer(*PROC);
end-pr;
Proc2( %paddr(Proc1));
dcl-proc Proc1;
dcl-pi *n *IND;
parm1 char(123);
parm2 int(10);
end-pi;
...
end-proc Proc1;*SRVPGM
dcl-proc Proc2;
dcl-pi *n;
ptr pointer(*PROC)
end-pi;
//defined prototype for callback
// as EXTernal PROCedure pointed to by ptr
dcl-pr callback extproc(ptr) *IND;
cbParm char(123);
cbParm2 int(10);
end-pr;
dcl-s param char(123) inz('xxxaaaqqq')
dcl-s myInt int(10);
dcl-s success ind;
success = callback( param:myInt ); // call callback
end-proc Proc2;发布于 2017-10-13 07:00:51
本文有一个关于如何使用过程指针的示例。
https://stackoverflow.com/questions/46720124
复制相似问题