`ox_launch', `ox_launch_nox', `ox_shutdown'
-------------------------------------------

ox_launch([HOST[,DIR],COMMAND])
ox_launch_nox([HOST[,DIR],COMMAND])
     :: Initialize OpenXM servers.

ox_shutdown(ID)
     :: Terminates OpenXM servers.

RETURN
     integer

HOST
     string or 0

DIR, COMMAND
     string

ID
     integer

   * Function `ox_launch()' invokes a process to execute COMMAND on a
     host HOST and enables Asir to communicate with that process.  If
     the number of arguments is 3, `ox_launch' in DIR is invoked on
     HOST. Then `ox_launch' invokes COMMAND.  If HOST is equal to 0,
     all the commands are invoked on the same machine as the Asir is
     running.  If no arguments are specified, HOST, DIR and COMMAND are
     regarded as 0, the value of `get_rootdir()' and `ox_asir' in the
     same directory respectively.

   * If HOST is equal to 0, then DIR can be omitted.  In such a case
     DIR is regarded as the value of `get_rootdir()'.

   * If COMMAND begins with `/', it is regarded as an absolute
     pathname. Otherwise it is regarded as a relative pathname from DIR.

   * On UNIX, `ox_launch()' invokes `xterm' to display standard outputs
     from COMMAND.  If `X11' is not available or one wants to invoke
     servers without `xterm', use `ox_launch_nox()', where the outputs
     of COMMAND are redirected to `/dev/null'.  If the environment
     variable `DISPLAY' is not set, `ox_launch()' and `ox_launch_nox()'
     behave identically.

   * The returned value is used as the identifier for communication.

   * The peers communicating with Asir are not necessarily processes
     running on the same machine.  The communication will be successful
     even if the byte order is different from those of the peer
     processes, because the byte order for the communication is
     determined by a negotiation between a client and a server.

   * The following preparations are necessary.  Here, Let `A' be the
     host on which Asir is running, and `B' the host on which the peer
     process will run.

       1. Register the hostname of the host `A' to the `~/.rhosts' of
          the host `B'.  That is, you should be allowed to access the
          host `B' from `A' without supplying a password.

       2. For cases where connection to `X' is also used, let `Xserver'
          authorize the relevant hosts.  Adding the hosts can be done
          by command `xhost'.

       3. If an environment variable `ASIR_RSH' is set, the content of
          this variable is used as a promgram to invoke remote servers
          instead of RSH. For example,

               % setenv ASIR_RSH "ssh -f -X -A "

          implies that remote servers are invoked by `ssh' and that X11
          forwarding is enabled. See the manual of `ssh' for the detail.

       4. Some COMMAND's consume much stack space.  You are recommended
          to set the stack size to about 16MB large in `.cshrc' for
          safe.  To specify the size, put `limit stacksize 16m' for an
          example.

   * When COMMAND opens a window on `X', it uses the string specified
     for DISPLAY; if the specification is omitted, it uses the value
     set for the environment variable `DISPLAY'.

   * `ox_shutdown()' terminates OpenXM servers whose identifier is ID.

   * When Asir is terminated successfully, all I/O streams are
     automatically closed, and all the processes invoked are also
     terminated.  However, some remote processes may not terminated
     when Asir is terminated abnormally.  If ever Asir is terminated
     abnormally, you have to kill all the unterminated process invoked
     by Asir on every remote host.  Check by `ps' command on the remote
     hosts to see if such processed are alive.

   * `xterm' for displaying the outputs from COMMAND is invoked with
     `-name ox_term' option. Thus, by specifying resources for the
     resource name `ox_term', only the behaviour of the `xterm' can be
     customized.

          /* iconify on start */
          ox_xterm*iconic:on
          /* activate the scroll bar */
          ox_xterm*scrollBar:on
          /* 1000 lines can be shown by the scrollbar */
          ox_xterm*saveLines:1000

     [219] ox_launch();
     0
     [220] ox_rpc(0,"fctr",x^10-y^10);
     0
     [221] ox_pop_local(0);
     [[1,1],[x^4+y*x^3+y^2*x^2+y^3*x+y^4,1],
     [x^4-y*x^3+y^2*x^2-y^3*x+y^4,1],[x-y,1],[x+y,1]]
     [222] ox_shutdown(0);
     0

References
     *Note `ox_rpc ox_cmo_rpc ox_execute_string': ox_rpc ox_cmo_rpc
     ox_execute_string, *Note `ox_pop_cmo ox_pop_local': ox_pop_cmo
     ox_pop_local, *Note `ifplot conplot plot plotover': ifplot conplot
     plot plotover

