【发布时间】:2016-03-28 17:31:39
【问题描述】:
我正在尝试从表中获取一些数据。变量是 VARCHAR 30000,当我使用 COBOL EXEC SQL 检索它时,返回字符串但没有必要的(十六进制)换行和回车。我一次检查一个字符串,寻找 0A 或 0D 的十六进制值,但它们从未出现。
一旦将字符串填充到我的 cobol 变量中,LF 和 CR 似乎就会丢失。
想法?
【问题讨论】:
-
您没有指定数据的来源,您确定该列包含 x'0A' 和 x'0D' 吗?如果您尝试使用其他工具检索数据,这些值是否存在?
-
您知道,除非您包含那些与 CR 和 LF 相关的特定十六进制值作为数据,否则它们不会存储在 z/OS DB2 VARCHAR 中。是的?您不只是假设 z/OS 和 COBOL 有“字符串”,因为它们没有。
-
为什么不寻找 ebcdic 换行符 (x'15' dec=21 ??)。大多数 Java 程序都乐于使用 ebcdic,并且会正确处理 ebcdic 新行
-
如果存储为 EBCDIC,CR/LF 组合应为 x'0D25'。不知道是怎么存储的,怎么找回的,
inspect是怎么做的等等,很难知道怎么回答,需要看相关代码。 -
问题是我正在查看的特定记录实际上在数据中没有 CRLF,但我与之比较的那个记录确实存在。 CRLF 实际上存储在 DB2 VARCHAR 中(作为十六进制值)。感谢您的帮助。多么愚蠢的错误。