Modulus 11 Check Digit
Hi,
I am currently having an issue with the check digit of modulus 11 I am setting up for a customer.
At present the customer has an old DOS system which calculates the modulus 11 via the following:
6 characters
dd (2 digits) + input number (4 digits)
for example: 15 + 2300
receives: 4
I have set this up in the new bartender using the following script (please note I know nothing about scripting)
ISO7064Mod11_10(15+2300)
I am receiving: 5 (rather than 4)
Could anyone tell me if this is the correct way of doing this and if Mod11_10 is actually modulus 11?
Any help is appreciated.
I have also tried to verify with customer if their current DOS system is actually just the dd + input number, which they say it is.
-
Peter Thane
★ BarTender Hero ★
There are a number of Mod11 check digits in the VB functions and these are all calculated differently to one another.
None of those encoded as standard in BarTender will give a 4 as the check digit from what I can tell and so it looks like the formula being used to calculate this is different to these and so you will need to ascertain that formula in the existing system and then replicate that in your VB.
Please note however that 15+2300 (ie 2315) will give a different result to 152300 so you will need to check which it should actually be calculating
0 -
Gary Morrow
★ BarTender Hero ★
Hi Peter,
Thanks for getting back to me. The number the customer begins with is 152300.
I can calculate the modulus 11 using the normal formula:
The Accession No. is 152300
0+(1*(8-1))=7
7+(5*(8-2))=30
37+(2*(8-3))=10
47+(3*(8-4))=12
59+(0*(8-5))=0
59+(0*(8-6))=0
59 Modulus 11 = 4
The Check Digit is 4.
Just need to get this formula moved across to the Bartender.
So for number: 152300
15 correlating to "EnterDate" (dd) data source, 2300 correlating to "StartNumber" data source.
0 -
Peter Thane
★ BarTender Hero ★
Okay as mentioned above all the encoded Mod 11 check digits use a different formula to this and so you would need to used something like this where the "thecode" is the name I have given to the string containing the rest of the date, ie the 152300 in this instance.
Value = Format.NamedSubStrings("thecode").Value
Value1= Mid(Value,1,1)
Value2 = Mid(Value,2,1)
Value3 = Mid(Value,3,1)
Value4 = Mid(Value,4,1)
Value5 = Mid(Value,5,1)
Value6 = Mid(Value,6,1)Value1 = Value1 * 7
Value2 = Value2 * 6
Value3 = Value3 * 5
Value4 = Value4 * 4
Value5 = Value5 * 3
Value6 = Value6 * 2Value = Value1+Value2+Value3+Value4+Value5+Value6
Value = Value Mod 11
0 -
Gary Morrow
★ BarTender Hero ★
Hi Peter,
Thanks that worked a treat.
Definitely living up to your title of Bartender Hero lol
Really appreciate your help on this one.
Gary
0 -
Gary Morrow
★ BarTender Hero ★
Hi Peter,
Random one. I have "thecode" set on a vb script to Value=date+code
The code part of the label is set to serialize on print however, decrementing by 1.
The check digit is not updating with the decrementing number however, remaining the same as the original input code.
Is there a way round this?
Gary
0 -
Peter Thane
★ BarTender Hero ★
You will need to amend the VB type from Multi-Line to an Event Controlled Script and include the VB code in the OnSerialise section so that it runs after the number changes
0 -
Jose Adam Flores Sr.
★ BarTender Hero ★
Make sure to Serialize by Decrementing -1 your field
I made this script very similar to Peter's but with named Variables to make it easier to follow
Same Result.
mValue = Format.NamedSubStrings("mDAY").Value & Format.NamedSubStrings("mSERIAL").Value
mD1 = Left(mValue,1)
mD2 = Mid(mValue,2,1)
mC1 = Mid(mValue,3,1)
mC2 = Mid(mValue,4,1)
mC3 = Mid(mValue,5,1)
mC4 = Mid(mValue,6,1)'The Accession No. is 152300
mPos1 = 0+(mD1*(8-1)) ' =7
mPos2 = mPos1+(mD2*(8-2)) '=30
mPos3 =mPos2+(mC1*(8-3)) '=10
mPos4 =mPos3+(mC2*(8-4)) '=12
mPos5 = mPos4+(mC3*(8-5))' =0
mPos6 = mPos5+(mC4*(8-6)) '=0
mMOD = mPos6 Mod 11 '59 Modulus 11 = 4
'The Check Digit is 4.
Value = mMOD
Just Followed your Example, The m (Prefix is to designate a Memory Variable)
Setup your Decrementing field
Regards.
0 -
Gary Morrow
★ BarTender Hero ★
Thanks Adam. Great Bartender community on this platform.
kind regards,
Gary
0
Please sign in to leave a comment.
Comments
8 comments