Nesta seção: |
Ao fornecer um argumento em uma função, você deve entender quais tipos de argumentos são aceitáveis, os formatos e comprimentos para os mesmoes e seu número e ordem.
Os argumentos a seguir são aceitáveis para uma função:
CURR_SAL * 1.03
e
FN || LN
Dependendo da função, um argumento pode estar em formato alfanumérico, numérico ou de data. Se um argumento for fornecido no formato incorreto, um erro ocorrerá ou a função não irá exibir os dados corretos. Encontre abaixo os tipos de formatos de argumento:
Todos os argumentos são convertidos do formato de ponto flutuante com precisão dupla quando utilizados com uma função, mas os resultados são exibidos no formato especificado para o campo de saída.
Observação: Quando CDN ON, os argumentos numéricos devem ser delimitados por uma vírgula seguida de um espaço.
Se você fornece um argumento com um ano com dois dígitos, a função atribui um século com base nas definições de parâmetro DATEEFNS, YRTHRESH e DEFCENT.
Um argumento é passado para uma função por referência, o que significa que o local de memória do argumento é passado. Nenhum indício do comprimento do argumento é fornecido.
É necessário fornecer o comprimento do argumento para strings alfanuméricas. Algumas funções necessitam de um comprimento para os argumentos de entrada e saida (por exemplo, SUBSTR), enquanto outras utilizam um comprimento para ambos os argumentos (por exemplo, UPCASE).
Certifique-se de que todos os comprimentos estão corretos. O fornecimento de um comprimento incorreto pode causar resultados incorretos:
Algumas rotinas de sistemas operacionais são muito sensíveis a comprimentos especificados de forma errônea e os leem nas áreas de memória formatada de maneira incorreta.
O número de argumentos necessário varia de acordo com cada função. Função fornecidas pela Information Builders podem precisar de até seis argumentos. As subrotinas gravadas por usuários podem necessitar de um máximo de 200 argumentos, incluindo o argumento de saída. Se uma função necessitar de mais de 200 argumentos, será necessário utilizar duas ou mais chamadas para passar os argumentos para a função.
Argumentos deve ser especificados na ordem exibida na sintaxe de cada função. A ordem obrigatória varia de acordo com a função.
Como: |
A configuração USERFCHK controla o nível de verificação aplicado em argumentos DEFINE FUNCTION e argumentos de função fornecidos pela Information Builders. Não afeta a verificação do número de parâmetros. O número correto deve semper ser fornecido.
O Maintain não suporta USERFCHK.
Funções normalmente esperam que parâmetros sejam de um tipo específico ou que tenham um comprimento que depende do valor de outro parâmetro. É possível, em algumas situações, aplicar estas regras através do truncamento do comprimento de um parâmetro e, portnato, impedir a geração de um erro na hora da execução.
O nível de verificação e possível conversão para um formato válido desempenhado depende da função específica. As duas situações a seguir podem ser normalmente convertidas de forma satisfatória:
A verificação de parâmetro pode ser habilitada pelo DEFINE FUNCTIONs e as funções fornecidas pela Information Builders. Se o seu site possuir uma função gravada no local com o mesmo nome que uma função fornecida pela Information Builders, a definição USERFNS determina qual função será utilizada.
SET USERFNS= {SYSTEM|LOCAL}
onde:
Dá prioridade a funções fornecidas pela Information Builders. SYSTEM é o valor padrão. Esta definição é obrigatória para habilitar a verificação de parâmetro.
Dá preferência para funções gravadas localmente. A verificação de parâmetros não é desempenhada com esta definição em vigor.
Observação: Quando USERFNS for definido como LOCAL, as funções DT exibirão apenas uma data de seis dígitos.
Emita o comando a seguir no FOCPARM, FOCPROF, na linha de comando, em um FOCEXEC ou em um comando ON TABLE. Observe que a definição USERFNS=SYSTEM deve estar em vigor.
SET USERFCHK = setting
onde:
Podem ser um dos seguintes:
Já que não há verificação nos parâmetros de funções especificadas em um Arquivo Master, nenhum erro é relatado para estas funções até que o campo DEFINE seja utilizado em uma solicitação subsequente, quando, se houver um problema, a seguinte mensagem será gerada:
(FOC003) THE FIELDNAME IS NOT RECOGNIZED
Observação: A definição OFF será removida em um release futuro.
Comunicado:
A solicitação a seguir utiliza SUBSTR para extrair a substring que inicia na posição 6 e termina na posição 14 do campo TITLE. O quinto argumento especifica um comprimento de substring (500) que é muito longo (não deve ultrapassar 9).
SET USERFCHK = ON TABLE FILE MOVIES PRINT TITLE COMPUTE NEWTITLE/A9 = SUBSTR(39, TITLE, 6 ,14, 500, NEWTITLE); WHERE CATEGORY EQ 'CHILDREN' END
Quando a solicitação é executada com USERFCHK=ON ou OFF, o comprimento incorreto é corrigido e a solicitação continua o processamento:
TITLE NEWTITLE ----- -------- SMURFS, THE S, THE SHAGGY DOG, THE Y DOG, TH SCOOBY-DOO-A DOG IN THE RUFF Y-DOO-A D ALICE IN WONDERLAND IN WONDE SESAME STREET-BEDTIME STORIES AND SONGS E STREET- ROMPER ROOM-ASK MISS MOLLY R ROOM-AS SLEEPING BEAUTY ING BEAUT BAMBI
A solicitação a seguir possui um tipo incorreto de dados no último argumento para SUBSTR. Este parâmetro deve especificar um campo ou formato alfanumérico para a substring extraída:
SET USERFCHK = ON TABLE FILE MOVIES PRINT TITLE COMPUTE NEWTITLE/F9 = SUBSTR(39, TITLE, 6 ,14, 500, 'F9'); WHERE CATEGORY EQ 'CHILDREN' END
ERROR AT OR NEAR LINE 5 IN PROCEDURE USERFC3 FOCEXEC (FOC279) NUMERIC ARGUMENTS IN PLACE WHERE ALPHA ARE CALLED FOR (FOC009) INCOMPLETE REQUEST STATEMENT UNKNOWN FOCUS COMMAND WHERE BYPASSING TO END OF COMMAND
DIRECTOR TITLE NEWTITLE -------- ----- -------- SMURFS, THE ********* BARTON C. SHAGGY DOG, THE ********* SCOOBY-DOO-A DOG IN THE RUFF ********* GEROMINI ALICE IN WONDERLAND 1 SESAME STREET-BEDTIME STORIES AND SONGS -265774 ROMPER ROOM-ASK MISS MOLLY ********* DISNEY W. SLEEPING BEAUTY ********* DISNEY W. BAMBI 0
Information Builders |