identifiying unused programs

Hi ,
Is there any method , utility or tool showing programs executed zero
times for the specified time period , let say for the last 2 years ?

It may be the opposite : showing the programs executed for the specified time period ?

kind regards

  1. If you use the Natural Global Buffer Pool, you can track the current session’s usage statistics. If you want to track usage over a period of time, you will need to capture the statistics - run reports in batch or use SYSEXT API (USR0340N or USR6009N)
  2. if you use an Adabas monitoring tool (such as Review), you can track the database calls to the FUSER/FNAT files and summarize on program usage. (Of course, if you have a large GBP, the database calls to heavily used objects will be minimal, but it will still indicate a zero or non-zero usage.)

I have made a small system that identifies the non-used executable Natural objects via the global bufferpool.
We have a GBP that is big enough to hold objects that has been used for the last 48 hours.
Every morning i list the content of the GBP using the API mentioned, and use that to update an accumulated list of used objects and when they where last used.
I use that list to remove no longer used objects. I made a list of executables in the FUSER in production and compared it the the executed in production.
I have now removed all the objects in all environments, that execited in production and that hadn’t been executed the last 15 month.
I removed about 1/3 of all executedables, and only had to restore between 1 and 2 percent of the removed programms.

We thought about a similar way. But we found that you can’t rely 100% on buffer-pool-statistics.

First thing is: LDAs, PDAs, Copycodes and some other modules are not written into the bufferpool. See

And there are some remaining questions:

  1. Does SYSOBJH write modules into the buffer pool? E. g. we can find some LDAs etc. in the buffer pool of our productive environment. But we don’t compile object there…
  2. Some natural-programs run with parameter BPSFI = OFF. Does this have an influence?

Sure it is only executable objects that can be handled like that.
We only cleanup executables like that. We plan to cleanup LDAs, PDAs and Copycodes and then views, descriptors and files using xref data.
So first we remove executables and then we use xref to find unused LDAs, PDAs and copycodes and remove them, then we use xref again to find unused DDMs, descriptors and files.
Then non-executables in the bufferpool i don’t know.

Our Bufferpool-statistics contains some really old executable modules (like maps) which are not used for sure. How did they came into the bufferpool? Catall?

On the other hand there are some modules currenly in use, which doesn’t appear in the statistics. BPSFI=OFF?

That’s why I said “you can’t rely 100%”…