- The affinity here is between the transaction that loads the program
via LOAD and the transaction that releases the same program via FREEMAIN.
The match is made on load point address.
- However, the situation is complicated by the fact that the load
point address may be passed to other transactions (for example, the
program is actually a table); and if they access the program, they
cannot be detected. This is analogous to storage address passing with
GETMAIN SHARED/FREEMAIN.
- The LOAD and FREEMAIN protocol applies only to programs defined
as RELOAD(YES). Note that HOLD is irrelevant, as CICS® Program Control never sees the FREEMAIN,
or knows the storage location of the individual task's copy,
and so cannot release the program at task end. This implies that all
LOADs must be examined as they are all effectively LOAD HOLDs.
- The affinity relation may be GLOBAL, BAPPL, LUNAME, or USERID.
- Lifetime can be PCONV, LOGON, SIGNON, ACTIVITY, PROCESS, or SYSTEM.
However, the Detector always worsens LOGON and SIGNON to SYSTEM, because
of limitations in the way that this affinity is detected.
- Commands in error are ignored, because there is no load address
on which to match LOAD with FREEMAIN, so no data is collected. LOADs
with no SET option are ignored, because no load address is returned,
so no data is collected.
- A LOAD/FREEMAIN affinity is considered to be initiated from a
terminal if the LOAD is initiated from a terminal. Whether the FREEMAIN
was so initiated or not is irrelevant.
- Any unmatched LOADs are also reported if they have never matched
by the time a Detector stop occurs. They are output in a separate
report section. Note that on a start with restore data, they are not
restored and are deleted from the affinity file.
Scanner differences: Scanner finds all instances of LOAD
and all instances of FREEMAIN.