2017-10-29 12 views
0

나는 어셈블리 언어 프로그램을 컴파일하려면 다음 JCL을 가지고있다 -MVS에서의 어셈블리에 대한 정의되지 않은 연산 코드 오류의 근본적인 원인은 무엇입니까?

//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 
/* 
+1

http://idownvotedbecau.se/imageofcode –

+0

오신 것을 환영합니다. [도움말 페이지] (https://stackoverflow.com/help), 특히 [여기에 어떤 항목을 물어볼 수 있습니까?] (https://stackoverflow.com/help/) 섹션을 읽어보십시오. on-topic) 및 [[어떤 유형의 질문을하지 않아야합니까?]] (https://stackoverflow.com/help/dont-ask)를 참조하십시오. 또한 [둘러보기] (https://stackoverflow.com/tour)를 읽고 [좋은 질문을하는 방법] (https://stackoverflow.com/help/how-to-ask)을 읽어보십시오. 마지막으로 [Minimal, Complete, Verifiable Example] (https://stackoverflow.com/help/mcve)을 만드는 방법을 배우십시오. – cschneid

답변

2

PRINTOUTz/OS Principles of Operation에 정의 된 동작 코드가 아닙니다. PRINTOUT은 또한 ASMACL 카탈로그 프로 시저에서 ASMA90 프로그램을 실행하는 단계의 SYSLIB 연결에서 라이브러리에 정의 된 매크로가 아 U니다.

강사가 어셈블리 목록을 사용하여 코드의 문제를 진단하는 방법을 고의적으로 가르쳐 줄 수 있습니다. IBM HLASM (High Level Assembler)에 대한 문서는 here입니다. 설명서에는 어셈블리 목록을 사용하여 코드의 문제를 진단하는 방법에 대한 정보가 포함되어 있습니다.

+0

죄송합니다 선생님,하지만 IBM Z 시스템 ™ 서버 에 대한 프로그래밍 책 어셈블러 언어 [링크] (https://www.google.co.id/search?safe=off&dcr=0&ei=8VP3Wam0GJaavQT1wp6oBg&q=assembler+language+ 프로그래밍 + + ibm + z + 시스템 + 서버 및 oq = 어셈블러 + 언어 + 프로그래밍 & gs_l = psy-ab.1.4.0i13k1j0i203k1j0i13k1l2j0i203k1j0i13k1l2j0i13i30k1l3.439369.443935.0.445514.27.19.2.0.0.0.272.2224.2j6j5.13.0 .... 0 ... 1.1 .64.psy-ab..12.15.2228 ... 0j35i39k1j0i10k1.0.WipYdhwQsrg) 인쇄물이 조립품의 작업과 같습니다. –

+0

** PRINTOUT **는 명령이 아니며 ** MACRO 명령입니다 **이 매크로를 코드에 통합/확장하라는 말입니다. ** MACRO **는 어셈블러 프로그램 (ASMA90)의 ** SYSLIB **'ddname '에 할당 된 라이브러리 내의 멤버 여야합니다. 그렇지 않으면 어셈블러는 조작 코드라고 생각하는 것을 해석 할 수단이 없습니다. 그것은 문제이자 원인입니다. 따라서 ** PRINTOUT ** 매크로를 포함하는 매크로 라이브러리가 ** ASMACL ** 프로 시저의'ddname' ** SYSLIB **에 할당되었는지 확인해야합니다. John Ehrman의 훌륭한 책에서 매크로가 샘플 코드에 존재하기 때문에 6.1.1 – MikeT

+0

@AdrianEka를 보아도 그것이 시스템에 구현되었다는 것을 의미하지는 않습니다. 사용자가 참조하는 책에는 ASMA90을 실행하는 단계의 SYSLIB 연결에서 라이브러리에 있어야하는 매크로 소스가 들어 있습니다. – cschneid

0

제 생각에는 JCL에서 소문자를 사용했습니다. 따라서 //c.SYSIN을 //C.SYSIN으로 수정하면 작업을 수행해야합니다. CU Andreas

+2

//c.SYSIN이 (가) 댓글이 아니십니까? – Vega

+0

@Vega 아니요 ** 주석 CID **에서 ** SYSIN DDNAME **을 재정의하는 주석이 아니므로 다음 코드를 **'/ *'** 구분 기호까지 * * SYSIN DDNAME **을 인스 트림 데이터라고합니다.UpperCase/LowerCase ** C ** 화면 캡쳐 화면에서 코드를 복사 할 때 대문자 C, ** my ** 오류가 표시됩니다. – MikeT