2

我正在尝试编写一个程序,该程序将使用 370/assembler 和 QSAM 将一些数据写入临时数据集。执行 put 时我得到一个 soc01。

我在汇编代码中的 DCB 声明如下所示:

TEMPFILE DCB   DDNAME=TEMP,                                            X
               DEVD=DA,                                                X
               DSORG=PS,                                               X
               MACRF=PL,GL,                                            X
               RECFM=FBA,                                              X
               LRECL=25,                                               X
               BLKSIZE=3000,                                           X
               EODAD=EOF3

在 JCL 中,声明如下所示:

//TEMP     DD DSN=&&TEMP,UNIT=PUB,DISP=(MOD,KEEP,DELETE),
//            DCB=(LRECL=25,BLKSIZE=3000)

put 命令如下所示:

         PUT    TEMPFILE                                                
         MVC    0(25,1),HIGHSALE

我怀疑问题出在我的 JCL 声明中,但我没有任何运气找到任何东西。

4

1 回答 1

2

你得到一个S0C4,即你试图访问不属于你的存储。假设您已经确定(从 PSW 或通过其他方式)异常指示在您的PUT宏扩展到的某些代码中,并且您的程序集列表中没有消息表明“没有活动用于...”,寄存器 1 指向哪里?由于您使用的是定位模式,因此寄存器 1 必须指向您的数据。

顺便说一句,我通常不会在程序的 DCB 宏中看到块大小编码。大多数商店都使用系统确定的块大小,因此您在程序或 JCL 中都看不到它。如果您对它进行更舒适的编码,它不会有任何伤害。

于 2011-07-17T13:47:46.110 回答