Convenciones

4D - Documentation   Français   English   German   Español   English   4D v11 SQL, Comandos por temas   4D v11 SQL, Lista alfabética de comandos   4D v11 SQL, Constantes por temas   Regresar   Anterior   Siguiente

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.

TipoLong. max. Ejemplo
Tabla31[Facturas]
Campo31[Empleados]Apellido
Variable interproceso<> + 31<>vlProcesoSiguienteID
Variable proceso31vsNombreActual
Variable local$ + 31$vlContadorLocal
Formulario31"Formulario Web personalizado"
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"
Semaforo255"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.


4D - Documentation   Français   English   German   Español   English   4D v11 SQL, Comandos por temas   4D v11 SQL, Lista alfabética de comandos   4D v11 SQL, Constantes por temas   Regresar   Anterior   Siguiente