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.
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.
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)
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)
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.
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.
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.
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")
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:
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.