EXEC

Execute a non-Synergy program

 

USupported on Unix
VSupported on OpenVMS

 

xcall EXEC(program[, argument, ...])

Arguments

program

An expression that contains the name of the program to execute. (a)

argument

(optional) One or more variables or literals that contain any arguments the program requires. A maximum of 31 arguments is allowed. (a or n)

Discussion

The EXEC subroutine terminates the calling Synergy program and executes a non-Synergy program using the execvp function call. On OpenVMS, you must set the logical VAXC$PATH to a search list where the program image will be found.

The EXEC subroutine performs the same cleanup as the STOP command. In effect, EXEC acts as a chain to a non-Synergy program, including shell scripts. You cannot return from a successful EXEC.

Important

Do not use this routine in an ELB that is being used with xfServerPlus.

Note

On Unix, if you execute a shell script, the first line must begin with #! or the script will not execute. For example:

#! /bin/bash

If you are using option #22 for LPQUE, make sure the first line of dblpq includes this line.

Examples

The example below executes the program /usr/games/rogue with -s as an argument. Note that the WRITES statement is only executed if the EXEC subroutine fails.

.define TTCHN           ,1
record
    program             ,a*,    "/usr/games/rogue"
    arg1                ,a*,    "-s"
proc
    open(TTCHN, o, "tt:")
    onerror nope
    xcall exec(program, arg1)
nope,
    writes(TTCHN, "Cannot execute: " + program)
    stop
end