HP 3000 Manuals

ON KEY [ HP Business BASIC/XL Reference Manual ] MPE/iX 5.0 Documentation


HP Business BASIC/XL Reference Manual

ON KEY 

The ON KEY statement defines a branch that is to be executed when a
specific branch-during-input key is pressed during execution of an HP
Business BASIC/XL input or READ FORM statement.

Syntax 

                       {CALL subprogram}
ON KEY key_number_list {GOTO line_id   }
                       {GOSUB line_id  }

[{;}                    ]
[{,} LABEL [=] key_label]

[{;} {PRI     }                   ]
[{,} {PRIORITY} [=] priority_level]

Parameters 

key_number_list  A list of integers selected from the set of [1..8] or
                 numeric expressions that evaluate to integers in the
                 range of [1..8] separated by commas or semicolons.  This
                 set indicates which branch-during-input key is to be
                 trapped.  If the integer is not in the specified range,
                 an error occurs.  No more than eight values can be
                 specified for each statement.

subprogram       A valid subprogram name.

line_id          A line number or line label.

key_label        A quoted string of characters used to fill in the label
                 field of the user-definable key.  The string that you
                 use is specific for your terminal.  If the label is <=
                 fifteen characters, it is centered in the key label.  If
                 the key label is missing, "f1" through "f8" are used.

priority_level   A num_expr between 1 and 15, inclusive, used to
                 determine the order in which multiple branches specified
                 by interrupts and branch-during-input statements are
                 handled.  If this option is not selected, the branch is
                 placed on the interrupt queue with a priority of 1.

Examples 

          100 ON KEY 1 GOTO 120
          110 ON KEY 1 GOTO Help_label
          120 ON KEY 3 CALL Help
          130 ON KEY 1 CALL Help_routine,LABEL="  HELP  "
          140 ON KEY 1,2 GOSUB 10,LABEL=Label$
          150 ON KEY 4,5 CALL Assist,PRI=4
          160 ON KEY 2 CALL Help_entry,LABEL="  HELP    ENTRY",PRI=10
          170 ON KEY 7,8 CALL Exit_routine,LABEL="  exit",PRIORITY=15

The following example is designed to illustrate the behavior of the ON
KEY statement with regard to labels and priorities.

      10  ON KEY 1 CALL Suba; LABEL = "Main"
      20  PRESS KEY 1
      30  PRINT "Done"
      40  SUB Suba
      50  ON KEY 1 GOTO Myline;PRIORITY = 4;LABEL = "Suba"
      60  PRINT "In Suba"
      70  PRESS KEY 1
      80  SUBEXIT
      90  Myline: PRINT "Myline"
     100  SUBEND

Running this program produces the following output:

     In Suba
     Myline
     Done

In line 10, KEY 1 is defined with a call action.  Main is the label of
function key 1.

In line 20, KEY 1 is pressed.  This causes the Suba routine in lines 40
through 100 to be executed.  On line 50 KEY 1 is defined with a GOTO
action.  Label "Suba" appears on function key 1.  Next, the PRINT
statement in line 60 is executed.  Following that, in line 70, KEY 1 is
pressed.  Since the priority of KEY 1 is defined to be 4, the action
associated with the ON KEY statement is taken.  Remember that KEY 1 was
given a priority of 1 on line 10 and a call action was taken.  The call
action remains active unless KEY 1 is redefined with a higher priority in
the subunit.  Since this is the case in the above example, line 90 is
executed.  Line 100 causes a branch to line 30.  The PRINT statement in
line 30 is executed and the program ends.



MPE/iX 5.0 Documentation