首页 > 解决方案 > 当我指定 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。我需要帮助?

标签: jcl

解决方案


如此处详述 IDCAMS 对语句的输出数据集有一些要求PRINT,它以不太明显的方式强制执行。

默认SYSPRINTRECFM=VBA,LRECL=125,但根据上面的链接

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

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

玩弄了参数后,似乎比上面所说的更严格:evenRECFM=VB将被更改为VBA,所有LRECL小于 125 的 s 都将更改为 125。

PS:你真的想要这样PRINT的数据集吗?

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

或者你想REPRO这样吗?

//IKJEFT1A 执行 PGM=IKJEFT1A
//*

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


推荐阅读