CALL*
 Ejecuta un procedimiento en lenguaje C o Ensamblador
------------------------------------------------------------------------------
 Sintaxis

     CALL <idProcedimiento> [WITH <lista exp>]

 Argumentos

     <idProcedimiento> es el nombre del procedimiento externo que se va
     a invocar.

     WITH <lista exp> es una lista opcional de hasta siete expresiones
     de cualquier tipo de datos, que se pasan al procedimiento externo.

 Descripción

     CALL ejecuta un procedimiento compilado o ensamblado por separado. El
     procedimiento debe haberse definido como FAR y terminar con una
     instrucción de retorno FAR. Los parámetros se sitúan en la pila de
     acuerdo con la convención de paso de parámetros en lenguaje C. Cada
     parámetro está formado por un puntero FAR (cuatro bytes) que apunta al
     valor del parámetro real. Si es necesario, puede utilizar la función
     WORD() para pasar un valor binario de dos bytes con la expresión WITH.
     Los registros DX:BX y ES:BX también contienen una copia de los cuatro
     primeros bytes de la información de los parámetros.

     El procedimiento debe conservar los registros BP, SS, SI, DI, ES y DS y
     borrar el indicador de dirección.

     CALL es un mandato de compatibilidad, por lo que su uso no es
     recomendable. Es innecesario en el Sistema Extendido, que dispone de
     funciones para pasar datos a y desde CA-Clipper.

 Notas

     ■ Cadenas de caracteres: Pase un argumento de caracteres como un
        puntero FAR a una cadena terminada con el carácter nulo (una cadena
        con un byte 00 hex al final).

     ■ Valores numéricos: Pase los argumentos numéricos como punteros
        FAR a un valor de coma flotante IEEE de ocho bytes. Para pasar un
        parámetro como entero es necesario utilizar la función WORD(). Esta
        función convierte un valor numérico en un entero binario de dos
        bytes y pasa el valor entero directamente, en vez utilizar un
        puntero. Recuerde que WORD() no puede convertir valores fuera del
        rango ±32.767, ya que estos valores no pueden representarse
        exactamente como enteros de dos bytes.

     ■ Valores de fecha: Pase los argumentos de fecha como punteros
        FAR a un entero de cuatro bytes (largo) que contiene un día del
        calendario juliano.

     ■ Valores lógicos: Pase los argumentos lógicos como punteros FAR a
        enteros binarios de dos bytes que contienen cero para falso (.F.) y
        uno para verdadero (.T.) .

     ■ Compilación y enlazado: Los programas invocados deben cumplir
        las siguientes reglas:

        - Los procedimientos deben estar en formato de fichero objeto
           reubicable INTEL 8086, con una extensión de fichero .OBJ.

        - Los procedimientos deben seguir las convenciones de invocación
           y paso de parámetros del lenguaje C.

        - Los procedimientos deberán estar disponibles para el enlazador
           en tiempo de enlace, junto con la biblioteca del compilador fuente.
           Necesitará soporte de ejecución para cualquier lenguaje que no sea
           el lenguaje ensamblador. Si desea más información, consulte el
           manual de su compilador.

     ■ Posición de pantalla: Si se utiliza una sentencia CALL para
        acceder a rutinas en C o Ensamblador, el cursor se sitúa en la
        posición de pantalla que establezca la rutina en C o Ensamblador.

     ■ Microsoft C: Las versiones 5.0 y superiores de Microsoft C
        colocan un subrayado inicial en los nombres de función al
        compilarlas. Para invocarlas, por tanto, debe ejecutar CALL
        _<función>.

     ■ dBASE III PLUS: Para convertir un módulo de dBASE III PLUS en
        un módulo compatible con CA-Clipper, añada las siguientes sentencias
        a su fichero .asm:

        PUBLIC <proc>

        y

        push ds
        mov ds, dx

     ¡Advertencia! La modificación de los valores de los parámetros
     puede producir resultados incorrectos o imprevistos, por lo que es
     totalmente desaconsejable.

 Ficheros   La biblioteca asociada es CLIPPER.LIB.

 To download this example - click here.

See Also: WORD()*