RPG IV编程问题百解(2)服务应用程序-(第二部分)
又问1:
我思考我所知道的,但是,我实现不了。当我看到这点信息,我感到非常奇怪。
现在当我试着实现这个服务应用程序,我看不到结果。请求帮助!
我修改过的这段服务应用程序代码:
/Define GlobalVars
D/Copy QCPYLESRC,GLOBALVARS
/Free
Var1 = 'Morris1'
Var2 = 'Morris2'
Return;
/End-free
Member GLOBALVARS looks like
/If Defined(GlobalVars)
D GlobalDS ds Export
/Else
D GlobalDS ds Import
/EndIf
D Var1 1 10
D Var2 11 20
D Var3 21 30
我创建一个使用上述服务程序,代码如下:
D/Copy QCPYLESRC,GLOBALVARS
/free
Dow 1= 1;
//省略一些处理行代码
EndDo;
*InLr = *On;
/End-Free
当我debug上面代码时,我不能看到我希望看到的Var1、Var2等变量。
请求帮助!
TFisher解答:
在这个服务应用程序中全局变量只是所有使用这个服务应用程序的procedure的全局变量。这些全局变量对你的程序而言是全局变量。
在这个服务应用程序中就这样定义:
Var1 = 'Morris1'
Var2 = 'Morris2’
现在任何一个procedure调用这个服务应用程序将会看到'Morris1' and 'Morris2'变量值。
接着这个procedure执行一个RETURN。
现在回到你修改过的程序,但是你看不到变量值'Morris1' and 'Morris2'。
同样地,你程序能够这样些:
Var1 = 'TFisher1';
Var2 = 'TFisher2';
接着调用这个服务应用程序中的procedure,然而一样看不到变量值'TFisher1'或'TFisher2'。
变量不是传递参数,并且照这个例子不能被共享。除非你把这些变量当成参数来传递(或使用一个指针来传递)。
文章小结:
在一个服务应用程序定义的变量,在调用程序或procedure中不能看到这个服务应用程序的变量值。只有这些在服务应用程序初始化的变量变成传递参数后,才能在调用程序中看到这些传递参数值。
阅读(735) | 评论(0) | 转发(0) |