4D v16.3

Convenciones

Inicio

 
4D v16.3
Convenciones

Convenciones  


 

 

Esta sección describe las reglas de escritura y de nombres aplicadas a los diferentes identificadores utilizados en el lenguaje 4D (variables, arrays, . El nombre de cada objeto debe respetar las siguientes reglas:

  • Un nombre debe comenzar por un carácter alfabético (una letra) o un guión bajo.
  • El nombre puede contener caracteres alfabéticos, caracteres numéricos, espacios y guiones bajos.
  • Las comas, barras oblicuas, comillas y dos puntos (:) no están permitidos.
  • Los puntos(".") y los corchetes ("[ ]") no están permitidos en los nombres de tablas, campos, métodos o variables cuando la notación objeto está activa. (ver Notación objeto )
  • Los caracteres reservados para utilizar como operadores, tales como el asterisco (*) y el +, no están permitidos.
  • 4D ignora los espacios vacíos al final.

Nota: las reglas adicionales deben ser respetadas cuando los objetos deben ser manipulados vía el SQL: sólo se aceptan los caracteres _0123456789abcdefghijklmnopqrstuvwxyz, y el nombre no debe incluir las palabras claves SQL (command, attribute, etc.). El área "SQL" del Inspector del editor de estructura indica automáticamente los caracteres no autorizados en el nombre de una tabla o de campo.

Tablas  

Designa una tabla ubicando su nombre entre corchetes: [...]. El nombre de una tabla puede contener hasta 31 caracteres.

Ejemplos

 DEFAULT TABLE([Orders])
 FORM SET INPUT([Clients];"Entry")
 ADD RECORD([Letters])

Campos  

Designa un campo especificando primero la tabla a la cual pertenece el campo. El nombre del campo se coloca inmediatamente después del nombre de la tabla. El nombre de un campo puede contener hasta 31 caracteres.

Ejemplos

 [Ordenes]Total:=Sum([Linea]Cantidad)
 QUERY([Clientes];[Clientes]Nombre="López")
 [Cartas]Texto:=Capitalize text([Cartas]Texto)

Designa una variable interproceso precediendo el nombre de la variable con los símbolos (<>), un signo “menor que” seguido por un signo “mayor que”.

Nota: esta sintaxis se puede utilizar en Windows y Macintosh. Además, en Macintosh únicamente, puede utilizar el carácter diamante (Opción-Mayús-V en teclado en castellano).

Una variable interproceso puede tener hasta 255 caracteres (*), sin incluir los símbolos <>.

(*) 31 caracteres si la opción de compatibilidad "Guardar métodos como Unicode" está deseleccionada. (ver Página Compatibilidad)

Ejemplos

 <>vlProcesoID:=Current process
 <>vsKey:=Char(KeyCode)
 If(<>vtNombre#"")

Designa una variable proceso utilizando su nombre (el cual no puede comenzar con los símbolos <> ni por el signo dólar $). El nombre de una variable proceso puede contener hasta 255 caracteres(*).

(*) 31 caracteres si la opción de compatibilidad "Guardar los métodos en Unicode" está deseleccionada. (ver Página Compatibilidad)

Ejemplos

 <>vrGrandTotal:=Sum([Accounts]Amount)
 If(bValidate=1)
    vsCurrentName:=""

Designa  una variable local precediendo un signo dólar ($) a su nombre. Un nombre de variable local puede contener hasta 255 caracteres (*), sin incluir el signo dólar.

(*) 31 caracteres si la opción de compatibilidad "Guardar los métodos en Unicode" está deseleccionada. (ver Página Compatibilidad)

Ejemplos

 For($vlRecord;1;100)
    If($vsTempVar="No")
       $vsMyString:="Hello there"

Arrays  

Designa un array escribiendo su nombre, el cual es el nombre que pasó a un comando de declaración de array (tal como ARRAY LONGINT) cuando creó el Array. Los arrays son variables, y desde el punto de vista del alcance, como las variables, hay tres diferentes tipos de arrays:

  •  Arrays interproceso,
  •  Arrays proceso,
  • Arrays locales.

Arrays interproceso
El nombre de un Array interproceso está precedido por los símbolos (<>) — un signo “menor que” seguido por un signo “mayor que”.

Nota: esta sintaxis puede utilizarse en Windows y Macintosh. Además, únicamente en Macintosh, puede utilizar el carácter diamante (Opción-Mayús-V en teclado en castellano).

Un nombre de array interproceso puede contener hasta 255 caracteres (*), sin incluir los símbolos <>.

Ejemplos

 ARRAY TEXT(<>attemas;Records in table([Temas]))
 SORT ARRAY(<>asPalabrasClaves;>)
 ARRAY INTEGER(<>aiGranArray;10000)

Arrays proceso
Designa un array proceso utilizando su nombre (el cual no puede comenzar con los símbolos <> ni con el signo dólar $). El nombre de un array proceso puede contener hasta 255 caracteres (*).

Ejemplos

 ARRAY TEXT(atTemas;Records in table([Temas]))
 SORT ARRAY(asPalabrasClave;>)
 ARRAY INTEGER(aiGranArray;10000)

Arrays locales
El nombre de un array local está precedido por el signo dólar ($). El nombre de un Array local puede contener hasta 255 (*) caracteres, sin incluir el signo dólar.

Ejemplos

 ARRAY TEXT($atSubjects;Records in table([Topics]))
 SORT ARRAY($asKeywords;>)
 ARRAY INTEGER($aiBigArray;10000)

(*) 31 caracteres si la opción de compatibilidad "Guardar los métodos en Unicode" está deseleccionada. (ver Página Compatibilidad)

Elementos de arrays
Se referencia un elemento de un array interproceso, proceso o local utilizando las llaves ({…}). El elemento referenciado se indica por una expresión numérica.

Ejemplos

  ` Direccionar un elemento de un array interproceso
 If(<>asPalabrasClave{1}="Parar")
    <>atAsuntos{$vlElem}:=[Temas]Asunto
    $viPróximoValor:=<>aiGranArray{Size of array(<>aiGranArray)}
 
  ` Direccionar un elemento de un array proceso
    If(asPalabrasClave{1}="Parar")
       atAsuntos{$vlElem}:=[Temas]Asunto
       $viProximoValor:=aiGranArray{Size of array(aiGranArray)}
 
  ` Direccionar un elemento de un array local
       If($asPalabrasClave{1}="Parar")
          $atAsuntos{$vlElem}:=[Temas]Asunto
          $viProximotValor:=$aiGranArray{Size of array($aiGranArray)}

Elementos de arrays de dos dimensiones
Se referencia un elemento de un array de dos dimensiones utilizando un par de llaves ({…}). El elemento referenciado se indica por dos expresiones numéricas en dos pares de llaves.

Ejemplos

  ` Direccionar un elemento de un array interproceso de dos dimensiones
 If(<>asPalabrasClave{$vlLineaSiguiente}{1}="Parar")
    <>atAsuntos{10}{$vlElem}:=[Temas]Asunto
    $viValorSiguiente:=<>aiGranArray{$vlSet}{Size of array(<>aiGranArray{$vlSet})}
 
  ` Direccionar un elemento de un array de proceso de dos dimensiones
    If(asPalabrasClave{$vlLineaSiguiente}{1}="Parar")
       atSubjects{10}{$vlElem}:=[Temas]Tema
       $viValorSiguiente:=aiGranArray{$vlSet}{Size of array(aiGranArray{$vlSet})}
 
  ` Direccionar un elemento de un array local de dos dimensiones
       If($asPalabrasClave{$vlNLineaSiguiente}{1}="Parar")
          $atAsuntos{10}{$vlElem}:=[Temas]Tema
          $viValorSiguiente:=$aiGranArray{$vlSet}{Size of array($aiGranArray{$vlSet})}

Cuando se habilita la notación de objetos (ver Notación objeto ), se designa un atributo objeto (también llamado propiedad objeto) colocando un punto (".") entre el nombre del objeto (o atributo) y el nombre del atributo. Un nombre de atributo puede contener hasta 255 caracteres y distingue entre mayúsculas y minúsculas.

Ejemplos:

 myObject.myAttribute:="10"
 $value:=$clientObj.data.address.city

Nota: se aplican reglas adicionales a los nombres de atributos de objetos (deben ajustarse a la especificación ECMA Script). Para más información, consulte Uso de la notación objeto (pre versión).

Usted designa un formulario utilizando una expresión de tipo cadena alfanumérica que representa su nombre. El nombre de un formulario puede contener hasta 31 caracteres.

Ejemplos

 FORM SET INPUT([Personas];"Entrada")
 FORM SET OUTPUT([Personas];"Salida")
 DIALOG([Deposito];"Caja de notas"+String($vlEtapa))

Usted designa un objeto de formulario pasando su nombre como una cadena, precedido por el parámetro *. Un nombre de objeto puede contener hasta 255 bytes.

Ejemplo:

 OBJECT SET FONT(*;"Binfo";"Times")

Ver también la sección Propiedades de los objetos.

Nota: no confunda objetos de formulario (botones, list boxes, variables que se pueden introducir, etc.) y los objetos del lenguaje 4D. Los objetos del lenguaje 4D se crean y manipulan a través de notación objeto o comandos dedicados. (ver Objetos (Lenguaje))

Designe un método (procedimiento o función usuario) utilizando su nombre. El nombre de un método puede contener hasta 31 caracteres.

Nota: un método que no devuelve un resultado también se llama un procedimiento. Un método que devuelve un resultado también se llama función.

Ejemplos

 If(Nuevo cliente)
    BORRAR VALORES DUPLICADOS
    APPLY TO SELECTION([Empleados];AUMENTAR SALARIOS)

Consejo: es una buena técnica de programación adoptar la misma convención de nombres que utiliza 4D para comandos integrados. Utilice caracteres en mayúsculas para los nombres de sus métodos; sin embargo si un método es una función, coloque en mayúsculas el primer carácter de su nombre. Al hacer esto, cuando reabra una base para mantenimiento después de unos meses, identificará si un método devuelve un resultado con sólo mirar su nombre en la ventana del Explorador.

Nota: cuando usted llama un método, simplemente digita su nombre. Sin embargo, algunos comandos integrados 4D, tales como ON EVENT CALL, así como también los comandos de plug-in, necesitan el nombre de un método como una cadena cuando se pasa un parámetro de tipo método:

Ejemplos

  ` Este comando espera un método (función) o fórmula
 QUERY BY FORMULA([aTabla];Special query)
  ` Este comando espera un método (procedimiento) o fórmula
 APPLY TO SELECTION([Empleados];AUMENTAR SALARIOS)
  ` Pero este comando espera un nombre de método
 ON EVENT CALL("MANEJAR EVENTOS")
  ` Y este comando de plug-ins espera un nombre de método
 WR ON ERROR("WR MANEJAR ERRORES")

Los métodos pueden captar parámetros (argumentos). Los parámetros se pasan al método entre paréntesis, siguiendo el nombre del método. Cada parámetro está separado del siguiente por un punto y coma (;). Los parámetros están disponibles dentro del método llamado como variables locales numeradas consecutivamente: $1, $2,…, $n. Además, varios parámetros consecutivos (y últimos) pueden ser direccionados con la sintaxis ${n} donde n, expresión numérica, es el número del parámetro.

Dentro de una función, la variable local $0 contiene el valor a devolver.

Ejemplos

  ` En ELIMINAR ESPACIOS $1 es un puntero al campo [Personas]Nombre
 ELIMINAR ESPACIOS(->[Personas]Nombre)
 
  ` En Creador calc:
  ` - $1 es un numérico y es igual a 1
  ` - $2 es un numérico y es igual a 5
  ` - $3 es texto o cadena y es igual a "Súper"
  ` - El valor resultante se asigna a $0
 $vsResult:=Creador calc(1;5;"Súper")
 
  ` En Botar:
  ` - Los tres parámetros son texto o cadena
  ` - Pueden ser direccionados como $1, $2 o $3
  ` - También pueden ser direccionados como, por ejemplo, ${$vlParam} donde $vlParam es 1, 2 o 3
  ` - El valor resultante se asigna a $0
 vtClon:=Botar("es";"el";"él")

Usted designa un comando de plug-in utilizando su nombre como se definió en el plug-in. Un nombre de comando de plug-in puede contener hasta 31 caracteres.

Ejemplo

 $error:=SMTP_From($smtp_id;"henry@gmail.com")

Desde el punto de vista del alcance, hay dos tipos de conjuntos:

  • Conjuntos interproceso
  • Conjuntos proceso.

4D Server también incluye:

  • Conjuntos clientes.

Conjuntos interproceso
Un conjunto es un conjunto interproceso si el nombre del conjunto está precedido por los símbolos (<>) — un signo “menor que” seguido por un signo “mayor que”.

Nota: esta sintaxis puede utilizarse en Windows y Macintosh. Además únicamente en Macintosh, puede utilizar el carácter diamante (Opción-Mayús-V en teclado en castellano).

El nombre de un conjunto interproceso puede contener hasta 255 caracteres, sin incluir los símbolos <>.

Conjuntos proceso
Usted declara un conjunto proceso utilizando una expresión de tipo cadena que representa su nombre (el cual no puede comenzar con los símbolos <> o $). Un nombre de conjunto proceso puede contener hasta 255 caracteres.

Conjuntos cliente
El nombre de un conjunto cliente está precedido por el signo dólar ($). Un nombre de conjunto cliente puede contener hasta 255 caracteres, sin incluir el signo dólar.

Nota: Los conjuntos son administrados por el equipo servidor. En algunos casos, por razones especiales o de eficiencia, usted podría necesitar trabajar con conjuntos locales en el equipo cliente. Para hacerlo, utilice conjuntos cliente.

Ejemplos

  ` Conjuntos interproceso
 USE SET("<>Registros borrados")
 CREATE SET([Clientes];"<>Ordenes clientes")
 If(Records in set("<>Seleccion"+String($i))>0)
  ` Conjuntos proceso
    USE SET("Registros borrados")
    CREATE SET([Clientes];"Ordenes clientes")
    If(Records in set("<>Seleccion"+String($i))>0)
  ` Conjuntos cliente
       USE SET("$Registros borrados")
       CREATE SET([Clientes];"$Ordenes clientes")
       If(Records in set("$Seleccion"+String($i))>0)

Desde el punto de vista del alcance, hay dos tipos de selecciones temporales:

  • Selecciones temporales interproceso
  • Selecciones temporales proceso.

Selecciones temporales interproceso
Una selección temporal es una selección temporal interproceso si su nombre está precedido por los símbolos (<>) — un signo “menor que” seguido por un signo “mayor que”.

Nota: esta sintaxis puede utilizarse en Windows y Macintosh. Además únicamente en Macintosh, puede utilizar el carácter diamante (Opción-Mayús-V en teclado en castellano).

El nombre de una selecciónt emporal interproceso puede contener hasta 255 caracteres, sin incluir los símbolos <>.

Selecciones temporales proceso
Usted declara una selección temporal proceso utilizando una expresión de tipo cadena que represente su nombre (la cual no puede comenzar con los símbolos <> o el signo dólar $). Un nombre de un selección temporal proceso puede contener hasta 255 caracteres.

Ejemplos

  ` Selección temporal interproceso
 USE NAMED SELECTION([Clientes];"<>PorCodigopostal")
  ` Selección temporal proceso
 USE NAMED SELECTION([Clientes];"PorCodigopostal")

En versión monousuario, o Cliente/Servidor en el equipo cliente, hay dos tipos de procesos:

  • Procesos globales
  • Procesos locales.

Procesos globales
Usted declara un proceso global utilizando una expresión de tipo cadena que represente su nombre (la cual no puede comenzar con el signo dólar $). El nombre de un proceso puede contener hasta 255 caracteres.

Procesos locales
Usted declara un proceso local si el nombre del proceso está precedido por un signo dólar ($). El nombre de un proceso local puede contener hasta 255 caracteres, sin incluir el signo dólar.

Ejemplo

  ` Iniciar el proceso global "Añadir clientes"
 $vlProcesoID:=New process("P_ADD_CUSTOMERS";48*1024;"Añadir clientes")
  ` Iniciar el proceso local "$Seguir Movimientos Ratón"
 $vlProcesoID:=New process("P_MOUSE_SNIFFER";16*1024;"$Seguir movimientos del ratón")

La siguiente tabla resume las principales convenciones escritura en los métodos.

IdentificadorLong. max.Ejemplo
Tabla31[Facturas]
Campo31[Empleados]Apellido
Variable/Array interproceso<> + 255(*)<>vlProcesoSiguienteID
Variable/Array proceso255(*)vsNombreActual
Variable/Array local$ + 255(*)$vlContadorLocal
Atributos de objetos255$o.myAttribute
Local Array$ + 31$atValues
Formulario31"Formulario Web personalizado"
Objeto de formulario255"MyButton"
Array interproceso<> + 31<>apTablas
Array proceso 31asGenero
Array local $ + 31$atValores
Método 31M_AÑADIR_CLIENTES
Comando de plug-in31WR INSERTAR TEXTO
Conjunto interproceso<> + 255"<>Registros a archivar"
Conjunto proceso255"Registros actuales seleccionados"
Conjunto cliente$ + 255"$Temas anteriores"
Selección temporal255"Empleados de A a Z"
Selección temporal interproceso<> + 225"<>Empleados de Z a A"
Proceso local$ + 255"$Seguir Eventos"
Proceso global255"P_MODULO_FACTURAS"
Semáforo255"mysemaphore"

(*) 31 caracteres si la opción de compatibilidad "Guardar métodos como Unicode" no está seleccionada. (ver Página Compatibilidad)

Nota: si se utilizan caracteres no romanos en los nombres de los identificadores, su tamaño máximo puede ser menor.)

Asegúrese de utilizar nombres únicos para los diferentes elementos de su base de datos. Si un objeto determinado tiene el mismo nombre que otro objeto de un tipo diferente (por ejemplo, si un campo se denomina Person y una variable también se denomina Person), 4D utiliza un sistema de prioridad.

4D identifica los nombres utilizados en lo procedimientos en el siguiente orden:

1. Campos
2. Comandos
3. Métodos
4. Rutinas de plug-ins
5. Constantes predefinidas
6. Variables.

Por ejemplo, 4D tiene un comando integrado llamado Date. Si llama a un método Date, 4D lo reconocerá como el comando integrado Date, y no como su método. Esto puede evitar que llame a su método. Si, a pesar de esto, usted llama a un campo “Date”, 4D tratará de utilizar su campo en lugar del comando Date.



Ver también 

Arrays
Constantes
Métodos
Operadores
Punteros
Tipos de datos
Variables

 
PROPIEDADES 

Producto: 4D
Tema: Presentación del lenguaje

 
HISTORIA 

 
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)