WebSphere Message Broker, Versão 8.0.0.5 Sistemas operacionais: AIX, HP-Itanium, Linux, Solaris, Windows, z/OS

Consulte as informações sobre a versão mais recente do produto em IBM Integration Bus, Versão 9.0

Instrução RETURN

A instrução RETURN encerra o processamento. O que acontece em seguida depende do contexto de programação no qual a instrução RETURN é emitida.

Sintaxe

Ler diagrama de sintaxeManter visual do diagrama de sintaxe
>>-RETURN--+------------+--------------------------------------><
           '-expression-'   

Função Main

Quando utilizada na função Main, a instrução RETURN pára o processamento do módulo e retorna o controle para o próximo nó em um fluxo de mensagens. Na função Main, a instrução de retorno deve conter uma expression do tipo BOOLEAN. O comportamento da instrução RETURN na função Main depende do nó. No nó Compute, por exemplo, se expression for algo diferente de TRUE, a propagação da mensagem será parada. No nó Filter, entretanto, a mensagem é propagada para o terminal que corresponde ao valor de expression: TRUE, FALSE e UNKNOWN. A tabela a seguir descreve as diferenças entre a instrução RETURN quando utilizada na função Main dos nós Compute, Filter e Database.
RETURN TRUE; RETURN FALSE; RETURN UNKNOWN (se tipo BOOLEAN) ou RETURN NULL; RETURN;
Compute Propagar mensagem para terminal de Saída. Parar propagação Parar propagação Falha de implementação (BIP2912E: Incompatibilidade de tipo em RETURN)
Banco de Dados Propagar mensagem para terminal de Saída. Parar propagação Parar propagação Falha de implementação (BIP2912E: Incompatibilidade de tipo em RETURN)
Filtro Propagar mensagem para terminal Verdadeiro Propagar mensagem para terminal Falso Propagar mensagem para terminal Desconhecido Falha de implementação (BIP2912E: Incompatibilidade de tipo em RETURN)

Funções Definidas pelo Usuário e Procedimentos

Quando utilizada em uma função ou um procedimento, a instrução RETURN pára o processamento dessa função e retorna o controla para a expressão de chamada. A expression, que deverá ser estar presente se a função ou o procedimento tiver sido declarado com uma cláusula RETURNS, é avaliada e age como o valor de retorno da função. O tipo de dados do valor retornado deve ser o mesmo da instrução da função. A tabela a seguir descreve as diferenças entre a instrução RETURN quando utilizada em funções definidas pelo usuário e procedimentos.

  RETURN expression; RETURN NULL; (ou retornar expression que é avaliada como NULL) RETURN; Nenhuma instrução RETURN
Função definida pelo usuário ou procedimento com uma cláusula RETURNS Retorna o controle para a expressão de chamada com o valor de expression Retorna o controle para a expressão de chamada com NULL Falha de implementação (BIP2912E: Incompatibilidade de tipo em RETURN) Retorna o controle para a expressão de chamada com NULL depois que todas as instruções na função ou no procedimento tiverem sido executadas
Função definida pelo usuário ou procedimento sem uma cláusula RETURNS Falha de implementação (BIP2401E: Erro de sintaxe: esperado; mas localizado expression) Falha de implementação (BIP2401E: Erro de sintaxe: esperado; mas localizado NULL) Retorna o controle para a expressão de chamada Retorna o controle para a expressão de chamada depois que todas as instruções na função ou no procedimento tiverem sido executadas

A instrução RETURN deve ser utilizada no corpo da função ou do procedimento que possui a instrução RETURNS em sua declaração. Essa função pode ser chamada utilizando a instrução CALL ... INTO. A instrução RETURNS fornece o tipo de dados que a função ou o procedimento retorna para a Instrução CALL. A instrução CALL ... INTO especifica a variável à qual o valor de retorno está designado. O exemplo neste tópico mostra como as instruções RETURNS e CALL ... INTO são utilizadas juntas para designar a instrução de retorno. Se você utilizar a instrução CALL ... INTO para chamar uma função ou um procedimento que não possui uma instrução RETURNS declarada, uma mensagem de erro BIP2912E será gerada.

Exemplo

O exemplo a seguir, que baseia-se em Mensagem de Exemplo, ilustra como as instruções RETURN, RETURNS e CALL...INTO podem ser utilizadas:
CREATE FILTER MODULE ProcessOrder
 CREATE FUNCTION Main() RETURNS BOOLEAN  
  BEGIN  

      DECLARE SpecialOrder  BOOLEAN;
      SET OutputRoot.MQMD = InputRoot.MQMD; 
      CALL IsBulkOrder(InputRoot.XMLNS.Invoice.Purchases) INTO SpecialOrder;
   
      --
      --  processamento adicional poderia ser inserido aqui
      --  antes de rotear o pedido para o terminal apropriado
      -- 
      RETURN SpecialOrder;

  END;     

 CREATE FUNCTION IsBulkOrder (P1 REFERENCE)
        RETURNS BOOLEAN
  BEGIN 
      -- Declarar e inicializar variáveis--
      DECLARE a INT 1;
      DECLARE PriceTotal FLOAT 0.0;
      DECLARE NumItems INT 0;
      DECLARE iroot REFERENCE TO P1;

      -- Calcule o valor do pedido, entretanto se esta for uma compra em massa, o --
      -- pedido precisará ser tratado de forma diferente (oferecido desconto), para que seja retornado TRUE --
      -- ou FALSE dependendo do tamanho do pedido --
      WHILE a <= CARDINALITY(iroot.Item[]) DO 
             SET  NumItems = NumItems + iroot.Item[a].Quantity;
             SET  PriceTotal = PriceTotal + iroot.Item[a].UnitPrice;
             SET a = a + 1;
      END WHILE;
      RETURN (PriceTotal/NumItems > 42);

  END;

  END MODULE; 
No exemplo, se o preço médio de itens for maior que 42, será retornado TRUE; de outra maneira, será retornado FALSE. Assim, um nó Filter pode rotear mensagens que descrevem itens dispendiosos em um caminho diferente para mensagens que descrevem itens baratos. A partir do exemplo, a instrução CALL IsBulkOrder(InputRoot.XMLNS.Invoice.Purchases) INTO SpecialOrder; também pode ser gravada como SpecialOrder = IsBulkOrder(InputRoot.XMLNS.Invoice.Purchases);

Se você estiver utilizando a instrução PROPAGATE em seu nó, é importante utilizar um RETURN FALSE; para evitar a propagação automática da mensagem para o próximo nó no fluxo de mensagens. Consulte Instrução PROPAGATE para obter um exemplo de como evitar a propagação implícita no final do processamento em um nó Compute.

Avisos | Marcas Registradas | Downloads | Biblioteca | Suporte | Feedback

Copyright IBM Corporation 1999, 2014Copyright IBM Corporation 1999, 2014.

        
        Última atualização:
        
        Última atualização: 2015-02-28 18:29:54


Tópico de ReferênciaTópico de Referência | Versão 8.0.0.5 | ak05130_