大型机汇编(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
虽然现在的编程风格都不提倡用*来代替当前地址了,但这种简洁高效的编程思想及注释的详尽,还是可以借鉴的。
代码的功能注释中解读的非常详细。
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
相关文章推荐
- 大型机汇编(mainframe assembler/HLASM)之代码loop篇
- 大型机汇编(mainframe assembler/HLASM)之S0C4解读
- 大型机汇编(mainframe assembler/HLASM)之LA指令
- 大型机汇编(mainframe assembler/HLASM)之Branch
- 大型机汇编(mainframe assembler/HLASM)之COBOL解惑
- 大型机汇编(mainframe assembler/HLASM)之BAS指令
- 大型机汇编(mainframe assembler/HLASM)之经典面试题
- 大型机汇编(mainframe assembler/HLASM)之线程工作栈
- 大型机汇编(mainframe assembler/HLASM)之藏巧于拙
- 大型机汇编(mainframe assembler/HLASM)之STCK/STCKE
- 大型机汇编(mainframe assembler/HLASM)之显示变量值('DISPLAY' in COBOL)
- 大型机汇编(mainframe assembler/HLASM)之C++语言对应
- 大型机汇编(mainframe assembler/HLASM)之LOCTR
- 大型机汇编(mainframe assembler/HLASM)之S0C7错误
- 大型机汇编(mainframe assembler/HLASM)之显示内存实际数据
- 大型机汇编(mainframe assembler/HLASM)之中断向量表
- 大型机汇编(mainframe assembler/HLASM)之RECFM=VBA
- 大型机汇编(mainframe assembler/HLASM)之加密与解密
- 大型机汇编(mainframe assembler/HLASM)之CICS调用
- 大型机汇编(mainframe assembler/HLASM)之DUMP解读