我要在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/