home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1998 April A / Pcwk4a98.iso / Wtestowe / OnNet16 / HOTSPOT.SCR < prev    next >
Text File  |  1997-01-08  |  7KB  |  198 lines

  1. *  HOTSPOT - Relay/PC for Windows "HOTSPOT" processor.
  2. *  (c) Copyright 1991,93 Relay Technology Inc.
  3. *
  4. *     INVOCATION:
  5. *      This script is executed whenever the user right-clicks on the terminal
  6. *      screen.
  7. *
  8. *     FUNCTION:
  9. *      This script has three functions.  They are Hotspot "words", Hotspot
  10. *      "blocks", and "lightpen".  A description follows:
  11. *
  12. *      Hotspot "Words"
  13. *    A user could be clicking on a "word", that is anything with a space on
  14. *    either side of it.  The default is to assume that if we are a 3270
  15. *    terminal and the "word" is a number from 1-24, then send a PF1-PF24.
  16. *    In all other cases, simply send the "word".
  17. *
  18. *      Hotspot "Blocks"
  19. *    The user could have "marked" a block on the terminal screen by pressing
  20. *    the left mouse button and holding it down and moving the mouse pointer
  21. *    to highlight their block.
  22. *
  23. *      Light Pen
  24. *    Pointing at an area of the 3270 screen with the mouse pointer, and then
  25. *    double clicking the right mouse button will cause the the 3270 cursor to
  26. *    be repositioned to that point, and a 3270 "Cursor Select" function to
  27. *    be automatically executed.  This feature is only available if a global
  28. *    variable &$LITEPEN is set to "ON".  This can be done in the RELAY.OFP
  29. *    (RELAY Gold Offline Profile).  Issue the commands:
  30. *          GLOBAL &$LITEPEN
  31. *          &$LITEPEN=ON
  32. *
  33. *     PASSED ARGUMENTS:
  34. *      If no block is marked:         If a block is marked:
  35. *     &1 = row number           &1 = row number of upper left corner
  36. *     &2 = column number           &2 = column number of upper left corner
  37. *     &3 = 0                &3 = row number of lower right corner
  38. *     &4 = 0                &4 = column number of lower right corner
  39.  
  40. *
  41. * If we are a 3270 terminal, and the user variable "&$LITEPEN" is set to ON,
  42. * then simulate the use of a lightpen with the current position of the mouse
  43. * pointer.
  44. *
  45. *---------------------------------------------------------------------*
  46. *                 Module History                  *
  47. *---------------------------------------------------------------------*
  48. *                                      *
  49. *  Latest Revision -                              *
  50. *                                      *
  51. *     $Revision:   1.8  $                          *
  52. *                                      *
  53. *  Modification Log -                              *
  54. *                                      *
  55. *     F0106V70 Fix HOTSPOT script litepen check for ON value       *
  56. *          by JMM on 03/08/96                      *
  57. *     M0001V70 Put Relay Source Files under PVCS Control          *
  58. *          by JMM on 12/18/95                      *
  59. *                                      *
  60. *---------------------------------------------------------------------*
  61.  
  62. -LITEPEN  if (&where = 3270) and (&$LITEPEN ~ "ON")
  63.           then cursor &1 &2
  64.           then key cursel
  65. *          then key enter
  66.           then quiet stop
  67.  
  68. *
  69. * Check to see if this is a "block" operation...
  70. *
  71.       if (&3 <> 0) goto -BLOCK
  72.  
  73. *
  74. * This is not a "block" operation, so find out what the "word" is that has been
  75. * "clicked" on...
  76. *
  77. -WORD      &ROW = &SIMAGE(&1, 1, &SWIDTH)
  78.  
  79.       &SLEFT = &LEFT(&ROW, &2)
  80.       &TMP = &REVERSED(&SLEFT) !
  81.       &LSPACE = &INSTR(&TMP, )
  82.       &STARTC = &2 + 2 - &LSPACE
  83.  
  84.       &SRIGHT = &SUBSTRING(&ROW, &2) !
  85.       &RSPACE = &INSTR(&SRIGHT, )
  86.       &ENDC = &2 + &RSPACE - 1
  87.  
  88.       if (&ENDC > &STARTC)
  89.           then &WORDLEN = &ENDC - &STARTC
  90.           then &WORD = &SUBSTRING(&ROW, &STARTC, &WORDLEN)
  91.           else &WORD =
  92.  
  93. *
  94. * We now have exactly what the user "clicked" on.  Before we strip out the non
  95. * aplha and numerics, see if they had clicked on any special word verbs...
  96. *
  97. -SPECVERB if (&WORD ~ "MORE...") then key pa2   ; quiet stop
  98.       if (&WORD ~ "***")     then key enter ; quiet stop
  99.  
  100. *
  101. * Check for validity now.  We only want to process numbers and/or letters.
  102. * Throw away any leading non-valid characters.    This gives you the beginning of
  103. * the "word".  Then look for the next non-valid character or the last character
  104. * in the string.  This gives the end of the "word".  Now you are ready to go...
  105. * For example:
  106. *          "[[[word]]]" yields "word"     "[10.]"      yields "10"
  107. *          "word]]]"    yields "word"     "wor.d]]]"   yields "wor"
  108. *
  109.       &VALID = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"
  110.       &FINLWORD = "" ; &GOOD = N ; &WORDPOS = 1
  111.       &WORDLEN = &len(&WORD)
  112.       loop -OUT &WORDLEN
  113.           &LETTER = &substring(&WORD,&WORDPOS,1)
  114.           if (&instring(&VALID,&LETTER) <> 0)
  115.            then &FINLWORD = &FINLWORD.&LETTER
  116.            then &WORDPOS = &WORDPOS + 1
  117.            then &GOOD = Y
  118.            then goto -OUT
  119.           if (&GOOD = Y) then &WORD = &FINLWORD ; goto -WORDVERB
  120.           &WORDPOS = &WORDPOS + 1
  121. -OUT
  122.  
  123. *
  124. * We now have exactly the word that the user clicked on, with any non-alpha
  125. * or non-numerics removed.  Do we want to take action on any of these...
  126. *
  127. -WORDVERB if (&WORD ~ "HOLDING") then key enter ; key pa2 ; quiet stop
  128.  
  129. *
  130. * Users may add additional "verbs" for application specific HOTSPOTs.
  131. * The additional verbs should follow this line...
  132. *
  133.  
  134. *
  135. * OK, it is not a special verb, so lets take the next appropriate action.
  136. * If this is NOT a 3270 terminal, then simply send the "word" to the other
  137. * computer and exit.
  138. * As of 12/28/93, we also handle protocol converter PF Key simulation
  139.  
  140. -WORDTTY  if (&where = 3270) or (&where = TTY)
  141.         then Goto -WORD3270
  142.         else Goto -SENDWORD
  143.  
  144. *
  145. * Well, we are a 3270 terminal.  If the "word" contains a 1-24, assume that the
  146. * user wants to issue a PF1-PF24.  If the "word" does not contain a 1-24, then
  147. * simply send the "word" to the host computer.
  148. *
  149. -WORD3270 &WORD = &trim(&WORD)
  150.       &KEYCTR = 24
  151.       loop *+2 24
  152.           if (&instring(&WORD,&KEYCTR) <> 0) then Goto -SENDPF
  153.           &KEYCTR = &KEYCTR - 1
  154.       Goto -SENDWORD
  155. -SENDPF
  156. If (&where = 3270)
  157.     then key PF&KEYCTR
  158.     then quiet stop
  159.  
  160. *
  161. * if we are not sending PF keys we send the number instead.
  162. *
  163. if (&option(hotspot.pfkeys)) <> ON)
  164.     then send "&KEYCTR"
  165.     then quiet stop
  166.  
  167. * For Protocol Converters, we have to get the definition out of the
  168. * keyfile - this routine assumes the standard Relay definitions
  169. If (&KEYCTR < 11)
  170.     then SUBSTITUTE &OPTION(KEY F&KEYCTR)
  171.     then quiet stop
  172. If (&KEYCTR < 21)
  173.     then &KEYCTR = &KEYCTR - 10
  174.     then SUBSTITUTE &OPTION(KEY CS-F&KEYCTR)
  175.     then quiet stop
  176. * must be 21 thru 24
  177.     &KEYCTR = &KEYCTR - 20
  178.     SUBSTITUTE &OPTION(KEY S-F&KEYCTR)
  179.     quiet stop
  180. *
  181. * We could not find a 1-24, so just send the "word"...
  182. *
  183. -SENDWORD
  184.       send "&WORD"
  185.       quiet stop
  186.  
  187. *
  188. * The user has indicated some action against a "marked block".  Process the
  189. * "block" one line at a time, sending each line to the host as it appears.
  190. *
  191. -BLOCK      &MLENGTH = &calc(&4 - &2 + 1)
  192.       &CNT = &1
  193.       loop -BUILD while (&CNT <= &3)
  194.           &MARK = &simage(&CNT,&2,&MLENGTH)
  195.           send "&MARK"
  196. -BUILD          &CNT = &CNT + 1
  197.       quiet stop
  198.