Here is a defined list of programming levels a programming language needs to have and be working in MAPPS or GUPPS, or further development will stop in that language. 1. Pseudo-persistent database connections using global variables which work in and out of classes, fucntions, etc. (Skipped for Perl temporarily). 2. Constants, Get_Info, and Set_Info basic modules are working. a. Constants -- Get_Constants function. b. Get_Info -- List and Info functions. c. Set_Info -- Set_general and all set_* functions working for each table in database. 3. Mail module defined and working. a. Mail function only accepts two variables, Headers and Body. My submitting Headers and Body to function, it will send out the mail. 4. Misc Module working: a. CLean_String function to clean out any non-printable characters. This only accepts on input. b. Encrypt and Decrypt -- to encrypt and decrypt strings. It must use Blowfish at this level. Other encryption methods are optional, but it must be able to use Blowfish before going to level 5. c. Convert_Html -- converts a string to html escaped so that when it is printed on a webpage, nothing gets interpreted as html code. ### Added d and e 3-16-2002 d. Gzip, zip, uuencode/decode, binhex, and base64 for at least strings. 5. Programming checks: a. On every database execution -- see if it executed correctly and escape errors produced. b. Prepare values so that they match the fieldtype in the database as a valid entry. Do this for int*, char*, varchar*, text, and timestamp and numeric. For now, just PostgreSQL, but this will change when other database servers are introduced. 6. XML capabilities (still being changed). a. Validate an xml document with whitespace versus a DTD. b. Convert a tab delimited (or other separator) file with the headers on the first line to xml. c. Extract data from XML document in tree data format (one hash structure containing other structures). d. Just like SimpleParse in Perl, have 3 functions for matching a tag, the data in tag, and end tag that are submitted to a function that also accepts the data from a file (or input). e. Implement Xpat and a simple method to parse data and put in hash array. f. Validate a document versus new way, not dtd. 7??. a. Check input for binary fieldtypes in tables, and enable the ability to insert binary code into binary fields in tables. b. Add ability to load a file from cgi with a maximum limit. ??? a. Get_Info module must be able to take a sql statement and its variables and execute them and store them into a temporary table and return the table id. 4 variables, sql statement + values + return type + database connection. Database connection and type are optional. It returns a temporary table id or if a return type of "hash" is specified, it returns a hash of the table, or "list" returns a list of the contents of the temp table. It also returns 0 for no errors, and 1 or higher if there is an error -- as the second variable returned. This isn't needed now that postgresql has good stored procedures. ??? a. Add ability to freeze code. Possible in Perl and Python, PHP??.