当我指定 RECFM=FB 时 RECFM =FBA

RECFM =FBA when i specifed RECFM=FB

我使用 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 语句的 output-dataset 有一些要求,它以不太明显的方式强制执行。

默认的SYSPRINTRECFM=VBA,LRECL=125,但是按照上面的link

You can alter the defaults by placing other values in the DCB parameter of the SYSPRINT statement. You cannot, however, use a record format of F or fixed block (FB); those are changed to VBA.

注意分号后面的部分:IDCAMS会自动更改所有DCB-Parameters它不喜欢的。

修改参数后,似乎比上面说的还要严格:甚至 RECFM=VB 也会更改为 VBA 并且所有 LRECL 小于 125 的都将被更改为 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 PRINT 步骤中使用 DISP=MOD 分配它。该步骤以返回码 0 完成,但随后尝试读取数据集导致 I/O-error.