Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1269107
  • 博文数量: 287
  • 博客积分: 11000
  • 博客等级: 上将
  • 技术积分: 3833
  • 用 户 组: 普通用户
  • 注册时间: 2007-08-16 08:43
文章分类
文章存档

2013年(15)

2012年(17)

2011年(17)

2010年(135)

2009年(85)

2008年(18)

分类: 系统运维

2009-07-05 15:42:16

RPGIV编程问题百解(30) CPF4203系统信息分析和处理
 
Major(280059419) 20:25:51
  OPEN 文件  文件打不开。。是什么造成的啊?
福建★嘻嘻(11844279) 20:27:04
  出错信息呢?
Major(280059419) 20:27:37
    cpf4203
厦门★passthru(448081936) 20:50:47
    在这之前做了什么?
厦门★passthru(448081936) 20:51:34
  可能是大问题,
厦门★passthru(448081936) 20:53:11
  出现cpf4203信息的都是比较严重的问题,牵涉到系统或硬件。
smallpotato(149884321) 20:56:14
Message ID . . . . . . . . . :   CPF4203                                      
Message file . . . . . . . . :   QCPFMSG                                      
  Library  . . . . . . . . . :     QSYS                                       
                                                                              
Message . . . . :   Member &4 cannot be opened while UPDPROD(*NO).            
Cause . . . . . :   Member &4 file &2 in library &3 could not be opened       
  because either file &2 or a based-on file of file &2 is in a production     
  library and the file is being opened for either an update, delete or output 
  operation; however, the job that is opening the file is in debug mode with  
  the UPDPROD(*NO) parameter specified.                                       
Recovery  . . . :   Either specify the INHWRT(*YES) parameter on the OVRDBF   
  command, or specify the UPDPROD(*YES) parameter on the CHGDBG command.  Then
  try your request again.                                                     
                                                                             
smallpotato(149884321) 20:56:37
  参数改一下就好了吧。
  UPDPROD(*YES)
厦门★passthru(448081936) 20:58:31
  如果,做savef后restore,改这个参数有效。所以,我问“在这之前做了什么?”。如果不是这类东西引起的,问题就大了。
云风(48698398) 21:04:02
  enddbg再试一下
Major(280059419) 21:18:02
  ENDDBG了
Major(280059419) 21:18:32
  之前OPEN这个文件然后关闭了啊
Major(280059419) 21:18:39
  还是不行
Major(280059419) 21:18:56
  UPDPROD(*YES) 在哪里修改啊
厦门★passthru(448081936) 21:28:14
  strdbg F4 确认UPDPROD(*YES).如果rpg之前有用cl做ovrdbf,就要在ovrdbf时设置参数 INHWRT(*YES)。试试
Major(280059419) 21:28:34
  OK 老大们现在OPEN没错了
Major(280059419) 21:28:55
  就是吧那个UPDPROD(*YES)就OK;
福建★嘻嘻(11844279) 21:30:28
  Major 你这个问题一开始就没把最重要的那点说出来 你在STRDBG的环境下
厦门★passthru(448081936) 21:32:06
  呵呵,你们os还比较纯洁。如果系统文件被破坏,也会出现CPF4203。或硬盘出现坏点,也会CPF4203。
Major(280059419) 21:32:16
  对。。。。
厦门★passthru(448081936) 21:33:34
  嘻嘻的提示非常重要,要希望他人能够一步到位的帮助你,就要把问题发生的前提一起告诉。
Major(280059419) 21:35:03
  是这样的我在写文件的时候%ERROR   结果DEG是就OPEN出错了
Major(280059419) 21:35:10
  不好意思没说清楚
厦门★passthru(448081936) 21:37:07
  为什么会“是这样的我在写文件的时候%ERROR   结果DEG是就OPEN出错了”?搞明白了吗?
Major(280059419) 21:37:54
  哦我的意思是WRITE(E)时出错了
北京★天道酬勤(331728312) 21:40:15
  WRITER+(E)=WRITE(E)这样系统给你提供%ERROR来错异常处理..
Major(280059419) 21:41:33
  好我是一把就是WRITER(E) 文件名
    IF   %ERROE
    END
厦门★passthru(448081936) 21:43:30
  是ile的rpgiv吗?
厦门★passthru(448081936) 21:44:27
  程序后缀是rpgle吗?
Major(280059419) 21:44:58
  是RPGLE
厦门★passthru(448081936) 21:46:00
  知道为什么会write出错后,用debug调试程序时,会报CPF4203吗?
厦门★passthru(448081936) 21:46:51
  UPDPROD(*YES)参数这样设置又为了什么目的?
Major(280059419) 21:46:56
  没有吧,那个UPDPROD(*YES)该来啊
厦门★passthru(448081936) 21:47:29
  没有搞明白发生的原因。嘻嘻,知道吗?
Major(280059419) 21:47:30
  不知。。。
Major(280059419) 21:47:35
  恩德
Major(280059419) 21:48:46
  那个updprod是做什么的啊
福建★嘻嘻(11844279) 21:48:54
  我不能确定与否:库属性是  *prod 还是*test?
厦门★passthru(448081936) 21:49:33
  这样的问题会在用到AG编程时,经常遇到。
福建★嘻嘻(11844279) 21:51:17
  *PROD                                                    
    This is a production library.  Database files in     
    production libraries cannot be opened for updating if
    a user is in debug mode and he requested that        
    production libraries be protected.  A user can protect
    all database files in production libraries by        
    specifying UPDPROD(*NO) on the Start Debug (STRDBG)  
    command to begin testing.  However, this protection  
福建★嘻嘻(11844279) 21:53:37
  说说你的pass
福建★嘻嘻(11844279) 21:55:03
   *PROD                                                    
     这是产品库。若用户处于调试方式且已请求保护该产品库,则
     不能为更新而打开产品库中的数据库文件。用户可通过在“启
     动调试” (STRDBG) 命令上指定 UPDPROD(*NO) 以开始测试来
     保护产品库中的所有数据库文件。但是,此保护不会防止程序
     删除数据库文件或更改库中的其他对象(如数据区)。     
厦门★passthru(448081936) 21:57:54
  rpgle一般情况下,都是采用默认打开程序使用文件模式,即rpg程序一经调用,就打开文件。如果发生write错误,程序非正常结束,这时,文件就出在打开状态,特别是repgle这类资源是独占式,不会主动释放。这是用debug程序,程序又要在一次打开文件,就会发生“cannot be opened”。如果在程序非正常结束后,认为释放程序资源,我想,就不会发生CPF4203报错。
UPDPROD(*YES)就是允许同个文件多次被重复打开。我是这样理解的。
厦门★passthru(448081936) 21:58:47
  RPGLE又是独占系统资源的,如果异常退出,需人为释放程序资源。
福建★嘻嘻(11844279) 21:59:44
  *test 这是测试库。即使已为产品库请求特别保护,在测试期间,测试库中的所有对象可予以更新。                          
厦门★passthru(448081936) 22:01:32
  嘻嘻说的,是根据库类别ibm才用的保护策略。对于400编程人员,我认为,应该如我以上所说的理解。
福建★嘻嘻(11844279) 22:04:32
  那pass也要加上在*prod 类型的库下的file 的前提?
厦门★passthru(448081936) 22:04:43
  我不建议动不动就UPDPROD(*YES),
厦门★passthru(448081936) 22:06:05
  只要我上面的思路,就无需考虑lib是*test,还是*prod。
厦门★passthru(448081936) 22:10:23
  嘻嘻,你认为这两种做法哪种较好些呢?
福建★嘻嘻(11844279) 22:12:22
  大家基本用的库类型都是*prod
福建★嘻嘻(11844279) 22:12:59
  我自己在STRDBG解决问题也确实是用UPDPROD(*YES)
厦门★passthru(448081936) 22:15:56
  定型的生产lib都的。当然对生产库的程序修改是不允许在生产机上的,必须用备份机来做。但是,备份机上的调试程序,都是生产机上的备份,都是*prod。呵呵,问题就来了,如果多人同时并发调试程序,大家都在strdbg是用参数UPDPROD(*YES),就存在隐患。
阅读(1735) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~