Palm ソフトのLDL2002のバグ修正

ppc2007-06-15


PalmソフトLDL2002をベースに ソフト'Heaptectomy'の開発中に、LDL2002のプログラムにバグを発見した。
LDL2002では扱わない数字のところで発生するバグで、Heaptectomyの試験中にこれをめっけた。
今年、LDL系の診断基準が変わったので、
近いうちにLDL2002はバージョンアップする予定なんだけど、
とりあえず、LDL2002は修正してヴァージョン7.0をアップした。
以下の整数を100で割る関数が問題であった。
バグをフィックスしたら、長いプログラムになってしまった。
もっと、スマートなコードの書き方を教えて欲しい。


/***********************************************************************/
PUT dot 0.001 Place.
/***********************************************************************/
static CharPtr Dev100(double EFT)
{

static Char DigitA[51]={'\0','0','0','0'};
static Char DigitB[51]={'\0','0','0','0'};
int s1=0, s3=0, i=0, k=0, j=0, icase=0;
StrIToA(DigitA, EFT);
s1 = StrLen(DigitA);
s3 = s1-2;

if (EFT >= 0)
{
if( s1 > 2 ) {icase= 0;}
if( s1 == 1 ) {icase= 1;}
if( s1 == 2 ) {icase= 2;}
}

if (EFT < 0)
{
if( s1 > 3 ) {icase= 3;}
if( s1 == 1 ) {icase= 4;}
if( s1 == 2 ) {icase= 5;}
if( s1 == 3 ) {icase= 6;}
}

switch(icase)
{
case 0:
for (i=0;i