Buen día foro.
Respecto a la rutina o procedimiento para validar una CUIL/CUIT, devo aclarar; (después de tanto renegar); que el código que se expone más abajo no funciona en "Clarion 8 EE".
Trae un error; el cual no encontré referencia alguna para solucionarlo; cuando se hacen asignaciones en las variables locales al Souces, por ejemplo: "cuit2=cuit1", "fac=2" o "DV#=0".
El error que reporta (al Generar la App):
Error : Expected: <statement> <INT> <REAL> <DECIMAL> <STRING> <LINEBREAK> ( ; ACCEPT ASSERT CHOOSE RAISE TRY BEGIN
Para solucionarlo tuve que utilizar el siguiente código de validación:
Código: Seleccionar todo
! DV#=0;N#=2 ---> Estas variables locales generan error antes mensionado (las tuve que comentar).
Loop I# = LEN(CLIP(pinCUILoT)) To 1 By -1
C" = pinCUILoT ! al asignarle a la variable local C el parámetro de ingreso "pinCUILoT", dentro del Loop [b]no[/b] genera el error antes decripto.
N# += 1
If N# > 7
N# = 2
End
DV# += C"[I#] * N#
End
D# = DV#%11
If D# = 10
D# = 0
End
Return (D#)
- En el Prototype del Source: "(STRING pinCUILoT),BYTE"
- En el Actions --> Parameters: "(STRING pinCUILoT)"
Esa fue la solución, el código lo saque de la Wiki de Clarion.
Es como que la declaración de las variables en Clarion 8 EE hay que definirlas si o si en "Local Data ..." del procedimiento y asignales los valores de inicialización en "Initial Value" en los "Atributes".
Se, que en otras versiones de la herramienta la rutina funciona perfecto o sea no reporta los problemas que tuve, por ahí es algo de Clarion 8 EE, desconozco o sea no encontré referencia parecida en los foros.
Esto lo posteo para quien le pase algo parecido.
Saludos
anibalponce escribió: ↑Mié May 04, 2022 11:13 pm
Hola, te paso el que uso para el cuit. Ya no recuerdo de donde lo saqué
Saludos
Anibal
ValidaCUIT PROCEDURE (Cuit1) ! Declare Procedure
cuit2 STRING(255)
digver LONG
lon LONG
fac LONG
car STRING(1)
CODE
cuit2=cuit1
digver=0
fac=2
lon=LEN(CLIP(cuit2))
LOOP i#=lon-1 TO 1 BY -1
car=SUB(cuit2,i#,1)
IF car<'0' OR car>'9' THEN
CYCLE
.
digver=digver+(car*fac)
fac+=1
IF fac>7 THEN
fac=2
.
.
digver=11-(digver%11)
IF digver>9 THEN
digver=0
.
cuit2=SUB(cuit2,1,lon-1) & FORMAT(digver,@n01)
RETURN(cuit2)
Hola Anibal, buenos día
Muchas gracias por el aporte y la buena onda de responder.
Soy nuevo en Clarion, hace año hice una rutina en la Vers. 5 pero no fue significativa.
Estoy tratando de retomar nuevamente, te confieso que me cuesta mucho pero voy logrando entende el IDE (de apoco, claro).
Una consulta más.
Puedo hacerte consultas o preguntarte cuando tenga dificultades en algo...!!?
Indicame si lo hago por este foro o por algún correo que me pases.
Un saludo cordial y muchas gracias nuevamente
.