proCobol求助
proCobol在编译的时候总是报如下的错误信息:英数字变量的长度超过160,只截取了前160位。
实际情况确实是只截取了160位,但是sql文的长度远远大于160,怎么办呢?
回复 1# moon38sun
没太看明白LZ的意思,能不能给个程序段和报错信息 本帖最后由 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:38 编辑
COBOL不懂,一直用的是PROC,根据LZ给的信息,大致猜想是预编辑错误(pre-compile)
LZ用的不是动态SQL,所以应该与SQL长度无关。所以可能是宿主变量的问题。
建议LZ看一下,所以宿主变量数组的长度是否一致。 回复 4# doni
我明白了,谢谢提醒。
的确是预编译的问题,在procob 进行预编译的时候,指定maxliteral = 160 就没有问题。
每次太繁琐了,又找了一个方法,这样就不需要每次指定了!
\precomp\admin\pcbcfg.cfg里面追加以下设定:
maxliteral=160
页:
[1]