The REXX panel facility provides the REXX programmer with simple tools and commands for panel definition and for panel input/output to 3270 type terminals. The panel facility allows easy definition of panels using any editor. The requirement is that the panel source definition file should be in the REXX File System (RFS) before it is further processed. The panel input/output command provides the ability within a REXX program to dynamically change many of the field attributes statically defined by the panel definition facility. The following example helps you see the capability and function of the panel facility and also helps you understand and visualize the general concepts described in this chapter. An overview of the example follows:
define the field control characters to be used in the panel layout.
.DEFINE < blue protect
.DEFINE @ blue skip
.DEFINE ! red protect
.DEFINE > green unprotect underline
.DEFINE # green unprotect numeric right underline
define a panel named applican, which
queries an applicant's name and address.
(this line and the above lines are treated as comments).
.PANEL applican
< Please type the requested information below @
!Applicant's name
@Last name ...:>&lname @
@First name ..:>&fname @
@MI...........:>1&mi
!Applicant's mailing address
@Street.......:>&mail_street @
@City.........:>&mail_city @
@State........:>2&mail_state
@Zip...:#5&mail_zip
.PANEL
** END OF SAMPLE PANEL DEFINITION.
** START OF REXX PROGRAM USING THE PREVIOUS PANEL.
/* program to query applicant's name and address */
lname = ''; /* null out all name parts */
fname = '';
mi = '';
mail_street = '';
mail_city = 'DALLAS'; /* prefill the most likely response for city/state */
mail_state = 'TX';
mail_zip = '';
do forever;
'panel send applican cursor(lname)';
if rc > 0 then
call error_routine;
'panel receive applican'; /* pseudo-conversational this would be separate */
if pan.aid = 'PF3' | pan.aid = 'PF12' then
leave;
if pan.aid = 'ENTER' & pan.rea = 124 then
iterate;
if pan.aid = 'CLEAR' | substr(pan.aid,1,2) = 'PA' then
iterate; /* go to beginning of loop */
if rc > 0 then
call error_routine;
/* process the name and address */
end;
'panel end';
exit
error_routine:
Say 'An error has occurred'
return;
** END OF REXX PROGRAM and end of sample.