问一个AS 400 关于数组的问题
问题 1 :AS 400 中的数组如何定义多维的
问题 2 :能不能 给数组下标是变量的情况下赋值 如下
eval dimdate(n) = name
其中 n 为s型 name变量
谢谢 帮忙解答下
提前祝大家春节快乐
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(9)
新人,我是来膜拜高手的!
回复 6# seraph0019
可以是具体值,也可以是变量给赋值,关键看程序
本帖最后由 passthru 于 2010-02-22 01:45 编辑
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;
....
likeds 这个是新了解的 所以比较好理解
但是 4楼写的东西有点看的费劲了
谢谢解答
eval arv(i)=‘xxxxxxxxxx’
中的 'xxxxxxxxxx’ 可不可以是一个变量而不是具体值
呵呵,交流就是要把自己总结的、可靠的东西进行交流。忌讳就事论事。
一个二维的数组定义和使用:
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
本帖最后由 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)
回复 1# seraph0019
春节快乐!在数据区定义出定义数组
例如:
D arv S 10a dim(10)
使用
eval arv(i)=‘xxxxxxxxxx’
这里I表示数组的下标,dim表示定义数组的长度,10a表示数组中的每个元素的长度是10个字符
提示:请多看看reference文档,中文的可能没有,英文的比较全面!