CICS/MVS技术学习笔记:死锁避免与子程序调用解析

需积分: 0 23 下载量 195 浏览量 更新于2024-08-02 收藏 95KB DOC 举报
"CICS/MVS技术日记是关于CICS在MVS系统中的应用和学习心得,涵盖了CICS的基本操作、编程注意事项以及多用户环境下的事务处理策略。这份资料主要面向学习CICS技术的读者,提供了编译BMS、资源管理、子程序调用和程序嵌套等关键知识点。" 在CICS/MVS技术中,BMS(Basic Mapping Support)的编译是一个重要的环节。编译BMS时,你可以选择Type=DSECT生成逻辑MAP,用于逻辑布局的可视化,或者选择Type=Map生成物理MAP,它反映了内存的实际分配情况。这两种选项有助于理解和调试程序。 在多用户环境中,CICS系统需要处理并发访问和资源竞争问题。为了防止死锁,规定了三条原则:一是所有交易应按照相同的KEY值顺序访问文件;二是READ UPDATE之后必须跟REWRITE、DELETE或UNLOCK操作以保持数据一致性;三是使用WRITE MASSINSERT后需立即解锁,以释放资源。 CICS虽然不直接支持多种语言的混合编程,但它允许COBOL程序调用ASM模块。一个CICS交易可以由多个程序构成,通过LINK或XCTL指令实现程序间的调用。在CICS中,子程序调用有三种方式:EXECCICSLINK、STATIC COBOL CALL和DYNAMIC COBOL CALL,满足不同类型的调用需求。 CICS的COBOL宿主程序有两个关键的数据结构:DFHEIBLK(EXEC INTERFACE BLOCK)和DFHCOMMAREA(通信区)。它们在LINKAGE SECTION中声明,用于传递执行控制信息和用户数据。CICS的程序嵌套规则要求最高层程序及其所有直接或间接依赖的程序作为一个单元提交,并在包含EXEC CICS命令的每个程序中,将DFHEIBLK和DFHCOMMAREA作为头两个参数传递,确保执行信息的正确传递。 由于EIB(EXECUTION INTERFACE BLOCK)的地址在主控程序中可能不确定,因此需要使用特定的语句来确定其地址,以便正确地进行程序调用和数据交换。这份技术日记为学习CICS提供了一手的实践经验和深入的理解,对深入掌握CICS/MVS环境下的编程和系统管理具有极高的参考价值。