DO

From Recital Documentation Wiki
Revision as of 14:12, 1 December 2009 by Yvonnemilne (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

Purpose

Execute a Recital procedure, program or stored procedure


Syntax

DO <.prg filename> | <procedure-name> | (<expC>)

[WITH <parameter> [,<parameter>]...]

[WITH <array> [,<array>]...]


See Also

ALIAS, CERROR(), COMPILE, DEBUG, DO CASE, DO WHILE, LINK, MODIFY COMMAND, PARAMETERS, PCOUNT(), PROCEDURE, Recital Linker, SET CLIPPER, SET COMPATIBLE, SET PATH, SET PSHARE


Description

The DO command is used to execute the Recital/4GL program <.prg filename> or procedure <procedure-name>. The filename or procedure name can be substituted with a <expC>, enclosed in round brackets, which returns a valid filename. If no file extension is specified then '.prg' is used. If the full path is not given, the file is assumed to be in the current directory. The path (SET PATH) will also be searched it the file is not found in the current directory. When a program encounters an end of file or a RETURN statement, control returns back to the calling program. Control returns back to the keyboard if the <.prg filename> was called from interactive command mode.

Program files can be linked together if required, using the LINK command or the 'dbl' Recital linker utility.

WITH <parameter> | <array>

You may optionally pass parameters including arrays to the called program. Parameters passed using the DO WITH <parameters> syntax are passed by reference and can be changed by the called procedure. Procedures can also be called using function syntax procedure(parameter1,parameter2…), in which case the parameters are passed by value and cannot be changed by the called procedure.

Procedures expecting parameters should have a PARAMETERS statement as the first executable statement after the procedure declaration. The number of parameters passed to a procedure can be checked using the PCOUNT() function. If CLIPPER is set ON and not all parameters are passed, the variables in the PARAMETERS command not passed will be defined as undefined, type "U" instead of logical .F..


Example

procedure name
  parameters a,b,c
  a = b*c
return
//
name(a,10,20)
// is equivalent to
do name with a,10,20


Products

Recital Server, Recital