Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly 如何在JCL/assembler中为QSAM put定位正确声明DCB_Assembly_Jcl - Fatal编程技术网

Assembly 如何在JCL/assembler中为QSAM put定位正确声明DCB

Assembly 如何在JCL/assembler中为QSAM put定位正确声明DCB,assembly,jcl,Assembly,Jcl,我正在尝试编写一个程序,使用370/assembler和QSAM将一些数据写入临时数据集。执行put时,我得到一个soc01 我在汇编代码中的DCB声明如下所示: TEMPFILE DCB DDNAME=TEMP, X DEVD=DA, X DSORG=P

我正在尝试编写一个程序,使用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
//TEMP     DD DSN=&&TEMP,UNIT=PUB,DISP=(MOD,KEEP,DELETE),
//            DCB=(LRECL=25,BLKSIZE=3000)
         PUT    TEMPFILE                                                
         MVC    0(25,1),HIGHSALE
在JCL中,声明如下所示:

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
//TEMP     DD DSN=&&TEMP,UNIT=PUB,DISP=(MOD,KEEP,DELETE),
//            DCB=(LRECL=25,BLKSIZE=3000)
         PUT    TEMPFILE                                                
         MVC    0(25,1),HIGHSALE
put命令如下所示:

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
//TEMP     DD DSN=&&TEMP,UNIT=PUB,DISP=(MOD,KEEP,DELETE),
//            DCB=(LRECL=25,BLKSIZE=3000)
         PUT    TEMPFILE                                                
         MVC    0(25,1),HIGHSALE
我怀疑问题出在我的JCL声明中,但我没有找到任何东西

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


作为旁注,我通常不会在程序中看到DCB宏中编码的块大小。大多数商店都使用系统确定的块大小,因此在程序或JCL中都看不到它。如果您能更轻松地编写它,它不会有任何影响。

我将dcb宏的Macrf部分更改为Macrf=(pl,gl),显然这就是它应该如何编写的。我得到了一个soc04错误。因此,宏如下所示。TEMPFILE DCB DDNAME=TEMP,DEVD=DA,DSORG=PS,MACRF=(PL,GL),RECFM=FBA,LRECL=25,BLKSIZE=3000,EODAD=EOF3/叹息;我对开放式教学进行了分门别类的研究。谢谢你的帮助。