Interrupting a Report
When a program performs a long process like a loop, a report, or a database query, the lack of user interaction statements within the process can prevent the user from interrupting it. In this program, the preceding example is modified to display a form containing start, exit, and interrupt buttons, as well as a progress bar showing how close the report is to completion.
The interrupt action view
In order to allow a user to stop a long-running report, for example, you can define an action view with the name "interrupt". When the runtime system takes control of the program, the client automatically enables a local interrupt action to let the user send an asynchronous request to the program.
This interruption request is interpreted by the runtime system as a traditional interruption
signal, as if it was generated on the server side, and the INT_FLAG
variable is set to TRUE
.
Refreshing the Display
The Abstract User Interface tree on the front end is synchronized with the runtime system AUI tree when a user interaction instruction takes the control. This means that the user will not see any display as long as the program is doing batch processing, until an interactive statement is reached. If you want to show something on the screen while the program is running in a batch procedure, you must force synchronization with the front end.
Interface
class is a built-in class provided to manipulate the user
interface. The refresh()
method of this class synchronizes the front
end with the current AUI tree. You do not need to instantiate this class before calling
any of its
methods:CALL
ui.Interface.refresh()
Using a ProgressBar
One of the form item types is a PROGRESSBAR
, a horizontal line with
a progress indicator. The position of the PROGRESSBAR
is defined by the
value of the corresponding form field. The value can be changed from within a BDL program by
using the DISPLAY
instruction to set the value of the field.
This type of form item does not allow data entry; it is only used to display integer values. The
VALUEMIN
and VALUEMAX
attributes of the
PROGRESSBAR
define the lower and upper integer limit of the
progress information. Any value outside this range will not be displayed.