What is a text macro program and how do I write one?