Last Execution Date of Natural Objects

I need to find out the last execution date of all the natural objects in my library (programs, maps, subprograms, subroutines, etc). Is this information recorded somewhere in FUSER? My problem is that I do not know when a natural object is being last executed.

Please advise how I can obtain the information I need. Any Natural utilities?

I am using Natural on the mainframe.

Many thanks in advance.

Natural does not provide this type of historical data. You can query the Buffer Pool for information on the current session, though.

Some shops have built tracking systems, but writing to a log every time an object is called can have a very negative impact on performance.

We’ve implemented a bufferpool-history on our Solaris-Box. Every 5 minutes we save a complete listing of the buffer pool. Every evening, we delete all modules from the buffer pool. So we know when an object was called the last time.


Can you elaborate on how you capture the bufferpool information every 5 minutes? Is this a Natural program calling the sysbpm utility that you run infinitely?

I appreciate any detail information.


Min Chai,

Is this a one time search for unused objects? Or is there some “real time” use you have in mind for this information.


Do you actually use the bufferpool information to control things like buffer sizes, job scheduling, etc


If you implement a NATRDC user exit, it can write out the library & object name of every object loaded into the buffer pool, which can be flushed out to flat file for programmatic loading into a database so that you can retain this information. However, you will need to implement and let this run for a long time in order to know if the objects are run at all or just not very often for those that are missing.

The ultimate goal is to find out what modules are still being used at runtime. If I were to retrieve the information from bufferpool for this purpose then I would need this process to run for the period of a few months just to cover as wide a basis as possible. Even if I can identify a certain percentage (high I hope) of the modules and manually address the rest that would be fine.

Building something around NATRDC is the most reliable way on the mainframe,
but it isn’t available on OpenSystems, so using the bufferpool information probably
is the best bet here, however, there’s a risk of missing entries when they are purged
between intervals.

Adabas Review ( can also be used to track Natural module usage and would be more comprehensive than a buffer pool sampling.

Natural Review ( ) that is, and it is, like SYSRDC, available for the mainframe only.

No, it’s all Solaris-stuff. I’m afraid it won’t help you on Mainframe.

It’s a simple cronjob - called every 5 Minutes:

natbpmon bp=mybp dir k=g > /tmp/nat.monitor.log
natbpmon bp=mybp dir k=s >> /tmp/nat.monitor.log
# this perl-script feeds a kind of Bufferpool-database with the content of nat.monitor.log

No. We just want to know when a program was used the last time. For example: If you want to change a field length it’s very useful to know which modules are used every day and which one is used only one time a year (e.g. for stock-taking) …