Even at this early stage in Lianja development, we have over 100 prgs in our Library. Each wraps common actions with common alternate sub-actions into a single call. Opening a table is a good example: is it already open under the same alias? Is it opened shared or exclusively? Was there an error attempting to open it? If it's open, should it be closed and reopened? All of these possibilities are handled by a single call, including setting the current workspace to the alias if success has happened.

We also have calls working with the ChilKat extension to Lianja: all the ActiveX objects available to VFP through the ChilKat libraries are incorporated as first-class objects within Lianja, running on Windows, Mac and Linux.

We use a naming convention, psp_<prgaction>.prg, for our library routines: this makes pulling them into a Lianja Project very easy.

The PSP Builders will be in the library also.

In VFP the number of programs pretty much leveled out at 450. This number will likely be a little lower in Lianja, as some of the routines duplicated functionality, or have functionality not relevant to working in Lianja. Some of them are just plain useless -- but most of them save us typing and errors, over and over again.

Speaking of errors: every routine returns errors in the same way: the error message if any is passed back as a pass-by-reference parameter, which by custom is the last parameter. The prg returns a relevant value or any object as dictated by what the program is doing. The nature of the return value determines how an error is signaled. In every case, however, the passed-by-reference variable will be empty if there was no error, and not empty is there was an error. The error is always handled inside the routine in order to allow you to decide what to do with the error.

If you have a favorite routine you would like to see incorporated, you can write it and use the psp_ prefix on it if you want. Or you can see if we would like to incorporate it, so that a) everyone gets to use it, and b) we, instead of you, get to maintain it. And of course, c) if you have improvements on it, send them along and we will most likely incorporate them.