 |
The Question is:
In the "OpenVMS Programming Concepts Manual" section 34.10.4 "Using SYS$TRNLNM
to Translate Logical Names" it mentions "until the system default number of
logical name translations has been performed, typically 10".
Is there a way to get/set the system default number of logical name
translations? I can't find any SYSGEN parameter for this.
The Answer is :
In a word, no.
This is a hard-coded limit, as determined by the OpenVMS system symbol
named LNM$C_MAXDEPTH. This limit and the SS$_TOOMANYLNAM condition is
intended to prevent infinite loops within code performing logical name
translations.
Consider:
$ DEFINE A A
$ SHOW LOG A
"A" = "A" (LNM$PROCESS_TABLE)
1 "A" = "A" (LNM$PROCESS_TABLE)
2 "A" = "A" (LNM$PROCESS_TABLE)
3 "A" = "A" (LNM$PROCESS_TABLE)
4 "A" = "A" (LNM$PROCESS_TABLE)
5 "A" = "A" (LNM$PROCESS_TABLE)
6 "A" = "A" (LNM$PROCESS_TABLE)
7 "A" = "A" (LNM$PROCESS_TABLE)
8 "A" = "A" (LNM$PROCESS_TABLE)
9 "A" = "A" (LNM$PROCESS_TABLE)
Such a logical name definition could otherwise cause an otherwise fully
functional application using the logical name A to fail in an unusual
- and likely also difficult to debug -- fashion.
The actual number of translations (ten) is largely arbitrary, though the
limit has seen ample empirical testing over the years. The assumption
here is that ten levels of logical name nest transations should be
sufficient for most any functioning applications, of course.
While this LNM$C_MAXDEPTH value cannot be easily changed by an OpenVMS
user or system manager, it would appear to be a fairly simple change
to OpenVMS and to the OpenVMS documentation. Such a request should be
made formally, of course.
If you are reaching this limit, please call your local customer support
centre for assistance in finding a solution to your specific application
issue.
 |
|
|
 |
|