Página 1 de 1

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

Enviado: 15 Jul 2020 04:17
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

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

Enviado: 15 Jul 2020 09:10
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)

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

Enviado: 15 Jul 2020 13:11
por Ladinilson Sousa
Muchas gracias Claudio

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

Enviado: 04 Nov 2020 19:32
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)