Simply resolving a pointer to an object does not cause the last used date to be updated. For example, the RTVDTAARA command and QWCRDTAA API both cause the last used date of a data area to be updated. But, (inexplicably) the CHGDTAARA command does not. In all three cases the pointer is resolved. You can resolve pointers all day long to any objects, but the usage information is only updated when you actually use the object.
The last used date for a program is updated when a program is run (or activated). As with all objects whose usage information is tracked, it is only updated the first time it is used in a given day. It has nothing to do with whether the calling program has been running for several days or just a few microseconds. If a program that runs for multiple days calls another program each of those days, the called program's usage information will be updated each day that it is called.