下面是写于上个世纪的一段代码,本人感觉写得非常好,现在与大家一起分享共同研究。
虽然现在的编程风格都不提倡用*来代替当前地址了,但这种简洁高效的编程思想及注释的详尽,还是可以借鉴的。
代码的功能注释中解读的非常详细。
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