You cannot append to a file when using AsciiOutput and TextOutput, right? Wrong!
Often times developers need to append to an existing file to add additional out e.g. a report with headers, a report total, a debug log or an audit trail of sorts.
This has typically required some additional coding whether testing for the first record to write out a header or testing to see if you are on the last record to write out a total.
Similarly, when calling multiple child processes that each produce content needed in one file, the developer would need to get creative around stitching files together using command line or powershell commands.
What if I told you that there is an easier way that has been around since the first release of V11 circa 2017 but has thus far been undocumented and hidden as one of IBM’s best kept secrets?
The missing piece of the puzzle is the AsciiOutputOpen() function. The function has the following syntax:
AsciiOutputOpen(<filename>,0|1);
A zero seems to indicate that the file should be truncated first.
A one indicates that the file should be appended to.
Alternatively you could also use the syntax:
AsciiOutputOpen(<filename>,0|FILE_OPEN_APPEND|FILE_OPEN_SHARED);
A sample TI process using my Period dimensions as a datasource shows how this “new” command is used:
#Section Prolog
sFilename='george.txt';
#--Start with a blank file - truncate if it exists
AsciiOutputOpen(sFilename,0);
Asciioutput(sFilename, 'Prolog', 'Start');
#Section Metadata
AsciiOutputOpen(sFilename,1);
Asciioutput(sFilename, 'Metadata', vPeriod);
#Section Data
AsciiOutputOpen(sFilename,1);
Asciioutput(sFilename, 'Data', vPeriod);
#Section Epilog
AsciiOutputOpen(sFilename,1);
Asciioutput(sFilename, 'Epilog', 'End');
Upon completion of the execution I have a file called george.txt in my data directory with the following:
This was only one example but illustrates how simple this process should have always been and now it is. As stated above, this seems to apply to both AsciiOutput and TextOutput.
As always with undocumented features, no warranties etc. etc. but would be good if we could all raise awareness to get this command into the mainstream on V11, supported in PAW and documented for all to be aware of and use.
Would be good to have your feedback and comments around this.
#ibmchampions-highlights-home#ibmchampions-highlights