Ir para conteúdo
Fórum Script Brasil
  • 0

Validação...


davi.sza

Pergunta

3 respostass a esta questão

Posts Recomendados

  • 0

Encontrei este código ae.. é so usar a lógica e passar para qualquer linguagem que você precise.

Códigos de rotinas PL/SQL para validação de campos específicos

CREATE OR REPLACE

FUNCTION fc_valida_pispasep(PIS_NUM VARCHAR2) RETURN BOOLEAN IS

ERRO_PIS   VARCHAR2(1);  -- RECEBE 'N' PARA PIS CORRETO E 'S' CASO CONTRÁRIO

SOMATORIO  NUMBER;   -- P/ CALCULAR SOMA

POS_PIS    NUMBER;   -- PARA PERCORRER A STRING

PESO_PIS   NUMBER;   -- MULTIPLICADOR

INT_PIS    NUMBER;   -- VARIAVEL AUXILIAR

MODULO_PIS NUMBER;   -- VARIAVEL AUXILIAR

BEGIN

    IF NVL(LENGTH(PIS_NUM), 0) <> 11 THEN

RETURN FALSE;

    ELSE

ERRO_PIS := 'N';

SOMATORIO := 0;

POS_PIS := 1;

PESO_PIS := 3;

WHILE POS_PIS < 3 LOOP

     INT_PIS := TO_NUMBER(SUBSTR(PIS_NUM, POS_PIS, 1)) * PESO_PIS;

     SOMATORIO := SOMATORIO + INT_PIS;

     PESO_PIS := PESO_PIS - 1;

     POS_PIS := POS_PIS + 1;

END LOOP;

PESO_PIS := 9;

WHILE POS_PIS < 11 LOOP

     INT_PIS := TO_NUMBER(SUBSTR(PIS_NUM, POS_PIS, 1)) * PESO_PIS;

     SOMATORIO := SOMATORIO + INT_PIS;

     PESO_PIS := PESO_PIS - 1;

     POS_PIS := POS_PIS + 1;

END LOOP;

INT_PIS := MOD(SOMATORIO, 11);

IF INT_PIS < 2 THEN

     INT_PIS := 11;

END IF;

MODULO_PIS := 11 - INT_PIS;

IF MODULO_PIS <> TO_NUMBER(SUBSTR(PIS_NUM, 11, 1)) THEN

     ERRO_PIS := 'S';

ELSE

     POS_PIS := 1;

     WHILE POS_PIS < 11 LOOP

  INT_PIS := POS_PIS + 1;

  IF SUBSTR(PIS_NUM, POS_PIS, 1) <> SUBSTR(PIS_NUM, INT_PIS, 1) THEN

      ERRO_PIS := 'N';

      POS_PIS := 11;

  ELSE

      POS_PIS := POS_PIS + 1;

  END IF;

     END LOOP;

END IF;

IF ERRO_PIS = 'S' THEN

     RETURN FALSE;

ELSE

     RETURN TRUE;

END IF;

    END IF;

END;

fonte: http://www.tst.gov.br/trt/Juridico/au/codigos_validacao.html

Link para o comentário
Compartilhar em outros sites

  • 0

<%
Public Function PISPASEP(Fcamp As String)
Dim FTAP As String
Dim TOT As Integer
Dim I As Integer
If Val(Fcamp) = 0 Then
PISPASEP = False
Exit Function
End If
If Len(Fcamp) <> 11 Then
PISPASEP = False
Exit Function
End If
FTAB = "3298765432"
TOT = 0
For I = 1 To 10
TOT = TOT + Val(Mid(Fcamp, I, 1)) * Val(Mid(FTAB, I, 1))
Next I
RESTO = Int(TOT Mod 11)
If RESTO <> 0 Then
RESTO = 11 - RESTO
End If
If RESTO <> Val(Mid(Fcamp, 11, 1)) Then
PISPASEP = False
Exit Function
End If
PISPASEP = True
End Function 
%> 

Retirado deste link

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...