An Activation Group (AG) is a partition of a job. It is a way to define ‘scope’ for things like overrides. It is also useful for garbage collection — when you reclaim an AG with the RCLACTGRP command, only programs and files that were used in that AG are ceaned up and closed.
What happens in one AG is separated from other AGs in the same job. An AG survives until you reclaim it or until the job ends. You might have an initial program that CALLs another program when you sign on. That second program could be compiled to run a a separate AG. When it RETURNs, your initial program starts to run again and you start your normal interactive work.
However, that second AG is still available in your interactive job. If it opened any files and left them open, those files are still available to programs that run in that same AG. If programs in that AG stored any values in program memory, those values can still be retrieved.
Then when you finally signoff at end of day, you might CAL a shutdown program. It could issue a CALL to a program in that second AG to retrieve values that have been waiting there.
During the day, you might call other programs that did various file overrides. By default, those overrides were never seen by anything in the second AG.
When you finally signoff, the system cleans up any AGs that were left hanging around.
An AG provides a way to do things like open files once and leave them open through the entire job, but only programs in the same AG will know about them.
AGs are simply sub-units of jobs that are available for you to section of parts of the work. They provide scope for files and a few other things. You can almost think of them like subprocedures for jobs.