**************************************************************
****                    TOPROPER.PRG V1.03                ****
**************************************************************
FoxPro's implementation of PROPER() is limited and blindly
converts the leading digit of each word to uppercase, forcing
the remainder to lowercase. Thus, we get the following:

BEFORE: peter o'donnell
AFTER : Peter O'donnell

BEFORE: 113 ne 21st street
AFTER : 113 Ne 21st Street

BEFORE: peter o'donnell ba
AFTER : Peter O'donnell Ba

TOPROPER fixes this and allows you to add more validation to
suit your needs. It currently handles some medical and 
scholastic suffixes. It handles the apostrophe in names. It
handles the Scotsmen, Mac and Mc (assuming that the name has
been correctly keyed with the intervening space). Amend the 
PRG to add your own stuff and pass it on! Make it better and
send it back - it's a quickie!

Placed in the Public Domain by Paul de Freitas CIS 71320,747

**************************************************************
****                    RETRIM.PRG V1.00                  ****
**************************************************************
FoxPro does not regognise that an empty field has been clicked 
into and leaves the cursor somewhere in the field. This is bad
in KEY fields where the data must be left-justified. 

RETRIM() is used as a VALID expression and simply left justifies 
and re-establishes the correct length of the GET memvar, and
then does a SHOW GET. An optional, and probably useless parameter
does allow the programmer to specify a different length. I am
sure there must be a use for this. Let me know.

Placed in the Public Domain by Paul de Freitas CIS 71320,747

**************************************************************
****                   WAITMSG.PRG V1.00                  ****
**************************************************************
A quick and simple routine to reduce keying by allowing control
of the typical range of WAIT messages with one easy input style.

Exapmles:

  =WAITMSG("Record has been updated...") && doesn't wait              
  =WAITMSG("This message will vanish in 30 secs...",30) 
  =WAITMSG()  && clears prior message displayed          
  =WAITMSG("Press a key, dummy...",99)   && waits for key

Placed in the Public Domain by Paul de Freitas CIS 71320,747

