home *** CD-ROM | disk | FTP | other *** search
/ Amiga Elysian Archive / AmigaElysianArchive.iso / comm / dfa122.lha / rexx / insert_adr.ced < prev    next >
Text File  |  1993-05-03  |  2KB  |  118 lines

  1. /************************************************************************
  2.  *
  3.  * insert_adr.ced                by Dirk Federlein
  4.  *
  5.  * Inserts the address of the "person" under the cursor. You must have
  6.  * DFA running to use this script successfully.
  7.  *
  8.  * Lookup part taken from:
  9.  *
  10.  * LookUp.ced                        Copyright (c) 1989, Peter Cherna
  11.  *
  12.  * ARexx program for CygnusEd Professional that looks up the word under
  13.  * the cursor.
  14.  *
  15.  * Version 1.30:  August 20, 1989    Release 1.2:  August 29, 1989
  16.  *
  17.  ************************************************************************/
  18.  
  19. options results
  20.  
  21. address 'rexx_ced'
  22.  
  23. tabchar = '09'X
  24. cr    = '0A'X
  25. /*    Get contents of current line: */
  26. status 55
  27. line = result
  28.  
  29. /*    Get tab size: */
  30. status 8
  31. tabadjust = result - 1
  32.  
  33. /*    Get cursor x position (relative to beginning of line = 1): */
  34. status 46
  35. cur = result + 1
  36.  
  37. i = index(line,tabchar)
  38. DO while i > 0 & i <= cur - tabadjust
  39.     cur = cur - tabadjust
  40.     i = index(line,tabchar,i+1)
  41. END
  42.  
  43. /*    If the current character is non-alphabetic, then start one character
  44.     over to the left.  This allows the cursor to be immediately after
  45.     the key word (say on a space or bracket.) */
  46.  
  47. char = substr(line,cur,1)
  48. if (~(datatype(char,'A') | char = '_') & cur > 1) then
  49.     cur = cur - 1
  50.  
  51. /*    Find leftmost and rightmost alphabetic character adjacent to current: */
  52.  
  53. right = cur - 1
  54. left = cur + 1
  55. char = 'A'
  56. DO while (datatype(char,'A') | char = '_') & (left > 0)
  57.      left = left - 1
  58.     if left > 0 then
  59.         char = substr(line,left,1)
  60. END
  61. char = 'A'
  62. DO while (datatype(char,'A') | (char = '_'))
  63.     right = right + 1
  64.     char = substr(line,right,1)
  65. END
  66.  
  67. if right-left <= 1 then
  68. DO
  69.     getstring
  70.     target = result
  71.     if (target = 'RESULT') then
  72.         exit
  73. END
  74. else
  75. DO
  76.     target = substr(line,left+1,right-left-1)
  77.     newtarget = '#?'target'#?'
  78. END
  79.  
  80. DO
  81.     say 'Searching for address' newtarget '...'
  82.  
  83.     if ~show(ports, DFA) then
  84.     do
  85.         'okay1' 'You should have DFA running, if you' cr 'want to get an address from it!'
  86.         exit 0
  87.     end
  88.  
  89.     address 'DFA' "SEARCH" newtarget "IGNORECASE FIELDS=ALL STEM ADR."
  90.  
  91.     if rc=0 then
  92.     do
  93.         "Prev WORD"
  94.         "Mark BLOCK"
  95.         "NEXT WORD"
  96.         "CUT BLOCK"
  97.  
  98.         text ADR.ADDRESS.0
  99.         text cr
  100.         text ADR.ADDRESS.2
  101.         text " "
  102.         text ADR.ADDRESS.1
  103.         text cr
  104.         text ADR.ADDRESS.3
  105.         text cr
  106.         text ADR.ADDRESS.4
  107.         text " "
  108.         text ADR.ADDRESS.5
  109.         text cr
  110.         text ADR.ADDRESS.6
  111.         text cr
  112.     end
  113.     else
  114.         'okay1' 'Could not find address of' newtarget '! '
  115. END
  116.  
  117. exit
  118.