- 论坛徽章:
- 0
|
如何做到只备份系统中的源程序文件
实现功能:找出系统中的所有源程序文件(PF - SRC),并且备份到磁带机上。
第一步:
用DSPFD命令把选择库中所有PF属性的文件输出到一个文件中,比如:
DSPFD FILE(BLOG/*ALL) TYPE(*BASATR) OUTPUT(*OUTFILE) FILEATR(*PF) OUTFILE(BLOG/FILNAM2)
选择库可选项有
*LIBL
*CURLIB
*USRLIBL
*ALLUSR
*ALL
第二步:
先复制一个同样结构的文件,比如:
CRTDUPOBJ OBJ(FILNAM2) FROMLIB(BLOG) OBJTYPE(*FILE) TOLIB(BLOG) NEWOBJ(FILNAM3) DATA(*NO)
第三步
从FILNAM2选择FILETYPE字段(ATDTAT)等于S(源码)的记录插入到新文件中FILNAM3. 这里记录都是只含有源码的库和source.
insert into blog/filnam3
SELECT * FROM blog/filnam2 WHERE ATDTAT ='S'
第四步
做一CLP程序(前面几个步骤可以加进CLP中),循环读文件备份即可,比如:
LOOP: RCVF RCDFMT(QWHFDBAS) /* Read a file record */
MONMSG MSGID(CPF0864) EXEC(GOTO EOF)
SAVOBJ OBJ(&ATFILE) LIB(&ATLIB) DEV(TAP01)
GOTO CMDLBL(LOOP)
上面效率低,可以先拼接两个字符串,一个库名串,一个文件名串. 比如另外一种方法:
LOOP: RCVF RCDFMT(QWHFDBAS) /* Read a file record */
MONMSG MSGID(CPF0864) EXEC(GOTO EOF)
CHGVAR VAR(&FILNAMA) VALUE('&FILNAMA *CAT '' '' +
*CAT &ATFILE')
CHGVAR VAR(&FILLIBA) VALUE('&FILLIBA *CAT '' '' +
*CAT &ATLIB’)
(可考虑去除重复库名)
GOTO CMDLBL(LOOP)
SAVOBJ OBJ(&FILNAMA) LIB(&FILLIBA) DEV(*SAVF) SAVF(BLOG/SRCALL)
可参考这篇文章:
http://blog.chinaunix.net/u/2405/showart.php?id=106073
此帖最后一步没有经过测试, 楼主不妨试试.
[ 本帖最后由 blogliou 于 2006-6-23 10:48 编辑 ] |
|