DSNURWBG-输入字段'UPDATE_ID'并非完全在输入记录内

问题描述 投票:0回答:1

我正在尝试将文件加载到DB2表中并出现以下错误:

输入字段中的输入字段'UPDATE_ID'并不完全在记录中

文件内容如下:enter image description here

enter image description here

加载卡看起来像:

enter image description here

DDL看起来像:enter image description here

enter image description here

加载步骤如下:

//LD001   EXEC DSNUPROC,SYSTEM=&DB2,UID=.CV156LDCLNT,                   
//             UTPROC='',COND=(8,LT)                                    
//**********************************************************************
//SORTOUT  DD DSN=XXXX.CLNT.LD.SRTOUT,                       
//            UNIT=SYSDA,                                               
//            DISP=(NEW,CATLG,CATLG),                                   
//            SPACE=(CYL,(600,600),RLSE)                                
//SYSDISC  DD SYSOUT=*                                                  
//SYSERR   DD DSN=XXXX.CLNT.LD.ERR,                          
//            UNIT=SYSDA,                                               
//            DISP=(NEW,CATLG,CATLG),                                   
//            SPACE=(CYL,(600,600),RLSE)                                
//SYSIN    DD DISP=SHR,DSN=XXXX.CARDLIB(LOADCLNT)-----> LOAD CONTROL CARD ALREADY SHOWN ABOVE            
//SYSMAP   DD DSN=XXXX.CLNT.LD.MAP,                          
//            UNIT=SYSDA,                                               
//            DISP=(NEW,CATLG,CATLG),                                   
//            SPACE=(CYL,(600,600),RLSE)                                
//SYSREC01 DD DSN=XXXX.CLNT.D191014,                           
//            DISP=SHR                                                  
//SYSUT1   DD DSN=XXXX.CLNT.LD.UT1,                          
//            UNIT=SYSDA,                                               
//            DISP=(NEW,CATLG,CATLG),                                   
//            SPACE=(CYL,(60,60),RLSE)                                  
//**********************************************************************
//LD001A  EXEC PGM=FATAL,COND=(5,GT,LD001.DSNUPROC)  

任何人都可以建议出什么问题了。

db2 load mainframe jcl db2-zos
1个回答
0
投票

在此示例中,您有两个相同的列CREATE_ID和UPDATE_ID都为CHAR(10),但是CREATE_ID位于数据集的中间,并且当您读取输入文件时,您最终得到“ CONVERT”值,带有3个空格。总共10个符号。

当您读取UPDATE_ID时,最终会获得总共7个符号的“ CONVERT”值,因此加载过程失败。如果要使用CHAR(10),则必须提供10个符号长度的输入。

由于您使用的是RECFM = VB(虚拟块)数据集,因此会动态设置每个记录的(LRECL)长度。您的记录长度设置为115。

您在这里没有什么选择:

  1. 如果您打算在您的动态字符中使用UPDATE_ID列,然后应将列更改为VARCHAR。 (我会去这个)
  2. 或者您可以在“ CONVERT”值中再添加3个符号,并将其用作CHAR
  3. 或者您可以将输入文件与RECFM = FB和LRECL = 118一起使用,在这种情况下,它将自动将最后3个符号填充为空格。
© www.soinside.com 2019 - 2024. All rights reserved.