moon38sun 发表于 2012-03-12 14:06

proCobol求助

proCobol在编译的时候总是报如下的错误信息:
英数字变量的长度超过160,只截取了前160位。

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

doni 发表于 2012-03-12 15:52

回复 1# moon38sun


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

moon38sun 发表于 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.
         EXECSQLDECLARECSR
             CURSORFOR
               SELECT......   FROM   CBL100100
                WHEREKANRYO_DT='      '
                AND    INST_SKIBT = '9999'
                AND    KANRYO_FLG = '0'
         END-EXEC   
         EVALUATESQLCODE
            WHENCNS-NORMAL
                  DISPLAY"游标定义=>CNS-NORMAL"
            WHENCNS-NOTFOUND
                  DISPLAY"游标定义=>CNS-NOTFOUND"
            WHENCNS-EXIST
                  DISPLAY"游标定义=>CNS-EXIST"
            WHENOTHER
                  DISPLAY"游标定义=>OTHER"
         END-EVALUATE
         CONTINUE.
       CRSR-DEFI-PROC-EXT.
         EXIT.
      *-----------------------------------------------------------------
      *----2)打开游标
      *-----------------------------------------------------------------
       CRSR-OPEN-PROC               SECTION.
         EXECSQLOPENCSREND-EXEC.
         EVALUATESQLCODE
            WHENCNS-NORMAL
                  DISPLAY"游标OPEN=>CNS-NORMAL"
            WHENCNS-NOTFOUND
                  DISPLAY"游标OPEN=>CNS-NOTFOUND"
            WHENCNS-EXIST
                  DISPLAY"游标OPEN=>CNS-EXIST"
            WHENOTHER
                  DISPLAY"游标OPEN=>OTHER"
      *          DISPLAY SQLCODE
      *          DISPLAY SQLERRMC
         END-EVALUATE.
       CRSR-OPEN-PROC-EXT.
         EXIT.

doni 发表于 2012-03-12 16:37

本帖最后由 doni 于 2012-03-12 16:38 编辑

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

moon38sun 发表于 2012-03-12 17:13

回复 4# doni

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

moon38sun 发表于 2012-03-13 08:58

每次太繁琐了,又找了一个方法,这样就不需要每次指定了!
\precomp\admin\pcbcfg.cfg里面追加以下设定:
maxliteral=160
页: [1]
查看完整版本: proCobol求助