2017-10-29 27 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 stackoverflow.comへ –

+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)をお読みください。最後に[最小限の、完全で検証可能な例](https://stackoverflow.com/help/mcve)の作成方法を学んでください。 – cschneid

答えて

2

PRINTOUTz/OS Principles of Operationで定義されたオペレーションコードではありません。 PRINTOUTも、ASMACLカタログ化プロシージャーでASMA90プログラムを実行するステップのSYSLIB連結で、ライブラリーで定義されたマクロではありません。

講師がこれを故意に行って、アセンブリリストを使用してコードの問題を診断する方法を教えてもらうことができます。 IBM高位アセンブラー(HLASM)の資料はhereです。ドキュメントには、アセンブリリストを使用してコードの問題を診断する方法に関する情報が含まれています。

+0

申し訳ありません先生が、 IBM zのシステム™サーバー ため プログラミングブックアセンブラ言語[リンク](https://www.google.co.id/search?safe=off&dcr=0&ei=8VP3Wam0GJaavQT1wp6oBg&q=assembler+language+プログラミング+ for + 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 ... 0j​​35i39k1j0i10k1.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アンドレアス

+2

//c.SYSINはコメントではありませんか? – Vega

+0

@Vegaいいえコメントではありません** ** STEP C **の** SYSIN DDNAME **のオーバーライドです。これは、**/* '**デリミタまで、次のコードを* * SYSIN DDNAME **は、インストリームデータと呼ばれるものです。UpperCase/LowerCase ** C **のスクリーンショットでは、スクリーンショットからコードをコピーしたときに大文字のC、** my **のエラーが表示されます。それに応じて問題を修正します。 – MikeT

関連する問題