On 27-Jan-2014 15:47 -0800, Mark S Waterbury wrote:
One of my customers ran into this, and I am at a loss to explain it
On their production LPAR, they ran a DSPOBJD of all objects in one
production library to an *OUTFILE some time on Friday.
Now, looking at the data in that outfile today, they notice that many
of those objects had the "last used" date containing blanks -- e.g.
not used since it was last "reset".
Yet today, they also noticed that if they now issue DSPOBJD against
any of those same objects that had a blank "last used" date, on the
same production LPAR, and specify DETAIL(*FULL), they tell me they
now see a "last used" date on many (but not all?) of those objects
and the last used date shown is "20140124" (last Friday)...
What can cause this?
Knowing patterns or examples of what was expected not to have been
"used" might be helpful. Nonetheless...
Other than an actual "use" of the object [according to the specific
external object type, and what was defined as a "use" by the OS
component that /owns/ that object type], there is an API that could be
used to perform what would be the effect of what might be a USEOBJ command.
A table of usages\actions corresponding to the specific object type
that is used exists. Unfortunately the object types are described in
words rather than symbolic names, thus making the table difficult to
locate in InfoCenter; as well the term "usage" rather than "last used"
being the functional search:
IBM i 7.1 Information Center -> Programming -> Control language ->
Objects and libraries
_Detecting unused objects on the system_
• Date of last use
• The date of last use is only updated once per day (the first time
an object is used in a day). The system date is used.
Table 1. Updating usage information
Type of object Commands and operations
_Change Object Description (QLICOBJD) API_
The Change Object Description (QLICOBJD) API lets you change object
information for a specific object similar to the Change Object
Description (CHGOBJD) command. Unlike the CHGOBJD command, this can be
used on all library-based external object types. This API supports
changing more parts of the object descriptive information than are
supported using the CHGOBJD command.
The following table lists the valid keys for the key field of the
variable length record.
Key Type Field
... ... ...
15 CHAR(1) Update last used date and days used count
Update last used date and days used count. This key is used to:
Update the last used date to the current system date.
Increase the days used count.
It must have a value of '0' or '1'.
'0' The last used date is not updated. The days used count is not
'1' The last used date is updated to the current system date. If this
is the first use of the object today (since midnight), the days used
count is increased.
Note: For a database file, the last used date and days used count are
updated for all members in the file.
I know, for example, that restoring objects from a previous save,
(from tape or save file), resets the "last used" date to blanks.
But, what other commands or actions will set the "last used" date?
The subject seems incongruous to the above statement and question.
It seems the real question is about when the "last used" date is set,
not when the value is reset.?
I know that CALLing a *PGM will set its "last used" date to the
current date, as will OPENing a *FILE ...
Are there any other commands that could have "touched" many objects
in this one library, causing many of them to have their "last used"
Thanks in advance for any ideas ...
Aside from the expected\normal "use" of an object and the API to
imply the "use" of an object [both noted above], one must also consider
the possibility that some features might be implemented using a function
against an object that is considered a usage of that object. For
example, I had pointed out in the past that the Start Object Conversion
(STROBJCVN) to effect conversion of database file members was originally
[and quite probably still] implemented using the database OPEN feature;
i.e. a side effect of some other feature might be, that the usage
information of a referenced object, since appears as having been used.
Subject: Re: How long does STROBJCVN take?