Checkbook Number

Contributor: WAYNE MOSES 
{
From: WAYNE MOSES
Subj: Spell a Number
---------------------------------------------------------------------------
 *> Quoting Chris Serino to All on 01-04-94 17:28
 *> Re: Help Looking for a Number
 Hello Chris:
 CS> I'm in the process of writing a Checkbook program for my Job and I
 CS> was wondering if anyone out there has a routine to convert a check
 CS> amount written in numerical to text. Here's an example of what I
 CS> need. Input Variable : 142.50
 CS> Needed Output : One Hundred Foury Two 50/100--------------------
 Weeeelllll ... since I am not really interested in releasing my personal
 check writing program to the world, I'll upload what I wrote last month.
 ------- 8<------------[ CUT LINE ]-------------- >8 -------
}
Function Translate(var DollarAmt : real) : string;
(*
 This is a module that converts the numerical dollar amount to a string,
 for example it converts 156ドル.15 to :
 'One Hundred and Fifty Six dollars ------------15/xx'.
 The field length of the translated amount is limited to 53 characters.
 Amounts up to and including 99,999ドル.99 are supported. I rarely write
 cheques larger than that, so they can be written by hand. ;-)
 ======================================================================
 Dedicated to the PUBLIC DOMAIN, this software code has been tested and
 used under TP 6.0/DOS and MS-DOS 6.2.
 ======================================================================
*)
const
 SingleSpelled : array[1..9] of string = ('One ','Two ','Three ','Four ',
 'Five ','Six ','Seven ','Eight ',
 'Nine ');
 TeenSpelled : array[1..9] of string = ('Eleven ','Twelve ','Thirteen ',
 'Fourteen ','Fifteen ','Sixteen ',
 'Seventeen ','Eighteen ','Nineteen');
 TenSpelled : array[1..9] of string = ('Ten ','Twenty ','Thirty ','Forty ',
 'Fifty ','Sixty ','Seventy ','Eighty',
 'Ninety ');
var
 Dollars, Cents,
 SingleStr, TenStr, HundredStr, ThousandStr : string;
 Singles, Tens, Hundreds, Thousands, k, l : integer;
begin
 if DollarAmt = 0 then (* The amount to be translated is 0.00 *)
 begin (* so the Dollars and Cents must be *)
 Dollars := 'Zero '; (* to reflect this. *)
 Cents := '00';
 end
 else
 begin (* Non trivial value for DollarAmt *)
 SingleStr := ''; TenStr := ''; HundredStr := ''; ThousandStr := '';
 { Parse the Cents out of DollarAmt }
 Str(frac(DollarAmt):0:2, Cents);
 if frac(DollarAmt) > 0 then
 Cents := copy(Cents,pos('.',Cents)+1,2)
 else
 Cents := '00';
 { Next parse the Dollars out of DollarAmt }
 Str(int(DollarAmt):1:0, Dollars);
 { Now, define the number of Singles, Tens, Hundreds, and Thousands }
 Thousands := trunc(DollarAmt/1000);
 Hundreds := trunc(DollarAmt/100)-Thousands*10;
 HundredStr := SingleSpelled[Hundreds];
 Tens := trunc(DollarAmt/10)-(Thousands*100+Hundreds*10);
 Singles := trunc(DollarAmt)-(Thousands*1000+Hundreds*100+Tens*10);
 SingleStr := SingleSpelled[Singles];
 case Tens of
 1 : begin
 TenStr := TeenSpelled[Singles];
 SingleStr := '';
 end;
 2..9 : TenStr := TenSpelled[Tens];
 end;
 case Thousands of
 10,20,
 30,50,
 60,70,
 80,90 : ThousandStr := TenSpelled[trunc(Thousands/10)];
 1..9 : ThousandStr := SingleSpelled[Thousands];
 11..19 : ThousandStr := TeenSpelled[Thousands-10];
 21..29 : ThousandStr := TenSpelled[trunc(Thousands/10)]+
 SingleSpelled[Thousands-20];
 31..39 : ThousandStr := TenSpelled[trunc(Thousands/10)]+
 SingleSpelled[Thousands-30];
 41..49 : ThousandStr := TenSpelled[trunc(Thousands/10)]+
 SingleSpelled[Thousands-40];
 51..59 : ThousandStr := TenSpelled[trunc(Thousands/10)]+
 SingleSpelled[Thousands-50];
 61..69 : ThousandStr := TenSpelled[trunc(Thousands/10)]+
 SingleSpelled[Thousands-60];
 71..79 : ThousandStr := TenSpelled[trunc(Thousands/10)]+
 SingleSpelled[Thousands-70];
 81..89 : ThousandStr := TenSpelled[trunc(Thousands/10)]+
 SingleSpelled[Thousands-80];
 91..99 : ThousandStr := TenSpelled[trunc(Thousands/10)]+
 SingleSpelled[Thousands-90];
 end;
 if Thousands > 0 then
 Dollars := ThousandStr+'Thousand '+HundredStr+'Hundred & '
 + TenStr + SingleStr
 else
 if (Hundreds > 0) and (Thousands = 0) then
 Dollars := HundredStr+'Hundred and '+ TenStr + SingleStr
 else
 Dollars := TenStr + SingleStr;
 end; (* End of block for non-trivial *)
 (* value for DollarAmt *)
 l := length(Dollars);
 for k := 1 to 60-(10+l+length(Cents)) do
 Dollars := Dollars+'-';
 If Thousands <100 then Translate := Dollars+Cents+'/xx' else begin 
	TextColor(Yellow+Blink); 
	Translate := '******** INVALID! THIS AMOUNT NOT SUPPORTED ********'; 
	end; 
end; 
misc0083.html

AltStyle によって変換されたページ (->オリジナル) /