Db2 调整jcl中表格卸载输出字段的大小

Db2 调整jcl中表格卸载输出字段的大小,db2,jcl,ibm-connections,Db2,Jcl,Ibm Connections,我在jcl中执行了一个bmcURL,将输出定向到数据集。 问题是该字段的大小最大,我无法在创建后读取数据集,因为它会发出以下错误消息: "Invalid Record Length" 这是我的卸载示例: //A00BMC EXEC PROC=BMCUNLD,UTILID=%%JOBNAME,PARAM='NEW',COND=(0,NE), // SUBSYS=subsys

我在jcl中执行了一个bmcURL,将输出定向到数据集。 问题是该字段的大小最大,我无法在创建后读取数据集,因为它会发出以下错误消息:

 "Invalid Record Length"
这是我的卸载示例:

//A00BMC   EXEC PROC=BMCUNLD,UTILID=%%JOBNAME,PARAM='NEW',COND=(0,NE),  
//         SUBSYS=subsys                                                  
//SYSREC   DD DSN=datasetname,                               
//            DISP=(NEW,CATLG),                                         
//            SPACE=(CYL,(10,10),RLSE),                          
//            DCB=(RECFM=FB,LRECL=1000,BLKSIZE=0)               
//SYSIN    DD *                                                  
  UNLOAD                                                         
  DIRECT NO                                                  
  SELECT  a.data, a.codent, b.text                        
  FROM owner.table_view A,owner.table2_view B  
  WHERE a.cmarca='S' AND a.cestado='P'  AND A.codrc='OK'         
  AND DATE(A.data) > CURRENT DATE - 2 DAYS                
  AND B.cmarca   = A.cmarca                                  
  AND B.chave   = A.data                                 
  WITH UR;                                 

这个问题只能通过使用这个数据集作为带有OUTREC解析的排序的输入来解决吗?或者我可以直接在查询中解决这个问题吗?

你的BLKSIZE看起来很奇怪-你的RECFM=FB,LRECL=1000,BLKSIZE=0

至少我希望RECFM=FB,LRECL=1000,BLKSIZE=1000


您可能不需要指定BLKSIZE(不提供一个),但通常BLKSIZE需要是LRECL的非零倍数。通常,特别是如果您的商店有系统管理存储(SMS),系统本身将为您正在创建的文件分配一个最佳BLKSIZE。但是,您的示例BLKSIZE=0甚至不允许在块中存储一条记录。

不熟悉BMC的产品,但是。。。输出数据集的LRECL和DSORG是什么?SELECT语句中列的特征是什么?如果您有一个VARCHAR列,您知道它的内容总是小于某个较短的固定长度,那么您可以将其转换为具有该较短长度的字符。根据您读取输出数据集的内容,可能错误还有其他一些根本原因。对于输出数据集的DCB属性,ISPF 3.1或TSO LISTD显示了什么?您运行的哪个程序显示了错误消息?对于卸载,我怀疑LRECL必须与正在提取的行的长度匹配,因此为“无效记录长度”。仔细查看输出消息,查看是否指定了预期的LRECL