Yeah.. I should've read further. 18446744073709551615 is the largest unsigned 64 bit integer, but having said that, I think it is going to take some doing to make BIGNUM work with MOD, since internally it's not an integer.
MOD is going to expect a 4 byte size and BIGNUM is 40 bytes, so if the incoming data size in bytes is > 4? ----- Original Message ----- From: "Tony IJntema" <[email protected]> To: "RBASE-L Mailing List" <[email protected]> Sent: Thursday, May 02, 2013 10:31 AM Subject: [RBASE-L] - Re: European IBAN (International Bank Account Number) check digit calculation : Mike, : : I'm afraid the maximum total length needed is even longer than 38 characters : (which is the maximum length of bignum). : The article, which Jim refers to, contains the statement you need a 128 bit : integer. : : Tony : : -----Original Message----- : From: [email protected] [mailto:[email protected]] On Behalf Of Mike Byerley : Sent: donderdag 2 mei 2013 15:43 : To: RBASE-L Mailing List : Subject: [RBASE-L] - Re: European IBAN (International Bank Account Number) : check digit calculation : : Or a 64 bit integer. : : ----- Original Message ----- : From: "James Bentley" <[email protected]> : To: "RBASE-L Mailing List" <[email protected]> : Sent: Thursday, May 02, 2013 5:36 AM : Subject: [RBASE-L] - Re: European IBAN (International Bank Account Number) : check digit calculation : : : Tony, : : The following Wikipedia article has a section on computing the mod if a : computer language cannot handle 30 digit integers. : http://en.wikipedia.org/wiki/International_Bank_Account_Number : : Per RBase V9.1 64 bit or V9.5 64 bit documentation, the BIGNUM data type can : hold the derived integer. : From the Wikipedia article you can enter set var d bignum (30,0) = : 3214282912345698765432161182 : Show var: : Variable = Value Type : -------------------- ------------------------------ ------- #DATE = : 05/02/2013 DATE #TIME = 4:14:02 TIME #PI = 3.14159265358979 DOUBLE SQLCODE = : 0 INTEGER SQLSTATE = 00000 TEXT #NOW = 05/02/2013 4:14:02 DATETIME d = : 3214282912345698765432161182 BIGNUM (30, 0) : : you are correct that the mod function does not handle BIGNUM as a valid data : type : R>set var dy integer = (mod(.d,97)) : -ERROR- Unrecognized command - retype it ( 40) : : Certainly, an enhancement request to add BIGNUM as acceptable argument for : MOD function would be in order. : In the meantime you could used the method described in the Wikipedia article : to create a Stored Procedure (function) to process the number in parts. : : : : : Jim Bentley, : American Celiac Society : 1-504-737-3293 : : : ________________________________ : From: Tony IJntema <[email protected]> : To: RBASE-L Mailing List <[email protected]> : Sent: Thursday, May 2, 2013 2:20 AM : Subject: [RBASE-L] - European IBAN (International Bank Account Number) check : digit calculation : : : Hi, : : In 2014 we will have to use a new bank account number in Europe. : : It looks like this: NL91ABNA0417164300 : : 91 is a check digit : : This check digit is a result of a mod 97 operation. : : The calculation that needs to be performed is: : : (mod(101123100417164300232100,97)) : : (The length of the figure is 24 characters) : : The result = 7 : : The check digit then becomes 98 - 7 = 91 : : My question is: This figure is too big for a modular operation and bignums : are not allowed in the mod function. Does anybody know a workaround? : : : N.B. : : To rules to create the long figure are: : : Change the IBAN to: ABNA0417164300NL00 (Put NL (=countrycode) after the : figure and add two zeroes to it. : Replace all letters by it's position in the Alphabet and add 9 to this : number ( A = 10, B = 11, and so on) : : Tony : :

