• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

如何在已有資料的physical file中增加一欄位?

发布: 2007-6-08 22:43 | 作者: seanhe | 来源: | 查看: 25次 | 进入软件测试论坛讨论

领测软件测试网
我要在physical file中多加一欄位,但文件中已有很多數據,compile時會被清掉,應該如何做才能保留原有資料? 謝謝!

 暴走族 回复于:2004-12-07 17:17:20
改了SRC后用chgpf 呵呵,可算遇上一个我能回答的

 xuguopeng 回复于:2004-12-07 17:17:40
稳妥的办法是先拷贝一份出来 然后修改PF(最好把字段放在最后)

然后用CPYF再把数据拷贝回去(也可以用SQL

再就是修改完SRC后用CHGPF 把LEVEL CHECK改为*NO就好了

 tom9030 回复于:2004-12-07 17:51:54
好象一定要把新增字段放在最后面吧?!然后再cpyf回去

 WT99 回复于:2004-12-07 17:55:56
謝謝樓上兩位仁兄的指點! 我用COPY FILE的方式已改好了一個.但另一個FILE不太好COPY,我想用直接CHG的方式,步驟是:1.Change file,把level check改成*NO,  2.修改source file,加一欄位,compile, 提示說object已被delete,然後發現原有的數據已沒了,能告訴我是哪里操作錯了嗎?

 tom9030 回复于:2004-12-08 08:53:45
不用compile就已经可以了。

 thursday 回复于:2004-12-08 09:03:49
试了一下,不好用啊,版主的方法

 xuguopeng 回复于:2004-12-08 09:16:43
我没让你编译啊

你只需要把SRC改好了 直接用CHGPF,添上刚才修改SRC的路径

把LEVEL CHECK改为*NO就可以了

编译了当然就没了

如果不怕麻烦也可以用SQL去做

 USING_AS400 回复于:2004-12-08 13:12:17
原来的PF(假设名字是PF0)包含三个字段: A,B,C
拷贝PF0,重新命名为PF1,进行编辑,增加字段后:A,X,B,C
然后编译PF1,再用SQL语句将PF0中的数据导入PF1中,如下:
INSERT INTO PF1 (A, B, C) SELECT A,B,C FROM PF0
然后把PF1改一下名字,改成PF0就可以了!
用SELECT * FROM PF0看看吧!

 WT99 回复于:2004-12-08 14:03:31
已上三種方法已試過,都成功啦!謝謝各位的不吝指教! 總結下,感覺用CHGPF, Source library/file/member處指定改後的source來源,level check改成*no的方法最簡單.

 qingzhou 回复于:2004-12-08 14:44:15
[quote:b7c27ce3e8="WT99"]已上三種方法已試過,都成功啦!謝謝各位的不吝指教! 總結下,感覺用CHGPF, Source library/file/member處指定改後的source來源,level check改成*no的方法最簡單.[/quote:b7c27ce3e8]

对于修改PF,我有如下建议:

1。首先通过CPYF将数据做备份;

2。然后将需要修改的PF的代码做备份;

3。如果该PF有关联LF,通过DSPDBR找到关联后用DLTF删除LF(注意:不是用RMVM删除物理的LF的source);

4。修改PF,将需要修正的字段进行调整,建议是改大,而不是改小,否则容易会出现错误;

5。利用CHGPF进行重新编译PF, Source library/file/member这3个参数要明确指定来源,这点很重要;

6。编译PF成功后,重新用CPYF将数据拷贝回来;

7。确保无误后删除备份的PF。

另外,我还得提提建立“公共数据字典”(PF)的好处。

我们平时在开发系统时可能都没注意要建立数据公共字典,什么叫“数据共同字典”呢?通俗的说就是将整套系统中所有涉及的、具有公共属性的字段归纳成一个PF文件来处理,其他相关PF可参照这个公共PF来套用属性,这样组合成的PF就叫做“公共数据字典”。那我们不禁会问?这样做有什么好处呢?不是多此一举吗?

我们都知道,日后在维护系统时,公共数据字典给我们带来的好处就很明白了。

例如:我现在要修改某个PF中某个字段长度,如果没有建立公共数据字典,那你可能要修改整套凡是涉及这个PF的代码,可想而知维护量是多大,万一有什么地方疏落,那就麻烦大了。 有了公共数据字典,我们只需修改这个公共数据字典即可,然后重新编译一下,其他相关参照的PF文件都顺理成章修改过来,减轻了多少维护负担和风险。


还有,不建议采用“level check改成*no的方法”来偷工减料,这种做法存在极大的数据安全隐患,对于这个问题,我也曾经和IBM资深工程师、培训的老师交流过,都一致否定这种做法。大家都知道企业数据的重要性,不要贪一时方便而日后给自己留下无穷的祸害,重新编译吧。。。

 giraffe 回复于:2004-12-08 16:32:43
有了公共数据字典,我们只需修改这个公共数据字典即可,然后重新编译一下,其他相关参照的PF文件都顺理成章修改过来,减轻了多少维护负担和风险。?????
我测试了一下,当参照文件字段长度修改了,而参照的PF文件的字段不能随之更改,也得必须重新编译。

 qingzhou 回复于:2004-12-08 16:39:46
当然都是要全部重新编译,没说不编译呀。
我一开始就建议不要采用“level check改成*no的方法””来偷工减料,这样做是很不安全的做法,数据也存在安全隐患。
如果整套系统牵涉的PF、LF、DSPF、PRTF、CLP、RPG很多,开发人员都是会采用编写一个专门用来编译的CLP程序来实现连锁编译机能。

另外,采用“公共数据字典”还保证了系统后台PF的统一性。

 fairyboy 回复于:2004-12-09 08:01:44
恩,一般大的系统都有他的公共数据库PF,各使用部门的数据可以相互交换的。

 pl421 回复于:2004-12-09 10:07:39
受用

 thursday 回复于:2004-12-09 10:39:57
为什么我用CPYF拷贝不了,从一个库里到另一个库,而用3在OPT,就能拷贝阿?

 thursday 回复于:2004-12-09 10:43:40
我发现在OPT打3也能拷贝数据阿!可以吗?

 ibmas400 回复于:2004-12-09 11:34:51
晕~~~ :em07: 

  Copy File (CPYF)是拷贝数据,Copy Source File (CPYSRCF)是拷贝源码,2者会一致么?

另外,该帖解答得很好,建议斑竹设精。

 raydream 回复于:2004-12-20 22:09:49
如果没有LF,只要用SQL语句就可以实现了

延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备10010545号-5
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网