未完成此问题
在这个程序中,一个未知的问题会导致汇编程序因为显然未知的宏而拒绝代码,或者像宏一样看待程序集。我不确定如何纠正这个问题。
我正在使用z390便携式大型机汇编器和仿真器(http://www.z390.org/)。
另一个链接:www.z390.org/z390_Documentation.htm
相关的pdf位于http://tradingwiz.net63.net/pdf/Sessions5and6.pdf。
装配手册位于http://publibz.boulder.ibm.com/epubs/pdf/asmr1020.pdf,但我无法应用它。
更新:我仍然想删除有关“缺少宏= DSORG = PS”的错误,我不知道如何告诉汇编程序基址寄存器在哪里(“找不到基址寄存器”)
另一个问题:你知道有没有这方面的资源,特别是那些容易理解的资源?
如果您想了解更多信息,我很乐意为您提供帮助。
TITLE 'CS 4321 Program #4 by J. Colt Wright'
PRINT NOGEN
COPY SUBENTRY
TITLE 'PROGRAM 4 80/80 LISTING'
PRINT NOGEN
COPY2 SUBENTRY
WTO 'PROG4 COPY PROG4 (ASCII) TO COPY (ASCII)'
OPEN (INFILE,INPUT)
OPEN (OUTFILE,OUTPUT)
WTO 'Files opened successfully'
*
LOOP EQU *
GET INFILE,IRECORD
MVC ORECORD,=CL133' '
MVC ORECORD(80),IRECORD
PUT OUTFILE,ORECORD
B LOOP
*
EOF EQU *
CLOSE (INFILE,,OUTFILE)
WTO 'PROG4 ENDED OK'
SUBEXIT
INFILE DCB DDNAME=INFILE, X
DSORG=PS, X
RECFM=FT, X
LRECL=72, X
EODAD=EOF, X
MACRF=GM X
*
OUTFILE DCB DDNAME=OUTFILE, X
DSORG=PS, X
RECFM=FT, X
LRECL=80, X
MACRF=PM
*
IRECORD DC CL72' '
ORECORD DC CL80' '
ENDPGM DS D
END COPY
20:22:31 PROG4 MZ390 START USING z390 V1.5.05 ON J2SE 1.6.0_26 10/08/11
20:22:31 PROG4 AZ390 AZ390E error 29 (1/29)211 DSORG=PS, X
20:22:31 PROG4 AZ390 AZ390I ERRSUM missing macro = DSORG=PS,
20:22:31 PROG4 AZ390 AZ390E error 29 (1/30)212 RECFM=FT, X
20:22:31 PROG4 AZ390 AZ390I ERRSUM missing macro = RECFM=FT,
20:22:31 PROG4 AZ390 AZ390E error 29 (1/31)213 LRECL=72, X
20:22:31 PROG4 AZ390 AZ390I ERRSUM missing macro = LRECL=72,
20:22:31 PROG4 AZ390 AZ390E error 29 (1/32)214 EODAD=EOF, X
20:22:31 PROG4 AZ390 AZ390I ERRSUM missing macro = EODAD=EOF,
20:22:31 PROG4 AZ390 AZ390E error 29 (1/33)215 MACRF=GM X
20:22:31 PROG4 AZ390 AZ390I ERRSUM missing macro = MACRF=GM
20:22:31 PROG4 AZ390 AZ390E error 29 (1/36)252 DSORG=PS, X
20:22:31 PROG4 AZ390 AZ390I ERRSUM missing macro = DSORG=PS,
20:22:31 PROG4 AZ390 AZ390E error 29 (1/37)253 RECFM=FT, X
20:22:31 PROG4 AZ390 AZ390I ERRSUM missing macro = RECFM=FT,
20:22:31 PROG4 AZ390 AZ390E error 29 (1/38)254 LRECL=80, X
20:22:31 PROG4 AZ390 AZ390I ERRSUM missing macro = LRECL=80,
20:22:31 PROG4 AZ390 AZ390E error 29 (1/39)255 MACRF=PM
20:22:31 PROG4 AZ390 AZ390I ERRSUM missing macro = MACRF=PM
20:22:31 PROG4 AZ390 AZ390E error 29 (1/43)259 ENDPGM DS D
20:22:31 PROG4 AZ390 AZ390I ERRSUM missing macro = ENDPGM
20:22:31 PROG4 AZ390 AZ390E ERRSUM Critical Error Summary Option
20:22:31 PROG4 AZ390 AZ390E ERRSUM Fix and repeat until all nested errors resolved
20:22:31 PROG4 AZ390 AZ390E ERRSUM missing macro =DSORG=PS,
20:22:31 PROG4 AZ390 AZ390E ERRSUM missing macro =RECFM=FT,
20:22:31 PROG4 AZ390 AZ390E ERRSUM missing macro =LRECL=72,
20:22:31 PROG4 AZ390 AZ390E ERRSUM missing macro =EODAD=EOF,
20:22:31 PROG4 AZ390 AZ390E ERRSUM missing macro =MACRF=GM
20:22:31 PROG4 AZ390 AZ390E ERRSUM missing macro =LRECL=80,
20:22:31 PROG4 AZ390 AZ390E ERRSUM missing macro =MACRF=PM
20:22:31 PROG4 AZ390 AZ390E ERRSUM missing macro =ENDPGM
20:22:31 PROG4 AZ390 AZ390E ERRSUM total missing copy files =0
20:22:31 PROG4 AZ390 AZ390E ERRSUM total missing macro files =8
20:22:31 PROG4 AZ390 AZ390E ERRSUM total undefined symbols =0
20:22:31 PROG4 AZ390 AZ390E ERRSUM total mz390 errors = 0
20:22:31 PROG4 AZ390 AZ390E ERRSUM total az390 errors = 10
20:22:32 PROG4 AZ390 AZ390I FID= 1 ERR= 10 c:\Program Files\Automated Software Tools\z390\CS4321\PROG4.MLC
20:22:32 PROG4 MZ390 ENDED RC=12 SEC= 0 MEM(MB)= 47 IO=2420
TITLE 'CS 4321 Program #4 by J. Colt Wright'
PRINT NOGEN
COPY SUBENTRY
TITLE 'PROGRAM 4 80/80 LISTING'
PRINT NOGEN
COPY2 SUBENTRY
WTO 'PROG4 COPY PROG4 (ASCII) TO COPY (ASCII)'
OPEN (INFILE,INPUT)
OPEN (OUTFILE,OUTPUT)
WTO 'Files opened successfully'
*
LOOP EQU *
GET INFILE,IRECORD
MVC ORECORD,=CL133' '
MVC ORECORD(80),IRECORD
PUT OUTFILE,ORECORD
B LOOP
*
EOF EQU *
CLOSE (INFILE,,OUTFILE)
WTO 'PROG4 ENDED OK'
SUBEXIT
SUBEXIT
INFILE DCB DDNAME=INFILE, X
DSORG=PS, X
RECFM=FT, X
LRECL=72, X
EODAD=EOF, X
MACRF=GM
*
OUTFILE DCB DDNAME=OUTFILE,
DSORG=PS, X
RECFM=FT, X
LRECL=80, X
MACRF=PM
*
IRECORD DC CL72' '
ORECORD DC CL80' '
ENDPGM DS D
END COPY
08:39:00 PROG4 MZ390 START USING z390 V1.5.05 ON J2SE 1.6.0_26 10/09/11
08:39:00 PROG4 AZ390 AZ390E error 144 (1/15)141 MVC ORECORD,=CL133' '
08:39:00 PROG4 AZ390 AZ390I no base register found
08:39:00 PROG4 AZ390 AZ390E error 29 (1/39)258 DSORG=PS, RECFM=FT, LRECL=80, MACRF=PM
08:39:00 PROG4 AZ390 AZ390I ERRSUM missing macro = DSORG=PS,
08:39:00 PROG4 AZ390 AZ390E ERRSUM Critical Error Summary Option
08:39:00 PROG4 AZ390 AZ390E ERRSUM Fix and repeat until all nested errors resolved
08:39:00 PROG4 AZ390 AZ390E ERRSUM missing macro =DSORG=PS,
08:39:00 PROG4 AZ390 AZ390E ERRSUM total missing copy files =0
08:39:00 PROG4 AZ390 AZ390E ERRSUM total missing macro files =1
08:39:00 PROG4 AZ390 AZ390E ERRSUM total undefined symbols =0
08:39:00 PROG4 AZ390 AZ390E ERRSUM total mz390 errors = 0
08:39:00 PROG4 AZ390 AZ390E ERRSUM total az390 errors = 2
08:39:01 PROG4 AZ390 AZ390I FID= 1 ERR= 2 c:\Program Files\Automated Software Tools\z390\CS4321\PROG4.MLC
08:39:01 PROG4 MZ390 ENDED RC=12 SEC= 0 MEM(MB)= 47 IO=2374
答案 0 :(得分:3)
我不是z390模拟器的专家,但据我所知的标准z / OS汇编程序,我会看一下你的连续字符(你编写的DCB宏调用中的'X')。通常它们应该在第72栏中,并且继续声明应该从每个续行的第16栏开始。
在你的第一个DCB的最后一个延续线上,我将删除MACRF = GM上的'X'连续符,因为这是你的陈述的结尾。
你的ENDPGM标签也应该在第1列,否则汇编程序认为它是一个语句/宏调用
给z / OS汇编程序一个机会 - 在20或30年后你会逐渐爱上它。
答案 1 :(得分:1)
对于丢失的宏DSORG = PS ...这是因为你在OUTFILE DCB宏调用的第一行没有延续。几次后,宏调用从OUTFILE DCB向下运行到MACRF = PM,因此除了最后一行之外,你需要在所有行上继续,告诉汇编器它是所有的一个语句。我知道语法的东西是一个痛苦的屁股,但如果你坚持使用汇编程序,特别是宏处理器,你会发现它具有一些非常灵活和优雅的功能。
至于遗失的基地登记册......可能是一些事情。正如我所说,我不知道模拟器,但它看起来好像抱怨没有ORECORD或= CL133''字面的基址寄存器。我猜这是后者。文字通常位于代码中,基于代码中或CSECT末尾的LTORG指令的位置。我无法从列表中看出是否有生成的LTORG指令(可以由SUBENTRY或SUBEXIT生成,但它们是特定于您的安装的宏/副本,所以我无法知道他们做了什么除了猜测)。看着它的奇怪之处在于你有2个SUBENTRY语句和2个SUBEXITS。从猜测这些宏通常做什么,我会期望每个1。因此,尝试取出COPY2 SUBENTRY和其中一个SUBEXITS,看看它是否更好。如果不这样做,看看你是否可以在z390中使用某个选项获得生成的语句的完整列表(将PRINT NOGEN更改为PRINT GEN作为开头),这可能会有所帮助。
我刚刚完成了帮我的孩子做作业,现在这个!祝你好运。