Making HTML documents
Making HTML documents
Signature Systems recently added HTML output capability to The Reporter and the Comet Print Spooler. This tip shows how to add the same capability to your Comet applications.
In the following steps, we explain the details of how to make and launch an HTML document from an MTB program. Here’s a quick summary of these steps:
· Create a text file with an extension of “HTM” · Write the basic HTML tags to the text file · Write your output data to the text file · Launch the text file (which is interpreted by the Windows as an HTML file) · Erase the text file
Here is a detailed description of these steps, along with the matching MTB code:
|Create a text file where you will be writing the HTML tags and your lines of data.
In this example, we’ve named the file SAMPLE.HTM. The HTM extension is essential.
When your program launches this file, Windows uses that extension to run the default web browser.
|FILENAME$ = “SAMPLE.HTM”
DIR$ = “TMP”
|Open the text file.||OPEN (20) FILENAME$,DIR=DIR$|
|Write the initial HTML tags to the text file.
These tags define the document type, the heading section, and the start of the document title.
|PRINT (20) “<HTML>”
PRINT (20) “<HEAD>”
PRINT (20) “<TITLE>”
|Write a title line to the text file
(when the HTML document is launched, this text is displayed as the title line in the web browser window).
|PRINT (20) “Sample title line”|
|Write these tags to the text file. They conclude the title and head section of the HTML document.|| PRINT (20) “</TITLE>”
PRINT (20) “</HEAD>”
|Write the BODY tag to the text file. This marks the start of the main section of the document.
Note: the BODY tag can also include a parameter to specify background color or background graphic if desired.
Refer to some HTML documentation for more information
|PRINT (20) “<BODY>”|
|Write the REP tag to the text file.
This tag begins a section of pre-formatted text in the HTML document
(i.e., when the web browser sees this tag, it will not apply word wrap to the following lines of text).
This can be ideal for displaying data from an MTB program.
|PRINT (20) “<REP>”|
|Write your data lines, as desired, to the text file.||.
PRINT (20) DATA$
|When your data has been written, write the concluding HTML tags to the text file.
Your text file is now a complete HTML file.
|PRINT (20) “</REP>”
PRINT (20) “</BODY>”
PRINT (20) “</HTML>”
|Close the text file.||CLOSE (20)|
|Construct the full HTML document name by appending the filename to the path.
Then, launch the HTML document.
| HTMLDOC$ = PATH(DIR$) + FILENAME$
PRINT (0) (LAUNCH=HTMLDOC$)
|Wait to make sure that the HTML document has been launched
(in this example, we pause 2 seconds), and then erase the text file.
Note: If you erased the HTML file immediately after launching it,
it’s possible that the file would be erased before the web browser was able to display it.
Therefore, it makes sense to wait before erasing the file.
Launching on a CometAnywhere system
The above example assumes that your program is running on the same machine where the web browser is located. But, what about a remote Comet Anywhere user? How can you launch an HTML document on a remote system?
The solution is easy. You can use the VerifyFile mnemonic to send the HTML document from the host system to the remote system, and then use the Launch mnemonic to launch the file on the remote system.
The following MTB code demonstrates how to do this. By the way, this code segment is contained in The Reporter’s ~RPGUSE usefile, starting at line 36200.
|Construct the full HTML document name by appending the filename to the path (same as above).||HTMLDOC$ = PATH(DIR$) + FILENAME$|
|Determine if the session is a CometAnywhere session by examining the 21st byte in the DSTAT for TERM$.
If this is not a CometAnywhere session, skip ahead to the LAUNCHFILE label.
IF SUB(BINARY(FLAG$),8,1) NE "1" THEN GOTO LAUNCHFILE
|Construct the name for the HTML file on the remote system.
This name consists of the directory alias $(CATOOLS), the subdirectory HTMLTEMP, and the text filename.
|Use the VerifyFile mnemonic to transfer the text file from the host system to the remote system.
The 3rd parameter is a flag whose value is the sum of the chosen options.
In this example, 24 is the sum of “always send file” (8) and “create alias if required” (16).
|Move the remote filename to the HTMLDOC$ variable.||HTMLDOC$ = REMOTEDOC$|
|Launch the HTML document.|| LAUNCHFILE:
PRINT (0) (LAUNCH=HTMLDOC$)
|Wait to make sure that the HTML document has been transferred to the remote system
(in this example, 6 seconds) and launched, and then erase the text file.
Note: The ERASE statement erases the file on the host system only.
There is no Comet instruction to erase the file on the remote system.
Therefore, the remote user will have to manually erase the HTML file when it is no longer needed.
Here is the complete MTB source program for this example.