The EXECUTE or PERFORM statement allows the currently executing program to pause and execute any other UNIX/NT program, including another jBC program or a jBASE command.



{PASSLIST expression} {RTNLIST {variable}}
{PASSDATA variable} {RTNDATA variable}

Data, Dynamic Arrays and lists can be passed to programs written in jBC. Screen output and error messages can be intercepted from any program.



The PERFORMed expression can be formed from any jBASE construct. The system will not verify that the command exists before executing it. The command is executed by a new Bourne Shell (sh) by default. The shell type can be changed by preceding the command with a CHAR(255) (or equivalently, @IM) concatenated with either "k", "c", or "s" to signify the Korn shell, C shell or Bourne Shell.

Variables used to pass data to the executed program should have been assigned to a value before they are used. Any variable name may be used to receive data.

CAPTURING variable
The capturing clause will capture any output that the executing program would normally send to the terminal screen and place it in the variable specified. Every newline normally sent to the terminal is replaced with a field mark in the variable.

RETURNING variable or SETTING variable
The returning and setting clauses are identical. Both clauses will capture the output associated with any error messages the executing program issues. The first field of the variable will be set to the exit code of the program.

PASSLIST variable
The PASSLIST clause allows jBASE programs to exchange lists or dynamic arrays between them. The variable should contain the list that the program wishes to pass to the jBASE program it is executing. The program to be executed should be able to process lists, otherwise the list will just be ignored. If the variable name is not specified then the clause will pass the default select list to the executing program.

RTNLIST variable
If the program executed sets up a list then the RTNLIST clause may be used to place that list into a specified variable. If the variable is omitted then the list is placed in the default list variable.

PASSDATA variable
The data in the specified variable is passed to another jBC program. The executing jBC program should retrieve the data using the COLLECTDATA statement.

RTNDATA variable
The RTNDATA statement returns any data passed from an executing jBC program in the specified variable. The executing jBC program should use the RTNDATA statement to pass data back to the calling program.



The clauses may be specified in any order within the statement but only one of each clause may exist.



OPEN "DataFile" ELSE ABORT 201, "DataFile"