Hi Jim
I assume you're talking that you are on Fat clients on 8.10 and are looking for all those custom programs that you might not need.
UBE's are the simplest to look for, depending on how far back you keep your data in the F986110 on the iSeries. Maybe have a trigger added to the F986110 to update a table based on the unique job being submitted ? Theres probably a few ways in SQL to achieve that.
Interactive Applications are certainly the hardest to track. Obviously you want to try and identify as many as possible through the use of Menus - but there are also so many applications called from form exits - its incredibly difficult to identify.
Jileto's method is interesting - he is suggesting on Fat clients or on Citrix, you COULD delete the /PD810/spec/dddict/ddtext/glbltbl say once a week and then use UTB each day to identify what the contents are.
Unfortunately there are two major issues with this. First of all, it means your citrix users would need to be JITI'ing constantly - which will result in spec corruption, and hence more issues. Secondly, if you manage to get some dddict/ddtext/glbltbl spec files - they won't identify anything about your interactive applications since DDDICT is Data Dictionary, DDTEXT is Data Dictionary Text, and GLBLTBL are Table Specifications ! So - don't do this ! It won't result in anything useful !
There is, however, one way to do this - and this would need a trigger placed on your PD810/F983051. The version table is read every single time that an interactive or UBE application is launched. I've achieved this before - in effect, every time the F983051 is "selected" - you could capture the select statement, and store the necessary information into an external file.
You need a really good iSeries person to go through this example RPGLE program to help you out - but here is the jist
The important information in F983051 - is the following :
VRPID
VRVERS
VRENHV
Create a custom table, F55983ADT which contains the following information :
VRPID
VRVERS
VRENHV
VRUSER
VRDATE
VRTIME
Now, you want to create a TRIGGER that inserts data into the F55983ADT table whenever the F983051 is READ. Obviously the values VRPID, VRVERS, VRENHV would come from the row selected from the F55983ADT table - but the USER, DATE and TIME would be system provided values based on the connection. (program following since its over 10,000 characters long !)