MVS上汇编的未定义操作代码错误的根本原因是什么?

时间:2017-10-29 03:38:12

标签: assembly zos jcl

我有以下JCL来编译汇编语言程序: -

//JRETEST JOB (A925,22360679777),'AESANJA',NOTIFY=&SYSUID,
//        MSGLEVEL=(1,1)
//PROCLID JCLLIB ORDER=IBMUSER,LEARN.ASMJCL
//     EXEC ASMACL
//SYSOUT DD SYSOUT=*
//C.SYSIN DD *
TEST   START 0
       PRINT NOGEN
*      SAMPLE PROGRAM
       BASR 15,0
       USING *,15
       PRINTOUT MYNAME,*
MYNAME DC C'ADRIAN EKA SANJAYA'
       END TEST
/*

当我运行这个时,我得到一个“未定义的操作字段”错误,指示PRINTOUT是未定义的操作。

Screen showing undefined operation field

我很困惑,因为我正在关注guide,代码类似: -

//JRETEST JOB (A925,2236067977),′ J.EHRMAN′
// EXEC ASMACLG
//C.SYSIN DD *
Test Start 0 First line of program
       Print NoGen
* Sample Program
       BASR 15,0 Establish a base register
       Using *,15 Inform the Assembler
       PRINTOUT MyName,* Print name and stop
MyName DC C′ John R. Ehrman′ Define constant with name
       END Test Last statement
/* 

3 个答案:

答案 0 :(得分:2)

PRINTOUT不是z/OS Principles of Operation中定义的操作代码。 PRINTOUT显然也不是在ASMACL编目过程中执行ASMA90程序的步骤的SYSLIB并置中的库中定义的宏。

您的讲师可能会故意这样做,开始教您如何使用Assembly列表诊断代码问题。 IBM高级汇编程序(HLASM)的文档为here。该文档包含有关如何使用Assembly列表诊断代码问题的信息。

答案 1 :(得分:2)

根本原因是Ehrman的书中使用的宏未包含在任何标准宏库中。您可以从书中复制它们,也可以从https://idcp.marist.edu/documents/33945/44724/Macros+%281%29.zip/b268c9c7-c9c5-32a5-d078-072131ef4625?t=1551806362564获取它们,然后将它们复制到某些maclib中以备后用。

答案 2 :(得分:0)

在我看来,你在JCL中使用了一个小写字母。因此,将//c.SYSIN更正为//C.SYSIN可以完成工作。 CU Andreas