versión 11 (Modificado)
Esta sección describe las convenciones de escritura empleadas para nombrar varios objetos en el lenguaje 4D. Los nombres de todos los objetos deben seguir estas reglas:
Un nombre debe comenzar con un carácter alfabético.
Por lo tanto, el nombre puede incluir caracteres alfabéticos, numéricos, espacios, y guiones bajos.
No se permiten puntos, barras oblicuas, comillas y dos puntos.
Los caracteres reservados para ser utilizados como operadores, tales como * y +, no son permitidos.
4D ignora los espacios finales.
Nota: Se deben respetar reglas adicionales cuando los objetos deben ser manipulados vía SQL: sólo los caracteres _0123456789abcdefghijklmnopqrstuvwxyz son aceptados, y el nombre no debe incluir las palabras claves SQL (comando, atributo, etc.) El área "SQL" del inspector del editor de estructura indica automáticamente los caracteres en el nombre de una tabla o campo.
Tablas
Usted indica que un objeto es una tabla ubicando su nombre entre corchetes: [...]. El nombre de una tabla puede contener hasta 31 caracteres.
Ejemplos
DEFAULT TABLE ([Ordenes]) INPUT FORM ([Clientes]; "Entrada") ADD RECORD ([Cartas])
Campos
Usted indica que un objeto es 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.
No comience un nombre de campo con el carácter guión bajo (_). El carácter guión bajo está reservado para los plug-ins. Cuando 4D encuentra este carácter al comienzo de un campo en el editor de métodos, borra el guión bajo.
Ejemplos
[Ordenes]Total:=Sum([Linea]Cantidad) QUERY([Clientes];[Clientes]Nombre="López") [Cartas]Texto:=Capitalize text ([Cartas]Texto)
Variables interproceso
Usted indica que un objeto es 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 31 caracteres, sin incluir los símbolos <>.
Ejemplos
<>vlProcesoID:=Current process <>vsKey:=Char(KeyCode) If (<>vtNombre#"")
Variables proceso
Usted indica que un objeto es 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 31 caracteres.
Ejemplos
vrGranTotal:=Sum([Cuentas]Cantidad) If (bValidar=1) vsNombreActual:=""
Variables locales
Usted indica que un objeto es una variable local precediendo un signo dólar ($) a su nombre. Un nombre de variable local puede contener hasta 31 caracteres, sin incluir el signo dólar.
Ejemplos
For ($vlRegistro; 1; 100) If ($vsTempVar="No") $vsMiCadena:="Buenos días"
Arrays
Usted indica que un objeto es un array utilizando su nombre, el cual es el nombre que pasó a la 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 31 caracteres, sin incluir los símbolos <>.
Ejemplos
ARRAY TEXT(<>attemas;Records in table([Temas])) SORT ARRAY (<>asPalabrasClaves; >) ARRAY INTEGER(<>aiGranArray;10000)
Arrays proceso
Usted indica que un objeto es un Array 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 31 caracteres.
Ejemplos
ARRAY TEXT(atTemas;Records in table([Temas])) SORT ARRAY (asPalabrasClave; >) ARRAY INTEGER(aiGranArray;10000)
Arrays locales
El nombre de un Array local Array está precedido por el signo dólar ($). El nombre de un Array local puede contener hasta 31 caracteres, sin incluir el signo dólar.
Ejemplos
ARRAY TEXT($atAsuntos;Records in table([Temas])) SORT ARRAY ($asPalabrasClave; >) ARRAY INTEGER($aiGranArray;10000)
Elementos de arrays
Usted 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
Usted 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})}
Formularios
Usted indica que un objeto es un formulario utilizando una expresión de tipo cadena que representa su nombre. El nombre de un formulario puede contener hasta 31 caracteres.
Ejemplos
INPUT FORM([Personas];"Entrada") OUTPUT FORM([Personas]; "Salida") DIALOG([Deposito];"Caja de notas"+String($vlEtapa))
Métodos
Usted indica que un objeto es un método (procedimiento y función) 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")
Comandos de plug-ins (procedimientos, funciones y áreas externas)
Usted indica que un objeto es un comando de plug-in utilizando su nombre como se definió por el plug-in. Un nombre de comando de plug-in puede contener hasta 31 caracteres.
Ejemplos
WR BACKSPACE (wrArea; 0) $pvNuevaArea:=PV New offscreen area
Conjuntos
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)
Selecciones temporales
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")
Procesos
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")
Resumen de las convenciones de escritura
La siguiente tabla resume las convenciones escritura de 4D.
Tipo | Long. max. | Ejemplo |
Tabla | 31 | [Facturas] |
Campo | 31 | [Empleados]Apellido |
Variable interproceso | <> + 31 | <>vlProcesoSiguienteID |
Variable proceso | 31 | vsNombreActual |
Variable local | $ + 31 | $vlContadorLocal |
Formulario | 31 | "Formulario Web personalizado" |
Array interproceso | <> + 31 | <>apTablas |
Array proceso | 31 | asGenero |
Array local | $ + 31 | $atValores |
Método | 31 | M_AÑADIR_CLIENTES |
Comando de plug-in | 31 | WR INSERTAR TEXTO |
Conjunto interproceso | <> + 255 | "<>Registros a archivar" |
Conjunto proceso | 255 | "Registros actuales seleccionados" |
Conjunto cliente | $ + 255 | "$Temas anteriores" |
Selección temporal | 255 | "Empleados de A a Z" |
Selección temporal interproceso | <> + 225 | "<>Empleados de Z a A" |
Proceso local | $ + 255 | "$Seguir Eventos" |
Proceso global | 255 | "P_MODULO_FACTURAS" |
Semaforo | 255 | "misemaforo" |
Resolver conflictos de nombres
Si un objeto particular tiene el mismo nombre que otro objeto de otro tipo (por ejemplo, si un campo se llama Persona y una variable también se llama Persona), 4D utiliza un sistema de prioridades para identificar el objeto. Debe asegurarse de utilizar nombres únicos para las partes de su base.
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.