您的位置:首页 > 编程语言

大型机汇编(mainframe assembler/HLASM)之代码精简高效

2012-07-13 20:08 337 查看
下面是写于上个世纪的一段代码,本人感觉写得非常好,现在与大家一起分享共同研究。

虽然现在的编程风格都不提倡用*来代替当前地址了,但这种简洁高效的编程思想及注释的详尽,还是可以借鉴的。

代码的功能注释中解读的非常详细。

 

POPBKREC DS   0H                                                        29200000

*---------------------------------------------------------------------* 29210000

*   SUBROUTINE TO 'POP' AND FREE MOST RECENT BACKOUT REC              * 29220000

*   AT ENTRY  - R14 RETURN ADDRESS                                    * 29230000

*   AT EXIT   CC IS ZERO IF LAST RECORD                                 29240000

*   TO INVOKE:                                                          29250000

*        BAL R14,POPBKREC                                               29260000

*   TO FREE ENTIRE CHAIN:                                               29270000

*        BAL R14,POPBKREC                                               29280000

*        BNZ *-4                                                        29290000

*---------------------------------------------------------------------* 29300000

         ICM   R2,15,WKACTLST   GET ADDRESS OF CURRENT RECORD           29310000

         BZR   R14           EXIT WITH Z CONDITION IF NO RECORD         29320000

         ST    R14,WKPOBKRT  SAVE RETURN ADDRESS                        29330000

         USING BKOUTREC,R2                                              29340000

         MVC   WKACTLST,BKOPRERA                                        29350000

    EXEC CICS FREEMAIN DATA(0(R2))                                      29360000

                                                                        29380000

         LTR   R2,R2                                                    29390000

         L     R14,WKPOBKRT  GET  RETURN ADDRESS                        29400000

         BR    R14                                                      29410000

         DROP  R2                                                       29420000

上面代码提到的CHAIN中的每个ITEM定义如下:

 BKOUTREC DSECT                                                          06910000

BKOPRERA DS    A             PREVIOUS RECORD ADDRESS                    06920000

BKDDPROG DS    CL8           PROGRAM TO INVOKE                          06930000

BKACTC   DS    H             THIS ACTION COUNT NUMBER                   06940000

BKDDTYPR DS    C                       CURRENTN PROGRAM TYPE            06950000

有疑问请联系QQ349106216
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息