PARAMETERS pnError, psMessage, psProgram, psProg1, pnLineNo, psMessage1, ; psSystemID, psSubject, psMailAtt PRIVATE lcTempstat, lcTempmem STORE '' TO lcTempstat, lcTempmem *Make sure last psSystemID, psSubject, psMailAtt are strings.... not logical. IF TYPE('psSystemID') # 'C' RELEASE psSystemID STORE 'UNKNOWN ID' TO psSystemID ENDIF IF TYPE('psSubject') # 'C' RELEASE psSubject STORE 'ERROR MESSAGE' TO psSubject ENDIF IF TYPE('psMailAtt') # 'C' RELEASE psMailAtt STORE '' TO psMailAtt ENDIF *--- Error message string for email sMessage = ; 'Program......: ' + psProgram + CHR(10) + ; 'Prev Program.: ' + psProg1 + CHR(10) + ; 'Line.........: ' + LTRIM(STR(pnLineNo)) + CHR(10) + ; 'Error........: ' + LTRIM(STR(pnError)) + CHR(10) + ; 'Message......: ' + psMessage + CHR(10) IF NOT USED('errlog') *IF FILE('D:\WORK\tfi6785\isdev.dbf') * USE D:\WORK\TFI6785\errlog IN 0 *ELSE USE \\rsvpsource\wrktest\programs\errlog IN 0 *ENDIF ENDIF blah blah blah...............Mmmmmmmmm that is the beginning of the error handler....