Try OpenEdge Now
skip to main content
ABL Reference
ABL Syntax Reference : UNIX statement
 

UNIX statement

(UNIX only)
Runs a program, UNIX command, or UNIX script, or starts a UNIX interactive shell to allow interactive processing of UNIX commands.

Syntax

UNIX
[ SILENT ]
[ command-token | VALUE ( expression ) ] ...
SILENT
After processing a UNIX statement, the AVM shell pauses and prompts you to press SPACEBAR to continue. You can use the SILENT option to eliminate this pause. Use this option only if you are sure that the UNIX program, command, or batch file does not generate any output to the screen.
command-token | VALUE ( expression )
One or more command (command-token) words and symbols that you want to pass the UNIX operating system to execute. The VALUE option generates the command tokens included in expression, a character string expression. The specified combination of command-token and VALUE ( expression ) options can form any legal combination of commands and command options permitted by UNIX, including programs, built-in commands, and scripts. If you do not use any of these options, the UNIX statement invokes the UNIX shell and remains there until you press CTRL+D or the EOF character set by the UNIX stty command.

Examples

On UNIX, procedure r-unix.p starts a shell and in it runs the UNIX "ls" command. In Windows, this procedure starts a command processor and runs the DOS "dir" command in it:
r-unix.p
IF OPSYS = "UNIX" THEN UNIX ls.
ELSE IF OPSYS = "WIN32" THEN DOS dir.
ELSE DISPLAY OPSYS "is an unsupported operating system".
In r-unx.p, if you type an L, the AVM runs the DOS dir command or the UNIX ls command. If you enter a procedure name that is stored in the proc variable, the RUN statement then runs the procedure.
r-unx.p
DEFINE VARIABLE proc AS CHARACTER NO-UNDO FORMAT "x(40)".

REPEAT:
DISPLAY "Enter L to list your files"
WITH ROW 5 CENTERED FRAME a.
SET proc LABEL "Enter a valid Procedure Name to run"
WITH ROW 9 CENTERED FRAME b.
IF proc = "L" THEN
IF OPSYS = "UNIX" THEN UNIX ls.
ELSE IF OPSYS = "WIN32" then DOS dir.
ELSE display "Operating system" OPSYS "is not supported".
  ELSE DO:
HIDE FRAME a.
HIDE FRAME b.
RUN VALUE(proc).
  END.
END.

Notes

*If you are using Windows and you use the UNIX statement in a procedure, that procedure will compile. The procedure will run as long as flow of control does not pass through the UNIX statement.
*This command does not exit to UNIX and return. It creates a shell within ABL to execute the command. Thus, you cannot use the UNIX statement as a substitute for the QUIT statement.
*When you use the UNIX cp command as an ABL statement, ABL assumes that a period (.) indicates the end of the statement. This causes the cp command to display a message stating that it requires two arguments. For example, ABL uses the period as the end of the statement indicator:
UNIX cp usr/myfile.
To use the period as part of a UNIX command, enclose the command in quotation marks. For example:
UNIX "cp usr/myfile."

See also

DOS statement, OPSYS function, OS-COMMAND statement