![]() |
![]() HP OpenVMS Systemsask the wizard |
![]() |
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.
|