Hello everyone,
If we did any changes to the cics-cobol application program,once again,we have to install the program in the CICS region,otherwise latest
Update won't be reflect in the application program.
My question is
1) once we did changes in the application program,(after
translator and compile and linkedit is done). the load module has
been overridded. now in the cics region why we need to install it once again,Anyways its going to refer the same load module ??
(Which ia already overridded with new changes)
now my second question is
2) Where CICS will store these old load module information??
if it stores in its CICS address space, Then wastage of memory ???
for ex if i have 100 programs then all these programs information will be temporarly stored in CICS address space. it won't afftect CICS performance.??

1. CICS is efficient. The first time a program is invoked, CICS goes out to the library on disk, finds the module, and loads it into memory. Every reference to the program after the first uses the copy that CICS has in memory. Changing the disk load module by doing the recompile and linkage edit (bind) can be done as much as you want. However, CICS will not be aware of the changed load module until you do a NEWCOPY on the program. The NEWCOPY tells CICS to go out to disk and fetch in a new version of the program.
2. CICS only has active load modules in memory. If you have 100 programs defined to CICS, but your system has only used 6 of them since CICS came up, then only those 6 are loaded in CICS memory. They are stored in the CICS region as part of the CICS memory area -- which is entirely separate from the user memory area your programs use.

Only IBM could tell us the impact in CICS performance -- and I suspect the impact is quite small. CICS has been running a long, long time and has had many updates over the years. IBM has probably paid much attention to making the CICS system overhead as small as possible. You are needlessly worrying about something you cannot control and cannot change.

The NEWCOPY tells CICS to go out to disk and fetch in a new version of the program
You are saying like in DASD For a same program there will be N Number of load module versions,And the cics will fetch the latest version(new version, once we installed the program in cics region) is it.?????

Could you able to tell me on which area these information will be stored??

1. When reference for a program it load from library to CICS address space..and its address store into CICS system.

2. When program change and compile, so we need to infor about it to CICS system by NEWCOPY so it will take this new copy and load to address space and at that time it will change address of that program in CICS system by which it referring it...

No, there is only one version of a program in a load module at a time. The PDS member directory points to the most recent version. If the PDS is compressed, the space where the replaced members resided is reclaimed and can be used for other load modules.

Quote:

Could you able to tell me on which area these information will be stored??

This is not clear -- are you wanting to know which area of CICS memory stores the load module? Are you wanting to know where CICS programs are defined? Are you wanting to know about the PDS member directory?

A point of terminology: address space is a specific term which means a specific thing on IBM mainframes. This meaning is not related to how CICS maintains programs in memory. An address space on z/OS can be assigned to a batch job, started task, CICS region, Unix System Services user (or forked task), TSO user, and so forth. Address spaces have shared memory for common code and private user memory.

Yes, if you execute 500 programs then all 500 will be in CICS memory. They are removed from memory when CICS comes down. However, if you execute the same transaction 500 times that is only one program, not 500 programs. Each program in this context is a unique PPT (processing program table) entry.

The doc for CEMT SET PROGRAM PHASEIN does refer to multiple versions being loaded. It looks like CICS keeps multiple versions of a loaded module (in storage, not on disk!) and allows new access only to the latest one.

It looks like CICS keeps multiple versions of a loaded module (in storage, not on disk!) and allows new access only to the latest one.

From the manual, CICS keeps the old version around only as long as RESCOUNT is greater than zero. As soon as the last running transaction ends, and RESCOUNT goes to zero, the old version is deleted and the new version is used from that point forward. So CICS may keep two (not multiple) versions of a program around for a bit but it certainly doesn't mean you can do anything with them as versions -- either your transaction is using the old one (because it was running when the PHASEIN was done) or the new one (because the transaction was keyed in after the PHASEIN was done).

From the manual, CICS keeps the old version around only as long as RESCOUNT is greater than zero. As soon as the last running transaction ends, and RESCOUNT goes to zero, the old version is deleted and the new version is used from that point forward.

As you said once TRANSACTION ends RESCOUNT Goes to 0.
So automatically the older version of load module is deleted.

Now assume if i didn't Install the Program in CICS Region,Then how could it execute the program because already the reference for the older version of the load module is deleted??? (Since RECOUNT COUNT IS 0)

Now assume if i didn't Install the Program in CICS Region,Then how could it execute the program because already the reference for the older version of the load module is deleted??? (Since RECOUNT COUNT IS 0)

It sounds like you are chasing your tail. . .

If a new version/copy of the program is not installed, there should be no concern. There would be no "older" module?

How are you going to do this? In order for the older version of the load module to be deleted, you had to have done either a NEWCOPY or PHASEIN. So you've already installed the program in CICS. You can't un-NEWCOPY a module as far as I know!

I suspect if you managed to get the region to this point, there would be an SVC DUMP and a CICS region going shutting down ....

You are saying like when ever we are installing the program using (CEMT or CEDA INSTALL ) The RESCOUNT Goes to zero. so the reference to older version of load module is deleted and the newer version of the load module is Taken (either from the DFHRPL or dynamic LIBRARY concatenation, or uses an LPA-resident version, depending on the PRIVATE or SHARED options
in the CEMT)

Now my question is
1) where does the older version of LOAD MODULE gets stored..?
( like newer ones gets stored in DFHRPL or LPA........)

Now my question is
1) where does the older version of LOAD MODULE gets stored..?
( like newer ones gets stored in DFHRPL or LPA........)

I think you're confusing memory and disk space. If there is an older version around (and as I said earlier it will not be for any longer than it takes a transaction to finish), it is in CICS memory -- probably ERDSA but don't quote me on that -- just as the new version is in CICS memory. The old and new versions could have come from DFHRPL or LPA (both of which are disk areas), but once CICS has them they are running in the CICS address space under CICS control in CICS memory; at which point it does not matter where they are on disk.

Yeah you are 100 % percent right They are running in the CICS address space (under CICS control in CICS memory)
as per your prevoius scrap i got the answer for the area where older load module is stored.
last doubt
Whether CICS memory will have the address of the previously executed program(for ex program : pgm1 trans id: trs1)
or the copy of the load module.

what i believe is it hold the copy of the load module for pgm1
If you clarify this,then i will shoot my last question
one more thing i would like to thank everyone whoever replied , bcz you people have spent your precious & valuable time.! also without hesitation
you guys replied.Thanks a lot.

Whether CICS memory will have the address of the previously executed program(for ex program : pgm1 trans id: trs1)
or the copy of the load module.

Yes. CICS maintains a pointer to the address of the program as part of the PPT for each program it knows about; the address is either invalid (meaning the program has not been loaded off disk yet) or a memory location. Starting at this memory location will be the load module loaded off disk (whether DFHRPL or LPA). The data loaded into memory is a copy of the disk data. NOTE: the address in memory is not a disk location, has nothing to do with the disk where the load module resides, but is a pointer to a CICS memory location within the CICS address space only.

When you compile and link your code, you are replacing the DFHRPL or LPA module. This has no impact on the copy of the load module that CICS has in memory; only when a NEWCOPY is done or CICS comes down and back up will it go to disk and discover the revised code.