<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://weblogs.foxite.com/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Boudewijn Lutgerink</title><link>http://weblogs.foxite.com/boudewijnlutgerink/default.aspx</link><description>BL's blog</description><dc:language>en-US</dc:language><generator>CommunityServer 2.0 (Build: 60217.2664)</generator><item><title>Sending mails, using NetExtender</title><link>http://weblogs.foxite.com/boudewijnlutgerink/archive/2008/07/23/Boudewijn_Lutgerink.aspx</link><pubDate>Wed, 23 Jul 2008 05:48:00 GMT</pubDate><guid isPermaLink="false">8827bd1c-7596-4a8f-b0de-f59ce9ede522:6420</guid><dc:creator>Boudewijn</dc:creator><slash:comments>0</slash:comments><comments>http://weblogs.foxite.com/boudewijnlutgerink/comments/6420.aspx</comments><wfw:commentRss>http://weblogs.foxite.com/boudewijnlutgerink/commentrss.aspx?PostID=6420</wfw:commentRss><description>&lt;P&gt;I have been playing around a bit with NetExtender by &lt;A href="http://etecnologia.net/"&gt;eTechnologia&lt;/A&gt;&amp;nbsp;from Colombia, these guys do some nifty work if it comes to opening the .Net framework for vfp users, it also enables us, VFP addicts, to share some of the datapower of the fox with those poor guys and galls&amp;nbsp;who are so sick to use .NET as is.&lt;/P&gt;
&lt;P&gt;One of the&amp;nbsp;pretty features I found is&amp;nbsp;that it&amp;nbsp;is possible&amp;nbsp;to send an email&amp;nbsp;with basically&amp;nbsp;5 lines of code.&lt;/P&gt;
&lt;P&gt;It could use a bit of tweaking to make it a bit more robust, but here are the lines:&lt;/P&gt;&lt;FONT face="Courier New" size=3&gt;
&lt;P&gt;omail = clrCreateObject("system::net::mail::mailmessage", ;&lt;BR&gt;"MailaddressOfSender",;&lt;BR&gt;"MailaddressOfReceiver",;&lt;BR&gt;"Subject",;&lt;BR&gt;"text to send")&lt;/P&gt;&lt;/FONT&gt;
&lt;P&gt;This one line creates a mailmessage object. I found that adding the 4 parameters, while creating the mailmessage object,&amp;nbsp;is the simplest way to create such a mailmessage.&lt;/P&gt;
&lt;P&gt;The next line makes clear that this message is in HTML format, &lt;/P&gt;&lt;FONT face="Courier New" size=3&gt;
&lt;P&gt;omail.isbodyhtml = .t.&lt;/P&gt;&lt;/FONT&gt;
&lt;P&gt;The next line is this:&lt;/P&gt;&lt;FONT face="Courier New" size=2&gt;
&lt;P&gt;&lt;FONT size=3&gt;osmtp = clrCreateObject("system::net::mail::smtpclient", ;&lt;BR&gt;"URLToTheMailServer", 25)&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Times New Roman" size=3&gt;This line creates the smtp client, it takes two parameters, the first one is the URL to the mailserver. &lt;BR&gt;It should look like &lt;EM&gt;mail.yourserver.com&lt;/EM&gt; or &lt;/FONT&gt;&lt;FONT face="Times New Roman"&gt;&lt;FONT size=3&gt;&lt;EM&gt;smtp.YourServer.com&lt;BR&gt;&lt;/EM&gt;The second parameter is the port of the server.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Times New Roman" size=3&gt;If your server requires authentication to send e-mails you need to use the following code:&lt;/FONT&gt;&lt;/P&gt;&lt;FONT face="Courier New" size=2&gt;
&lt;P&gt;&lt;FONT size=3&gt;ocred = clrCreateObject("system::net::NetworkCredential",;&lt;BR&gt;"YourUserNameOnTheServer", "YourPassword")&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Times New Roman" size=3&gt;Then you need to add the credentials to the smtpclient object, here is the rocket-science line for it:&lt;/FONT&gt;&lt;/P&gt;&lt;FONT face="Courier New" size=2&gt;
&lt;P&gt;&lt;FONT size=3&gt;osmtp.Credentials = ocred&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Times New Roman" size=3&gt;OK, maybe you need to sit back for a moment. &lt;/FONT&gt;&lt;FONT face="Times New Roman" size=3&gt;The hardest line is this:&lt;/FONT&gt;&lt;/P&gt;&lt;FONT face="Courier New" size=2&gt;
&lt;P&gt;&lt;FONT size=3&gt;osmtp.send( omail )&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT&gt;&lt;img src="/emoticons/emotion-5.gif" alt="Wink [;)]" /&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT&gt;&lt;FONT face="Times New Roman" size=3&gt;The clrCreateObject() function I used in the code is one of the function provided by eTechnologia. There are a few more. I will show them, and their usage, in following blogs&lt;/FONT&gt;.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT&gt;&lt;FONT face="Times New Roman" size=3&gt;I will keep on playing with the NetExtender. &lt;BR&gt;I will keep you bugging with short notices on useful things I found.&amp;nbsp;&lt;BR&gt;You didn't really think you could get rid of me that easy? NO WAY!&lt;/FONT&gt; &lt;img src="/emoticons/emotion-4.gif" alt="Stick out tongue [:P]" /&gt;&lt;BR&gt;&lt;BR&gt;&lt;FONT face="Times New Roman" size=3&gt;NetExtender&amp;nbsp;really is very affordable. 120 dollars is not much at all, for those in the Euro zone, this comes down to about EUR 75. &lt;BR&gt;By buying the package you not only get the NetExtender for VFP but also the Net Compiler for VFP, It turns VFP code into .NEt assemblies, executables and, since the latest update, it also enables you to use foxcode behind your aspx pages.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Times New Roman" size=3&gt;The product has now a bit more than 50% of the VFP features implemented and the progress of the work is going on and on. In my opinion this initiative, along with Graig Boyd's VFP Studio makes the fox stronger than ever. Foxes never die, they re-incarnate in new bodies. (Hmmm, or is this a cat in a cloaking device, meaning&amp;nbsp;this fox/cat&amp;nbsp;should have 9 lifes.)&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Times New Roman" size=3&gt;What I see happening here is that due to the support from our own community an interesting development started. MS let us off the leash. At least now we know for sure that there will be no marketing around the best product ever at least from the side of MS. (Not that they ever did much, but that is common knowledge.) Due to the community itself the fox lives on, in another form maybe, but still as productive and fast as we are so used to. With these developments we can blow other developers right out of the water.&lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;img src="http://weblogs.foxite.com/aggbug.aspx?PostID=6420" width="1" height="1"&gt;</description><category domain="http://weblogs.foxite.com/boudewijnlutgerink/archive/category/11.aspx">Visual FoxPro</category><category domain="http://weblogs.foxite.com/boudewijnlutgerink/archive/category/147.aspx">VFP</category><category domain="http://weblogs.foxite.com/boudewijnlutgerink/archive/category/152.aspx">software development</category></item><item><title>MVP, I feel pleased and surprised</title><link>http://weblogs.foxite.com/boudewijnlutgerink/archive/2007/04/05/3640.aspx</link><pubDate>Thu, 05 Apr 2007 10:43:00 GMT</pubDate><guid isPermaLink="false">8827bd1c-7596-4a8f-b0de-f59ce9ede522:3640</guid><dc:creator>Boudewijn</dc:creator><slash:comments>0</slash:comments><comments>http://weblogs.foxite.com/boudewijnlutgerink/comments/3640.aspx</comments><wfw:commentRss>http://weblogs.foxite.com/boudewijnlutgerink/commentrss.aspx?PostID=3640</wfw:commentRss><description>&lt;P&gt;As was released on the forum I am awarded with the MVP award by Microsoft.&lt;/P&gt;
&lt;P&gt;I feel VERY honored and pleased with this, at the same time I am surprised.&lt;BR&gt;Being very bluint in my opinion(s) in the past I had the feeling that I had minimized my chances for becoming MVP to below zero.&lt;/P&gt;
&lt;P&gt;Now that I am awarded I will not really stop speaking out as I feel. (You did not expect that did you?)&lt;/P&gt;
&lt;P&gt;What I also feel is an extra drive to bring up my ideas about IT in general and creating&amp;nbsp;solutions for the benefit of all, both your customers as well as you as developer.&lt;/P&gt;
&lt;P&gt;Hoping to receive feed-back from you all, so I can improve on these efforts.&lt;/P&gt;&lt;img src="http://weblogs.foxite.com/aggbug.aspx?PostID=3640" width="1" height="1"&gt;</description><category domain="http://weblogs.foxite.com/boudewijnlutgerink/archive/category/11.aspx">Visual FoxPro</category><category domain="http://weblogs.foxite.com/boudewijnlutgerink/archive/category/20.aspx">Software development issues</category><category domain="http://weblogs.foxite.com/boudewijnlutgerink/archive/category/147.aspx">VFP</category><category domain="http://weblogs.foxite.com/boudewijnlutgerink/archive/category/152.aspx">software development</category></item><item><title>Interesting email exchange</title><link>http://weblogs.foxite.com/boudewijnlutgerink/archive/2007/03/22/3546.aspx</link><pubDate>Thu, 22 Mar 2007 07:50:00 GMT</pubDate><guid isPermaLink="false">8827bd1c-7596-4a8f-b0de-f59ce9ede522:3546</guid><dc:creator>Boudewijn</dc:creator><slash:comments>0</slash:comments><comments>http://weblogs.foxite.com/boudewijnlutgerink/comments/3546.aspx</comments><wfw:commentRss>http://weblogs.foxite.com/boudewijnlutgerink/commentrss.aspx?PostID=3546</wfw:commentRss><description>&lt;P&gt;OK, Back home again. A stay in the hospital is bad for my sense of humor.&amp;nbsp;Earlier this week&amp;nbsp;I sat in one of those conversation rooms where two old men were bragging how sick they were and how painful their operations were et cetera. There I was, with a drain. I got so annoyed with these men that I asked, pointing at the bottle from my drain: "Wanna drink?"&lt;/P&gt;
&lt;P&gt;They were gone before I could blink my eye.&lt;/P&gt;
&lt;P&gt;Anyway. In all the rush around the BAD news I had a short e-mail exchange with Les Pinter.&lt;/P&gt;
&lt;P&gt;He wrote to me: "I found out that Bill Gates had said, to a group assembled in his office, "Every time we sell a copy of FoxPro we lose $10,000 in SQL Server royalties."&lt;/P&gt;
&lt;P&gt;So in case you have been wondering what the reason was for finally stopping further development on VFP, here it is, plain and simple money... Ah, Liza Minelli already sang that years ago "Money makes the world go 'round" (in the musical "Cabaret")&lt;/P&gt;&lt;img src="http://weblogs.foxite.com/aggbug.aspx?PostID=3546" width="1" height="1"&gt;</description><category domain="http://weblogs.foxite.com/boudewijnlutgerink/archive/category/11.aspx">Visual FoxPro</category><category domain="http://weblogs.foxite.com/boudewijnlutgerink/archive/category/20.aspx">Software development issues</category><category domain="http://weblogs.foxite.com/boudewijnlutgerink/archive/category/147.aspx">VFP</category><category domain="http://weblogs.foxite.com/boudewijnlutgerink/archive/category/152.aspx">software development</category></item><item><title>new site</title><link>http://weblogs.foxite.com/boudewijnlutgerink/archive/2007/03/19/3484.aspx</link><pubDate>Mon, 19 Mar 2007 07:39:00 GMT</pubDate><guid isPermaLink="false">8827bd1c-7596-4a8f-b0de-f59ce9ede522:3484</guid><dc:creator>Boudewijn</dc:creator><slash:comments>0</slash:comments><comments>http://weblogs.foxite.com/boudewijnlutgerink/comments/3484.aspx</comments><wfw:commentRss>http://weblogs.foxite.com/boudewijnlutgerink/commentrss.aspx?PostID=3484</wfw:commentRss><description>&lt;P&gt;From the hospital, still a bit&amp;nbsp;drousy from&amp;nbsp;last Friday's operation. Thank God they have Internet.&lt;/P&gt;
&lt;P&gt;After last weeks devastating news from MS&amp;nbsp;I decided to set up a new site. VFP2dotNJET.com. AND NO that is NOT a typo. I still hate that less than second best framework thought out by a bunch of crappy guys and galls under the heavy influence of last night's drink.&lt;BR&gt;The logo will be a fox with a tear in his eye, kinda Pagliacci. There will, of course, be a rant page where I tell exactly how I feel about those duckheads in Redmond who killed the only good tool they ever created.&lt;/P&gt;
&lt;P&gt;YAG told me Perl and Cobol are still going strong. &lt;BR&gt;Well, for his information, COBOL has a .net compiler, meaning there is development going on and Perl is in development by it's maker and many others. Kind of REAL open source. &lt;BR&gt;I just wonder what they think of us. That we are stupid?&lt;BR&gt;Anyway, his argument is swept off the table by a simple fact that can be checked on the internet.&lt;/P&gt;
&lt;P&gt;I have no idea yet what to do with 2 other sites, vfpdevelopers-online and teachyourself-vfp.&lt;/P&gt;
&lt;P&gt;What do you think. Let me know.&lt;/P&gt;
&lt;P&gt;Be back on-line by the end of the week. (I assume).&lt;/P&gt;&lt;img src="http://weblogs.foxite.com/aggbug.aspx?PostID=3484" width="1" height="1"&gt;</description><category domain="http://weblogs.foxite.com/boudewijnlutgerink/archive/category/11.aspx">Visual FoxPro</category><category domain="http://weblogs.foxite.com/boudewijnlutgerink/archive/category/20.aspx">Software development issues</category><category domain="http://weblogs.foxite.com/boudewijnlutgerink/archive/category/147.aspx">VFP</category><category domain="http://weblogs.foxite.com/boudewijnlutgerink/archive/category/152.aspx">software development</category></item><item><title>VFP can do Double Byte Character Sets</title><link>http://weblogs.foxite.com/boudewijnlutgerink/archive/2007/03/12/3439.aspx</link><pubDate>Mon, 12 Mar 2007 09:51:00 GMT</pubDate><guid isPermaLink="false">8827bd1c-7596-4a8f-b0de-f59ce9ede522:3439</guid><dc:creator>Boudewijn</dc:creator><slash:comments>0</slash:comments><comments>http://weblogs.foxite.com/boudewijnlutgerink/comments/3439.aspx</comments><wfw:commentRss>http://weblogs.foxite.com/boudewijnlutgerink/commentrss.aspx?PostID=3439</wfw:commentRss><description>&lt;P class=MsoNormal&gt;&lt;SPAN&gt;Much has been written about the double byte character sets already.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;Steven Black has an excellent article on his site written by margaret Duddy, look at &lt;A href="http://www.stevenblack.com/INTLUsingAsianCharacters.asp"&gt;http://www.stevenblack.com/INTLUsingAsianCharacters.asp&lt;/A&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;Also Rick Strahl has written about his thoughts and solutions about this, in one excellent article on &lt;A href="http://www.west-wind.com/presentations/foxunicode/foxunicode.asp"&gt;http://www.west-wind.com/presentations/foxunicode/foxunicode.asp&lt;/A&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;Both articles helped me in creating the solution I offer here.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H2&gt;&lt;SPAN&gt;&lt;EM&gt;&lt;FONT face=Arial&gt;&lt;FONT size=4&gt;About this article.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/EM&gt;&lt;/SPAN&gt;&lt;/H2&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;This article is written with three goals in mind.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;First and for all I want to show that it is rather easy to create VFP applications that can display MULTIPLE Double Byte Character Sets AT THE SAME TIME.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;Secondly I want to show that accessing non - VFP sources is relatively easy.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;Third, I hope to show that “thinking outside the box” can give you results that you cannot achieve with VFP alone.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H2&gt;&lt;SPAN&gt;&lt;EM&gt;&lt;FONT face=Arial&gt;&lt;FONT size=4&gt;About the customer.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/EM&gt;&lt;/SPAN&gt;&lt;/H2&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;Some time ago I was approached by a company in the Netherlands that needed an application.&lt;BR&gt;This company manufactures products for leather processing, think of leather tanning, conservation, coloring et cetera. These products are shipped worldwide.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;Due to the divers nature of the products they ship these products with product information, information on health issues when using the products, handling of the containers, security descriptions and more.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;They ship these products to all kinds of countries, from western countries as well as to Asian countries and Eastern European countries.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;This brings a special requirement to the labeling process. The labels need to display the text in the written language of the country they ship the products to.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;As a matter of fact, Chinese people are really familiar with Chinese characters, Indian people really are far more familiar with Hindi than with English, German or Dutch. &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;These, and other languages are written in what we call Double Byte Character Sets, from now on I refer to this as DBCS.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;I encourage you to read the above articles by both Margaret Duddy and Rick Strahl to get a better understanding on DBCS and unicode.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;B&gt;&lt;I&gt;&lt;SPAN&gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;/I&gt;&lt;/B&gt;
&lt;H2&gt;&lt;SPAN&gt;&lt;EM&gt;&lt;FONT face=Arial&gt;&lt;FONT size=4&gt;The challenge.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/EM&gt;&lt;/SPAN&gt;&lt;/H2&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;We all know that VFP does NOT do unicode or DBCS by nature.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;What it DOES do is datahandling, like no other! &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;I did receive an &lt;B&gt;&lt;U&gt;excel&lt;/U&gt;&lt;/B&gt; spreadsheet with many languages.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;That triggered me. A sheet with both Single Byte Character Sets (SBCS) as well as DBCS.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;My first little experiment was to copy/paste one of the DBCS fields from the excel-sheet on a word document. That worked well.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;My conclusion was that Windows’ memory did NOT alter the content AND that office controls do display the DBCS data well.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;I did first create a database from the spreadsheet in&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;Access. (ok i wash my mouth later on). You can also use SQL Server, Oracle or MySQL for storing DBCS values.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;The reason for me was that this application had to be low cost and the amount of data was not that much.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;I did check the values in the table in the database among those in the excel sheet, they matched. With this the storage problem was solved. No tweaking needed for that, using other databases can thus be a solution for storing these values in a correct way.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;The second problem was to display the data in the table.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;As we all know the VFP controls cannot display DBCS values, what you see then is ??????????.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;As I was determined to use VFP forms for this I had to come up with a solution that was available without much or no costs.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;After some research I found that there is an ActiveX file that contains everything we need.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;I speak about the FM20.dll in the system folder of your machine.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;The controls? Microsoft Forms 2.0 xxx controls. Like Checkbox, Textbox, Listbox, SpinButton and others. &lt;A href="http://www.lutgerink-esa.nl/Artikelen/images/Insert_Object_dialogue.png"&gt;a picture of the dialogue can be found here&lt;/A&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;&lt;SPAN&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;These controls&amp;nbsp;do not have&amp;nbsp;the same&amp;nbsp;possibilities as the VFP controls (did you really expect something else? Dream on!) but they are sufficient for most of the stuff like displaying data.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;&lt;SPAN&gt;&lt;o:p&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;And of course, you can always subclass these controls, which I did, for good reason, as I will show later on in this article.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;Using ADO to access the database and retrieving the record(s) you want brings the data in a result set in memory.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;I created one simple form first to see whether I could display the data in memory.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;(Simple display form)&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;&lt;SPAN&gt;&lt;o:p&gt;
&lt;H2&gt;&lt;SPAN&gt;&lt;EM&gt;&lt;FONT face=Arial&gt;&lt;FONT size=4&gt;Subclassing the activeX control and a builder&lt;/FONT&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/EM&gt;&lt;/SPAN&gt;&lt;/H2&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;When adding activeX controls to forms you have to follow a number of steps.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;First you select, from the forms controls toolbar, the OLEControl.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;Then you select Insert &lt;U&gt;C&lt;/U&gt;ontrol.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;From the list that appears select the control and click OK.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;This adds the activeX control on your form. It might not quite look like what you want.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;The form 2.0 controls (at least the textbox I use here) appear like a square box on the form.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;A href="http://www.lutgerink-esa.nl/Artikelen/images/First_Insert.png"&gt;You can see the picture of a form with inserted textbox&amp;nbsp;here&lt;/A&gt;&lt;/P&gt;&lt;/o:p&gt;&lt;/SPAN&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;As you can see it is not really suitable for one line in a textfield.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;&lt;SPAN&gt;&lt;o:p&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;So I first subclassed the control after resizing it, storing it in a VCX and then tried to drop it on my form…&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;A href="http://www.lutgerink-esa.nl/Artikelen/images/OOPS.png"&gt;Here you see the result&lt;/A&gt;.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;o:p&gt;&lt;SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;Not quite my idea of a useful textbox…&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;&lt;SPAN&gt;&lt;SPAN&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;So I came up with the idea of a simple builder.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;The task of this builder would be as follows:&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;After dropping a VFP based control on the form the builder can be invoked.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;It will replace the vfp control with the activeX control.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;It will resize the ActiveX textbox with the sizes of the textbox.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;It will remove the original textbox from the form.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;It will rename the name of the newly added control with the name of the control that is removed form the form.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;The code was very simple:&lt;/SPAN&gt;&lt;/P&gt;&lt;SPAN&gt;&lt;o:p&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;LPARAMETERS &lt;/SPAN&gt;&lt;SPAN&gt;P1&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;P2&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;P3&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;* parameter statement is needed, NOT in use in this tiny builder prg.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;Local Array &lt;/SPAN&gt;&lt;SPAN&gt;laControls&lt;/SPAN&gt;&lt;SPAN&gt;[1]&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;LOCAL &lt;/SPAN&gt;&lt;SPAN&gt;lni &lt;/SPAN&gt;&lt;SPAN&gt;as Integer&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;loCntr &lt;/SPAN&gt;&lt;SPAN&gt;as Object&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;lcname &lt;/SPAN&gt;&lt;SPAN&gt;as String&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;lcNewname &lt;/SPAN&gt;&lt;SPAN&gt;as String&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;lofrm &lt;/SPAN&gt;&lt;SPAN&gt;as Object&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;IF ASELOBJ&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;laControls&lt;/SPAN&gt;&lt;SPAN&gt;)&amp;gt;&lt;/SPAN&gt;&lt;SPAN&gt;0&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;FOR &lt;/SPAN&gt;&lt;SPAN&gt;lni &lt;/SPAN&gt;&lt;SPAN&gt;= &lt;/SPAN&gt;&lt;SPAN&gt;1 &lt;/SPAN&gt;&lt;SPAN&gt;TO ALEN&lt;/SPAN&gt;&lt;SPAN&gt;( &lt;/SPAN&gt;&lt;SPAN&gt;laControls&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;/SPAN&gt;&lt;SPAN&gt;1&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;*Check whether the control is of bl_text class&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;*&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;IF UPPER&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;laControls&lt;/SPAN&gt;&lt;SPAN&gt;[lni]&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;class&lt;/SPAN&gt;&lt;SPAN&gt;) == &lt;/SPAN&gt;&lt;SPAN&gt;"BL_TEXT"&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;loCntr &lt;/SPAN&gt;&lt;SPAN&gt;= &lt;/SPAN&gt;&lt;SPAN&gt;lacontrols&lt;/SPAN&gt;&lt;SPAN&gt;[lni]&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;lcname &lt;/SPAN&gt;&lt;SPAN&gt;= &lt;/SPAN&gt;&lt;SPAN&gt;loCntr&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;name&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;* Create a temp name form the object to insert&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;*&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;lcNewname &lt;/SPAN&gt;&lt;SPAN&gt;= &lt;/SPAN&gt;&lt;SPAN&gt;"_"&lt;/SPAN&gt;&lt;SPAN&gt;+&lt;/SPAN&gt;&lt;SPAN&gt;lcName&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;WITH &lt;/SPAN&gt;&lt;SPAN&gt;loCntr&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;Parent&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;* Add a new object&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;*&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;NewObject&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;lcNewName&lt;/SPAN&gt;&lt;SPAN&gt;,;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;"bltext"&lt;/SPAN&gt;&lt;SPAN&gt;,;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;"&amp;lt;drive&amp;gt;:\&amp;lt;folder&amp;gt;\blcontrols.vcx"&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;* Replace drive and folder&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;* with the folder of your own settings&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;* Change the characteristics&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;* With those of the control that will be removed at the end.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;*&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;.&amp;amp;&lt;/SPAN&gt;&lt;SPAN&gt;lcNewname&lt;/SPAN&gt;&lt;SPAN&gt;..&lt;/SPAN&gt;&lt;SPAN&gt;Visible&lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt;&lt;SPAN&gt;.T.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;.&amp;amp;&lt;/SPAN&gt;&lt;SPAN&gt;lcNewname&lt;/SPAN&gt;&lt;SPAN&gt;..&lt;/SPAN&gt;&lt;SPAN&gt;left &lt;/SPAN&gt;&lt;SPAN&gt;= &lt;/SPAN&gt;&lt;SPAN&gt;loCntr&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;Left&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;.&amp;amp;&lt;/SPAN&gt;&lt;SPAN&gt;lcNewname&lt;/SPAN&gt;&lt;SPAN&gt;..&lt;/SPAN&gt;&lt;SPAN&gt;top &lt;/SPAN&gt;&lt;SPAN&gt;= &lt;/SPAN&gt;&lt;SPAN&gt;loCntr&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;top&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;* adjust width and height a bit&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;* for better alignment.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;*&lt;/SPAN&gt;&lt;SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;.&amp;amp;&lt;/SPAN&gt;&lt;SPAN&gt;lcNewname&lt;/SPAN&gt;&lt;SPAN&gt;..&lt;/SPAN&gt;&lt;SPAN&gt;width &lt;/SPAN&gt;&lt;SPAN&gt;= &lt;/SPAN&gt;&lt;SPAN&gt;loCntr&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;width&lt;/SPAN&gt;&lt;SPAN&gt;+&lt;/SPAN&gt;&lt;SPAN&gt;4 &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;.&amp;amp;&lt;/SPAN&gt;&lt;SPAN&gt;lcNewname&lt;/SPAN&gt;&lt;SPAN&gt;..&lt;/SPAN&gt;&lt;SPAN&gt;height &lt;/SPAN&gt;&lt;SPAN&gt;= &lt;/SPAN&gt;&lt;SPAN&gt;loCntr&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;height&lt;/SPAN&gt;&lt;SPAN&gt;+&lt;/SPAN&gt;&lt;SPAN&gt;2&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;.&amp;amp;&lt;/SPAN&gt;&lt;SPAN&gt;lcNewname&lt;/SPAN&gt;&lt;SPAN&gt;..&lt;/SPAN&gt;&lt;SPAN&gt;controlsource &lt;/SPAN&gt;&lt;SPAN&gt;= &lt;/SPAN&gt;&lt;SPAN&gt;loCntr&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;controlsource&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;ENDWITH&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;* Remove the old control (the normal textbox)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;*&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;lofrm &lt;/SPAN&gt;&lt;SPAN&gt;= &lt;/SPAN&gt;&lt;SPAN&gt;loCntr&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;Parent&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;lofrm&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;RemoveObject&lt;/SPAN&gt;&lt;SPAN&gt;( &lt;/SPAN&gt;&lt;SPAN&gt;loCntr&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;Name&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;* Give the newly inserted control the name of the old control&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;*&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;lofrm&lt;/SPAN&gt;&lt;SPAN&gt;.&amp;amp;&lt;/SPAN&gt;&lt;SPAN&gt;lcNewname&lt;/SPAN&gt;&lt;SPAN&gt;..&lt;/SPAN&gt;&lt;SPAN&gt;name &lt;/SPAN&gt;&lt;SPAN&gt;= &lt;/SPAN&gt;&lt;SPAN&gt;lcname&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;ENDIF&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;ENDFOR&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;ENDIF&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;This builder has no interface at all, I fancy the saying from Alan Cooper, “there is no better user interface than no interface at all.”&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;You DO need to register the builder in the home()+”wizards\builder.dbf”&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;Since I want to use this builder with a single object as well as with multiple objects I inserted two records in the builder table.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;Make sure that the builder itself can be found by VFP, it has to be in one of the folder in the VFP search path.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;The code to register the builder is simple.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;INSERT INTO &lt;/SPAN&gt;&lt;SPAN&gt;wizards&lt;/SPAN&gt;&lt;SPAN&gt;\&lt;/SPAN&gt;&lt;SPAN&gt;builder &lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;name&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;type&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;program&lt;/SPAN&gt;&lt;SPAN&gt;) ;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;VALUES &lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;"blbuilder"&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;"bl_text"&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;"blbuilder.prg"&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;INSERT INTO &lt;/SPAN&gt;&lt;SPAN&gt;wizards&lt;/SPAN&gt;&lt;SPAN&gt;\&lt;/SPAN&gt;&lt;SPAN&gt;builder &lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;name&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;type&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;program&lt;/SPAN&gt;&lt;SPAN&gt;) ;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;VALUES &lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;"blbuilder"&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;"MULTISELECT"&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;"blbuilder.prg"&lt;/SPAN&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;&lt;SPAN&gt;&lt;o:p&gt;&lt;SPAN&gt;&lt;FONT face="Times New Roman" color=#000000 size=3&gt;
&lt;P class=MsoNormal&gt;&lt;A href="http://www.lutgerink-esa.nl/Artikelen/images/Multiple_language.png"&gt;The final result is a form that can display different languages in ONE form&lt;/A&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;img src="http://weblogs.foxite.com/aggbug.aspx?PostID=3439" width="1" height="1"&gt;</description><category domain="http://weblogs.foxite.com/boudewijnlutgerink/archive/category/11.aspx">Visual FoxPro</category><category domain="http://weblogs.foxite.com/boudewijnlutgerink/archive/category/20.aspx">Software development issues</category><category domain="http://weblogs.foxite.com/boudewijnlutgerink/archive/category/147.aspx">VFP</category><category domain="http://weblogs.foxite.com/boudewijnlutgerink/archive/category/152.aspx">software development</category></item><item><title>Working hard on a new site</title><link>http://weblogs.foxite.com/boudewijnlutgerink/archive/2007/02/15/3287.aspx</link><pubDate>Thu, 15 Feb 2007 09:21:00 GMT</pubDate><guid isPermaLink="false">8827bd1c-7596-4a8f-b0de-f59ce9ede522:3287</guid><dc:creator>Boudewijn</dc:creator><slash:comments>0</slash:comments><comments>http://weblogs.foxite.com/boudewijnlutgerink/comments/3287.aspx</comments><wfw:commentRss>http://weblogs.foxite.com/boudewijnlutgerink/commentrss.aspx?PostID=3287</wfw:commentRss><description>&lt;P&gt;Years ago, on Profox,&amp;nbsp;Ken Levy suggested a guerilla tactic in marketing to make Visual FoxPro more visible.&lt;/P&gt;
&lt;P&gt;So here is my part. I am now working on a site, &lt;A href="http://www.vfpdevelopers-online.com"&gt;www.vfpdevelopers-online.com&lt;/A&gt; where any self employed Visual FoxPro addict and any software shop, working with Visual FoxPro, can put ads FOR free.&lt;/P&gt;
&lt;P&gt;The site is not quite done yet, lots of pages to create. &lt;BR&gt;I hope that this will, eventually, bring Visual FoxPro more to the attention of the world of managers and IT specialists.&lt;/P&gt;
&lt;P&gt;The fox will always keep on running...&lt;/P&gt;&lt;img src="http://weblogs.foxite.com/aggbug.aspx?PostID=3287" width="1" height="1"&gt;</description><category domain="http://weblogs.foxite.com/boudewijnlutgerink/archive/category/11.aspx">Visual FoxPro</category><category domain="http://weblogs.foxite.com/boudewijnlutgerink/archive/category/147.aspx">VFP</category><category domain="http://weblogs.foxite.com/boudewijnlutgerink/archive/category/152.aspx">software development</category></item><item><title>tagged... oh boy... now what</title><link>http://weblogs.foxite.com/boudewijnlutgerink/archive/2007/01/14/3128.aspx</link><pubDate>Sun, 14 Jan 2007 21:25:00 GMT</pubDate><guid isPermaLink="false">8827bd1c-7596-4a8f-b0de-f59ce9ede522:3128</guid><dc:creator>Boudewijn</dc:creator><slash:comments>1</slash:comments><comments>http://weblogs.foxite.com/boudewijnlutgerink/comments/3128.aspx</comments><wfw:commentRss>http://weblogs.foxite.com/boudewijnlutgerink/commentrss.aspx?PostID=3128</wfw:commentRss><description>&lt;P&gt;You foxers are a curious kind of human beings. So Eric Tagged me (how dare he). You really want to know 5 things about this doubledutch Dutchman you do not know, always wanted to know but were afraid to ask?&lt;/P&gt;
&lt;P&gt;Do I want to tell you all the gory details? YEAH SURE. I&amp;nbsp;am, after all,&amp;nbsp;your worse nightmare. Never say you did not ask for it! Never say I didn't warn yer.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;1.&lt;/STRONG&gt; Been married for 3 times. had a wife twice. Now I have a buddy, a true friend who stands next to me no matter what is going on, a lover, a sweetheart first class, a person giving me metal wake up calls. This "angel from heaven" is called Elina.&lt;BR&gt;SHE is responsible for me taking up software developing as a job (so blame her for me being here and making your lives miserable). Before doing this I was working in facility management. I lived, at that time&amp;nbsp;in Hellevoetsluis just below Rotterdam&amp;nbsp;when&amp;nbsp;I fell in love &lt;U&gt;in&lt;/U&gt; and &lt;U&gt;with&lt;/U&gt; Arnhem. &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;2. &lt;/STRONG&gt;There are dogs and there are Border Collies. And among the latter &lt;STRONG&gt;Joey&lt;/STRONG&gt; is God's chosen Stud. Joey is my border and I am training him for trialling. He had a nasty accident a few months ago when he was overrun by a mad Bouvier, broke his leg, got operated and is now up and running and fast and furious. &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;3. &lt;/STRONG&gt;I am a Reiki practitioner. What is Reiki? hmmm, good question. I'ld say, clever people these fox developers!&amp;nbsp;It is originally a Japanese "word" consisting of the word "Rei" meaning "higher", "divine" but also "power" and the word "Ki", meaning "lifepower". I had my first initiation 15 years ago and Reiki, the practice, in all its aspects as described by my teacher and Reikimaster, Mrs Phyllis Lei Furumoto, is the leading principle in my life. I have second degree since 1992 and maybe some day I will have third degree as well, although I still feel reluctant to using the title "Master" that goes with this third degree.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;4. &lt;/STRONG&gt;THE person being responsible for bringing the smart fox in my life is John zijlstra.&lt;BR&gt;He lived just across the street in Arnhem (I moved&amp;nbsp;8 years ago to Huissen) had his own company and brought me into fox. I fell in love with the fox and stayed with it ever since.&lt;BR&gt;He taught me first, now he occassionally calls me with questions. he moved too, to the beautiful island of Texel (up north in our country). Did he move or was he looking for shelter, away from this mad developer that I am ever since.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;5.&lt;/STRONG&gt; I like to sing, nothing as good as a barbershop song to start the day.&lt;BR&gt;So, "when a rainy day comes, and a cloud of gray comes, and I lost my sunny day... &lt;BR&gt;Mr music master, make my heart beat faster, you can chase the rain away.... &lt;BR&gt;So when you write a melody. &lt;BR&gt;Just add the words and think of me &lt;BR&gt;and give me a song an old barbershop song that&amp;nbsp;I can sing when&amp;nbsp;I am blue&lt;BR&gt;Give me a beat &lt;BR&gt;to start tapping my feet and make my worries fly away...&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;OK, satisfied? let's see what&lt;/P&gt;
&lt;P&gt;&lt;U&gt;Marcia "10 casualties" Akins&lt;/U&gt;, &lt;img src="/emoticons/emotion-2.gif" alt="Big Smile [:D]" /&gt;has to say. (these poor people and the beamer are now recovered).&lt;BR&gt;Or what about &lt;U&gt;Jamie Osborn&lt;/U&gt;, that ozzie is around on foxite for a while already?&lt;BR&gt;Now that we are down under, &lt;U&gt;Bernard Bout&lt;/U&gt;, YOU ARE TAGGED MAN!&lt;BR&gt;OK From eastern europe, &lt;U&gt;Borislav Borrisov&lt;/U&gt;, I am curious what you got to say.&lt;BR&gt;I am not sure whether this much respected lady has a blog here already, but &lt;U&gt;Tamar Granor&lt;/U&gt;, you too are tagged.&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;No laughing please, signatures after the show. &lt;img src="/emoticons/emotion-1.gif" alt="Smile [:)]" /&gt;&lt;/P&gt;
&lt;P&gt;Boudewijn Lutgerink&lt;/P&gt;&lt;img src="http://weblogs.foxite.com/aggbug.aspx?PostID=3128" width="1" height="1"&gt;</description><category domain="http://weblogs.foxite.com/boudewijnlutgerink/archive/category/11.aspx">Visual FoxPro</category><category domain="http://weblogs.foxite.com/boudewijnlutgerink/archive/category/12.aspx">Random subjects</category><category domain="http://weblogs.foxite.com/boudewijnlutgerink/archive/category/14.aspx">Reiki</category><category domain="http://weblogs.foxite.com/boudewijnlutgerink/archive/category/147.aspx">VFP</category></item><item><title>The errors MS made in the .NET introduction</title><link>http://weblogs.foxite.com/boudewijnlutgerink/archive/2007/01/02/3077.aspx</link><pubDate>Tue, 02 Jan 2007 07:23:00 GMT</pubDate><guid isPermaLink="false">8827bd1c-7596-4a8f-b0de-f59ce9ede522:3077</guid><dc:creator>Boudewijn</dc:creator><slash:comments>2</slash:comments><comments>http://weblogs.foxite.com/boudewijnlutgerink/comments/3077.aspx</comments><wfw:commentRss>http://weblogs.foxite.com/boudewijnlutgerink/commentrss.aspx?PostID=3077</wfw:commentRss><description>&lt;P&gt;No doubt that, as developers, we are adults. Different in age, some are just starting this trade, others&amp;nbsp;have years of experience.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Thanks to Ken Murphy&lt;/STRONG&gt; from Canada I received a book by Dr Jane Vella, Learning to listen, Learning to teach. A book worth reading over and over again. You find someting new every day in those pages. Thanks Ken, this book is a real holidays gift!&lt;/P&gt;
&lt;P&gt;This book is all about teaching adults. Reading it was a constant "&lt;STRONG&gt;YES"&lt;/STRONG&gt; experience. The materials offered were corroborating each and every time the things I intuitively already knew.&lt;/P&gt;
&lt;P&gt;Reading it made me also aware of what MS did wrong to the VFP community when introducing VS.NET to this strong community.&lt;/P&gt;
&lt;P&gt;There are several principles Vella teaches throughout this book. &lt;/P&gt;
&lt;P&gt;One of them is "&lt;EM&gt;Listen to your audience BEFORE&amp;nbsp;writing down&amp;nbsp;your teaching materials"&lt;/EM&gt;.&lt;BR&gt;From what I know, MS never bothered a minute about how we felt, they needed someting new to make money. Where do you want to go today? Actually we don't care, you go where WE want you to go!&lt;/P&gt;
&lt;P&gt;One other thing Vells teaches in that book&amp;nbsp;is "&lt;EM&gt;immediacy&lt;/EM&gt;".&lt;/P&gt;
&lt;P&gt;When teaching new things to adults they want to see an immediate result from that teaching, they don't have time to loose.&amp;nbsp;Adults want an "AHA" experience. You learn something, see the immediate use for it in your daily life and so you accept it and start thinking about how to smoothly implement it. Whether it is a way to make money (your job), to make your communication ability better (thus enabling you to go up the ladder of your career) or to write better code through a trick you learned (either here on foxite or elsewhere.)&lt;/P&gt;
&lt;P&gt;What stunned me at the attempts from MS to introduce .NET to us, VFP developers, is the fact that I saw no immediate use for this new technology or even of parts of it.&lt;/P&gt;
&lt;P&gt;All they said, in my experience,&amp;nbsp;was "it is better!", "yeah sure, then how come I can develop software&amp;nbsp;4 times&amp;nbsp;quicker using VFP than .NET?" was always&amp;nbsp;answered with, "It is better!"&lt;/P&gt;
&lt;P&gt;One other principle Vella teaches is "&lt;EM&gt;teaching in context". &lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;This means that you have to refer to what adults already know and ADD the new knowledge to this, making the new technology an enrichment. When MS introduced .NET to us they showed completely new code. Fine with me. "How can I use this in the context of VFP is one question I once asked". The reply from the presenter was: "Your attitude has to change buddy!" I told the man I was not his buddy and that I was a paying participant in that particular DevCon (Frankfurt 3 years ago). I left his session immediately.&lt;/P&gt;
&lt;P&gt;Yet another principle is "&lt;EM&gt;safety"&lt;/EM&gt;.&lt;/P&gt;
&lt;P&gt;When confronted with new&amp;nbsp;things we are challenged. HOW the new things are presented makes the difference whether or not the new stuff will be accepted.&lt;/P&gt;
&lt;P&gt;Push "new stuff" down the throat of people and they will object, they will object fiercely. It makes them feel UNsafe, thus the defending attitude arises naturally.&lt;/P&gt;
&lt;P&gt;Compare this with groups of people protesting against whatever they feel is not right.&lt;/P&gt;
&lt;P&gt;They hardly ever are capable to make a real change, they want to PUSH their choice onto other people. REAL changes come from within, because an organization sees the need to change. Individual people are NOT different. PUSH them towards a change and they tend to move away from it. SHOW them how choosing for a change will positively affect them and they still have that "a choice", and the alternative might be accepted much easier. They do not feel pushed, people then do not feel unsafe.&lt;/P&gt;
&lt;P&gt;One other&amp;nbsp;thing (of 12 in total)&amp;nbsp;Vella teaches in the book is "&lt;EM&gt;leave any of these principles&amp;nbsp;out and you're lost"&lt;/EM&gt;.&lt;/P&gt;
&lt;P&gt;Microsoft left something out...&lt;/P&gt;
&lt;P&gt;Want to read about adult teaching? &lt;BR&gt;"Learning to Listen, Learning to Teach" by Dr Jane Vella.&amp;nbsp;&lt;B&gt;ISBN10: &lt;/B&gt;0787959677 | &lt;B&gt;ISBN13: &lt;/B&gt;9780787959678&lt;/P&gt;
&lt;P&gt;Boudewijn Lutgerink&lt;/P&gt;&lt;img src="http://weblogs.foxite.com/aggbug.aspx?PostID=3077" width="1" height="1"&gt;</description><category domain="http://weblogs.foxite.com/boudewijnlutgerink/archive/category/11.aspx">Visual FoxPro</category><category domain="http://weblogs.foxite.com/boudewijnlutgerink/archive/category/20.aspx">Software development issues</category><category domain="http://weblogs.foxite.com/boudewijnlutgerink/archive/category/147.aspx">VFP</category><category domain="http://weblogs.foxite.com/boudewijnlutgerink/archive/category/152.aspx">software development</category></item><item><title>The added values of visiting DevCons</title><link>http://weblogs.foxite.com/boudewijnlutgerink/archive/2006/11/13/2845.aspx</link><pubDate>Mon, 13 Nov 2006 06:33:00 GMT</pubDate><guid isPermaLink="false">8827bd1c-7596-4a8f-b0de-f59ce9ede522:2845</guid><dc:creator>Boudewijn</dc:creator><slash:comments>0</slash:comments><comments>http://weblogs.foxite.com/boudewijnlutgerink/comments/2845.aspx</comments><wfw:commentRss>http://weblogs.foxite.com/boudewijnlutgerink/commentrss.aspx?PostID=2845</wfw:commentRss><description>&lt;P&gt;Although we do work now for near to 2 years in the same version of VFP I found last week that visiting a DevCon is very worthwhile. I was in Frankfurt last week.&lt;/P&gt;
&lt;P&gt;Not only did I get the chance to renew contacts and meet new people, more than that I did get new ideas that made my head nearly explode.&lt;/P&gt;
&lt;P&gt;I survived Lisa Slater Nicholls 3 sessions on reporting in VFP9, including one session on the new stuff that will be available in SP2, more than that she showed some neat tricks that can be done in the current version that I did NOT know of.&lt;BR&gt;It did take her three sessions to make my brain sizzle with new ideas and she used the last session to shoot them poor brains out.&lt;/P&gt;
&lt;P&gt;Or&amp;nbsp;what about taking metadata to the max as Andy Kramek showed here. I decided to rewrite some of my apps so they will be much easier to ship to various clients. I only change some info in my tables and I have a totally different application with new behavior, no need to recompile the exe.&lt;/P&gt;
&lt;P&gt;I also survived Marcia Akins' Session on Best practices on Class Design, she started trowing things at people if they gave a good answer, Candy bars that is, only 10 casualties, including the beamer...&lt;/P&gt;
&lt;P&gt;Or what About Doug Henning's session on IntelliSense. He showed some cool tricks on implementing IntelliSense in your apps. That is one thing I can and will&amp;nbsp;most definetely implement in my apps as soon as possible. (quite easy actually).&lt;/P&gt;
&lt;P&gt;Then there was the session of Beth Massi on LINQ, although I do see some use for that I still have to find usecases for other stuff (running SQL statements against running processes on a computer makes no sense YET for me.)&lt;BR&gt;Although entirely different stuff from VFP I will consider using .net stuff, especially VB.net&lt;BR&gt;It did spark some ideas indeed.&lt;/P&gt;
&lt;P&gt;I can go on for hours on the hot and cool stuff I learned there in the 3 days the DevCon did go on. Actually, it does last longer. OK, I was there for the full 3 days it did take, but generating code, based on the ideas I got there makes the energy of the DevCon stay alive much and much longer. I now already know that I will go there next year as well as to Prague. (I did meet Igor Vit, a very, very nice guy.)&lt;/P&gt;
&lt;P&gt;The sessions went from early morning till early morning, although the last session were held in the bar. (mostly till way after 1:00h in the morning.)&lt;/P&gt;
&lt;P&gt;99% of my work is done in VFP9. Therefore I dare say that I am quite experienced in using the&amp;nbsp;product. Nonetheless I learned so many new thing&amp;nbsp;during the DevCon in Frankfurt last week that this was most definetely a major boost in my insight on the product.&lt;/P&gt;
&lt;P&gt;Whenever possible&amp;nbsp;go and visit one DevCon in your neighborhood, you will find it most definetely worthwhile&amp;nbsp;!!! I DO encourage you to seriously consider this, it will make you a better developer.&lt;/P&gt;
&lt;P&gt;Last word as a major &lt;STRONG&gt;THANK YOU RAINER&amp;nbsp;BECKER&lt;/STRONG&gt; from the bottom of my heart for making this DevCon possible. You are a fantastic host, and as ever the sessions were great! I'll be there next year most definetely!&lt;/P&gt;&lt;img src="http://weblogs.foxite.com/aggbug.aspx?PostID=2845" width="1" height="1"&gt;</description><category domain="http://weblogs.foxite.com/boudewijnlutgerink/archive/category/11.aspx">Visual FoxPro</category><category domain="http://weblogs.foxite.com/boudewijnlutgerink/archive/category/20.aspx">Software development issues</category><category domain="http://weblogs.foxite.com/boudewijnlutgerink/archive/category/147.aspx">VFP</category><category domain="http://weblogs.foxite.com/boudewijnlutgerink/archive/category/152.aspx">software development</category></item><item><title>getting rid of IntelliSense popup windows is so easy, and still have the sample available</title><link>http://weblogs.foxite.com/boudewijnlutgerink/archive/2006/11/12/2839.aspx</link><pubDate>Sun, 12 Nov 2006 04:49:00 GMT</pubDate><guid isPermaLink="false">8827bd1c-7596-4a8f-b0de-f59ce9ede522:2839</guid><dc:creator>Boudewijn</dc:creator><slash:comments>0</slash:comments><comments>http://weblogs.foxite.com/boudewijnlutgerink/comments/2839.aspx</comments><wfw:commentRss>http://weblogs.foxite.com/boudewijnlutgerink/commentrss.aspx?PostID=2839</wfw:commentRss><description>&lt;P&gt;Although IntelliSense is maybe one of the best productivity tools in the long hsitory of VFP it sometimes is very much present in a way that can really bother you. Simple example, type the SELECT command and a huge popup shows up right over your code. Not something you really want. So, you can, of course, disable IntelliSense but that is a disadvantage because then you don't see all the help offered by IntelliSense.&lt;/P&gt;
&lt;P&gt;Here is one of the reasons I like DevCons so much, you get tips from your collegues.&lt;BR&gt;Yesterday Simon Arnold and I were talking to Andy Kramek and he showed this cool piece of code.&lt;/P&gt;
&lt;P&gt;Here it is:&lt;/P&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;
&lt;P&gt;RELEASE &lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;_oFoxCodeTips&lt;/P&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;
&lt;P&gt;PUBLIC &lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;_oFoxCodeTips&lt;/P&gt;
&lt;P&gt;_oFoxCodeTips &lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;= &lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;NEWOBJECT&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;( &lt;/FONT&gt;&lt;FONT face="Courier New" size=2&gt;"frmtips"&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;, &lt;/FONT&gt;&lt;FONT face="Courier New" size=2&gt;"foxcode.vcx"&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;, &lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;HOME&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;()+&lt;/FONT&gt;&lt;FONT face="Courier New" size=2&gt;"foxcode.app"&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;)&lt;/P&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;
&lt;P&gt;_oFoxCodeTips&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;.&lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;show&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;()&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;&lt;FONT color=#000000&gt;Type this in first and then try a select statement in your command window, all the IntelliSense output is redirected to the little window that just popped up.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;having another window floating around is not all that good, your IDE gets a bit cluttered then, so you can dock it over the command window, just like any other window like the session window, the property sheet etc...&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;Even that process can be automated, just use the following command.&lt;/FONT&gt;&lt;/P&gt;&lt;FONT face="Courier New" size=2&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;
&lt;P&gt;DOCK NAME &lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;_oFoxCodeTips &lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;POSITION &lt;/FONT&gt;&lt;FONT face="Courier New" color=#800000 size=2&gt;4 &lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;window command&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;&lt;FONT color=#000000&gt;Place the above lines of code in a small prg and place that in your home() folder.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;&lt;FONT color=#000000&gt;So the complete code looks like this:&lt;BR&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;&lt;FONT face="Courier New" color=#008000 size=2&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT&gt;* Andy Kramek's Code.&lt;/FONT&gt;&lt;/FONT&gt;&lt;BR&gt;RELEASE &lt;FONT face="Courier New" color=#000080 size=2&gt;_oFoxCodeTips&lt;BR&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;PUBLIC &lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;_oFoxCodeTips&lt;BR&gt;_oFoxCodeTips &lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;= &lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;NEWOBJECT&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;( &lt;/FONT&gt;&lt;FONT face="Courier New" color=#000000 size=2&gt;"frmtips"&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;, &lt;/FONT&gt;&lt;FONT face="Courier New" color=#000000 size=2&gt;"foxcode.vcx"&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;, &lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;HOME&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;()+&lt;/FONT&gt;&lt;FONT face="Courier New" color=#000000 size=2&gt;"foxcode.app"&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;)&lt;BR&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;_oFoxCodeTips&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;.&lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;show&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;()&lt;/FONT&gt;&lt;/P&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;&lt;FONT face="Courier New" color=#008000 size=2&gt;
&lt;P&gt;&lt;FONT&gt;* Code form Simon Arnold and Boudewijn Lutgerink&lt;/FONT&gt;&lt;/FONT&gt;&lt;BR&gt;DOCK NAME &lt;FONT face="Courier New" color=#000080 size=2&gt;_oFoxCodeTips &lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;POSITION &lt;/FONT&gt;&lt;FONT face="Courier New" color=#800000 size=2&gt;4 &lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;window command&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;&lt;FONT color=#000000&gt;Next, in your config.fpw, add one line:&lt;BR&gt;Command = WhatEverYounamedThePRGFile&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;&lt;FONT color=#000000&gt;TIP&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;&lt;FONT color=#000000&gt;&lt;STRONG&gt;DO NOT&lt;/STRONG&gt; add that program as the startup program in the file Locations tab under tools-&amp;gt;options, it will make then the command window disappear (as Simon and I found out last night.)&lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;img src="http://weblogs.foxite.com/aggbug.aspx?PostID=2839" width="1" height="1"&gt;</description><category domain="http://weblogs.foxite.com/boudewijnlutgerink/archive/category/11.aspx">Visual FoxPro</category><category domain="http://weblogs.foxite.com/boudewijnlutgerink/archive/category/147.aspx">VFP</category></item><item><title>cute little tool making you productive</title><link>http://weblogs.foxite.com/boudewijnlutgerink/archive/2006/11/10/2837.aspx</link><pubDate>Fri, 10 Nov 2006 14:30:00 GMT</pubDate><guid isPermaLink="false">8827bd1c-7596-4a8f-b0de-f59ce9ede522:2837</guid><dc:creator>Boudewijn</dc:creator><slash:comments>2</slash:comments><comments>http://weblogs.foxite.com/boudewijnlutgerink/comments/2837.aspx</comments><wfw:commentRss>http://weblogs.foxite.com/boudewijnlutgerink/commentrss.aspx?PostID=2837</wfw:commentRss><description>&lt;P&gt;I use this tool for quite a while now. VariSense it is called. So what it does is simple but increases your productivity a lot.&lt;/P&gt;
&lt;P&gt;When starting VFP it does start the prg as a typical "on key label" thing.&lt;BR&gt;I personally use ctrl+SPACE for this.&lt;/P&gt;
&lt;P&gt;So, here is a sample.&lt;/P&gt;
&lt;P&gt;I am in a codesnippet and I declared two variables, as in:&lt;/P&gt;
&lt;P&gt;Local lcString as string, lcString2 as string&lt;/P&gt;
&lt;P&gt;Any further in the code I type "lc" and then press ctrl+SPACE. VariSense then immediately fills the string up to lcString (common denominator for both variables), pressing CTRL+SPACE again brings up a small popup that has both variables in it. navigating to either one and pressing enter does bring up the right name (even in the case you declared it.)&lt;/P&gt;
&lt;P&gt;Another sample:&lt;BR&gt;In the code I have a #DEFINE&amp;nbsp;somevar Value&lt;/P&gt;
&lt;P&gt;I also have #INCLUDE MyHeaderFile.h, in that file I have another #DEFINE like&lt;/P&gt;
&lt;P&gt;DEFINE somevar2 AnotherValue&lt;/P&gt;
&lt;P&gt;In the codesnippet I type "some" and press CTRL+SPACE.&lt;/P&gt;
&lt;P&gt;varisense fills that up to somevar, typing ctrl+space again brings up a list of DEFINE'd variables from which you can take a pick;&lt;/P&gt;
&lt;P&gt;Here's the code:&lt;/P&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;&lt;FONT face="Courier New" color=#008000 size=2&gt;
&lt;P&gt;********************************************************************************&lt;/P&gt;
&lt;P&gt;* Title: VariSense 1.2&lt;/P&gt;
&lt;P&gt;* Author: Derek J. Kalweit(dkalweit@sensiblesoftware.com)&lt;/P&gt;
&lt;P&gt;* Description: This program belongs under an "ON KEY LABEL" in your development &lt;/P&gt;
&lt;P&gt;* environment. When triggered, it will automatically consult your declared &lt;/P&gt;
&lt;P&gt;* variables and determine what it can do to complete it for you if possible. &lt;/P&gt;
&lt;P&gt;* This can lead to a huge savings in typing, particularly if you routinely use &lt;/P&gt;
&lt;P&gt;* long, clear variables with very unique names. This is the functionality &lt;/P&gt;
&lt;P&gt;* available with a CTRL+SPACEBAR key combination in VC++, though VC++ is smart&lt;/P&gt;
&lt;P&gt;* enough to do this with member variables and functions as well(which this is&lt;/P&gt;
&lt;P&gt;* not). &lt;/P&gt;
&lt;P&gt;* Terms of use: Freeware. Feel free to use and modify for your needs. Send me&lt;/P&gt;
&lt;P&gt;* any useful/interesting enhancements so that I may include them in the main &lt;/P&gt;
&lt;P&gt;* version, if appropriate. &lt;/P&gt;
&lt;P&gt;********************************************************************************&lt;/P&gt;
&lt;P&gt;* Version History:&lt;/P&gt;
&lt;P&gt;* 1.2(Released 2003-2-28):&lt;/P&gt;
&lt;P&gt;* o Adds support for "DIMENSION" arrays&lt;/P&gt;
&lt;P&gt;* o Adds support for function parameters defined in parenthesis versus LPARAMETERS statement&lt;/P&gt;
&lt;P&gt;* 1.1(Released 2002-10-18):&lt;/P&gt;
&lt;P&gt;* o Added drop-down menu to pick ambigious variables&lt;/P&gt;
&lt;P&gt;* 1.0(Released 2002-10-8):&lt;/P&gt;
&lt;P&gt;* o Original release&lt;/P&gt;
&lt;P&gt;********************************************************************************&lt;/P&gt;
&lt;P&gt;* Special Thanks to:&lt;/P&gt;
&lt;P&gt;* Ed leafe(ed@leafe.com):&lt;/P&gt;
&lt;P&gt;* Contributed code to add drop-down menu for ambiguous variables&lt;/P&gt;
&lt;P&gt;* Bo Durban(wdurban@datascantech.com):&lt;/P&gt;
&lt;P&gt;* Contributed EditPos() function to get cursor position for drop-down menu&lt;/P&gt;
&lt;P&gt;********************************************************************************&lt;/P&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;
&lt;P&gt;SET ECHO OFF&lt;/P&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;
&lt;P&gt;#&lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;DEFINE &lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;VARIABLE_CHARS &lt;/FONT&gt;&lt;FONT face="Courier New" size=2&gt;&lt;FONT color=#000000&gt;"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTYUVWXYZ0123456789_"&lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;
&lt;P&gt;SET LIBRARY TO &lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;(&lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;SYS&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;(&lt;/FONT&gt;&lt;FONT face="Courier New" color=#800000 size=2&gt;2004&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;) + &lt;/FONT&gt;&lt;FONT face="Courier New" color=#000000 size=2&gt;"FoxTools.fll"&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;) &lt;/FONT&gt;&lt;FONT face="Courier New" color=#008000 size=2&gt;&amp;amp;&amp;amp; foxtools is always in the foxpro dir, right?&lt;/P&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;
&lt;P&gt;DECLARE INTEGER &lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;Beep &lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;IN &lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;KERNEL32 &lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;AS &lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;Beep &lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;INTEGER &lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;nFrequecy&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;, &lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;INTEGER &lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;nDuration&lt;/P&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;
&lt;P&gt;LOCAL &lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;hwndCode&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;, &lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;laEnv&lt;/FONT&gt;&lt;FONT face="Courier New" size=2&gt;&lt;FONT color=#000000&gt;[25]&lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;
&lt;P&gt;LOCAL &lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;cVariables&lt;/P&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;
&lt;P&gt;LOCAL &lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;cProgText&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;, &lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;iLastLine&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;, &lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;aProgText&lt;/FONT&gt;&lt;FONT face="Courier New" color=#000000 size=2&gt;[1]&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;, &lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;iLine&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;, &lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;cLine&lt;/P&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;
&lt;P&gt;LOCAL &lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;liStartParen&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;, &lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;liEndParen&lt;/P&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;
&lt;P&gt;LOCAL &lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;iOffset&lt;/P&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;
&lt;P&gt;LOCAL &lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;aVars&lt;/FONT&gt;&lt;FONT face="Courier New" color=#000000 size=2&gt;[1]&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;, &lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;y&lt;/P&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;
&lt;P&gt;LOCAL &lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;cDeclaredVar&lt;/P&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;
&lt;P&gt;LOCAL &lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;cNewVar&lt;/P&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;
&lt;P&gt;LOCAL &lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;cChoice&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;, &lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;nRow&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;, &lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;nCol&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;, &lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;iMatch&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;, &lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;cOnSelect &lt;/P&gt;
&lt;P&gt;hwndCode &lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;= &lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;_WonTop&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;()&lt;/P&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;
&lt;P&gt;IF &lt;/FONT&gt;&lt;FONT face="Courier New" color=#800000 size=2&gt;1 &lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;== &lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;_EdGetEnv&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;(&lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;hwndCode&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;, @&lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;laEnv&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;) &lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;Then&lt;/P&gt;
&lt;P&gt;IF &lt;/FONT&gt;&lt;FONT face="Courier New" color=#800000 size=2&gt;0 &lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;== &lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;laEnv&lt;/FONT&gt;&lt;FONT face="Courier New" color=#000000 size=2&gt;[12] &lt;/FONT&gt;&lt;FONT face="Courier New" color=#008000 size=2&gt;&amp;amp;&amp;amp; AND INLIST(laEnv[25], 0, 1, 8, 10, 12) Then&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;LOCAL &lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;iPos&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;, &lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;cVar&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;, &lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;aMatches&lt;/FONT&gt;&lt;FONT face="Courier New" color=#000000 size=2&gt;[1]&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;, &lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;iMatches&lt;/P&gt;
&lt;P&gt;iMatches &lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;= &lt;/FONT&gt;&lt;FONT face="Courier New" color=#800000 size=2&gt;0&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;iPos &lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;= &lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;laEnv&lt;/FONT&gt;&lt;FONT face="Courier New" size=2&gt;&lt;FONT color=#000000&gt;[17]&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#000000&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;cVar &lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;= &lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;GetVariable&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;(@&lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;hwndCode&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;, @&lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;iPos&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;)&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;IF &lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;NOT &lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;EMPTY&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;(&lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;cVar&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;) &lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;then&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" color=#008000 size=2&gt;*-- get all code from the beginning to our current cursor position, as we care about nothing more.&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;cProgText &lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;= &lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;_EdGetStr&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;(&lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;hwndCode&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;, &lt;/FONT&gt;&lt;FONT face="Courier New" color=#800000 size=2&gt;0&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;, &lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;iPos&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;) &lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;iLastLine &lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;= &lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;ALINES&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;(&lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;aProgText&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;, &lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;cProgText&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;)&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;FOR &lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;iLine &lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;= &lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;iLastLine &lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;TO &lt;/FONT&gt;&lt;FONT face="Courier New" color=#800000 size=2&gt;1 &lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;STEP &lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;-&lt;/FONT&gt;&lt;FONT face="Courier New" color=#800000 size=2&gt;1&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;cVariables &lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;= &lt;/FONT&gt;&lt;FONT face="Courier New" size=2&gt;&lt;FONT color=#000000&gt;""&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;cLine &lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;= &lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;WSTRIM&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;(&lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;aProgText&lt;/FONT&gt;&lt;FONT face="Courier New" size=2&gt;[iLine]&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;)&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;DO CASE&lt;/P&gt;
&lt;P&gt;CASE &lt;/FONT&gt;&lt;FONT face="Courier New" color=#000000 size=2&gt;"LOCAL " &lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;== &lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;UPPER&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;(&lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;LEFT&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;(&lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;cLine&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;, &lt;/FONT&gt;&lt;FONT face="Courier New" color=#800000 size=2&gt;6&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;)) AND &lt;/FONT&gt;&lt;FONT face="Courier New" color=#000000 size=2&gt;"ARRAY " &lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;== &lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;SUBSTR&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;( &lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;UPPER&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;(&lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;cLine&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;),&lt;/FONT&gt;&lt;FONT face="Courier New" color=#800000 size=2&gt;7&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;,&lt;/FONT&gt;&lt;FONT face="Courier New" color=#800000 size=2&gt;6&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;)&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;cVariables &lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;= &lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;WSTRIM&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;(&lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;SUBSTR&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;(&lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;cLine&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;, &lt;/FONT&gt;&lt;FONT face="Courier New" color=#800000 size=2&gt;13&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;))&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;CASE &lt;/FONT&gt;&lt;FONT face="Courier New" color=#000000 size=2&gt;"LOCAL " &lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;== &lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;UPPER&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;(&lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;LEFT&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;(&lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;cLine&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;, &lt;/FONT&gt;&lt;FONT face="Courier New" color=#800000 size=2&gt;6&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;))&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;cVariables &lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;= &lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;WSTRIM&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;(&lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;SUBSTR&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;(&lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;cLine&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;, &lt;/FONT&gt;&lt;FONT face="Courier New" color=#800000 size=2&gt;7&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;))&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;CASE &lt;/FONT&gt;&lt;FONT face="Courier New" color=#000000 size=2&gt;"PROC" &lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;== &lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;UPPER&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;(&lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;LEFT&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;(&lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;cLine&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;, &lt;/FONT&gt;&lt;FONT face="Courier New" color=#800000 size=2&gt;4&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;))&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;EXIT&lt;/P&gt;
&lt;P&gt;CASE &lt;/FONT&gt;&lt;FONT face="Courier New" color=#000000 size=2&gt;"FUNCTION " &lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;== &lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;UPPER&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;(&lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;LEFT&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;(&lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;cLine&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;, &lt;/FONT&gt;&lt;FONT face="Courier New" color=#800000 size=2&gt;9&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;))&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;liStartParen &lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;= &lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;AT&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;(&lt;/FONT&gt;&lt;FONT face="Courier New" color=#000000 size=2&gt;"("&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;, &lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;cLine&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;)&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;liEndParen &lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;= &lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;AT&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;(&lt;/FONT&gt;&lt;FONT face="Courier New" color=#000000 size=2&gt;")"&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;, &lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;cLine&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;)&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;IF &lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;liStartParen &lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;&amp;gt; &lt;/FONT&gt;&lt;FONT face="Courier New" color=#800000 size=2&gt;0 &lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;AND &lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;liEndParen &lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;&amp;gt; &lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;liStartParen &lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;Then&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;cVariables &lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;= &lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;WSTRIM&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;(&lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;SUBSTR&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;(&lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;cLine&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;, &lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;liStartParen&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;+&lt;/FONT&gt;&lt;FONT face="Courier New" color=#800000 size=2&gt;1&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;, &lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;liEndParen&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;-&lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;liStartParen&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;-&lt;/FONT&gt;&lt;FONT face="Courier New" color=#800000 size=2&gt;1&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;))&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;iLine &lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;= &lt;/FONT&gt;&lt;FONT face="Courier New" color=#800000 size=2&gt;0 &lt;/FONT&gt;&lt;FONT face="Courier New" color=#008000 size=2&gt;&amp;amp;&amp;amp; This forces the loop to exit after it does the dirty work...&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;ELSE&lt;/P&gt;
&lt;P&gt;EXIT&lt;/P&gt;
&lt;P&gt;ENDIF&lt;/P&gt;
&lt;P&gt;CASE &lt;/FONT&gt;&lt;FONT face="Courier New" color=#000000 size=2&gt;"LPARAMETERS " &lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;== &lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;UPPER&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;(&lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;LEFT&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;(&lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;cLine&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;, &lt;/FONT&gt;&lt;FONT face="Courier New" color=#800000 size=2&gt;12&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;))&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;cVariables &lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;= &lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;WSTRIM&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;(&lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;SUBSTR&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;(&lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;cLine&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;, &lt;/FONT&gt;&lt;FONT face="Courier New" color=#800000 size=2&gt;13&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;))&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;CASE &lt;/FONT&gt;&lt;FONT face="Courier New" color=#000000 size=2&gt;"PARAMETERS " &lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;== &lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;UPPER&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;(&lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;LEFT&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;(&lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;cLine&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;, &lt;/FONT&gt;&lt;FONT face="Courier New" color=#800000 size=2&gt;11&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;))&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;cVariables &lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;= &lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;WSTRIM&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;(&lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;SUBSTR&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;(&lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;cLine&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;, &lt;/FONT&gt;&lt;FONT face="Courier New" color=#800000 size=2&gt;12&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;))&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;CASE &lt;/FONT&gt;&lt;FONT face="Courier New" color=#000000 size=2&gt;"PRIVATE " &lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;== &lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;UPPER&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;(&lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;LEFT&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;(&lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;cLine&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;, &lt;/FONT&gt;&lt;FONT face="Courier New" color=#800000 size=2&gt;8&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;))&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;cVariables &lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;= &lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;WSTRIM&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;(&lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;SUBSTR&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;(&lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;cLine&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;, &lt;/FONT&gt;&lt;FONT face="Courier New" color=#800000 size=2&gt;9&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;))&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;CASE &lt;/FONT&gt;&lt;FONT face="Courier New" color=#000000 size=2&gt;"PUBLIC " &lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;== &lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;UPPER&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;(&lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;LEFT&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;(&lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;cLine&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;, &lt;/FONT&gt;&lt;FONT face="Courier New" color=#800000 size=2&gt;7&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;)) AND &lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;UPPER&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;(&lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;GETWORDNUM&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;(&lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;cLine&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;,&lt;/FONT&gt;&lt;FONT face="Courier New" color=#800000 size=2&gt;2&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;)) &amp;lt;&amp;gt; &lt;/FONT&gt;&lt;FONT face="Courier New" size=2&gt;&lt;FONT color=#000000&gt;"ARRAY"&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;cVariables &lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;= &lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;WSTRIM&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;(&lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;GETWORDNUM&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;(&lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;cLine&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;, &lt;/FONT&gt;&lt;FONT face="Courier New" color=#800000 size=2&gt;2&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;))&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;CASE &lt;/FONT&gt;&lt;FONT face="Courier New" color=#000000 size=2&gt;"PUBLIC " &lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;== &lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;UPPER&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;(&lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;LEFT&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;(&lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;cLine&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;, &lt;/FONT&gt;&lt;FONT face="Courier New" color=#800000 size=2&gt;7&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;)) AND &lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;UPPER&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;(&lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;GETWORDNUM&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;(&lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;cLine&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;,&lt;/FONT&gt;&lt;FONT face="Courier New" color=#800000 size=2&gt;2&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;)) == &lt;/FONT&gt;&lt;FONT face="Courier New" size=2&gt;&lt;FONT color=#000000&gt;"ARRAY"&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;cVariables &lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;= &lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;WSTRIM&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;(&lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;GETWORDNUM&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;(&lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;cLine&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;, &lt;/FONT&gt;&lt;FONT face="Courier New" color=#800000 size=2&gt;3&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;))&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;CASE &lt;/FONT&gt;&lt;FONT face="Courier New" color=#000000 size=2&gt;"DIMENSION " &lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;== &lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;UPPER&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;(&lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;LEFT&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;(&lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;cLine&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;, &lt;/FONT&gt;&lt;FONT face="Courier New" color=#800000 size=2&gt;10&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;))&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;cVariables &lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;= &lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;WSTRIM&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;(&lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;SUBSTR&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;(&lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;cLine&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;, &lt;/FONT&gt;&lt;FONT face="Courier New" color=#800000 size=2&gt;11&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;))&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;CASE &lt;/FONT&gt;&lt;FONT face="Courier New" color=#000000 size=2&gt;"#DEFINE " &lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;== &lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;UPPER&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;(&lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;LEFT&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;(&lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;cLine&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;, &lt;/FONT&gt;&lt;FONT face="Courier New" color=#800000 size=2&gt;8&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;))&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;cVariables &lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;= &lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;ReadDefines&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;(&lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;cLine&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;)&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;CASE &lt;/FONT&gt;&lt;FONT face="Courier New" color=#000000 size=2&gt;"DECLARE " &lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;== &lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;UPPER&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;(&lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;LEFT&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;(&lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;cLine&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;, &lt;/FONT&gt;&lt;FONT face="Courier New" color=#800000 size=2&gt;8&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;))&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;IF INLIST&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;( &lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;UPPER&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;(&lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;GETWORDNUM&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;(&lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;cLine&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;,&lt;/FONT&gt;&lt;FONT face="Courier New" color=#800000 size=2&gt;2&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;)), &lt;/FONT&gt;&lt;FONT face="Courier New" color=#000000 size=2&gt;"SHORT"&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;, &lt;/FONT&gt;&lt;FONT face="Courier New" color=#000000 size=2&gt;"INTEGER"&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;, &lt;/FONT&gt;&lt;FONT face="Courier New" color=#000000 size=2&gt;"SINGLE"&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;, &lt;/FONT&gt;&lt;FONT face="Courier New" color=#000000 size=2&gt;"LONG"&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;, &lt;/FONT&gt;&lt;FONT face="Courier New" color=#000000 size=2&gt;"STRING"&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;, &lt;/FONT&gt;&lt;FONT face="Courier New" color=#000000 size=2&gt;"OBJECT"&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;)&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;cVariables &lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;= &lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;WSTRIM&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;(&lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;GETWORDNUM&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;(&lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;cLine&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;, &lt;/FONT&gt;&lt;FONT face="Courier New" color=#800000 size=2&gt;3&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;))&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;ELSE&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;cVariables &lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;= &lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;WSTRIM&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;(&lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;GETWORDNUM&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;(&lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;cLine&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;, &lt;/FONT&gt;&lt;FONT face="Courier New" color=#800000 size=2&gt;2&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;))&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;ENDIF&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;CASE &lt;/FONT&gt;&lt;FONT face="Courier New" color=#000000 size=2&gt;"#INCLUDE " &lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;== &lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;UPPER&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;(&lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;LEFT&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;(&lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;cLine&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;, &lt;/FONT&gt;&lt;FONT face="Courier New" color=#800000 size=2&gt;9&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;))&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" color=#008000 size=2&gt;
&lt;P&gt;**** Code for ReadInclude taken away here&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;lcFile2open &lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;= &lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;GETWORDNUM&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;(&lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;cLine&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;,&lt;/FONT&gt;&lt;FONT face="Courier New" color=#800000 size=2&gt;2&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;)&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;IF FILE&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;( (&lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;lcFile2Open&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;) )&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;ALINES&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;( &lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;laINCL&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;, &lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;FILETOSTR&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;( &lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;lcFile2Open&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;),&lt;/FONT&gt;&lt;FONT face="Courier New" color=#800000 size=2&gt;.T.&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;,&lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;CHR&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;(&lt;/FONT&gt;&lt;FONT face="Courier New" color=#800000 size=2&gt;13&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;)+&lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;CHR&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;(&lt;/FONT&gt;&lt;FONT face="Courier New" color=#800000 size=2&gt;10&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;))&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;FOR &lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;lnItemsInArray &lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;= &lt;/FONT&gt;&lt;FONT face="Courier New" color=#800000 size=2&gt;1 &lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;TO ALEN&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;( &lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;laINCL&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;,&lt;/FONT&gt;&lt;FONT face="Courier New" color=#800000 size=2&gt;1&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;)&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;cVariables &lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;= &lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;WSTRIM&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;( &lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;GETWORDNUM&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;( &lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;laINCL&lt;/FONT&gt;&lt;FONT face="Courier New" color=#000000 size=2&gt;[lnItemsInArray]&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;, &lt;/FONT&gt;&lt;FONT face="Courier New" color=#800000 size=2&gt;2&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;))&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;IF UPPER&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;(&lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;cVar&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;) == &lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;SUBSTR&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;(&lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;UPPER&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;(&lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;cVariables&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;), &lt;/FONT&gt;&lt;FONT face="Courier New" color=#800000 size=2&gt;1&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;, &lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;LEN&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;(&lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;cVar&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;)) &lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;Then&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" color=#008000 size=2&gt;* Add Match to list&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;iMatches &lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;= &lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;iMatches &lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;+ &lt;/FONT&gt;&lt;FONT face="Courier New" color=#800000 size=2&gt;1&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;DIMENSION &lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;aMatches&lt;/FONT&gt;&lt;FONT face="Courier New" size=2&gt;&lt;FONT color=#000000&gt;[iMatches]&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;aMatches&lt;/FONT&gt;&lt;FONT face="Courier New" size=2&gt;[iMatches] &lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;= &lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;cVariables&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;ENDIF&lt;/P&gt;
&lt;P&gt;ENDFOR&lt;/P&gt;
&lt;P&gt;ENDIF&lt;/P&gt;
&lt;P&gt;ENDCASE&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" color=#008000 size=2&gt;
&lt;P&gt;* addToArray(@cVariables, @aMatches, @avars, cVar)&lt;/P&gt;
&lt;P&gt;* Let's handle multi-line definitions... &lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;iOffset &lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;= &lt;/FONT&gt;&lt;FONT face="Courier New" color=#800000 size=2&gt;0&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;DO WHILE &lt;/FONT&gt;&lt;FONT face="Courier New" color=#000000 size=2&gt;";" &lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;== &lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;RIGHT&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;(&lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;cVariables&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;, &lt;/FONT&gt;&lt;FONT face="Courier New" color=#800000 size=2&gt;1&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;)&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;iOffset &lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;= &lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;iOffset &lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;+ &lt;/FONT&gt;&lt;FONT face="Courier New" color=#800000 size=2&gt;1&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;cVariables &lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;= &lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;LEFT&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;(&lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;cVariables&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;, &lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;LEN&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;(&lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;cVariables&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;)-&lt;/FONT&gt;&lt;FONT face="Courier New" color=#800000 size=2&gt;1&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;) + &lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;WSTRIM&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;(&lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;aProgText&lt;/FONT&gt;&lt;FONT face="Courier New" color=#000000 size=2&gt;[iLine+iOffset]&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;)&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;ENDDO&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;FOR &lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;y &lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;= &lt;/FONT&gt;&lt;FONT face="Courier New" color=#800000 size=2&gt;1 &lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;TO &lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;ASPLIT&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;(@&lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;aVars&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;, &lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;cVariables&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;, &lt;/FONT&gt;&lt;FONT face="Courier New" color=#000000 size=2&gt;","&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;)&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;cDeclaredVar &lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;= &lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;WSTRIM&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;(&lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;aVars&lt;/FONT&gt;&lt;FONT face="Courier New" color=#000000 size=2&gt;&lt;img src="/emoticons/emotion-21.gif" alt="Yes [Y]" /&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;)&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;IF &lt;/FONT&gt;&lt;FONT face="Courier New" color=#000000 size=2&gt;" " &lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;$ &lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;cDeclaredVar &lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;Then &lt;/FONT&gt;&lt;FONT face="Courier New" color=#008000 size=2&gt;&amp;amp;&amp;amp; Don't include anything beyond the space; Strong-typing comes to mind&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;cDeclaredVar &lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;= &lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;LEFT&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;(&lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;cDeclaredVar&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;, &lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;AT&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;(&lt;/FONT&gt;&lt;FONT face="Courier New" color=#000000 size=2&gt;" "&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;, &lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;cDeclaredVar&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;)-&lt;/FONT&gt;&lt;FONT face="Courier New" color=#800000 size=2&gt;1&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;)&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;ENDIF&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;IF CHR&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;(&lt;/FONT&gt;&lt;FONT face="Courier New" color=#800000 size=2&gt;9&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;) $ &lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;cDeclaredVar &lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;Then &lt;/FONT&gt;&lt;FONT face="Courier New" color=#008000 size=2&gt;&amp;amp;&amp;amp; Don't include anything beyond the tab&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;cDeclaredVar &lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;= &lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;LEFT&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;(&lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;cDeclaredVar&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;, &lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;AT&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;(&lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;CHR&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;(&lt;/FONT&gt;&lt;FONT face="Courier New" color=#800000 size=2&gt;9&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;), &lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;cDeclaredVar&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;)-&lt;/FONT&gt;&lt;FONT face="Courier New" color=#800000 size=2&gt;1&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;)&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;ENDIF&lt;/P&gt;
&lt;P&gt;IF &lt;/FONT&gt;&lt;FONT face="Courier New" color=#000000 size=2&gt;"[" &lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;$ &lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;cDeclaredVar &lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;Then &lt;/FONT&gt;&lt;FONT face="Courier New" color=#008000 size=2&gt;&amp;amp;&amp;amp; Don't include anything beyond the array subscript; We could set this up to include the array subscript, as it will be used most places...&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;cDeclaredVar &lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;= &lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;LEFT&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;(&lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;cDeclaredVar&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;, &lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;AT&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;(&lt;/FONT&gt;&lt;FONT face="Courier New" color=#000000 size=2&gt;"["&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;, &lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;cDeclaredVar&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;)-&lt;/FONT&gt;&lt;FONT face="Courier New" color=#800000 size=2&gt;1&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;)&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;ENDIF&lt;/P&gt;
&lt;P&gt;IF &lt;/FONT&gt;&lt;FONT face="Courier New" color=#000000 size=2&gt;"(" &lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;$ &lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;cDeclaredVar &lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;Then &lt;/FONT&gt;&lt;FONT face="Courier New" color=#008000 size=2&gt;&amp;amp;&amp;amp; Don't include anything beyond the array subscript(some people use these parentheses for arrays!!!)&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;cDeclaredVar &lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;= &lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;LEFT&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;(&lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;cDeclaredVar&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;, &lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;AT&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;(&lt;/FONT&gt;&lt;FONT face="Courier New" color=#000000 size=2&gt;"("&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;, &lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;cDeclaredVar&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;)-&lt;/FONT&gt;&lt;FONT face="Courier New" color=#800000 size=2&gt;1&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;)&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;ENDIF&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;IF UPPER&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;(&lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;cVar&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;) == &lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;SUBSTR&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;(&lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;UPPER&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;(&lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;cDeclaredVar&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;), &lt;/FONT&gt;&lt;FONT face="Courier New" color=#800000 size=2&gt;1&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;, &lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;LEN&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;(&lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;cVar&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;)) &lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;Then&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" color=#008000 size=2&gt;* Add Match to list&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;iMatches &lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;= &lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;iMatches &lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;+ &lt;/FONT&gt;&lt;FONT face="Courier New" color=#800000 size=2&gt;1&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;DIMENSION &lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;aMatches&lt;/FONT&gt;&lt;FONT face="Courier New" size=2&gt;&lt;FONT color=#000000&gt;[iMatches]&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;aMatches&lt;/FONT&gt;&lt;FONT face="Courier New" size=2&gt;[iMatches] &lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;= &lt;/FONT&gt;&lt;FONT face="Courier New" color=#000080 size=2&gt;cDeclaredVar&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;ENDIF&lt;/P&gt;
&lt;P&gt;NEXT&lt;/P&gt;
&lt;P&gt;NEXT&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" color=#008000 size=2&gt;* Now we go to the head of the prg to look at the #defined var