免费注册 查看新帖 |

Chinaunix

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

问一个AS 400 关于数组的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-02-10 16:59 |只看该作者 |倒序浏览
问题 1 :AS 400 中的数组如何定义多维的

问题 2 :能不能 给数组下标是变量的情况下赋值 如下
         eval     dimdate(n) = name
              其中 n 为s型   name变量

谢谢 帮忙解答下
提前祝大家春节快乐

论坛徽章:
0
2 [报告]
发表于 2010-02-11 10:34 |只看该作者
回复 1# seraph0019


    春节快乐!在数据区定义出定义数组
例如:
  D arv        S                 10a     dim(10)
  使用
  eval      arv(i)=‘xxxxxxxxxx’
这里I表示数组的下标,dim表示定义数组的长度,10a表示数组中的每个元素的长度是10个字符

提示:请多看看reference文档,中文的可能没有,英文的比较全面!

论坛徽章:
0
3 [报告]
发表于 2010-02-11 13:47 |只看该作者
本帖最后由 passthru 于 2010-02-17 09:53 编辑

rpgiv的数组功能是很强的。经过d表的定义,可以定义使用多维的数组。
最经常用到的是DIM直接定义一维的数组;以及一维的DS。楼上的已经写出代码说明定义和使用一维的数组。这里顺便说一下一维的DS:

d RecDsSet             ds                          likeds(RecDs) dim(100)
*方法一
d RecDs                  ds                          qualified
    fld1                                       10        inz
    fld2                                         3s  0  inz
    fld3                                        50       inz
    .....

*方法二
fMyFile  if  a               disk
f                                                     rename(rec:rec01)
*  
d RecDsSet             ds                             likeds(RecDs) dim(100)
* 2)OS/400 V5R4以上版本
dRecDs                ds                               likerec(rec01)   

*方法三 OS/400 V5R3以下版本
dRecDs                ds                               extname(MyFile)

论坛徽章:
0
4 [报告]
发表于 2010-02-11 22:01 |只看该作者
一个二维的数组定义和使用:
D Array                S             20    Dim(5)
D ArrPointer        S                 *   Inz(%Addr(Array))      
D ArrOptRow       DS                   Dim(5) Qualified        
D                                                Based(ArrPointer)        
D   ArrOptCol                       3     Dim(4)                  
  *
d c@Var               s          100     varying
d s@Row             s              2s 0 inz
d s@Col               s             2s  0 inz
/free
      ....
      s@Row = 1;
      s@Col   = 1;
      c@Var = 'Hello, World!';
      ArrOptRow(s@Row).ArrOptCol(s@Col) = c@Var;
      ....
  /end-free

论坛徽章:
0
5 [报告]
发表于 2010-02-17 09:58 |只看该作者
呵呵,交流就是要把自己总结的、可靠的东西进行交流。忌讳就事论事。

论坛徽章:
0
6 [报告]
发表于 2010-02-21 09:58 |只看该作者
回复  seraph0019


    春节快乐!在数据区定义出定义数组
例如:
  D arv        S                ...
huangxkst 发表于 2010-02-11 10:34



     eval      arv(i)=‘xxxxxxxxxx’
中的  'xxxxxxxxxx’ 可不可以是一个变量而不是具体值

论坛徽章:
0
7 [报告]
发表于 2010-02-21 10:00 |只看该作者
rpgiv的数组功能是很强的。经过d表的定义,可以定义使用多维的数组。
最经常用到的是DIM直接定义一维的数组 ...
passthru 发表于 2010-02-11 13:47



    likeds 这个是新了解的 所以比较好理解
但是 4楼写的东西有点看的费劲了

谢谢解答

论坛徽章:
0
8 [报告]
发表于 2010-02-21 11:08 |只看该作者
本帖最后由 passthru 于 2010-02-22 01:45 编辑
eval      arv(i)=‘xxxxxxxxxx’
中的  'xxxxxxxxxx’ 可不可以是一个变量而不是具体值
seraph0019 发表于 2010-02-21 09:58


f MyFile      if      e                            disk
f                                                      rename(rec:rec01)         
*
d RecDsSet          ds                        likeds(RecDs) dim(100)
*
d RecDs               ds                        likerec(rec01)
*
d  s@i                  s               3s  0   inz
       ...
       setll key rec01;
       reade key rec01 RecDs;            
       dow not %eof(MyFile) and s@i <100;
               RecDsSet(s@i) =  RecDs;
               reade key rec01 RecDs;            
               s@i = s@i + 1 ;
        enddo;
        ....

论坛徽章:
0
9 [报告]
发表于 2010-02-21 16:13 |只看该作者
回复 6# seraph0019


    可以是具体值,也可以是变量给赋值,关键看程序

论坛徽章:
0
10 [报告]
发表于 2010-02-24 22:47 |只看该作者
新人,我是来膜拜高手的!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP