Does each function have to be registered?Are all functions unloaded at once with a single call?If client crashes does this cause the server to need to be restarted (see note at bottom of slRunProc in docs.)slRunProc (rsProcName String, blParm1 Long, blParm2 Long, bsParm3 String, bsParm4 String, [rsModChars String]) Long Are all the parameters explained somewhere? The first and last is in slRunProc

Using normal PowerBASIC file handling to read local files can eliminate having to load and unload SQLitening routinesif a program is accessing both local flat files and a remote database using the SQLitening server routines.

Using GetLocalFile(sFileName,sData) and PutLocalFile(sFileName,sData) instead of slGetFile and slPutFilecan eliminate the need to use slSetProcessMods "L0" and slSetProcessMods "L1".

To make more robust need to add TableName and BlobColumnName parameters to GetBlob and PutBlob (to do list) which would match names in create statement.The PutBlob(sKey,sData) function replaces the data if found or inserts the data if not found.

4 Helper functions:FUNCTION PutBlob(sBlobKey AS STRING,sBlob AS STRING) THREADSAFE AS LONGFUNCTION GetBlob(sBlobKey AS STRING,sBlobData AS STRING) THREADSAFE AS LONGFUNCTION GetLocalFile(sFileName AS STRING, sData AS STRING) THREADSAFE AS LONGFUNCTION PutLocalFile(sFileName AS STRING, sData AS STRING) THREADSAFE AS LONG

http://freemyip.com Type in a name and it automtically creates a link to your local Ip addressSave the link provided and execute the link anytime to route to your current Ip or edit to go to another IP address.

Solid State Drives and disk cache make writing to disk very fast.Other programs may require TAB or other delimited formats to read in data.If another program needs the same data it may already be in memory.

Data passed using a file uses little memory and has advantages.Receiving programs can process the data lines at a time or read all in at once.It also allows users to view the output on any station at any time.Results may be produced in ROW order and COLUMN order without processing twice.4 new functions are highlighted (no more too much data for a MSGBOX while testing.)

LOCAL sColRowArray() AS STRING LOCAL sRowColArray() AS STRING LOCAL sOutputFile AS STRING LOCAL h AS LONG

sOutputFile = "output.txt" KILL sOutputFile:ERRCLEAR h = FREEFILE OPEN sOutputFile FOR APPEND AS #h PRINT #h, "Formatted Row and Column Arrays Optionally To Disk";TAB(62)DATE$ + " " + TIME$ PRINT #h PRINT #h, "Solid State Drives and disk cache make writing to disk very fast." PRINT #h, "Other programs may require TAB or other delimited formats to read in data." PRINT #h, "if another program uses the data on the same machine it may be in memory." PRINT #h, "Receiving programs can process the data lines at a time or read all in at once." PRINT #h, "It also allows users to view the output on any station at any time." PRINT #h, "Results may be produced in ROW order and COLUMN order. PRINT #h, "This program shells to the default program associated to read .TXT files." PRINT #h,

rows = UROW-LRow '0 based number of rows cols = UCOL-lCol '0 based number of columns 'array elements could be negative, 0, or positive so simple IF used FOR COL = lCol TO UCol FOR ROW = lRow TO Urow IF ROW < uRow THEN PRINT #hFile,sArray(ROW,COL);sDelimiter; ELSE PRINT #hFile,sArray(ROW,COL) END IF NEXT NEXT COL

END FUNCTION

FUNCTION WriteElementsRowOrder(hFile AS LONG, sArray() AS STRING,sDelimiter AS STRING) AS LONG

'array elements could be negative, 0, or positive so simple IF used FOR ROW = lRow TO Urow FOR COL = lCol TO UCol IF COL < UCol THEN 'not last column use delimiter PRINT #hFile,sArray(COL,ROW);sDelimiter; ELSE PRINT #hfile,sArray(COL,ROW) 'last column no delimiter END IF NEXT COL NEXT ROW