Converts double to integer values.


Word( <nDouble> ) --> <nInteger>


<nDouble> is a numeric double value.


Word() return an integer in the range +-32767


This function converts double values to integers to use within the CALL command


The CA-Cl*pper NG states that Word() will only work when used in CALL commands parameter list, otherwise it will return NIL, in Harbour it will work anywhere.


Library is core




 Execute a C or Assembler procedure

     CALL <idProcedure> [WITH <exp list>]


     <idProcedure> is the name of the external procedure to CALL.

     WITH <exp list> is an optional list of up to seven expressions of
     any data type to pass to the external procedure.


     CALL executes a separately compiled or assembled procedure.  The
     procedure must be defined as FAR and end with a FAR return instruction.
     Place parameters on the stack using the C parameter passing convention.
     Each parameter consists of a FAR (four-byte) pointer to the actual
     parameter value.  When necessary you may use the WORD() function to pass
     a two-byte binary value in the WITH expression.  The DX:BX and ES:BX
     registers also contain a copy of the first four bytes of parameter

     The procedure must preserve the BP, SS, SI, DI, ES, and DS registers as
     well as clear the direction flag.

     CALL is a compatibility command and therefore not recommended.  It is
     superseded by the Extend system which provides functions for passing
     data to and from Clipper.


     .  Character strings:  Pass a character argument as a FAR pointer
        to a null-terminated string (a string with a 00 hex byte at the end).

     .  Numeric values:  Pass each numeric argument as a FAR pointer
        to an eight-byte IEEE floating point value.  To pass a parameter as
        an integer, use the WORD() function.  The WORD() function converts
        the numeric value to a two-byte binary integer, and passes the
        integer value directly rather than through a pointer.  Note that
        WORD() will not work for values outside of the #32,767 range since
        these values cannot be accurately represented as two-byte integers.

     .  Date values:  Pass each date argument as a FAR pointer to a
        four-byte (long) integer containing a Julian day number.

     .  Logical values:  Pass each logical argument as a FAR pointer
        to a two-byte binary integer containing zero for false (.F.) and one
        for  true (.T.) .

     .  Compiling and linking:  CALLed programs must conform to the
        following rules:

        -  Procedures must be in INTEL 8086 relocatable object file
           format with the .OBJ file extension.

        -  Procedures must follow the C calling and parameter passing

        -  Procedures must be available to the linker at link time, along
           with the library of the source compiler.  You will need runtime
           support for any language other than assembly language.  See your
           compiler manual for further information.

     .  Screen position:  When using a CALL statement to access a C or
        Assembler routine, the cursor is set to the current screen position
        within the C or Assembler routine.

     .  Microsoft C: Microsoft C versions 5.0 and above place a
        leading underscore on function names when they are compiled.  To call
        them, therefore, you must CALL _<function>.

     .  dBASE III PLUS: To convert a dBASE III PLUS load module to a
        Clipper-compatible module, add the following statements to your
        .asm file:

        PUBLIC <proc>


        push ds
        mov ds, dx

     Warning!  Modifying the parameter values may produce incorrect or
     unexpected results and, therefore, is strongly discouraged.

 Files   Library is CLIPPER.LIB.

See Also: WORD()*

C5 Commands

 ?|??            Display one or more values to the console
 @...BOX         Draw a box on the screen
 @...CLEAR       Clear a rectangular region of the screen
 @...GET         Create a new Get object and display it
 @...PROMPT      Paint a menu item and define a message
 @...SAY         Display data at a specified screen or printer row and column
 @...TO          Draw a single- or double-line box
 ACCEPT*         Place keyboard input into a memory variable
 APPEND BLANK    Add a new record to the current database file
 APPEND FROM     Import records from a database (.dbf) file or ASCII text file
 AVERAGE         Average numeric expressions in the current work area
 CALL*           Execute a C or Assembler procedure
 CANCEL*         Terminate program processing
 CLEAR ALL*      Close files and release public and private variables
 CLEAR GETS      Release Get objects from the current GetList array
 CLEAR MEMORY    Release all public and private variables
 CLEAR SCREEN    Clear the screen and return the cursor home
 CLEAR TYPEAHEAD Empty the keyboard buffer
 CLOSE           Close a specific set of files
 COMMIT          Perform a solid-disk write for all active work areas
 CONTINUE        Resume a pending LOCATE
 COPY FILE       Copy a file to a new file or to a device
 COPY STRUCTURE  Copy the current .dbf structure to a new database (.dbf) file
 COPY STRU EXTE  Copy field definitions to a .dbf file
 COPY TO         Export records to a database (.dbf) file or ASCII text file
 COUNT           Tally records to a variable
 CREATE          Create an empty structure extended (.dbf) file
 CREATE FROM     Create a new .dbf file from a structure extended file
 DELETE          Mark records for deletion
 DELETE FILE     Remove a file from disk
 DELETE TAG      Delete a tag
 DIR*            Display a listing of files from a specified path
 DISPLAY         Display records to the console
 EJECT           Advance the printhead to top of form
 ERASE           Remove a file from disk
 FIND*           Search an index for a specified key value
 GO              Move the pointer to the specified identity
 INDEX           Create an index file
 INPUT*          Enter the result of an expression into a variable
 JOIN            Create a new database file by merging from two work areas
 KEYBOARD        Stuff a string into the keyboard buffer
 LABEL FORM      Display labels to the console
 LIST            List records to the console
 LOCATE          Search sequentially for a record matching a condition
 MENU TO         Execute a lightbar menu for defined PROMPTs
 NOTE*           Place a single-line comment in a program file
 PACK            Remove deleted records from a database file
 QUIT            Terminate program processing
 READ            Activate full-screen editing mode using Get objects
 RECALL          Restore records marked for deletion
 REINDEX         Rebuild open indexes in the current work area
 RELEASE         Delete public and private memory variables
 RENAME          Change the name of a file
 REPLACE         Assign new values to field variables
 REPORT FORM     Display a report to the console
 RESTORE         Retrieve memory variables from a memory (.mem) file
 RESTORE SCREEN* Display a saved screen
 RUN             Execute a DOS command or program
 SAVE            Save variables to a memory (.mem) file
 SAVE SCREEN*    Save the current screen to a buffer or variable
 SEEK            Search an order for a specified key value
 SELECT          Change the current work area
 SET ALTERNATE   Echo console output to a text file
 SET BELL        Toggle sounding of the bell during full-screen operations
 SET CENTURY     Modify the date format to include or omit century digits
 SET COLOR*      Define screen colors
 SET CONFIRM     Toggle required exit key to terminate GETs
 SET CONSOLE     Toggle console display to the screen
 SET CURSOR      Toggle the screen cursor on or off
 SET DATE        Set the date format for input and display
 SET DECIMALS    Set the number of decimal places to be displayed
 SET DEFAULT     Set the CA-Clipper default drive and directory
 SET DELETED     Toggle filtering of deleted records
 SET DELIMITERS  Toggle or define GET delimiters
 SET DESCENDING  Change the descending flag of the controlling order
 SET DEVICE      Direct @...SAYs to the screen or printer
 SET EPOCH       Control the interpretation of dates with no century digits
 SET ESCAPE      Toggle Esc as a READ exit key
 SET EXACT*      Toggle exact matches for character strings
 SET EXCLUSIVE*  Establish shared or exclusive USE of database files
 SET FILTER      Hide records not meeting a condition
 SET FIXED       Toggle fixing of the number of decimal digits displayed
 SET FORMAT*     Activate a format when READ is executed
 SET FUNCTION    Assign a character string to a function key
 SET INDEX       Open one or more order bags in the current work area
 SET INTENSITY   Toggle enhanced display of GETs and PROMPTs
 SET KEY         Assign a procedure invocation to a key
 SET MARGIN      Set the page offset for all printed output
 SET MEMOBLOCK   Change the block size for memo files
 SET MESSAGE     Set the @...PROMPT message line row
 SET OPTIMIZE    Change the setting that optimizes using open orders
 SET ORDER       Select the controlling order
 SET PATH        Specify the CA-Clipper search path for opening files
 SET PRINTER     Toggle echo of output to printer or set the print destination
 SET PROCEDURE*  Compile procedures and functions into the current object file
 SET RELATION    Relate two work areas by a key value or record number
 SET SCOPE       Change the boundaries for scoping keys in controlling order
 SET SCOPEBOTTOM Change bottom boundary for scoping keys in controlling order
 SET SCOPETOP    Change top boundary for scoping keys in controlling order
 SET SCOREBOARD  Toggle the message display from READ or MEMOEDIT()
 SET SOFTSEEK    Toggle relative seeking
 SET TYPEAHEAD   Set the size of the keyboard buffer
 SET UNIQUE*     Toggle inclusion of non-unique keys into an index
 SET WRAP*       Toggle wrapping of the highlight in menus
 SKIP            Move the record pointer to a new position
 SORT            Copy to a database (.dbf) file in sorted order
 STORE*          Assign a value to one or more variables
 SUM             Sum numeric expressions and assign results to variables
 TEXT*           Display a literal block of text
 TOTAL           Summarize records by key value to a database (.dbf) file
 TYPE            Display the contents of a text file
 UNLOCK          Release file/record locks set by the current user
 UPDATE          Update current database file from another database file
 USE             Open an existing database (.dbf) and its associated files
 WAIT*           Suspend program processing until a key is pressed
 ZAP             Remove all records from the current database file


C5 Flow Control Commands, Statements and Funtions

Commands :


Execute a C or Assembler procedure

CALL <idProcedure> [WITH <exp list>]


Terminate program processing


DO* :

Call a procedure

DO <idProcedure> [WITH <argument list>]


Terminate program processing



Execute a DOS command or program

RUN | !* <xcCommandLine>


Assign a procedure invocation to a key

SET KEY <nInkeyCode> TO [<idProcedure>]


Compile procedures/functions into the current .OBJ file

SET PROCEDURE TO [<idProgramFile>[.<ext>]]


Suspend program processing until a key is pressed

WAIT [<expPrompt>] [TO <idVar>]

Statements :


Declare a module identifier

ANNOUNCE <idModule>


Define a sequence of statements for a BREAK

    [BREAK [<exp>]]
    [RECOVER [USING <idVar>]]


Execute one of several alternative blocks of statements

   CASE <lCondition1>
   [CASE <lCondition2>]


Execute a loop while a condition is true (.T.)

[DO] WHILE <lCondition>


Declare an exit procedure

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


Declare a list of procedure or user-defined function names

EXTERNAL <idProcedure list>


Execute a block of statements a specified number of times

FOR <idCounter> := <nStart> TO <nEnd> [STEP <nIncrement>]


Declare a user-defined function name and formal parameters

[STATIC] FUNCTION <idFunction>[(<idParam list>)]
    [LOCAL <identifier> [[:= <initializer>], ... ]]
    [STATIC <identifier> [[:= <initializer>], ... ]]
    [FIELD <identifier list> [IN <idAlias>]]
    [MEMVAR <identifier list>]
    . <executable statements>
RETURN <exp>

IF :

Execute one of several alternative blocks of statements

IF <lCondition1>
[ELSEIF <lCondition2>]


Declare an initialization procedure

INIT PROCEDURE <idProcedure> [(<idParam list>)]
    [FIELD <idField list> [IN <idAlias>]]
    [LOCAL <identifier> [[:= <initializer>]]]
    [MEMVAR <identifer list>]
    . <executable statements>


Place a single-line comment in a program file

NOTE This is a comment line


Create private parameter variables

PARAMETERS <idPrivate list>


Declare a procedure name and formal parameters

[STATIC] PROCEDURE <idProcedure> [(<idParam list>)]
    [FIELD <idField list> [IN <idAlias>]
    [LOCAL <identifier> [[:= <initializer>], ... ]]
    [MEMVAR <identifier list>]
    [STATIC <identifier> [[:= <initializer>], ... ]]
    . <executable statements>


Declare a module request list

REQUEST <idModule list>


Terminate a procedure, user-defined function or program

RETURN [<exp>]

Functions :


Branch out of a BEGIN SEQUENCE…END construct

BREAK(<exp>) --> NIL

EVAL() :

Evaluate a code block

EVAL(<bBlock>, [<BlockArg list>]) --> LastBlockValue

IF() :

Return the result of an expression based on a condition

[I]IF(<lCondition>, <expTrue>, <expFalse>) --> Value


Determine the position of the last actual parameter passed

PCOUNT() --> nLastArgumentPos


Assign an action block to a key

SETKEY(<nInkeyCode>, [<bAction>]) --> bCurrentAction


Toggle Alt-C and Ctrl-Break as program termination keys

SETCANCEL([<lToggle>]) --> lCurrentSetting

WORD()* :

Convert CALL command numeric parameters from double to int

WORD(<nNumber>) --> NIL