免费注册 查看新帖 |

Chinaunix

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

请教,CL问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-09-18 16:36 |只看该作者 |倒序浏览
向高手请教:

程序设计是通过读一张表db1,用CL程序备份db1中所有文件。

使用连接符“BCAT”什么的把“file1 file2 file3”连接起来,如果 file1,file2文件名不够10位长CL程序如何处理?

论坛徽章:
0
2 [报告]
发表于 2006-09-18 16:38 |只看该作者
大家有空帮忙看看吧!

论坛徽章:
0
3 [报告]
发表于 2006-09-18 18:23 |只看该作者
原帖由 dfangyang 于 2006-9-18 16:36 发表
向高手请教:

程序设计是通过读一张表db1,用CL程序备份db1中所有文件。

使用连接符“BCAT”什么的把“file1 file2 file3”连接起来,如果 file1,file2文件名不够10位长CL程序如何处理?


db1保存了需要备份的文件的名称等属性,然后你的CLP程序是先在开头DCLF这个db1,然后再RCVF这个db1的记录格式名,然后再执行备份即可。

不是很明白为什么要用BCAT连接file1,file2,flie3...呢?
真要取( 'file1' *bact  'file2'  *bcat  'file3' )连接起来的名称,可以CLP程序开头定义一个长度大些的字符型变量存放。

论坛徽章:
0
4 [报告]
发表于 2006-09-18 20:35 |只看该作者
[qoute]不是很明白为什么要用BCAT连接file1,file2,flie3...呢?[/qoute]

因为db1这个文件内容很多,可能近百个,所以想read db1,以后维护db1就简单了。

[qoute]取( 'file1' *bact  'file2'  *bcat  'file3' )连接起来的名称,可以CLP程序开头定义一个长度大些的字符型变量存放。 [/qoute]

已经定义了,结果程序在savobj 时出错,dbg原因是*bcat   db1 中的 file1 或者 file2 文件名称有的长度不足10位,而CL程序辨别不出是两个文件,显示为‘file1 fi’le2 ,应该是‘file1  file2 ’


qingzhou , 不知道我解释清楚了吗?

论坛徽章:
0
5 [报告]
发表于 2006-09-18 21:21 |只看该作者
你看CLP程序这样书写是否可行?
或者你帖出你的代码看看?


  1.    PGM
  2.             DCL         VAR(&MSGDTA) TYPE(*CHAR) LEN(80)
  3.             DCL         VAR(&MSGID) TYPE(*CHAR) LEN(7)
  4.             DCL         VAR(&OBJNAME) TYPE(*CHAR) LEN(10)
  5.             DCLF        FILE(db1)

  6.             MONMSG      MSGID(CPF0000) EXEC(GOTO CMDLBL (ERROR))

  7.    READ:    RCVF        RCDFMT (db1_fmtname)
  8.             MONMSG      MSGID(CPF0864) EXEC(GOTO CMDLBL (END))

  9.             SAVOBJ OBJ(&OBJNAME) LIB(LIB) DEV(TAP01) SAVACT(*LIB)

  10.             GOTO READ

  11.    ERROR:   RCVMSG      MSGTYPE(*EXCP)  MSGDTA(&MSGDTA) +
  12.                           MSGID(&MSGID)
  13.             MONMSG      MSGID(CPF0000)
  14.             SNDPGMMSG   MSGID(&MSGID) MSGF(QCPFSMG) MSGDTA(&MSGDTA) +
  15.                           MSGTYPE(*ESCAPE)
  16.             MONMSG      MSGID(CPF0000)

  17.    END:     ENDPGM
复制代码

论坛徽章:
0
6 [报告]
发表于 2006-09-19 11:16 |只看该作者

回复 5楼 qingzhou 的帖子

SAVOBJ OBJ(&OBJNAME) LIB(LIB) DEV(TAP01) SAVACT(*LIB)

备份到磁带中是可以。因为可以写很多的段。

但是备份到SAVF中怎么做?

比如,DB1中有两个记录,AA和BB。

备份AA的时候成功,但是BB想备份进来的时候会报错,提示原SAVE FILE 已经有数据了。

如何可以将DB1中的若干个object一次备份到同一个SAVF中呢?

CODE:
             PGM        PARM(&LIBNAME)                                
             DCL        VAR(&DATE) TYPE(*CHAR) LEN(6)                 
             DCL        VAR(&TABNAME) TYPE(*CHAR) LEN(10)            
             DCL        VAR(&LIBNAME) TYPE(*CHAR) LEN(10)            
             DCL        VAR(&FILENAME) TYPE(*CHAR) LEN(10)            
             DCLF       FILE(PAICKFOBJ/TABP1)                        
             RTVSYSVAL  SYSVAL(QDATE) RTNVAR(&DATE)                  
             CHGVAR     VAR(&FILENAME) VALUE('LJ' *CAT &DATE)         
             MONMSG     MSGID(CPF2103)                                
             CRTSAVF    FILE(PAICSAVF/&FILENAME) AUT(*ALL)            
             MONMSG     MSGID(CPF7302)                                
             CLRSAVF    FILE(PAICSAVF/&FILENAME)                     
READ:       RCVF       RCDFMT(TABPR)                                 
            MONMSG     MSGID(CPF0864) EXEC(GOTO CMDLBL(END))         
            SAVOBJ     OBJ(&TABNAME) LIB(&LIBNAME) DEV(*SAVF) +      
                         SAVF(PAICSAVF/&FILENAME) SAVACT(*SYNCLIB) +
                         DTACPR(*YES)                                
            GOTO       CMDLBL(READ)                                 
END:        ENDPGM

[ 本帖最后由 rosteedluo 于 2006-9-19 11:18 编辑 ]

论坛徽章:
0
7 [报告]
发表于 2006-09-19 11:19 |只看该作者
TABP1内容:

Columns . . . :    1  71           Browse                      PAICOFSRC/KFSRC
SEU==>                                                                   TABP1
FMT PF .....A..........T.Name++++++RLen++TDpB......Functions++++++++++++++++++
        *************** Beginning of data *************************************
0001.00      A          R TABPR                                                
0002.00      A            TABNAME       10A         COLHDG('TABLE NAME')        
        ****************** End of data ****************************************

论坛徽章:
0
8 [报告]
发表于 2006-09-19 12:44 |只看该作者
没人能回答么???

论坛徽章:
0
9 [报告]
发表于 2006-09-19 15:40 |只看该作者
保存到SAVF本身就不支持你那样的操作,只有磁带才可以.

可以换个思路,把你要备份的东西全都拷贝到一个临时LIB里,然后SAVOBJ,再把临时LIB清空

论坛徽章:
0
10 [报告]
发表于 2006-09-19 15:58 |只看该作者

回复 1楼 dfangyang 的帖子

你看一下下面的程序是不是你希望的那样:
PGM                                                            
          DCL        VAR(&FIL1) TYPE(*CHAR) LEN(10)            
          ...    有几个文件就定义几个   
          DCL        VAR(&DATE) TYPE(*CHAR) LEN(6)              
          DCL        VAR(&FD)   TYPE(*CHAR) LEN(2)              
          DCL        VAR(&FS)   TYPE(*DEC)  LEN(2 0)                           
          CHGDTAARA  DTAARA(*LDA (229 1)) VALUE('A')            
          RTVSYSVAL  SYSVAL(QDATE) RTNVAR(&DATE)               
          CHGDTAARA  DTAARA(*LDA (300 5)) VALUE(%SST(&DATE 2 5))
          CHGVAR     VAR(&FS) VALUE(0)                          
CHGDTAARA:  CHGVAR     VAR(&FD) VALUE(&FS)                           
            CHGDTAARA  DTAARA(*LDA (305 2)) VALUE(&FD)               
            CHGVAR     VAR(&FIL1) VALUE('XXX' *TCAT %SST(*LDA 300 7))
            ...
            CHKOBJ     OBJ(Library/&FIL1) OBJTYPE(*FILE)               
            MONMSG     MSGID(CPF9801) EXEC(GOTO CMDLBL(NEXT))        
            CHGVAR     VAR(&FS) VALUE(&FS + 1)                       
            GOTO       CMDLBL(CHGDTAARA)                             
NEXT:  CRTSAVF    FILE(Library/&FIL1)                             
             ...                             
             SAVLIB     LIB(你所要保存的内容) DEV(*SAVF) SAVF(TFLIB/&FIL1)     
             ...   
                                       
ENDPGM
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP