Como Fornecer um Argumento em uma Função

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.


Topo da página

x
Tipos de Argumentos

Os argumentos a seguir são aceitáveis para uma função:


Topo da página

x
Formatos de Argumento

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:


Topo da página

x
Comprimento de Argumentos

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.


Topo da página

x
Argumentos de Número e Ordem

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.


Topo da página

x
Como Verificar Parâmetros de Funções

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:



x
Sintaxe: Como Habilitar a Verificação de Parâmetro

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:

SYSTEM

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.

LOCAL

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.



x
Sintaxe: Como Controlar a Verificação de Parâmetro de Função

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:

configuração

Podem ser um dos seguintes:

  • ON é o valor padrão. Verifica parâmetros em solicitações, mas não verifica-os para funções utilizadas nos DEFINEs do Arquivo Master. Se um parâmetro possuir um comprimento incorreto, será feita uma tentativa para corrigir o problema. Se um problema não puder ser corrigido, uma mensagem de erro será gerada e a avaliação da expressão afetada será interrompida.

    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
  • OFF não verifica parâmetros, exceto nos casos a seguir:
    • Se um parâmetro longo demais substituir a área da memória na qual o código computacional estiver armazenado, o tamanho será automaticamente reduzido sem a emissão de uma mensagem.
    • Se um parâmetro alfanumérico for curto demais, ele será preenchido com espaços em branco para corrigir o comprimento.

    Observação: A definição OFF será removida em um release futuro.

  • FULL é o mesmo que ON, mas também verifica os parâmetros para funções utilizadas em DEFINEs de Arquivos Master.
  • ALERT verifica parâmetros em uma solicitação sem impedir a execução quando um problema é detectado. Não verifica parâmetros para funções utilizadas nos DEFINEs do Arquivo Master. Se um parâmetro possuir um comprimento incorreto e uma tentativa for feita para consertar o problema no plano de fundo, este problema será corrigido sem mensagens. Se um problema como este não puder ser corrigido, uma mensagem de aviso será gerada. A execução continua como se a definição fosse OFF, mas os resultados pode estar incorretos.

    Comunicado:

    • Se um parâmetro fornecido for de um tipo incorreto, a verificação irá falhar e o processamento será interrompido.
    • Erros encontrados durante o processamento de subrotinas, exceto quando fatais no sistema, são comunicados à rotina chamante através do retorno de um parâmetro de retorno inalterado, que é o último parâmetro na chamada da subrotina. Isto sempre é comunicado como espaços para saídas alfanuméricas.



Exemplo: Como Verificar Parâmetros com Erros Corrigíveis

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


Exemplo: Como Verificar Parâmetros com Erros Incorrigíveis

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

Information Builders