RPGIV编程问题百解(11)调用中,Activation Group关系的传递
问题:
PGMA用名为AGA AG创建;PGMB用*CALLER AG创建;PGMC用名为AGC创建。PGMA用命令激活,调用PGMB;PGMB再调用PGMC。所有程序都是*inLr为*off。当PGMC结束后,系统只存在AGA AG.问题是:为什么AGC AG没有存在?已确定PGMC已经被调用执行过。
回答:
passthru:
存在内存的AG有两种形式:AG默认值和用户命名的AG。这两类AG只有当job结束,或人为的用命令RCLACTGRP,才能使得驻留内存的AG结束。
采用*CALLER的 AG程序起到继承调用程序的AG的属性。
当PGMA调用PGMB,因为PGMB是*CALLER属性,PGMB就继承了AGA AG的系统资源使用环境。PGMB调用PGMC,PGMC因为使用AGC 用户命名的AG,所以系统在运行PGMC时,就创建一个PGMC的AG,用于PGMC运行时使用系统的资源。这样的运行机制,相当于PGM被创建时采用*NEW的AG的运行机制。所以当PGMC返回PGMB后,就结束了AGC的用户命名的AG。所以这个问题结果是看不到内存中AGC AG的存在。
阅读(642) | 评论(0) | 转发(0) |