[an error occurred while processing this directive]

HP OpenVMS Systems

ask the wizard
Content starts here

Defining logical names for detached processes?

» close window

The Question is:

 
Summary Question: Any easy way to pass a logical to a
detached process at processes startup time?
 
 
Full question: Somewhere around openVMS alpha 6.something
the default maximum record size and longest record size
mechanisms were changed. Now, when I create a file, with
no mrm (maximum record size) the file attributes are
set to mrm or 0 and lrl (longest record size) of 32767.
This breaks type/tail which requires an lrl of < 512.
 
I have tried using set file/attributes=lrl=512 but the
file can't be opened for the set file to take effect.
 
I have tried defining decc$default_lrl to 511, which
works in a test environment. The problem is that the
application is a detached process, started from a
command procedure (dcl) (run/detached.....). Setting a
process logical, in the command file, is not picked up
by the detached process. As you can tell, I am trying to
address this without changing source code, if possible.
 
So any way to pass a logical to a detached process, at startup.
 
Also, why was this behavior (mrm=0, lrl=32767) introduced
on alpha file creation, knowning or not knowing that it
would break type/tail.
 
 
    Thank you,
 
       Jeffrey Wolf
 
 


The Answer is :

 
  The C language does not particularly have a record-oriented syntax,
  and had been using a longest record length (LRL) value of zero.  This
  has caused problems for tools that have looked at LRL for various
  purposes, as the longest record was normally longer than zero.  With
  recent ECO kits and with V7.1 and later, the LRL value was set to 32767.
  Changing the value has, however, also created performance problems for
  SORT and other tools that are sensitive to the longest record length,
  as these can encounter performance problems with the (new) C LRL value
  due to increased storage requirements dictated by the larger LRL value.
 
  If you have control over the sources, simply use the appropriate RMS
  keywords in the fopen(), open(), or creat() call.  (See the documentation
  of the creat() routine in the DEC C run-time library manual for details.)
 
  One can use a UIC group table to share the value of the logical name
  with the detached process, assuming the detached process executes "alone"
  in a particular UIC group.
 
  One could also use a detached process running DCL -- see the OpenVMS
  Frequently Asked Questions (FAQ) section "DCL1. How do I run a program
  with arguments?".  The logical name definition can occur before the
  program is invoked.  (This mechanism is common among C programs that
  use system() and other CLI-related calls -- these calls must execute
  under the control of a process with a CLI such as DCL loaded...)
 

answer written or last revised on ( 7-JUL-1998 )

» close window