免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3822 | 回复: 18
打印 上一主题 下一主题

请教下RPG程序的编译问题! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-08-23 14:11 |只看该作者 |倒序浏览
我在STRPDM环境下,编译后程序执行到
  1. C     string        dsply
复制代码

时,程序会停下来,等待我按执行键再继续执行。

但是我在CALL程序时,为什么不会停下来,等待我按执行键呢。
程序总是一下就执行完了。

论坛徽章:
0
2 [报告]
发表于 2006-08-23 14:34 |只看该作者
原帖由 人世间 于 2006-8-23 14:11 发表
我在STRPDM环境下,编译后程序执行到
  1. C     string        dsply
复制代码

时,程序会停下来,等待我按执行键再继续执行。

但是我在CALL程序时,为什么不会停下来,等待我按执行键呢。
程序总是一下就执 ...


正常情况下应该都会显示下的,你CALL的时候要CALL全路径而且要放在你最后编译的位置,还不行的话,DEBUG下看看!

论坛徽章:
0
3 [报告]
发表于 2006-08-23 15:18 |只看该作者
显示是都显示了,但是没有停下来,直到程序结束。
显示时也就一闪就过去了。根本看不清呀!

论坛徽章:
0
4 [报告]
发表于 2006-08-24 16:18 |只看该作者
我记得我老师教的时候,好象可以打开一个窗口来查看结果。方法忘记了,不知道哪位老兄知道

论坛徽章:
0
5 [报告]
发表于 2006-08-25 09:55 |只看该作者
我倒不是说看不清楚值是多少,这些在JOBLOG中都能看到。
关键是
  1. C     string        dsply
复制代码

在两种方式下运行的差别会那么大。在STRPDM中调用,执行到这句时,会停下来,等待用户按执行键才继续运行。
但是在CALL状态下,到这句时不会停下来,直到程序运行结束。

论坛徽章:
0
6 [报告]
发表于 2006-08-25 10:15 |只看该作者
你可以检查你的帐户的JOBD指向是否为QGPL/QDFTJOBD,然后为了避免影响别的用户,你可以拷贝一份到自己LIB下:
===> CRTDUPOBJ OBJ(QDFTJOBD) FROMLIB(QGPL) OBJTYPE(*JOBD) TOLIB(MYLIB) NEWOBJ(MYJOBD)   

然后修改MYJOBD的以下参数:

Message logging:                 LOG                     
  Level  . . . . . . . . . . . .                4         
  Severity . . . . . . . . . . .                00        
  Text . . . . . . . . . . . . .              > *MSG      
Log CL program commands  . . . . LOGCLPGM     > *YES

然后再加载到你的帐户中:
===> CHGUSRPRF USRPRF(AS400USR) JOBD(MYLIB/MYJOBD)

然后重新登陆400,再测试CALL PGM,看看是否能够停顿下来?

论坛徽章:
0
7 [报告]
发表于 2006-08-25 11:08 |只看该作者
不好用,没起作用!

论坛徽章:
0
8 [报告]
发表于 2006-08-25 11:38 |只看该作者
说实话还真不明白为什么.查一查是否有重复的PGM和DSPF.我怀疑有以前生成的目标存在.
或者F16看一下PDM中用户定义的功能CALL是如何指定的.

论坛徽章:
0
9 [报告]
发表于 2006-08-25 11:48 |只看该作者
这们吧,我把程序贴出来,大家试试看。
这是IBM网上的样例程序,生成数字,字母混合的字串。RPGLE

  1. DCOUNTERS         C                   '0123456789+                  
  2. D                                     ABCDEFGHIJKLMNOPQRSTUVWXYZ'   
  3. Dstring           s             10a   inz('000000ZZZW')            
  4.                                                                     
  5. Di                s             10i 0                              
  6. Dcur              s             10i 0                              
  7. Ddigit            s             10i 0                              
  8. DlastChar         s              1a                                 
  9. DfirstChar        s              1a                                 
  10. DcurChar          s              1a                                 
  11.                                                                     
  12. C                   Eval      firstChar = %subst(counters : 1 : 1)  
  13. C                   Eval      lastChar =                           
  14. C                             %subst(counters : %len(counters) : 1)
  15. C* // "add" 1 to the string 10 times                                
  16. C                   FOR       I = 1 TO 10                           
  17. C* // this does the "adding"                                       
  18. C                   for       digit = %len(string) downto 1         
  19. C                   eval      curChar = %subst(string : digit : 1)  
  20. C                   eval      cur = %scan(curChar : counters)      
  21. C                   if        cur = %len(counters)                  
  22. C                   eval      %subst(string : digit : 1) = firstChar
  23. C* // we have to "carry the 1" to the next digit                    
  24. C                   else                                            
  25. C                   eval      %subst(string : digit : 1) =         
  26. C                             %subst(counters : cur + 1 : 1)        
  27. C* // done; we have added the 1 to the current digit               
  28. C                   leave                                          
  29. C                   endif                                          
  30. C                   endfor                                          
  31. C     string        dsply                                          
  32.                                                                     
  33. C                   endfor                                          
  34.                                                                     
  35. C                   eval      *inlr = '1'                           
复制代码

论坛徽章:
0
10 [报告]
发表于 2006-08-25 14:58 |只看该作者
我刚才在本地环境测试了一下你的RPGLE代码,没问题啊,,,

每敲一次键盘,就画面闪一下,先生成一个字符+数字组合的字符串,后面会生成单纯的数字串。

MKSTR.gif (27.96 KB, 下载次数: 39)

MKSTR

MKSTR
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP