Esta seção descreve as convenções de escrita e de nomes aplicadas aos diferentes identificadores utilizados na linguagem 4D (variáveis, arrays, . O nome de cada objeto deve respeitar as regras abaixo:
Um nome deve começar com um caractere alfabético (uma letra) ou um sublinhado.
o nome pode incluir caracteres alfabéticos, caracteres numéricos, ou caracteres especiais, e o caractere underscore.
As vírgulas, barras obliquas, aspas e dois pontos (:) não estão permitidos
Pontos finais (".") e os colchetes ("[ ]") não estão permitidos nos nomes de tabelas, campos, métodos ou variáveis quando a notação objeto estiver ativa. (ver Notação de objeto)
Caracteres reservados para uso como operadores, tais como * e +, não são permitidos.
4D ignora espaços à direita.
Nota: As regras complementares precisam ser respeitadas quando os objetos precisam ser tratados através de SQL: só _0123456789abcdefghijklmnopqrstuvwxyz são caracteres aceitos, e o nome não deve incluir as palavras-chaves SQL (comand, attribute, etc.) A área do Inspetor "SQL" no editor de estrutura indica automaticamente os caracteres não autorizados no nome de uma tabela ou campo.
Se indica que é um campo especificando primeiro a tabela à qual o campo pertence. O nome do campo segue imediatamente após o nome da tabela. Um nome de campo pode conter até 31 caracteres.
Você denota uma variável interprocesso precedendo o nome da variável com os símbolos (<>) - um sinal de "menor que" seguido por um sinal de "maior que".
Nota: Esta sintaxe pode ser usado tanto em Windows e Macintosh. Além disso, somente no Macintosh, você pode usar o diamante (Option-Shift-V no teclado americano).
Uma variável interprocessos pode ter até 255 caracteres (*), não incluindo os símbolos <>.
(*) 31 caracteres se a opção de compatibilidade "Guardar métodos como Unicode" estiver desmarcada. (ver Página Compatibilidade)
Exemplos
<>vlProcessoID:=Current process <>vsKey:=Char(KeyCode) If(<>vtNome#"")
Você denota uma variável de processo, utilizando o seu nome (que não pode começar com os símbolos <>, nem com sinal de dólar $). Um nome de variável de processo pode conter até 255 caracteres.
(*) 31 caracteres se a opção de compatibilidade "Guardar métodos como Unicode" estiver desmarcada. (ver Página Compatibilidade)
Você denota uma variável local com um cifrão ($) seguido pelo seu nome. Um nome de variável local pode conter até 255 (*) caracteres, não incluindo o cifrão.
(*) 31 caracteres se a opção de compatibilidade "Guardar métodos como Unicode" estiver desmarcada. (ver Página Compatibilidade)
Você denota um array usando o seu nome, que é o nome que passou para a declaração de array (como ARRAY LONG INT) quando você criou o array. Arrays são variáveis, e do ponto de vista de alcance, como as variáveis, existem três diferentes tipos de arrays:
Arrays interprocesso,
Arrays processo,
Arrays locais.
Arrays interprocesso O nome de um array interprocesso é precedido pelos símbolos (<>) - um sinal "de menor que" seguido por um sinal "maior que".
Nota: Esta sintaxe pode ser usado tanto em Windows e Macintosh. Além disso, somente no Macintosh, você pode usar o diamante (Option-Shift-V no teclado americano).
O nome de um array interprocessos pode ter até 255 caracteres (*), não incluindo os símbolos <>.
Exemplos
ARRAY TEXT(<>attemas;Records in table([Temas])) SORT ARRAY(<>asPalavrasChaves;>) ARRAY INTEGER(<>aiGranArray;10000)
Arrays processo Você denota um array de processo, utilizando o seu nome (que não pode começar com os símbolos <>, nem com sinal de dólar $). Um nome de array de processo pode conter até 255 caracteres (*).
Exemplos
ARRAY TEXT(atTemas;Records in table([Temas])) SORT ARRAY(asPalavrasChave;>) ARRAY INTEGER(aiGranArray;10000)
Arrays locais O nome de um array local é precedido por um cifrão ($). Um nome de um array local pode conter até 255 (*) caracteres, não incluindo o cifrão.
Exemplos
ARRAY TEXT($atAssuntos;Records in table([Temas])) SORT ARRAY($asPalavrasChave;>) ARRAY INTEGER($aiGranArray;10000)
(*) 31 caracteres se a opção de compatibilidade "Guardar métodos como Unicode" estiver desmarcada. (ver Página Compatibilidade)
Elementos de arrays Você referencia a um elemento de um interprocesso, processo ou array local, usando as chaves ({...}). O elemento de referência é denotado por uma expressão numérica.
Exemplos
` Endereçando um elemento de um array interprocesso If(<>asPalavrasChave{1}="Parar") <>atAssuntos{$vlElem}:=[Temas]Assunto $viPróximoValor:=<>aiGranArray{Size of array(<>aiGranArray)}
` Endereçando um elemento de um array processo If(asPalavrasChave{1}="Parar")
atAssuntos{$vlElem}:=[Temas]Assunto $viProximoValor:=aiGranArray{Size of array(aiGranArray)}
` Endereçando um elemento de um array local If($asPalavrasChave{1}="Parar") $atAssuntos{$vlElem}:=[Temas]Assunto $viProximoValor:=$aiGranArray{Size of array($aiGranArray)}
Elementos de um array bi-dimensional Você referencia a um elemento de um array bi-dimensional, usando as chaves ({...}) duas vezes. O elemento de referência é representado por duas expressões numéricas em dois conjuntos de chaves.
Exemplos
` Endereçar um elemento de um array interprocesso de duas dimensões If(<>asPalavrasChave{$vlLinhaSeguinte}{1}="Parar") <>atAsuntos{10}{$vlElem}:=[Temas]Asunto $viValorSeguinte:=<>aiGranArray{$vlSet}{Size of array(<>aiGranArray{$vlSet})}
` Endereçar um elemento de um array processo de duas dimensões If(asPalavrasChave{$vlLinhaSeguinte}{1}="Parar")
atSubjects{10}{$vlElem}:=[Temas]Tema $viValorSeguinte:=aiGranArray{$vlSet}{Size of array(aiGranArray{$vlSet})}
` Endereçar um elemento de um array local de duas dimensões If($asPalavrasChave{$vlLinhaSeguinte}{1}="Parar") $atAsuntos{10}{$vlElem}:=[Temas]Tema $viValorSeguinte:=$aiGranArray{$vlSet}{Size of array($aiGranArray{$vlSet})}
Quando a notação de objetos é habilitada (ver Notação de objeto), se designa um atributo objeto (também chamado de propriedade objeto) colocando um ponto (".") entre o nome do objeto (ou atributo) e o nome do atributo. Um nome de atributo pode conter até 255 caracteres e distingue entre maiúsculas e minúsculas.
Nota: se aplicam regras adicionais aos nomes de atributos de objetos (devem se ajustar à especificação ECMA Script). Para mais informação, consulte Usar notação padrão objeto (preview).
Nota: não confunda objetos de formulário (botões, list boxes, variáveis que podem ser introduzidas, etc.) e os objetos da linguagem 4D. Os objetos da linguagem 4D são criadas e manipuladas através de notação objeto ou comandos dedicados. (ver Objetos (Linguagem))
Você denota um método (procedimento e função), usando seu nome. O nome de um método pode conter até 31 caracteres.
Nota: Um método que não retorna um resultado é também chamado de procedimento. Um método que retorna um resultado também é chamado de função.
Exemplos
If(Novo cliente) APAGAR VALORES DUPLICADOS APPLY TO SELECTION([Empregados];AUMENTAR SALARIOS)
Dica: É uma boa técnica de programação adoptar a mesma convenção de nomeação utilizada pela 4D para comandos internos. Use letras maiúsculas para nomear os seus métodos, no entanto, se um método é uma função, use a primeira letra maiúscula. Ao fazer isso, quando você reabrir um banco de dados para a manutenção depois de alguns meses, você já vai saber se um método retorna um resultado simplesmente olhando para o seu nome na janela do Explorer.
Nota: Quando você chamar um método, digite apenas o seu nome. No entanto, alguns comandos 4D embutidos, como ON EVENT CALL,, bem como todos os comandos de Plug-In, esperam que o nome de um método como seqüência, quando um parâmetro é passado. Exemplo:
Exemplos
` Este comando espera um método (função) ou fórmula QUERY BY FORMULA([aTabela];Special query) ` Este comando espera um método (procedimento) ou declaração APPLY TO SELECTION([Empregados];AUMENTAR SALARIOS) ` Mas esse comando espera um nome de método ON EVENT CALL("MANEJAR EVENTOS") ` E este comando de plug-in espera um nome de método WR ON ERROR("WR CONTROLAR ERROS")
Métodos podem aceitar parâmetros (argumentos). Os parâmetros são passados para o método, entre parênteses, ao lado do nome do método. Cada parâmetro é separado do seguinte por um ponto e vírgula (;). Os parâmetros estão disponíveis dentro do método chamado como variáveis locais numeradas consecutivamente: $1, $2, ..., $n. Além disso, vários parâmetros consecutivos (e o último) pode ser acessados com a sintaxe $(n), onde n, expressão numérica, é o número do parâmetro.
Dentro de uma função, a variável local $0 contém o valor a ser retornado.
Exemplos
` Em ELIMINAR ESPAÇOS $1 é um ponteiro para o campo [Pessoas]Nome ELIMINAR ESPAÇOS(->[Pessoas]Nome)
` Em Criador calc: ` - $1 é numérico e igual a 1 ` - $2 é numérico e igual a 5 ` - $3 é um texto ou string e igual a "Legal" ` - O valor do resultado é atribuído a $0 $vsResult:=Criador calc(1;5;"Legal")
` En Jogar fora: ` - Os três parâmetros são texto ou seqüência ` - Eles podem ser tratados como $1, $2 ou $3 ` - Eles podem também ser acessadas como, por exemplo, ${$vlParam} onde $ vlParam é 1, 2 o 3 ` - O valor do resultado é atribuído a $0 vtClon:=Jogar fora("es";"el";"ele")
Do ponto de vista do escopo, existem dois tipos de conjuntos: conjuntos Interprocesso e conjuntos Processo:
Conjuntos interprocesso
Conjuntos processo.
4D Server também inclui:
Conjuntos clientes.
Conjuntos interprocesso Um conjunto é um interprocesso se o nome do conjunto é precedido pelos símbolos (<>) - um sinal de "menor que" seguido por um sinal de "maior que".
Nota: Esta sintaxe pode ser usado tanto em Windows e Macintosh. Além disso, somente no Macintosh, você pode usar o diamante (Option-Shift-V no teclado americano).
O nome do conjunto de inter pode conter até 255 caracteres, não incluindo os símbolos <>.
Conjuntos processo Você denota um processo usando uma expressão de string que representa o seu nome (que não pode começar com os símbolos <> ou com o sinal de dólar $). Um conjunto de nome definido conter até 255 caracteres.
Conjuntos cliente O nome de um conjunto de clientes é precedido pelo cifrão ($). Um nome conjunto de clientes pode conter até 31 caracteres, não incluindo o cifrão.
Nota: Os conjuntos são armazenados na máquina Server. Em certos casos, por eficiência ou propósitos especiais, pode ser necessário trabalhar com conjuntos localmente na máquina do cliente. Para fazer isso, você pode usar conjuntos de clientes.
Exemplos
` Conjuntos interprocesso USE SET("<>Registros apagados") CREATE SET([Clientes];"<>Pedidos clientes") If(Records in set("<>Seleção"+String($i))>0) ` Conjuntos processo USE SET("Registros apagados") CREATE SET([Clientes];"Pedidos clientes") If(Records in set("<>Seleção"+String($i))>0) ` Conjuntos cliente USE SET("$Registros apagados") CREATE SET([Clientes];"$Pedidos clientes") If(Records in set("$Seleção"+String($i))>0)
Do ponto de vista do escopo, existem dois tipos de seleções temporárias:
Seleções temporárias Interprocesso
Seleções temporárias Processo.
Seleções de nome Interprocesso Uma seleção temporária é um uma seleção de nomes interprocesso se seu nome é precedido pelos símbolos (<>) - um sinal de "menor que" seguido por um sinal de "maior que"..
Nota: Esta sintaxe pode ser usado tanto em Windows e Macintosh. Além disso, somente no Macintosh, você pode usar o diamante (Option-Shift-V no teclado americano).
Uma seleção temporária interprocesso pode conter até 255 caracteres, não incluindo os símbolos <>.
Seleções temporárias processo Você denota um processo chamado seleção usando uma expressão de string que representa o seu nome (que não pode começar com os símbolos <>, nem com o sinal de dólar $). Uma seleção temporária pode conter até 255 caracteres.
Exemplos
` Seleção temporária interprocesso USE NAMED SELECTION([Clientes];"<>PorCodigopostal") ` Seleção temporária processo USE NAMED SELECTION([Clientes];"PorCodigopostal")
Na versão de um único usuário, ou cliente / servidor do lado do cliente, existem dois tipos de processos:
Processos Globais
Processos locais.
Processos globais Você indica um processo global, utilizando uma expressão de string que representa o seu nome (que não pode começar com o sinal de dólar $). Um nome de processo pode conter até 255 caracteres.
Processos locais Você denota um processo local se o nome do processo é precedido por um cifrão ($). O nome do processo pode conter até 255 caracteres, não incluindo o cifrão.
Exemplo
` Iniciar o processo global "Adicionar clientes" $vlProcessoID:=New process("P_ADD_CUSTOMERS";48*1024;"Adicionar clientes") ` Iniciar o processo local "$Seguir Movimientos Mouse" $vlProcessoID:=New process("P_MOUSE_SNIFFER";16*1024;"$Seguir movimentos do mouse")
Tenha certeza de utilizar nomes únicos para os diferentes elementos de seu banco de dados.Se um objeto determinado tiver o mesmo nome que outro objeto de um tipo diferente (por exemplo, se um campo se denominar Person e uma variável também se denomina Person), 4D utiliza um sistema de prioridade.
4D identifica os nomes usados em procedimentos na seguinte ordem:
Por exemplo, 4D tem um comando built-in chamado Data. Se você nomear um método de Data, 4D reconheceria-o como o comandoDate.interno, e não como o seu método. Isso impedirá que você chame seu método. Se, no entanto, você nomear um campo como "Data", 4D tentaria usar o seu campo ao invés do comando Date.