1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

  2. Anuncie Aqui ! Entre em contato fdantas@4each.com.br

Formata Telefone

Discussão em 'Outros/Diversos' iniciado por sl4v3r, Abril 7, 2009.

  1. sl4v3r

    sl4v3r Membro Participativo

    Código:
    /*-----------------------------------------------------------------------------
    Programa   : inc_separa_telefone.i
    Finalidade : Include para formatar telefone
    Autor      :  
    Data       : 
    Alterado em: 
    
    Entrada              Saida
    7 caracteres
       5081300           (0000)0508-1300
    8 caracteres
       55081300          (0000)5508-1300
    9 caracteres
       115081300         (0011)0508-1300
    10 caracteres
       1155081300        (0011)5508-1300
    12 caracteres
       551155081300      (5511)5508-1300
    Outros
       xxx               (0000)0000-0000
    
    -----------------------------------------------------------------------------*/
    
    FUNCTION formata_telefone RETURN CHARACTER (INPUT p_tel AS CHARACTER):
       DEFINE VARIABLE icont    AS INTEGER                       NO-UNDO.
       DEFINE VARIABLE tel-aux  AS CHARACTER                     NO-UNDO.
       DEFINE VARIABLE len      AS CHARACTER INITIAL "7,8,10,12" NO-UNDO.
    
    	/* Filtra somente numeros */
       DO icont = 1 to LENGTH( TRIM(p_tel) ):
          IF INDEX("0123456789",SUBSTRING(TRIM(p_tel),icont,1) ) > 0 THEN
             ASSIGN tel-aux = tel-aux + SUBSTRING(TRIM(p_tel),icont,1).
       END.
    
    	ASSIGN p_tel = tel-aux.
    
    	/* Retira os zeros a esquerda */
    	DO WHILE p_tel BEGINS "0":
        	ASSIGN p_tel = SUBSTR(p_tel, 2, LENGTH(p_tel) - 1).
    	END.
    
       /* Numeros antigos (11)508-1300 */
       IF LENGTH(p_tel) = 9 THEN DO:
          ASSIGN p_tel = SUBSTR(p_tel, 1, 2) + "0" + SUBSTR(p_tel, 3, 9).
       END.
    
       /* Verifica se o telefone é valido */
       IF LOOKUP(STRING(LENGTH(p_tel)),len) = 0  THEN
          ASSIGN p_tel = "0".
    
    	/* Preenche com zeros a esquerda */
    	ASSIGN p_tel = FILL("0",12 - LENGTH(p_tel)) + p_tel.
    
       /* Formata telefone */
       RETURN STRING(p_tel,"(xxxx)xxxx-xxxx").		
    
    END.

Compartilhe esta Página