Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1294160
  • 博文数量: 287
  • 博客积分: 11000
  • 博客等级: 上将
  • 技术积分: 3833
  • 用 户 组: 普通用户
  • 注册时间: 2007-08-16 08:43
文章分类
文章存档

2013年(15)

2012年(17)

2011年(17)

2010年(135)

2009年(85)

2008年(18)

分类: 系统运维

2009-04-19 13:12:19

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) |
给主人留下些什么吧!~~