As mentioned above, if the result of accessing the user profile is going to be cached by the client, then the profile should not be accessed directly, but via a ProfileChangedProc which has been registered with CallWhenProfileChanges. This guarantees that the corresponding values will be updated whenever the profile changes.
In other words, rather than writing:
ClientCheckpointFlag: BOOL ← UserProfile.Boolean["ClientCheckpoint", TRUE];
the implementor should write:
ClientCheckpointFlag: BOOL;
Init: ProfileChangedProc = {ClientCheckpointFlag ← UserProfile.Boolean["ClientCheckpoint", TRUE];
UserProfile.CallWhenProfileChanges[Init];
ProfileChanged:
PROC [reason: ProfileChangeReason];
Calls all of the ProfileChangedProcs. This procedure is automatically called after a rollback, whenever the UserExec.Login is called, or whenever the a file with extension 'profile' is saved by tioga.