[<<Previous Entry] [^^Up^^] [Next Entry>>] [Menu] [About The Guide]
 EXIT PROCEDURE
 Declare an exit procedure
------------------------------------------------------------------------------
 Syntax

     EXIT PROCEDURE <idProcedure>
        [FIELD <idField list> [IN <idAlias>]]
        [LOCAL <identifier> [[:= <initializer>]]]
        [MEMVAR <identifer list>]
        .
        . <executable statements>
        .
        [RETURN]

 Arguments

     EXIT PROCEDURE declares a procedure that will be executed on program
     termination.

     <idProcedure> is the name of the exit procedure to declare. Exit
     procedure names can be any length, but only the first 10 characters are
     significant.  Names may not begin with an underscore but can contain any
     combination of characters, numbers, or underscores.

     FIELD declares a list of identifiers to use as field names whenever
     encountered.  If the IN clause is specified, referring to the declared
     name includes an implicit reference to the specified alias.

     LOCAL declares and optionally initializes a list of variables or
     arrays whose visibility and lifetime is the current procedure.

     MEMVAR declares a list of identifiers to use as private or public
     memory variables or arrays whenever encountered.

     RETURN passes control to the next exit procedure or to the operating
     system, if no other exit procedures are pending.

 Description

     The EXIT PROCEDURE statement declares a procedure that will be executed
     upon program termination.  EXIT procedures are called after the last
     executable statement in a CA-Clipper application has completed.  EXIT
     PROCEDUREs can be used to perform common housekeeping tasks such as
     saving configuration settings to a file, closing a log file, or
     concluding a communications session.

     The visibility of exit procedures is restricted to the system;
     therefore, it is not possible to call an EXIT PROCEDURE from a procedure
     or user-defined function.  Exit procedures do not receive parameters.

     Once the last executable statement has completed, control passes from
     one EXIT PROCEDURE to the next until all procedures in the exit list
     have been called.  Control then passes to the operating system.

     The ANNOUNCE statement declares a module identifier for a source (.prg)
     file.  Once declared, EXIT PROCEDUREs are referenced with this module
     identifier.  An application may use any number of exit procedures by
     explicitly REQUESTing their module identifiers.

     The EXIT PROCEDUREs requested for an application are collectively
     referred to as the exit list.  There is no mandatory execution order of
     procedures in the exit list; however, if an EXIT PROCEDURE is declared
     in the same source (.prg) file as the application's primary routine
     (root), it is guaranteed to be the first exit procedure called.

     Termination of a given CA-Clipper application can be attributed to any
     of the following:

     .  RETURNing from the primary (root) routine

     .  the QUIT command

     .  issuing a BREAK without an enclosing BEGIN SEQUENCE...END

     .  unrecoverable error

     Execution of an EXIT PROCEDURE cannot be guaranteed when the system
     encounters an unrecoverable error.  If an error is raised during an exit
     procedure, the system returns to DOS.  Pending exit procedures are not
     called.

 Examples

     .  This example illustrates construction of a simple timing
        mechanism using INIT and EXIT PROCEDUREs:

        // prints the amount of time required to read,
        // sort, and display a list of file names.

        ANNOUNCE MySystem

        STATIC nStart

        PROCEDURE Main()
           AEVAL( ASORT( DIRECTORY( "*.*" ) ),;
              { | aFileInfo | QOUT( aFileInfo[ 1 ] ) } )
           RETURN

        INIT PROCEDURE MyInit()
           nStart := SECONDS()
           RETURN

        EXIT PROCEDURE MyExit()
           ?
           ? "Elapsed Time: "
           ?? SECONDS() - nStart
           RETURN


See Also: ANNOUNCE REQUEST INIT PROCEDURE
This page created by ng2html v1.05, the Norton guide to HTML conversion utility. Written by Dave Pearson