首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在RPGLE中通过指针调用过程

如何在RPGLE中通过指针调用过程
EN

Stack Overflow用户
提问于 2017-10-12 23:00:41
回答 2查看 1.7K关注 0票数 0

我在服务模块中使用回调。要作为过程参数传递的回调函数的指针。

如何在服务模块中调用我的回调函数?

psevdocode:

主要代码:

代码语言:javascript
复制
 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;

服务程序

代码语言:javascript
复制
 dcl-proc Proc2;
 dcl-pi *n;
   ptr pointer;
 end-pi;

      dcl-s param char(123) inz('xxxaaaqqq') 

     *ptr( param ); // call callback

 end-proc Proc2;
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-10-12 23:28:55

%PADDR() (Get过程地址)内置函数

PROCPTR关键字(固定格式的d-specs)

指针(*PROC)(自由格式的d-规格)

代码语言:javascript
复制
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

代码语言:javascript
复制
 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;
票数 3
EN

Stack Overflow用户

发布于 2017-10-13 07:00:51

本文有一个关于如何使用过程指针的示例。

examples/rpg/interfaces

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46720124

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档