 |
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.
 |
|
|
 |
|