免费注册 查看新帖 |

Chinaunix

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

求教:关于RPG中表的操作 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-03-15 14:19 |只看该作者 |倒序浏览
如题:顺序读取一个表file1,将读到的数据存储在一个数组中,然后再将数组中的数据逐条写入到另一个表file2中,这个数组该如何定义?请前辈们指导一下!!比较着急在线等,谢谢~~~~

论坛徽章:
0
2 [报告]
发表于 2010-03-15 14:27 |只看该作者
如果字段少,可以使用多个数组来定义,或者结合DS来处理,数据量大的情况下还可以考虑用DATAQ来处理

论坛徽章:
0
3 [报告]
发表于 2010-03-15 14:29 |只看该作者
就想用数组跟DS结合的办法来做,但是之前没用过,能给个例子么?

论坛徽章:
0
4 [报告]
发表于 2010-03-15 14:33 |只看该作者
因为不能定义DS类型的数组,所以你可以考虑定义字符类型的数组,然后将数据元素赋值给一个DS,再将DS的值对应写入到表的相应字段

论坛徽章:
0
5 [报告]
发表于 2010-03-15 15:49 |只看该作者
回复 1# waiting811013


    file1和file2结构相同吗??



简单举例():

ffile1    if    e               disk
ffile2    o    e               disk



Daryf        s              2000         dim(1000)
Delmf      eds                             extfile(file1)
Delmf2      eds                             extfile(file2)

d i              s                   3 0      inz(1)
//读file1
C         *loval    setll    file1
C                       dow     1=1
c                        read   file1                       10
c       10            leave
c                        move   elmf                 aryf(i)
C                      eval        i=i+1
C                      if           i=1000
c                       leave
c                      endif
c
c                     enddo
//写file2

c               dou   i=0
c                move      aryf(i)       elmf2
c               write    file2
c               eval      i=i-1
c               enddo
eval   *inlr=‘1’

这里需要说明file1和file2的结构需要相同,否则就会出现乱码!!

论坛徽章:
0
6 [报告]
发表于 2010-03-15 17:57 |只看该作者
3Q

论坛徽章:
0
7 [报告]
发表于 2010-03-15 22:19 |只看该作者
回复 6# waiting811013


    不客气,一起学习

论坛徽章:
0
8 [报告]
发表于 2010-03-16 00:38 |只看该作者
本帖最后由 passthru 于 2010-03-16 12:36 编辑

fFile1    if    e                     disk       rename(rec:rec1)
*
fFile2   uf a e                     disk       rename(rec:rec2)
*
d RecDs                    ds                 likerec(rec2:*output)
*
/free
    ....
    read rec1 RecDs;
    dow  not %eof(file1);
        write rec2;
        read rec1 RecDs;
   enddo;
   ....
/end-free

论坛徽章:
0
9 [报告]
发表于 2010-03-16 08:47 |只看该作者
回复 8# passthru


      学习了。。!

论坛徽章:
0
10 [报告]
发表于 2010-03-16 12:47 |只看该作者
如果没有用到数组,可以用传统+现代RPGIV技术快速实现:
fFile1    ip   e                     disk       rename(rec:rec1)
*
fFile2   o     e                     disk      
*
d RecDs           ds                           likerec(rec1:*input)
*
oFile2
o     RecDs                     1   //File2记录起始位

无需C表操作。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP