Subject: Re: max int value
To: Fong Siu Lung Gordon <ein@hkstar.com>
From: Jared D. McNeill <jmcneill@invisible.yi.org>
List: current-users
Date: 05/16/2000 07:16:21
```On Tue, 16 May 2000, Fong Siu Lung Gordon wrote:
> Yes, 14-character. My method is to individually cut the 14-character into
> 14 tokens and calculate the check digit from these tokens.  It works.  The
> problem is I have to calculate the check digit for a series of borrow card
> not just one and I don't to type it again and again.  The method I though
> of is to make a copy the start borrow card and increment by 1 each time.
> Then re-calculate the check digit and the new borrow card number.  The
> probelm is max int of my system (i386) is largest enough to hold the
> 14-charater digit.  That is the point.

If you're willing to do this in C++, you have a few options:
1. Use the BigInt class, it lets you work with huge numbers.
2. Use code in AddToBarCode() below

Alternately this code could probably be converted to C quite easily. Hope
this helps.

Jared

--

#include <iostream>
#include <string>
#include <cstdlib>

int
main()
{
string BarCode = "12345678901239";

return(0);
}

// Variables:	BarCode		Initial barcode value
// Returns:	New bar code as type string
{
int StringLen = 0;
int Flag = 0;
char WorkingChar;
string TempString = BarCode;
string TempChar;

StringLen = TempString.length();
WorkingChar = StringLen - 1;

while (!Flag)
{
TempChar = "";
TempChar += TempString[WorkingChar];

if (atoi(TempChar.c_str()) + 1 < 10)
{
TempString[WorkingChar] += 1;
Flag = 1;
} else {
TempString[WorkingChar] = '0';
WorkingChar--;
}
if (WorkingChar < 0)
{
TempString = "1" + TempString;
Flag = 1;
}
}
return(TempString);
}
```