Panel Generation and Panel Input/Output

Panel definition can be done outside the REXX environment; however, panel generation and input/output is performed in a REXX exec or in the REXX interactive environment. The REXX interactive environment is an ideal place to test the initial panel development. To test display the panel use the TEST panel command. This displays the panel with no panel object file created. Also, there is no substitution for the variables on the panel. To create the panel object use either the GENERATE, SEND, or the CONVERSE panel commands. Use the FILE keyword to explicitly state what directory in RFS to find the panel source, or you can let it default to the current directory. The panel source name must have the panel name as the file name and 'PANSRC' as the file type. The panel object is created and filed in the same directory as the panel source with the file name equal to the source file name and with a file type of 'PANOBJ'. GENERATE creates the panel object and does not display the panel. SEND creates the panel object, displays the panel, and attempts variable substitution. CONVERSE is similar to SEND with an implied wait and receive.

Note: There are side affects of being in a REXX interactive environment. Several panel keywords act differently: the cursor position on the SEND is ignored and keyboard lock is also ignored for SEND and CONVERSE.
The characteristics of the PANEL command follow.
  • All the arguments or keywords are not meaningful or valid for all commands.
  • The last panel command in a REXX exec is the END command. This releases any storage held by previous panel commands. This command needs no other operands.
  • Only the fields with associated variables can have their attributes changed dynamically.
  • A panel object file is created for the panel that is being displayed if one does not exist. The file name is the same as the panel source file name and the file type will be 'PANOBJ'.
  • Only the first variable in a protect/skip field is assigned the input entered by the terminal operator when the field is changed to an input field.
  • The dynamic attribute changes effect the present panel execution and do not last. Subsequent panel displays revert to what was defined statically by the panel definition step unless the attributes are again dynamically changed.
  • A SEND must be performed before a RECEIVE and the panel names must match.
  • Only the attributes indicate change, the others stay as defined statically.
  • A panel sent with a position argument needs to be received with the same position values so the operator input is assigned correctly to the REXX variables.
  • Enclose the field ID list within parenthesis, when multiple fields are listed.
  • There has to be one ATTRIBUTE argument for each different attribute change.
Note: To change the number of ATTRIBUTE arguments dynamically, a REXX variable needs to be used (put the literal attribute string in REXX variable and use the variable). For example, a program needs to change one field to blue or to change one field to blue and another field to blinking depending on operator input. One solution is:
field_id = 'xxxx'; /* name of field needing attribute changed*/
attr_string = 'attr('  field_id  'blue )';
if operator_input = y then
  attr_string = attr_string  'attr(' field_id2  'blink )'
'panel send panel_name' attr_string;
Note: REXX panel facility generates the panel object if the object is not found or if the object is older than the source.

Reference Reference

Feedback


Timestamp icon Last updated: Tuesday, 7 January 2014


http://pic.dhe.ibm.com/infocenter/cicsts/v5r1/topic/com.ibm.cics.rexx.doc//dfhrx/rvse305.html