免费注册 查看新帖 |

Chinaunix

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

proCobol求助 [复制链接]

论坛徽章:
5
天蝎座
日期:2014-01-23 12:27:392015亚冠之德黑兰石油
日期:2015-05-14 13:33:042015年亚洲杯之乌兹别克斯坦
日期:2015-03-06 14:10:38天秤座
日期:2014-01-24 15:03:052015亚冠之德黑兰石油
日期:2015-08-27 13:43:58
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-03-12 14:06 |只看该作者 |倒序浏览
proCobol在编译的时候总是报如下的错误信息:
英数字变量的长度超过160,只截取了前160位。

实际情况确实是只截取了160位,但是sql文的长度远远大于160,怎么办呢?

论坛徽章:
0
2 [报告]
发表于 2012-03-12 15:52 |只看该作者
回复 1# moon38sun


    没太看明白LZ的意思,能不能给个程序段和报错信息

论坛徽章:
5
天蝎座
日期:2014-01-23 12:27:392015亚冠之德黑兰石油
日期:2015-05-14 13:33:042015年亚洲杯之乌兹别克斯坦
日期:2015-03-06 14:10:38天秤座
日期:2014-01-24 15:03:052015亚冠之德黑兰石油
日期:2015-08-27 13:43:58
3 [报告]
发表于 2012-03-12 16:12 |只看该作者
本帖最后由 moon38sun 于 2012-03-13 08:54 编辑

回复 2# doni


    信息倒是有,就是1楼写的内容,说的有点问题,不是而error,而是warning。
   大致操作就是: proCobol中定义sql文之后,进行编译,就出现了warning。然后运行程序,就出现稀奇古怪的错误。
   但是如果我把sql文的长度控制在160字节以内(比如抽出项目减少),就没有问题。但是现状sql的长度大于160,已经没有缩减长度的可能了。

程序段如下:
     *-----------------------------------------------------------------
       *----1)游标定义
     *-----------------------------------------------------------------
       CRSR-DEFI-PROC               SECTION.
           EXEC  SQL  DECLARE  CSR
             CURSOR  FOR
               SELECT  ......   FROM   CBL100100
                WHERE  KANRYO_DT  =  '        '
                AND    INST_SKIBT = '9999'
                AND    KANRYO_FLG = '0'
           END-EXEC   
           EVALUATE  SQLCODE
              WHEN  CNS-NORMAL
                  DISPLAY  "游标定义=>CNS-NORMAL"
              WHEN  CNS-NOTFOUND
                  DISPLAY  "游标定义=>CNS-NOTFOUND"
              WHEN  CNS-EXIST
                  DISPLAY  "游标定义=>CNS-EXIST"
              WHEN  OTHER
                  DISPLAY  "游标定义=>OTHER"
           END-EVALUATE
           CONTINUE.
       CRSR-DEFI-PROC-EXT.
           EXIT.
      *-----------------------------------------------------------------
      *----2)打开游标
      *-----------------------------------------------------------------
       CRSR-OPEN-PROC               SECTION.
           EXEC  SQL  OPEN  CSR  END-EXEC.
           EVALUATE  SQLCODE
              WHEN  CNS-NORMAL
                  DISPLAY  "游标OPEN=>CNS-NORMAL"
              WHEN  CNS-NOTFOUND
                  DISPLAY  "游标OPEN=>CNS-NOTFOUND"
              WHEN  CNS-EXIST
                  DISPLAY  "游标OPEN=>CNS-EXIST"
              WHEN  OTHER
                  DISPLAY  "游标OPEN=>OTHER"
      *          DISPLAY SQLCODE
      *          DISPLAY SQLERRMC
           END-EVALUATE.
       CRSR-OPEN-PROC-EXT.
           EXIT.

论坛徽章:
0
4 [报告]
发表于 2012-03-12 16:37 |只看该作者
本帖最后由 doni 于 2012-03-12 16:38 编辑

COBOL不懂,一直用的是PROC,根据LZ给的信息,大致猜想是预编辑错误(pre-compile)
LZ用的不是动态SQL,所以应该与SQL长度无关。所以可能是宿主变量的问题。
建议LZ看一下,所以宿主变量数组的长度是否一致。

论坛徽章:
5
天蝎座
日期:2014-01-23 12:27:392015亚冠之德黑兰石油
日期:2015-05-14 13:33:042015年亚洲杯之乌兹别克斯坦
日期:2015-03-06 14:10:38天秤座
日期:2014-01-24 15:03:052015亚冠之德黑兰石油
日期:2015-08-27 13:43:58
5 [报告]
发表于 2012-03-12 17:13 |只看该作者
回复 4# doni

    我明白了,谢谢提醒。
   的确是预编译的问题,在procob 进行预编译的时候,指定maxliteral = 160 就没有问题。
   

论坛徽章:
5
天蝎座
日期:2014-01-23 12:27:392015亚冠之德黑兰石油
日期:2015-05-14 13:33:042015年亚洲杯之乌兹别克斯坦
日期:2015-03-06 14:10:38天秤座
日期:2014-01-24 15:03:052015亚冠之德黑兰石油
日期:2015-08-27 13:43:58
6 [报告]
发表于 2012-03-13 08:58 |只看该作者
每次太繁琐了,又找了一个方法,这样就不需要每次指定了!
\precomp\admin\pcbcfg.cfg里面追加以下设定:
maxliteral=160
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP