免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: magicdandan
打印 上一主题 下一主题

RPG数组的问题 [复制链接]

论坛徽章:
0
31 [报告]
发表于 2008-07-30 10:56 |只看该作者

  1.      E                    INXX    4   5  3                     
  2.      C           INXX,5    DSPLY                              
  3.      C                     SETON                     LR        
  4.      C                     RETRN                              
  5. ** INXX **                                                     
  6. A 1B 2C 3D 4                                                   
  7. E 5   
复制代码

我的理解是这个数组共有5个元素,长为3个字符。因为是预定义数组,所以在定义它的时候是每行有四个元素,其余的写下一行。

如果如下写,INXX,5将没有值。

  1.      E                    INXX    4   5  3                     
  2.      C           INXX,5    DSPLY                              
  3.      C                     SETON                     LR        
  4.      C                     RETRN                              
  5. ** INXX **                                                     
  6. A 1B 2C 3D 4E 5                                             
  7.                         
复制代码

论坛徽章:
0
32 [报告]
发表于 2008-07-30 11:34 |只看该作者

回复 #31 pantierui 的帖子

对对,他们是这么告诉我的,但是我用rpg3转换rpgle的时候
那句给转成这个了
D KNA             S              2    DIM(26) CTDATA PERRCD(21)      


  CTDATA键字指示数组或表使用编译时数据装入,此数据在程序未跟在**或**CTDATA(数组/表名)后说明。
    数组或表在编译时装入,它和源程序一起编译并且包含在程序中,这样的数组或表不用在程序每次运行时装入。

PERRCD键字规定编译时和运行前数组或表每个记录中的元素个数,如果没有说明PERRCD键字,每个记录元素的个数为一。
    数字常量参数必须为大于零的无小数值,它可以是数字字母,转换为数字值的内部函数或数字常量,如果参数为命名常数,它必须在此规范前定义。
    当规定键字FROMFILE、TOFILE或CTDATA时,PERRCD键字才有效


怎么都觉得不对劲啊,perrcd(21)是元素的长度,那2是什么呢,我真的不知道啊,晕死我了

论坛徽章:
0
33 [报告]
发表于 2008-07-30 11:40 |只看该作者
定义一个叫MYARRAY的数组,共含3条记录,每条记录为1位字符型
D  MYARRAY        S        1        DIM(3)

1代表的是每条记录的长度,那perrcd(21)也是元素的长度,不自相矛盾吗

论坛徽章:
0
34 [报告]
发表于 2008-07-30 11:45 |只看该作者
perrcd(21)表示在声明数组时一行写的元素个数,不是长度。
我就是这么理解的。

论坛徽章:
0
35 [报告]
发表于 2008-07-30 11:49 |只看该作者
原帖由 pantierui 于 2008-7-30 11:45 发表
perrcd(21)表示在声明数组时一行写的元素个数,不是长度。
我就是这么理解的。

哦,那我就明白了,高人高人,嘿嘿

论坛徽章:
0
36 [报告]
发表于 2008-07-30 11:51 |只看该作者
如下面代码:
代码1

  1.      H DATFMT(*USA) TIMFMT(*HMS)                                             
  2.      D KNA             S             15    DIM(8)  CTDATA PERRCD(3)         
  3.      C     KNA(8)        DSPLY                                               
  4.      C                   SETON                                        LR     
  5.      C                   RETURN                                             
  6. ** KNA                                                                       
  7. Toronto        Winnipeg       Calgary                                       
  8. Sydney         Edmonton       Saskatoon                                      
  9. Regina         Vancouver                                                     
复制代码


代码2

  1.      H DATFMT(*USA) TIMFMT(*HMS)                                          
  2.      D KNA             S             15    DIM(8)  CTDATA                  
  3.      C     KNA(8)        dsply                                             
  4.      C                   SETON                                        LR   
  5.      C                   RETURN                                            
  6. ** KNA                                                                     
  7. Toronto                                                                    
  8. Winnipeg                                                                  
  9. Calgary                                                                    
  10. Sydney                                                                     
  11. Edmonton                                                                  
  12. Saskatoon                                                                  
  13. Regina                                                                     
  14. Vancouver                                                                  
复制代码


有PERRCD这个关键字的。就是代码1的写法。
没有的就是代码2的写法。

论坛徽章:
0
37 [报告]
发表于 2008-07-30 11:58 |只看该作者

回复 #36 pantierui 的帖子

哦,这么回事啊,看来我还真的要编一个试试了
好复杂啊,和我当初学习的都不一样

当初学的时候,说定义数组内容就在下面写一串
比如01234657890123456782012354
如果数组元素是3位大小的,那系统就自动取前3个当作第一个元素的值(012),第二个就是(346)

论坛徽章:
0
38 [报告]
发表于 2008-07-30 12:08 |只看该作者
以前我也不懂。
今天才算明白一些。
数组的用法还有很多我都没有用过。

论坛徽章:
0
39 [报告]
发表于 2008-07-30 12:57 |只看该作者

回复 #37 magicdandan 的帖子

哎,RPG太深奥啦

论坛徽章:
0
40 [报告]
发表于 2008-07-30 13:12 |只看该作者
本身就不浅。
就是我们接触的太少了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP