Until recently, I've never needed to save a report (i.e. create a disk file) in HTML format - or maybe I've always managed to dodge my way around this requirement. Recently, though, I was asked to save a report that I distribute via email in PDF format to save it also as a disk file in HTML. As the report in question is actually an 'HTML document', this is documented as using two extra parameters to the WINHTML program ('-o', presumably meaning 'output' and the output file).
LINK ORDERS TO :$.PAR;
INSERT INTO ORDERS
SELECT * FROM ORDERS ORIG
WHERE ORDNAME = 'KL210001';
:FNAME = '//server/Sharing/AutoReports/$.HTM';
EXECUTE WINHTML '-d', 'TEST_HTMLFURNDAILY', 'ORDERS', :$.PAR,
'-o', :FNAME
;
UNLINK AND REMOVE ORDERS;
LINK ORDERS TO :$.PAR;
INSERT INTO ORDERS
SELECT * FROM ORDERS ORIG
WHERE ORDNAME = 'KL210001';
:FNAME = '//server/Sharing/AutoReports/$.PDF';
EXECUTE WINHTML '-d', 'TEST_HTMLFURNDAILY', 'ORDERS', :$.PAR,
'-pdf', :FNAME;
SELECT ENTMESSAGE ('$', 'P', 20) INTO :SUBJECT FROM DUMMY;
:GROUP = 'FURNDAILY';
LINK GENERALLOAD TO :$.GEN;
INSERT INTO GENERALLOAD (LINE, RECORDTYPE, TEXT, TEXT6)
VALUES (1, '1', :SUBJECT, :GROUP);
INSERT INTO GENERALLOAD (LINE, RECORDTYPE, TEXT)
VALUES (2, '3', :FNAME);
EXECUTE INTERFACE 'TEST_SENDREPORTEMAIL', SQL.TMPFILE, '-L', :$.GEN;
SELECT ATOI (KEY1) INTO :MB
FROM GENERALLOAD
WHERE RECORDTYPE = '1'
AND LOADED = 'Y';
LINK MAILBOX TO :$.MBX;
ERRMSG 1 WHERE :RETVAL <= 0;
INSERT INTO MAILBOX
SELECT * FROM MAILBOX ORIG
WHERE MAILBOX = :MB;
EXECUTE SENDMAIL :$.MBX, :XMSG; /* send the letter! */
UNLINK MAILBOX;
UNLINK GENERALLOAD;
UNLINK ORDERS;
Today I was asked to do something similar, but in this case, the report is created by a normal multi-step procedure (i.e. not an HTML document), and so there is no use of WINHTML. I looked at the documentation for saving a normal report as HTML - this uses WINACTIV.
The :F variable implies that the report will be saved to a file with this name, but this variable is not used! I looked at the SDK version on the Internet and exactly the same code appears. THIS IS A MISTAKE! The correct code is as follows:
:FNAME = '//server/Sharing/AutoReports/$.HTM';
EXECUTE WINACTIV '-R', 'TEST_HTMLFURNDAILY', 'ORDERS', :$.PAR,
'-o', :FNAME;
In other words, in the same way that WINHTML receives an extra two parameters when saving a report to disk, WINACTIV does also, only that this is not documented.