``````{ CB> ...I work For a bank and would like to create a Program to
CB> maintain better Record of our Cashier Checks and also any
CB> stop payments on them..I have done very little Programming
CB> on pascal. Ok here goes:
CB>         I would like to make the input of numbers to move
CB>         from a fixed point to the left and insert commas
CB>         every three digits For monetary figures?

You will need to set up a dedicated Character by Character input routine using
ReadKey and controlling the display yourself.  After each Character is entered
examine it and determine whether or not to add a comma.  The following very
simple (and untested) routine demonstrates this.

For a better way to do such input find and download TCSEL003.* from a PDN node
near you and study the KEYINPUT Unit.  You may be able to modify it to do
exactly what you want or perhaps use it as a guide to producing your own
"bullet proof" input routine.
}
Uses
Crt;

Function LastPos(ch : Char; S : String): Byte;
{ Returns the last position of ch in S or zero if ch not in S }
Var
x   : Word;
len : Byte Absolute S;
begin
x := succ(len);
Repeat
dec(x);
Until (x = 0) or (S[x] = ch);
LastPos := x;
end;  { LastPos }

Procedure GetNumber(fieldwidth: Byte);
Var ch : Char;
x,y: Byte;
i  : Word;
st : String;
begin
st := '';
Write('Enter a number: ');
x := WhereX;
y := WhereY;
Repeat
Case ch of
'0'..'9': begin
if LastPos(',',st) = length(st)-3 then
st := st + ',';
st := st + ch;
end;
#8      : begin
delete(st,length(st),1);
if st[length(st)] = ',' then
delete(st,length(st),1);
end;
#13     : Exit;
end;
gotoXY(x,y);
Write(st:fieldwidth);
Until False;
end;

begin
Writeln;
Writeln;
getnumber(14);
end.
``````