MVS 上的程序集出现未定义操作代码错误的根本原因是什么?
What is the underlying cause of an Undefined Operation Code error for Assembly on MVS?
我有以下 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
/*
当我 运行 时,我得到一个 "undefined operation field" 错误,表明 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
/*
PRINTOUT
不是 z/OS Principles of Operation 中定义的操作代码。 PRINTOUT
显然也不是在 ASMACL 编目过程中执行 ASMA90 程序的步骤的 SYSLIB 串联库中定义的宏。
您的讲师可能故意这样做,开始教您如何使用程序集列表诊断代码问题。 IBM 高级汇编器 (HLASM) 的文档是 here。该文档包含有关如何使用程序集列表诊断代码问题的信息。
我认为您在 JCL 中使用了小写字母。因此,将 //c.SYSIN 更正为 //C.SYSIN 应该可以完成工作。
CU 安德烈亚斯
根本原因是 Ehrman 书中使用的宏未包含在任何标准宏库中。您可以从书中复制它们,也可以从 https://idcp.marist.edu/documents/33945/44724/Macros+%281%29.zip/b268c9c7-c9c5-32a5-d078-072131ef4625?t=1551806362564 中获取它们并将它们复制到某个 maclib 以备后用。
我有以下 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
/*
当我 运行 时,我得到一个 "undefined operation field" 错误,表明 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
/*
PRINTOUT
不是 z/OS Principles of Operation 中定义的操作代码。 PRINTOUT
显然也不是在 ASMACL 编目过程中执行 ASMA90 程序的步骤的 SYSLIB 串联库中定义的宏。
您的讲师可能故意这样做,开始教您如何使用程序集列表诊断代码问题。 IBM 高级汇编器 (HLASM) 的文档是 here。该文档包含有关如何使用程序集列表诊断代码问题的信息。
我认为您在 JCL 中使用了小写字母。因此,将 //c.SYSIN 更正为 //C.SYSIN 应该可以完成工作。 CU 安德烈亚斯
根本原因是 Ehrman 书中使用的宏未包含在任何标准宏库中。您可以从书中复制它们,也可以从 https://idcp.marist.edu/documents/33945/44724/Macros+%281%29.zip/b268c9c7-c9c5-32a5-d078-072131ef4625?t=1551806362564 中获取它们并将它们复制到某个 maclib 以备后用。