Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1273017
  • 博文数量: 287
  • 博客积分: 11000
  • 博客等级: 上将
  • 技术积分: 3833
  • 用 户 组: 普通用户
  • 注册时间: 2007-08-16 08:43
文章分类
文章存档

2013年(15)

2012年(17)

2011年(17)

2010年(135)

2009年(85)

2008年(18)

分类: 系统运维

2009-03-22 16:54:57

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中不能看到这个服务应用程序的变量值。只有这些在服务应用程序初始化的变量变成传递参数后,才能在调用程序中看到这些传递参数值。

 
阅读(698) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~