execute Statement (UNIX)

For Windows: Not supported.

The execute statement executes a UNIX command from within a FlashBASIC or BASIC program.

Syntax

execute "!unix.command" {capturing var} {returning var}

Parameter(s)

!unix.command

UNIX command to execute. By using the format !unix.command, it is not necessary to create UNIX commands in a D3 master dictionary. Any valid UNIX command can be used.

capturing var  

Variable specified by capturing receives the information normally directed to stdout. Each line is separated by an attribute mark.

returning var

Variable specified by returning receives the exit code of the !unix.command. If the command cannot be executed, the first value returned is -1, followed by a space and the decimal value of the error code, errno, in the range of 0 through 255.

Description

There is no limitation on the size of the captured data. UNIX tabulations characters are not replaced. To replace tabulations, use pr(1), for instance, as a filter (see the example below). stderr remains associated to the user’s terminal.

To capture the output normally directed to the stderr file, the standard UNIX shell syntax can be used to redirect stderr to stdout as in the example below:

execute ’cc -o mypgm mypgm.c 2>&1’ capturing cc.result

See the UNIX documentation for information about sh(1).

Currently, D3 implementations do not allow reading data that has been stacked by a previous BASIC data statement.

Example(s)

This is an example of a simple file transfer:

import

001 *

002 ! Copy a file from UNIX

003 tclread line

004 line=trim(line)

005 if line=’’ then goto usage

006 *

007 uname=field(line,’ ’,2)

008 pfile=field(line,’ ’,3)

009 pname=field(line,’ ’,4)

010 if uname=’’ or pfile=’’ or pname=’’ then goto usage

011 open pfile

012 *

013 execute ’!exec cat ’:uname capturing item

014 write item on pname

015 stop

016 *

017 usage:*

018 crt ’Usage: import unixfile pickfile item’

The cat UNIX command copies a file to stdout, which is captured.

To expand the tabulations into the appropriate number of spaces to set tabulations to columns 5, 9, and so on, replace line 13 by (for example):

execute ’!exec cat ’:uname:’ | pr -t -e4 ’ capturing item

In this example the TCL !exec UNIX command is used to avoid the creation of an intermediate shell.

See Also

%popen() Function, Access Query Language, Active List, begin work Statement, C Functions Overview, capture-off Command, capture-on Command, capturing Clause, cfunction Statement, chain Statement, charges Command, data Statement, debug Statement, enter Statement, esc-level Command, execute Statement, FlashBASIC and BASIC Differences, readnext Statement, select Statement, Statements and Functions, system() Function, tabs Command, tcl Statement, term Command