IBM Mainframe Forum Index
 
Log In
 
IBM Mainframe Forum Index Mainframe: Search IBM Mainframe Forum: FAQ Register
 

How to remove the in-memory directory entry of programs


IBM Mainframe Forums -> CICS
Post new topic   Reply to topic
View previous topic :: View next topic  
Author Message
mchanapa

New User


Joined: 17 Nov 2011
Posts: 36
Location: India

PostPosted: Thu Nov 17, 2011 11:55 am
Reply with quote

Hi . .

I need to do the new copy of bulk programs in CICS. Without doing the Newcopy for individual program, i am thinking of removing the in-memory directory entry of all programs from CICS memory. So that when CICS attempts to locate the MAP or program, CICS finds the address missing and creates the new copy of the entry at the first request for it.

Please help me with this query.

Regards,
Kishore ch.
Back to top
View user's profile Send private message
Garry Carroll

Senior Member


Joined: 08 May 2006
Posts: 1193
Location: Dublin, Ireland

PostPosted: Thu Nov 17, 2011 1:05 pm
Reply with quote

What's wrong with using (e.g.) CEMT SET PROG(A*) NEW (or PHASEIN)? What you are suggesting is dangerous and a waste of time. You should NEVER mess with CICS control blocks/tables.

There is no 'in-memory directory entry', as you call it. There is, however the PPT - a CICS table. Selectively or randomly deleting entries from this is extremely dangerous and is likely to bite you.

Garry.
Back to top
View user's profile Send private message
mchanapa

New User


Joined: 17 Nov 2011
Posts: 36
Location: India

PostPosted: Thu Nov 17, 2011 1:57 pm
Reply with quote

Hi Gary,

Thanks for response.
When we do the NEWCOPY of a program, the old version of that program will be deleted from CICS memory area. Once we fire that transaction again the new load will be loaded to CICS memory area.

I am not touching the PPT, i am thinking to clear that CICS MEMORY AREA to get the new load.

The command you mentioned is fine but please help with the other avaliable options.

Regards,
Kishore ch
Back to top
View user's profile Send private message
Garry Carroll

Senior Member


Joined: 08 May 2006
Posts: 1193
Location: Dublin, Ireland

PostPosted: Thu Nov 17, 2011 2:23 pm
Reply with quote

When you do a NEWCOPY the program is not deleted from memory - the memory is de-allocated and, unless it is re-allocated for use by something else, will still contain the program code.

If the memory is re-used or re-initialised in any way, the PPT entry will still have the memory address and CICS will still try to execute whatever's at that address - so you get a S0Cx abend. The only way to get CICS to re-load the fresh copy of the program is to reset the PPT.

The PPT contains, among other things, the physical disk location of the program on disk and the memory address (if loaded). If the memory address is nulls, then CICS will load from the physical disk address and update the memory address. If you haven't reset the physical disk address, then CICs will reload the same, old version of the program. This is why one should NEVER compress a load library while it is in use by CICS.

From my point of view, the only other option to using CEMT is to write a program to use the SP API - EXEC CICS SET PROGRAM(xxxxxxxx) NEW (or PHASEIN). Such a program could browse the PPT, issuing a SET command for all, or selected, programs.


Garry.
Back to top
View user's profile Send private message
mchanapa

New User


Joined: 17 Nov 2011
Posts: 36
Location: India

PostPosted: Thu Nov 17, 2011 2:35 pm
Reply with quote

Hi Gary,

Thanks for the prompt response.
You have cleared my doubt. But I have one more small doubt.

For example a transaction TRAN is presently running in CICS, Now we are doing CEMT S PRG ALL then the program using by that transaction TRAN will be updated in PPT?
Or will it be failed? If so when we can use this command to get all programs loaded with new version.?

Regards,
Kishore ch.
Back to top
View user's profile Send private message
Garry Carroll

Senior Member


Joined: 08 May 2006
Posts: 1193
Location: Dublin, Ireland

PostPosted: Thu Nov 17, 2011 2:51 pm
Reply with quote

mchanapa wrote:
Hi Gary,

Thanks for the prompt response.
You have cleared my doubt. But I have one more small doubt.

For example a transaction TRAN is presently running in CICS, Now we are doing CEMT S PRG ALL then the program using by that transaction TRAN will be updated in PPT?
Or will it be failed? If so when we can use this command to get all programs loaded with new version.?

Regards,
Kishore ch.


If you issue CEMT SET PROG(*) NEW, the in-flight program will not newcopy and the task will run to completion. To allow for this, issue CEMT SET PROG(*) PHASEIN which will allow any in-flight tasks using the current version to complete but any new tasks will get the new copy (hence phase in).

Garry.
Back to top
View user's profile Send private message
mchanapa

New User


Joined: 17 Nov 2011
Posts: 36
Location: India

PostPosted: Thu Nov 17, 2011 2:56 pm
Reply with quote

Thanks Gary.
Back to top
View user's profile Send private message
View previous topic :: :: View next topic  
Post new topic   Reply to topic View Bookmarks
All times are GMT + 6 Hours
Forum Index -> CICS

 


Similar Topics
Topic Forum Replies
No new posts Sortjoin and Search for a String and ... DFSORT/ICETOOL 1
No new posts Remove leading zeroes SYNCSORT 4
No new posts Fetch data from programs execute (dat... DB2 3
No new posts Passing Parameters to Programs Invoke... PL/I & Assembler 5
No new posts Creating Unix Directory using COBOL i... COBOL Programming 2
Search our Forums:

Back to Top