代码之家  ›  专栏  ›  技术社区  ›  Be Kind To New Users

在IBM程序集中,成员的结束是什么用途

  •  0
  • Be Kind To New Users  · 技术社区  · 7 年前

    我正在解析一些ibm汇编语言,它碰巧也是一个bms映射。

    代码如下所示:

             DFHMSD TYPE=FINAL
             END
    END OF MEMBER
    

    这个 END OF MEMBER 语句不会在大型机上导致任何语法错误。

    为什么语法上是正确的?

    什么功能 成员结束 提供线路?

    2 回复  |  直到 7 年前
        1
  •  3
  •   piet.t Charis A.    7 年前

    hlasm引用声明:

    如果END语句不是输入流中的最后一个语句,并且批处理选项 指定,当当前程序集是 完整的。

    所以除非 BATCH 被指定为assembler选项处理应在 END -已到达语句。

    您还应该能够在程序集列表中看到这一点:打印的源代码列表应该在 结束 -声明, END OF MEBER 不应该出现在那里。

    所以 END OF MEMBER 似乎没有用,但也不应该伤害…

        2
  •  2
  •   Hogstrom    6 年前

    我试着把你在问题中提供的东西集合起来,这是我发现的。

    我的示例源代码是:

    EOS源

    EOS      CSECT         
             SR    15,15   
             BR    14      
             END   EOS     
    END OF MEMBER          
    

    组装源代码时,组装步骤以返回代码8完成。但是,它似乎已经处理了 结束状态方程 陈述。然后,它开始将以下文本作为不同的模块进行处理。

    程序集输出列表

      Active Usings: None                                               
      Loc  Object Code    Addr1 Addr2  Stmt   Source Statement          
                                      1 *                           
    000000                00000 00004     2 EOS      CSECT              
    000000 1BFF                           3          SR    15,15        
    000002 07FE                           4          BR    14           
    000000                                5          END   EOS          
    
                                      Diagnostic Cross Reference and Assembler Summary
    
         No Statements Flagged in this Assembly                                     
    HIGH LEVEL ASSEMBLER, 5696-234, RELEASE 6.0, PTF UI50739     
    

    有趣的是,在相同的组装步骤中,我得到了一组与第一个csect无关的错误,这些错误导致返回代码为8。请注意 END OF MEMBER 是1。这些错误是:

    结束后语句错误

       Active Usings: None                                               
       Loc  Object Code    Addr1 Addr2  Stmt   Source Statement          
                                           1 END OF MEMBER               
     ** ASMA057E Undefined operation code - OF                           
     ** ASMA435I Record 6 in USER1.TEST.CNTL(EOS) on volume: T70502      
     ** ASMA140W END record missing                                      
     ** ASMA435I Record 6 in USER1.TEST.CNTL(EOS) on volume: T70502   
    

    在本例中,不存在组装和生成csect的问题,您可以链接该模块,但显然这是后续步骤的问题。

    唯一提到这句话的地方 成员结束 在hlasm文档中,它是 HLASM exit processing 是的。

    成员调用结束简化了对包含读取和查找的库出口的编码所需的堆栈管理。退出可能会使用这个调用提供的信息来处理嵌套发现,对于每个嵌套的查找(选项=3),通常有相应的恢复查找(选项=2)。有关如何使用结束成员调用来执行堆栈管理的示例,请参见代码示例,使用成员终止调用来执行术语Excel中的堆栈管理。 TRMEXIT 是的。

    它不是程序集源代码的有效语法。