× The internal search function is temporarily non-functional. The current search engine is no longer viable and we are researching alternatives.
As a stop gap measure, we are using Google's custom search engine service.
If you know of an easy to use, open source, search engine ... please contact support@midrange.com.



On 02-Jul-2010 09:41, Charles Wilt wrote:

Correct, renaming or moving an object doesn't change it's
address.

Renaming an object changes the object name associated with that permanent address.

In fact, address are permanently assigned to an object when it's
created and are not re-used. Think about the "% perm addresses"
on the WRKSYSACT screen

(well the "not reused" is not completely true anymore; but it
used to be and for most purposes you can still consider it to be
true.)

A permanent address for an object which has since been deleted is not reused. All future reference to the pointer will effect MCH3402 to denote the condition of "object destroyed". Note that the object to which it points no longer exists, so the message can not be so kind as to inform what the last-known object name was... since the name is not part of the pointer, but instead part of the object addressed by the pointer.

I am not sure to what "'not reused' is not completely true anymore" alludes.?


On Fri, Jul 2, 2010 at 12:06 PM, Vern Hamberg wrote:

Thanks for the explanation - so I think I'm seeing that putting
an object in a different library does not change its address on
the system. Even renaming doesn't do that, so that explains why
a job running it can still use it, if resolved by address.

Correct. Permanent object, permanent address. Moving the object does change a pointer\address however, but that would be the pointer stored in the object to its "owning context"; i.e. into which library [index] it was inserted by {If I Recall Correctly] the MODADR instruction. As noted above, the rename changes the name of the object stored at the address location assigned to the pointer, and near that name is the pointer to the library; the LIC MI object dump via STRSST D/A/D will show where the name and its library pointer are located in the "header" of the object.

Actually this would suggest that moving to ANY library or
renaming the program can be done, it doesn't have to be QRPLOBJ
- is this true?

Yes. The "Q" library is simply the implementation object for the OS to perform its manner of REPLACE()\RPLOBJ processing. Any permanent non-system library would suffice for implementation by anyone else.

Also, it seems the window of vulnerability for the MCH3401
could be minimized by using the API mentioned in another post.

I suppose, but if any opportunity exists, code dependent on the existence [per resolve-to by name] of the object which might be replaced, should probably be tolerant of the condition; coded either to handle the condition with some action [wait, retry, loop] or possibly just to effect an inquiry [e.g. by the language default handler] with means to retry.? That, or document the outcome and its recovery for the help-desk. The difference between 240ms and 470ms is moot for example, if the request to locate the object happens during any of those milliseconds in which the name is not available. Considering how many times I had to explain to a customer that CHKOBJ does not ensure an object remains even over just the several milliseconds before the next CL request failed with a "not found" against the same object name due to a RNMOBJ, DLTxxx, or MOVxxx in another process, I know that any window will eventually be hit.

<<SNIP>>

Regards, Chuck

As an Amazon Associate we earn from qualifying purchases.

This thread ...

Follow-Ups:
Replies:

Follow On AppleNews
Return to Archive home page | Return to MIDRANGE.COM home page

This mailing list archive is Copyright 1997-2024 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].

Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.