![]() |
![]() HP OpenVMS Systemsask the wizard |
![]() |
The Question is: I'm getting: $ SPAWN/NOWAIT/INPUT=NL: any_command %DCL-W-SYMTOOLNG, symbol is too long to copy to subprocess %DCL-W-SYMTOOLNG, symbol is too long to copy to subprocess %DCL-W-SYMTOOLNG, symbol is too long to copy to subprocess %DCL-W-SYMTOOLNG, symbol is too long to copy to subprocess %DCL-W-SYMTOOLNG, symbol is too long to copy to subprocess I've narrowed the source of the problem down to five specific /PROCESS logicals, all of which are search lists, but I can't see what makes them "too long." All were successfully DEFINEd in the parent process, so they appear to comply with documented limi ts. I found a reference online to an "undocumented restriction on the size of a process logical name search list that can be successfully copied to a subprocess," along with suggested workarounds of creating /JOB logicals or breaking up the long search lists into smaller logicals. OK, but, so that I'll know when I have to use these workarounds: What exactly is the limitation? Is it a maximium number of entries in the search list, a limit on the total length of the string, or what? The Answer is : When a subprocess is SPAWNed, all symbols and process logical names are copied (by default) from the parent process to the subprocess through a mailbox. There is a limit to the size of the mailbox, and your logical names are larger than the limit, resulting in the (somewhat confusing) SYMTOOLNG error message. The exact size of the limit is not particularly quantifiable, as it will depend on the sum of the sizes of the logical name and each translation, with some rounding up of the string sizes. On a OpenVMS Alpha V7.2-1 system, the OpenVMS Wizard was able to spawn with the logical name: $ define TEST TEST1,TEST2,TEST3,TEST4,TEST5,TEST6,TEST7,TEST8,- TEST9,TEST10,TEST11,TEST12,TEST13,TEST14,TEST15,TEST16,TEST17,- TEST18,TEST19,TEST20,TEST21,TEST22,TEST23,TEST24,TEST25,TEST26,- TEST27,TEST28,TEST29 but adding an additional translation resulted in the SYMTOOLNG error. The message does not affect the subprocess, save that the the long(er) logical names will obviously not be available to the subprocess. If you do not require any symbols or logical names in the subprocess, consider the use of the /NOLOGICAL_NAMES and /NOSYMBOLS qualifiers on SPAWN. Use of these qualifiers can potentially increase the speed of the SPAWN, particularly when there are large numbers of process logical names and symbols in the parent being copied (unnecessarily) into the child subprocess. The OpenVMS Wizard would generally recommend using job or possibly group logical names, if you do need access to larger or longer or large numbers of logical names in the subprocess. You can define the logical names in any table which is visible to the subprocess. The job table is one obvious candidate, as are user-created shared logical name tables or system-created tables such as the group logical name table. Logical name tables do typically have size limits, such as the JTQUOTA process quota for the size of the job logical name table and the CREATE/NAME_TABLE/QUOTA quota setting on various shared logical name tables.
|