rsheldon Posted October 20, 2014 Share Posted October 20, 2014 Good Afternoon Everyone, I am not sure that this is the correct forum to be on, but I will ask anyway. I am using VDP 9.1 in Acrobat 10.1 on iOS 10.8.5. I have a client that has sent in a database that I need to create a Scanline using 2 fields. The data is alphanumeric, and I need to create a Check Digit using a Mod10 with weights of 2, 1, 2, 1. Sample data is: Field 1 Field 2 CON135627 U14B1DDBMR The result is 0CON135627 U14B1DDBMR8, with 8 being the check digit. I am so confused Quote Link to comment Share on other sites More sharing options...
Dan Korn Posted October 20, 2014 Share Posted October 20, 2014 What do you mean by a "scanline?" Are you trying to output a bar code? Or do you just literally want a string of numbers and letters like "0CON135627 U14B1DDBMR8" to be in the output? Quote Link to comment Share on other sites More sharing options...
rsheldon Posted October 20, 2014 Author Share Posted October 20, 2014 Good Afternoon Dan, The Scanline is an alphanumeric string of text like the sample I gave. It uses the font OCR A. So yes, just a string of text, no barcode. I have received a few scanlines from other clients, but they come in already formatted in excel. Unfortunately with this one, I am creating from 2 fields in the database. The instructions I received are in the attached .xls fileScanline.zip Quote Link to comment Share on other sites More sharing options...
Dan Korn Posted October 20, 2014 Share Posted October 20, 2014 Good Afternoon Dan, The Scanline is an alphanumeric string of text like the sample I gave. It uses the font OCR A. So yes, just a string of text, no barcode. I have received a few scanlines from other clients, but they come in already formatted in excel. Unfortunately with this one, I am creating from 2 fields in the database. The instructions I received are in the attached .xls file Okay, out of everything in that Zip file, the instructions about this check digit are really just this one line from the Excel file: "This is the scan-line check digit - Modulus 10, double add double, sum of the digits,with weights of 2121,etc from right to left." I asked my best expert about this; his name is Dr. Google. Pasting that text into Google returns this: https://www.claredi.com/download/npi_luhn.html So I think that's the formula. But that formula is specific to numbers. It doesn't say what to do with non-digits, i.e letters. How are you supposed to get the "sum" of "CON135627 U14B1DDBMR"? Are you supposed to add the ASCII values of the letters, like for a POSTNET barcode? Once we have some numbers to deal with, it should be easy enough to apply the formula in that link. But what do we do with the letters? Maybe what we really need is this: http://en.wikipedia.org/wiki/CUSIP#Check_digit_pseudocode But, as much fun as it is for me to do all of this research for you, I think you need to get some clarification from whoever sent you those instructions about exactly what it means to make a check sum of "Modulus 10, double add double, sum of the digits" with something other than digits. Quote Link to comment Share on other sites More sharing options...
rsheldon Posted October 22, 2014 Author Share Posted October 22, 2014 Thanks Dan for taking a look at this for me. I have reached out to a caging house as well. This is where they check the scanline. I figured if they couldn't tell me, I am in deep deep trouble. From what I was reading in the scanline instructions: A = 3o, B = 31, C = 32 all the way to Z = 55, but I am still lost. Quote Link to comment Share on other sites More sharing options...
step Posted October 22, 2014 Share Posted October 22, 2014 I set this up using the formula Dan posted (or at least I tried to). The check digit, as I determined it, doesn't match your example so I'm not sure this is going to help you at all but I figured it may at least give you a starting place or at the very least the function for converting the alpha characters to the numeric values you listed above. I'm also unsure of where the leading zero is coming from in your example from your original post so that may have something to do with why my solution is a bit off. // Initiate variables var field1 = "CON135627"; var field2 = "U14B1DDBMR"; var result = []; var checkDigit = 0; // Function to convert alphas: // A = 30 // B = 31 // Z = 55 function getAlpha(input){ var alpha = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z']; var result = alpha.indexOf(input); return result + 30; } // Concatenate fields to create the barcode field var barcode = field1 + field2; // Replace alphas with numbers barcode = barcode.replace(/[a-z]/gi, function(s){return getAlpha(ToLower(s));}); // For loop to double every other number for (var i=0; i<barcode.length; i++) { if (i%2 == 1) { result.push(barcode[i]*2); } else { result.push(barcode[i]); } } // Join result of the above for loop into a string of numbers to be added together result = result.join(''); // For loop to all of the numbers together for (var n=0; n<result.length; n++){ checkDigit += Int(result[n]); } // Modulus 10 checkDigit = 10-(checkDigit%10); return field1 + " " + field2 + checkDigit; Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.