2

未完成此问题

在这个程序中,一个未知问题导致汇编器拒绝代码,因为显然未知的宏,或者看起来像宏的程序集。我不知道如何纠正这个。

我正在使用 z390 Portable Mainframe Assembler and Emulator (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
4

2 回答 2

3

我不是 z390 仿真器方面的专家,但根据我对标准 z/OS 汇编器的了解,我会看看你的延续字符(你编码的 DCB 宏调用中的'X')。一般来说,它们应该在第 72 列中,并且后续语句应该从每行的第 16 列开始。

在您的第一个 DCB 的最后一行上,我将删除 MACRF=GM 上的“X”续行字符,因为那是您声明的结尾。

此外,您的 ENDPGM 标签应该在第 1 列,否则汇编程序认为这是一个语句/宏调用

给 z/OS 汇编器一个机会 - 20 或 30 年后,您会喜欢上它。

于 2011-10-09T07:53:42.747 回答
1

那么对于缺少的宏 DSORG=PS ... 那是因为您的 OUTFILE DCB 宏调用的第一行没有延续。宏调用在几行之后从 OUTFILE DCB 一直运行到 MACRF=PM,因此您需要在除最后一行之外的所有行上继续,以告诉汇编程序这是一条语句。我知道语法的东西让人头疼,但如果你坚持使用汇编器,特别是宏处理器,你会发现它有一些非常灵活和优雅的功能。

至于缺少的基址寄存器......可能是几件事。正如我所说,我不知道模拟器,但它看起来好像在抱怨没有 ORECORD 或 =CL133' ' 文字的基址寄存器。我猜是后者。文字通常根据 LTORG 指令在您的代码中的位置或在 CSECT 的末尾位于代码中。我无法从列表中判断您是否有生成的 LTORG 指令(可以由 SUBENTRY 或 SUBEXIT 生成,但它们是特定于您的安装的宏/字帖,所以我无法知道它们除了做什么之外猜测)。奇怪的是,你有 2 个 SUBENTRY 语句和 2 个 SUBEXITS。通过猜测这些宏通常会做什么,我希望每个宏都有 1 个。因此,请尝试取出 COPY2 SUBENTRY 和其中一个 SUBEXITS,看看是否更好。如果做不到这一点,请查看是否可以使用 z390 中的某个选项获得生成语句的完整列表(首先将 PRINT NOGEN 更改为 PRINT GEN),这可能会有所帮助。

我刚刚帮我的孩子做作业,现在这个!祝你好运。

于 2011-10-10T12:53:02.360 回答