HP OpenVMS Systems

ask the wizard
Content starts here

SPAWN and SYMTOOLNG symbol too long?

» close window

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.
 
 

answer written or last revised on ( 18-OCT-2000 )

» close window