Como seria este código em Clipper, Harbour ou Fivewin?

Fórum sobre outras linguagens de programação.

Moderador: Moderadores

Ladinilson Sousa
Usuário Nível 1
Usuário Nível 1
Mensagens: 35
Registrado em: 09 Fev 2015 11:41
Localização: Belém/PA

Como seria este código em Clipper, Harbour ou Fivewin?

Mensagem por Ladinilson Sousa »

Bom dia meus caros,

Tenho este código que queria traduzido em Clipper, harbour ou fivewin pois não sei de qual linguagem se trata.
Esta faltando um valor de uma variável (pNum) que acredito que foi passada como parâmetro.

Código: Selecionar todos

FUNÇÃO PARA CÁLCULO DE DÍGITO
==============================
Dim Ind As Integer
Dim lVlPro As Integer
Dim lVlTeste As String
Dim lCampo As String
Dim valfator As Integer
Dim lAjuste As Integer

lVlPro = 0
Ind = Len(pNum) + 1
If Ind = 44 Then
  lAjuste = 1
Else
  lAjuste = 0
End If
valfator = 1
lCampo = pNum
lVlTeste = pNum
While Ind > 1
  valfator = valfator + 1
  Ind = Ind - 1
  lVlPro = lVlPro + Mid(lVlTeste, Ind, 1).val * valfator
  If valfator = 9 Then
    valfator = 1
  End If
Wend
lVlPro = lVlPro Mod 11
lVlPro = 11 - lVlPro
If lVlPro = 10 Or lVlPro = 11 Or lVlPro = 0 Then
  lVlPro = lAjuste
End If
Return Str(lVlPro)
Se poderem agradeço a ajuda.

Obrigado

Ladinilson Sousa
Claudio Soto
Colaborador
Colaborador
Mensagens: 566
Registrado em: 27 Ago 2012 12:31
Localização: Uruguay
Contato:

Como seria este código em Clipper, Harbour ou Fivewin?

Mensagem por Claudio Soto »

Hola,
el código está en Visual Basic, en Harbour sería algo así (no lo probé):

Código: Selecionar todos

Ind := 0
lVlPro := 0
lVlTeste := ""
lCampo := ""
valfator := 0
lAjuste := 0


pNum = "string con el numero"

lVlPro = 0
Ind = Len(pNum) + 1

If Ind = 44 
  lAjuste = 1
Else
  lAjuste = 0
EndIf

valfator = 1
lCampo = pNum
lVlTeste = pNum

do While Ind > 1

  valfator = valfator + 1
  Ind = Ind - 1
  
//  lVlPro = lVlPro + Mid(lVlTeste, Ind, 1).val * valfator
  lVlPro = lVlPro + VAL( SUBSTR( lVlTeste, Ind, 1 ) ) * valfator
  
  If valfator = 9 
    valfator = 1
  EndIf
  
EndDo

// lVlPro = lVlPro Mod 11
lVlPro = lVlPro % 11

lVlPro = 11 - lVlPro

If lVlPro = 10 .Or. lVlPro = 11 .Or. lVlPro = 0
  lVlPro = lAjuste
EndIf

Return Str(lVlPro)
Saludos.
Dr. Claudio Soto
(Uruguay)
http://srvet.blogspot.com
Ladinilson Sousa
Usuário Nível 1
Usuário Nível 1
Mensagens: 35
Registrado em: 09 Fev 2015 11:41
Localização: Belém/PA

Como seria este código em Clipper, Harbour ou Fivewin?

Mensagem por Ladinilson Sousa »

Muchas gracias Claudio
Avatar do usuário
mauricioportela
Usuário Nível 2
Usuário Nível 2
Mensagens: 95
Registrado em: 29 Jul 2016 04:22
Localização: Vitoria da Conquista/Bahia

Como seria este código em Clipper, Harbour ou Fivewin?

Mensagem por mauricioportela »

Passando a flanelinha no codigo que o colega Claudio Soto converteu:

Código: Selecionar todos

FUNCTION digito( cNumero )
    LOCAL nIndice, nValorProduto, nValorFator, nAjuste, cValorTeste, cCampo
    nValorProduto := 0
    cValorTeste   := ""
    cCampo        := ""
    nIndice := Len( cNumero ) + 1
    IF nIndice == 44 
        nAjuste := 1
    ELSE
        nAjuste := 0
    ENDIF

    nValorFator := 1
    cValorTeste := cNumero
    cCampo      := cNumero

    WHILE ( nIndice > 1 )
        nValorFator += 1
        nIndice -= 1
        nValorProduto += (VAL( SUBSTR( cValorTeste, nIndice, 1 ) ) * nValorFator)
        IF ( nValorFator == 9 )
            nValorFator := 1
        ENDIF
    ENDDO
    nValorProduto %= 11
    nValorProduto := 11 - nValorProduto
    IF ( nValorProduto == 10 .OR. nValorProduto == 11 .OR. nValorProduto == 0 )
        nValorProduto := nAjuste
    ENDIF
RETURN ALLTRIM(STR(INT(nValorProduto)))
// RETURN ALLTRIM(STR(nValorProduto))
// RETURN STR(nValorProduto)
Responder