The following sample code shows how to direct somPrintf output to a file called C:\ERROR.TXT. Before enabling the replacement of SOMOutCharRoutine, the file is opened and a header is written to it.
#define INCL_DOS #define INCL_WINWORKPLACE #include <os2.h> #include <io.h> #include <stdio.h> #include <fcntl.h> #include <sys\stat.h> #include <string.h> #include <som.h> /* File to contain debugging error information */ static FILE *ErrorFile; /**********************************************************************/ /* This is the replacement for the default SOMOutCharRoutine. */ /* It writes the debugging information to a file on the hard drive */ /* instead of to stdout. */ /**********************************************************************/ #pragma linkage(myCharacterOutputRoutine, system) int SOMLINK myCharacterOutputRoutine(char chOut) { fputc((int) chOut, ErrorFile); fflush(ErrorFile); return 1; /* Indicate success */ } . . . /**********************************************************************/ /* Enable myCharacterOutputRoutine by opening the output error */ /* file and then changing the output character routine. */ /**********************************************************************/ ErrorFile = fopen ("c:\\error.txt", "a"); fprintf (ErrorFile, "\nDebug information from my WPS Object\n"); fprintf (ErrorFile, "------------------------------------\n"); setbuf (ErrorFile, NULL); SOM_TraceLevel = 2; /* Request maximum debugging information */ SOM_WarnLevel = 2; SOM_AssertLevel = 2; /* All output goes to my routine after the next statement */ SOMOutCharRoutine = myCharacterOutputRoutine;