我想在as400中创建64000作为固定文件长度

时间:2015-10-12 12:56:06

标签: db2 ibm-midrange cobol

我想创建固定文件长度为64000,但它会抛出错误消息,如

  

参数RCDLEN的数值无效

2 个答案:

答案 0 :(得分:4)

只是一个简单的溢出。来自doc:

  

可以为记录长度指定1到32766字节的值。

64 000大于32766,这就是你得到错误

的原因

答案 1 :(得分:1)

CRTPF FILE(QTEMP/MYFILE) RCDLEN(64000)

无效,因为你发现了。正如Thomas所说,RCDLEN的最大值是32766.

CRTPF FILE(QTEMP/MYFILE) RCDLEN(32766)

但请注意,32766限制不是来自命令本身;而32766是DB中字符列的最大长度。如果您阅读了CRTPF命令的帮助,您会发现:

  

指定物理中存储的记录的长度(以字节为单位)   文件。如果指定了RCDLEN和FILETYPE(* DATA),则为物理   使用只有一个字段的记录格式创建文件。

所以你可以使用SQL创建完全相同的文件

create table myfile (
  myfile char(32766) for bit data
) rcdfmt myfile

但同样,32766是DB2 for i中字符列的最大大小。

然而,SQL的使用开辟了其他可能性。在您的情况下,BLOB列。

create table myfile (
  myfile blob(64000)
) rcdfmt myfile

BLOB直接等同于FOR BIT DATA。如果处理字符数据,CLOB将是更好的选择。

所以你去了,一个固定记录长度为64000的文件。至少,有点像。事实是,LOB列存储在溢出空间对象中,而不是表的主数据区域。

为什么你想要这个或你希望如何能够使用它是另一回事。

您只能使用SQL操作访问LOB对象。