4D v16.3

Comandos del Compilador

Inicio

 
4D v16.3
Comandos del Compilador

Comandos del Compilador  


 

 

El compilador integrado de 4D traduce sus aplicaciones de bases de datos en instrucciones de nivel de ensamblador. Las ventajas del compilador son:

  • Velocidad: su base de datos puede se ejecuta de 3 a 1 000 veces más rápido.
  • Verificación del código: su aplicación de base de datos se revisa para tener consistencia en el código. Se detectan los conflictos de lógica y de sintaxis.
  • Protección: una vez compilada su base de datos, puede borrar el código interpretado. Entonces, la base compilada tiene las mismas funcionalidades que la base original, excepto que la estructura y los métodos no pueden ser visualizados o modificados, deliberadamente o inadvertidamente.
  • Aplicaciones independientes "doble-clic": las bases compiladas también pueden transformarse en aplicaciones independientes (archivos .EXE) con su propio icono.
  • Ejecución en modo apropiativo: sólo el código compilado puedes ser ejecutado en un proceso apropiativo.

Para una descripción del funcionamiento del compilador, consulte el Manual de Diseño.

Los comandos de este tema están relacionados con el uso del compilador. Ellos le permiten normalizar los tipos de datos a través de su base de datos. El comando IDLE se utiliza específicamente en las bases compiladas.

C_BLOBC_REALC_TEXT
C_BOOLEANC_LONGINTC_DATE
C_POINTERC_PICTUREC_TIME
C_OBJECTIDLE

Nota de compatibilidad: los comandos obsoletos _o_C_GRAPH_o_C_INTEGER y _o_C_STRING ya no deben utilizarse.

Estos comandos, excepto IDLE, declaran a las variables y les asignan un tipo de datos específico. La declaración de variables resuelve ambigüedades relacionadas con el tipo de dato de las variables. Cuando una variable no es declarada con uno de estos comandos, el compilador intenta determinar el tipo de dato de la variable. Es difícil para el compilador determinar los tipos de datos de una variable utilizada en un formulario. Por lo tanto, es particularmente importante utilizar estos comandos para declarar las variables utilizadas en formularios.

Nota: para ahorrar tiempo, puede utilizar la opción de generación y actualización de métodos de digitación (llamada “Métodos compilador”) que se encuentra en la ventana del compilador. Esta opción crea automáticamente métodos de declaración que evalúan y asignan un tipo para todas las variables utilizadas en la base.

Los Arrays son variables que deben respetar las mismas reglas que las variables estándar con respecto a la compilación. Los comandos de declaración de los arrays se agrupan en el tema “Arrays”.

  • No debe dar el mismo nombre a más de un método o variable. No puede tener un método con el mismo nombre de una variable.
  • No se permite la indirección de variables como se utilizó en 4D versión 1. No puede utilizar indirección alfa, con el símbolo sección (§), para referenciar variables indirectamente. No puede utilizar indirección numérica, con corchetes ({...}). Los corchetes sólo pueden ser utilizados cuando se accede a elementos específicos de un Array que ha sido declarado. Sin embargo, puede utilizar indirección de parámetros.
  • No puede cambiar el tipo de dato de una variable o un Array.
  • No puede convertir un Array de una dimensión en un Array bidimensional y viceversa.
  • No puede modificar la longitud de una variable cadena ni de los elementos en arrays alfanuméricos.
  • Aunque el compilador deduce el tipo de variable por usted, cuando los tipos de datos sean ambiguos, como en un formulario, debe especificar el tipo de dato utilizando las directivas de compilación.
  • Otra razón para declarar explícitamente los tipos de variables es la optimización de su código. Esta regla aplica especialmente a cualquier variable utilizada como contador. Utilice variables de tipo Entero largo para asegurar un máximo desempeño.
  • Para borrar una variable (inicializarla en un valor nulo), utilice el comando CLEAR VARIABLE con el nombre de la variable. No utilice una cadena para representar el nombre de la variable con el comando CLEAR VARIABLE.
  • La función Undefined siempre devolverá False. Las variables siempre estarán definidas.
  • Las operaciones numéricas efectuadas en variables de tipo Entero largo y Entero son generalmente mucho más rápidas que las operaciones efectuadas en variables de tipo numérico (real).
  • Si seleccionó la propiedad "Puede ejecutarse en un proceso apropiativo" para el método, el código no debe llamar a los comandos hilo no seguros o a otros métodos hilo no seguro.

Estos principios se detallan en las siguientes secciones:

Las siguientes son algunas declaraciones de variables estándar para el compilador:

 C_BLOB(vxMyBlob// La variable proceso vxMBlob está declarada como una variable de tipo BLOB
 C_BOOLEAN(<>OnWindows// La variable interproceso <>OnWindows está declarada como una variable de tipo Booleano
 C_DATE($vdCurDate// La variable local $vdCurDate está declarada como una variable de tipo Fecha
 C_LONGINT(vg1;vg2;vg3// Las 3 variables de proceso vg1, vg2 y vg3 están declaradas como variables de tipo entero largo

En el siguiente ejemplo, el método proyecto UnMetodoEntreOtros declara 3 parámetros:

 
  // Método proyecto UnMetodoEntreOtros
  // UnMetodoEntreOtros ( Real ; Date { ; Long } )
  // UnMetodoEntreOtros ( Amount ; Date{ ; Ratio } )
 
 C_REAL($1// 1er parámetro es de tipo Real
 C_DATE($2// 2do parámetro es de tipo Entero
 C_LONGINT($3// 3er parámetro es de tipo Entero largo
 
  // ...

En el siguiente ejemplo, el método proyecto Mayusculas acepta un parámetro de tipo texto y devuelve un texto:

  // Método proyecto Mayusculas
  // Mayusculas ( Texto) -> Texto
  // Mayusculas ( Cadena fuente ) -> Cadena en mayúsculas
 
 C_TEXT($0;$1)
 $0:=Uppercase(Substring($1;1;1))+Lowercase(Substring($1;2))

En el siguiente ejemplo, el método de proyecto ENVIAR PAQUETES acepta un parámetro tipo Hora seguido por una variable de parámetros de tipo Texto:

  ` Método de proyecto ENVIAR PAQUETES
  ` ENVIAR PAQUETES ( Hora; Texto { ; Texot2... ; TextoN } )
  ` ENVIAR PAQUETES ( docRef ; Data { ; Data2... ; DataN } )
 
 C_TIME($1)
 C_TEXT(${2})
 C_LONGINT($vlPacket)
 
 For($vlPacket;2;Count parameters)
    SEND PACKET($1;${$vlPacket})
 End for

En el siguiente ejemplo, el método de proyecto COMPILER_Param_Predeclare28 predeclara la sintaxis de otros métodos proyecto para el compilador:

  // Método proyecto COMPILER_Param_Predeclare28
 
 C_REAL(UnMetodoEntreOtros;$1// UnMetodoEntreOtros( Real ; Integer { ; Long } )
 C_DATE(UnMetodoEntreOtros;$2// ...
 C_LONGINT(UnMetodoEntreOtros;$3// ...
 C_TEXT(Capitalize;$0;$1// Capitalize ( Text) -> Text
 C_TIME(SEND PACKETS;$1// SEND PACKETS ( Time ; Text { ; Text2... ; TextN } )
 C_TEXT(SEND PACKETS;${2}) // ...




Ver también 

_o_C_GRAPH
_o_C_INTEGER
_o_C_STRING
C_BLOB
C_BOOLEAN
C_DATE
C_LONGINT
C_PICTURE
C_POINTER
C_REAL
C_TEXT
C_TIME
IDLE

 
PROPIEDADES 

Producto: 4D
Tema: Compilador

 
HISTORIA 

Modificado: 4D v15 R5

 
ARTICLE USAGE

Manual de lenguaje 4D ( 4D v16)
Manual de lenguaje 4D ( 4D v16.1)
Manual de lenguaje 4D ( 4D v16.2)
Manual de lenguaje 4D ( 4D v16.3)