Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
Keeping the zero on the left after val ( )
Message
From
04/10/2007 08:50:28
 
General information
Forum:
Visual FoxPro
Category:
Coding, syntax & commands
Miscellaneous
Thread ID:
01258472
Message ID:
01258493
Views:
14
Sergey is right. An array would be simpler, but in any case, for the moment, maybe this would work for you. It can be simplified further with an array.
LOCAL llOk
llOk = .T.

LC = ALLTRIM(DIRETO.REG)

IF LEN(ALLTRIM(lc)) = 9
  FOR lnCounter = 1 TO LEN(ALLTRIM(lc)) - 1
    lcVarName = 'R' + ALLTRIM(STR(lnCounter))
    &lcVarName = VAL(SUBSTR(lc,lnCounter,1))
  ENDFOR

  DV = VAL(SUBSTR(9,1))

  Sum = (R1 * 8) + (R2 * 6) + (R3 * 4) + (R4 * 2) + (R5 * 3) + (R6 * 5) + (R7 * 9) + (R8 * 7)

  REST1 = MOD(Sum, 11)

  DO CASE
  CASE REST1 = 0
  DV1 = 5
  CASE REST1 = 1
  DV1 = 0
  OTHER
  DV1 = 11 - REST1
  ENDCASE

  IF DV1 # DV
    llOkk = .F.
  ENDIF
ELSE
  llOk = .F.
ENDIF

IF !llOk
  MESSAGEBOX ("invalid code") 
ENDIF
>Please take a look at the code below:
>
>** the last one is the verify digit
>
>
>LN = VAL (DIRETO.REG)
> endif
>
>
>FOR lnCounter = 1 TO LEN(ALLTRIM(STR(ln)))
>lcVarName = 'lcVarName' + ALLTRIM(STR(lnCounter))
>&lcVarName = INT(VAL(substr(trans(ln),lnCounter,1)))
>ENDFOR
>
>R1 = lcVarName1
>R2 = lcVarName2
>R3 = lcVarName3
>R4 = lcVarName4
>R5 = lcVarName5
>R6 = lcVarName6
>R7 = lcVarName7
>R8 = lcVarName8
>DV = lcVarName9
>
>
>Sum = (R1 * 8) + (R2 * 6) + (R3 * 4) + (R4 * 2) + (R5 * 3) + (R6 * 5) + (R7 * 9) + (R8 * 7)
>
>REST1 = MOD(Sum, 11)
>
>DO CASE
>CASE REST1 = 0
>DV1 = 5
>CASE REST1 = 1
>DV1 = 0
>OTHER
>DV1 = 11 - REST1
>ENDCASE
>
>IF DV1 # DV
>
>= MESSAGEBOX ("invalid code")
Previous
Reply
Map
View

Click here to load this message in the networking platform