When you compile a procedure, ABL automatically lays out the frames as appropriate for the current screen display. The layout differs across user interfaces because some fields have special decoration. The font also affects the size, and therefore the layout, of fields.
However, when you are displaying a frame to a file or printer rather than the screen, you do not want ABL to design the frame for screen display. You want ABL to lay out the field for a character display using a fixed font and fields without decorations. Otherwise, output written to a printer or operating system file may be unattractive or even partially unreadable. You also want ABL to represent all data fields as text, not as graphical widgets such as editors or sliders.
ABL provides two mechanisms to deal with these issues:
The STREAM–IO option of the COMPILE statement
The STREAM–IO and SCREEN–IO options of the Frame phrase
If all output from a procedure is to printers or operating system files, you can use the STREAM–IO option of the COMPILE statement. This forces ABL to lay out all frames using a standard fixed font and to display all data fields as simple text fields. The following widget types are converted to text:
Editors
Selection lists
Sliders
Radio sets
Toggle boxes
If you only write a few frames to a printer or file in your procedure, you can use the STREAM–IO frame option to mark those frames. This forces ABL to lay out only those specific frames for output to a printer or file. If you do not specify STREAM–IO in the COMPILE statement, then all other frames are designed for screen display.
If only a few screens in your procedure are displayed to a screen, you use the SCREEN–IO frame option to mark those frames. Then compile with STREAM–IO so that all other frames are laid out for display to a printer or file.