当我指定RECFM = FB时,RECFM = FBA

问题描述

我使用IDCAMS将VSAM KSDS中的记录打印到PS文件(在JCL中创建)。

//OUTDD DD DSN=&SYSUID...PUTOUT,disP=(NEW,CATLG,DELETE),//      SPACE=(TRK,(1,0)),//      DCB=(RECFM=FB,DSORG=PS,LRECL=120),BLKSIZE=9600

尽管我在Jcl中指定了RECFM = FB,但是当我查看Z00838.PUTOUT的属性时,它显示了FBA。我需要帮助吗?

解决方法

详细的here IDCAMS对PRINT语句的输出数据集有一些要求,该要求以不太明显的方式实施。

默认SYSPRINTRECFM=VBA,LRECL=125,但按照上面的链接

您可以通过在DCB中放置其他值来更改默认值 SYSPRINT语句的参数。但是,您不能使用记录 F或固定块(FB)的格式;那些更改为VBA。

注意分号后的部分:IDCAMS将自动更改它不喜欢的所有DCB参数。

在使用参数之后,它似乎比上面所述更加严格:甚至RECFM=VB都将更改为VBA,所有小于{125的LRECL都将更改为125。

P.S .:您真的要PRINT这样的数据集吗?

RECORD SEQUENCE NUMBER - 69   
//IKJEFT1A EXEC PGM=IKJEFT1A  
RECORD SEQUENCE NUMBER - 70   
//*                           

还是您要REPRO这样?

// IKJEFT1A EXEC PGM = IKJEFT1A
// *

P.P.S .:此行为还将影响已用DISP=SHR分配的现有数据集。 最有趣的效果是使用已经存在一些内容的预先存在的FB80数据集,并在IDCAMS DISP=MOD步骤中使用PRINT对其进行分配。该步骤以返回码0完成,但随后尝试读取数据集导致I / O错误。