home *** CD-ROM | disk | FTP | other *** search
/ Enigma Amiga Life 109 / EnigmaAmiga109CD.iso / software / varie / envhex13 / english / rexx / searchascii.rexx < prev    next >
Encoding:
OS/2 REXX Batch file  |  1999-12-11  |  4.2 KB  |  167 lines

  1. /* ©1996 Dietmar Eilert. Empty GoldED macro */
  2.  
  3. OPTIONS RESULTS                             /* enable return codes     */
  4.  
  5. if (LEFT(ADDRESS(), 6) ~= "GOLDED") then    /* not started by GoldEd ? */
  6.     address 'GOLDED.1'
  7.  
  8. 'LOCK CURRENT RELEASE=4'                    /* lock GUI, gain access   */
  9.  
  10. if (RC ~= 0) then
  11.     exit
  12.  
  13. OPTIONS FAILAT 6                            /* ignore warnings         */
  14.  
  15. SIGNAL ON SYNTAX                            /* ensure clean exit       */
  16.  
  17. /* ------------------------ INSERT YOUR CODE HERE: ------------------- */
  18. /* $VER: 1.3, ©1999 Wolfgang Morgeneier */
  19.  
  20. 'QUERY Var=Wild Name=Wildcards'
  21. 'QUERY Var="Suchstring" Name=Find'
  22. 'Query Var="Ersetzenstring" Name=Rplc'
  23. 'QUERY Var=grkl Name=UseCase'
  24. 'FIX VAR=Suchstring'
  25. 'FIX VAR=Ersetzenstring'
  26. if length(Suchstring)=0 then Suchstring="x"
  27. if length(Ersetzenstring)=0 then Ersetzenstring="x"
  28.  
  29. parse arg Eingabe
  30. sprache=substr(Eingabe,1,1)
  31. start  =substr(Eingabe,2,1)
  32.  
  33. if sprache = "d" then do
  34.    R1B= "Suchstring im ASCII-Format eingeben (max 16 Zeichen):"
  35.    R1T= "Eingabe"
  36.    R2P= "Das erste Zeichen des Suchstrings darf kein Platzhalter sein"
  37.    R3P= "Der Suchbegriff wurde nicht gefunden"
  38.    R4B1="Ersetzenstring im ASCII-Format eingeben ("
  39.    R4B2=" Zeichen):"
  40.    R4T= "Eingabe"
  41.    R5P= "Der Ersetzenstring muß genauso lang wie der Suchstring sein"
  42.    R6T= "Alle folgenden Vorkommen ersetzen?"
  43.    R6B= "Vorgang kann mit der CTRL-Taste abgebrochen werden"
  44.    R6X= "Alles ersetzen|!Beenden"
  45.    R7T= "Fertig"
  46.    R7B1="Insgesamt "
  47.    R7B2=" Ersetzungen"
  48. end
  49. else do
  50.    R1B= "Enter search string in ASCII format (max 16 chars):"
  51.    R1T= "Input"
  52.    R2P= "The first char of search string may be no wildchar"
  53.    R3P= "Search string not found"
  54.    R4B1="Enter replace string in ASCII format ("
  55.    R4B2=" chars):"
  56.    R4T= "Input"
  57.    R5P= "Replace string must have same length as search string"
  58.    R6T= "Shall I replace all following findings?"
  59.    R6B= "You can break this by pushing the CTRL key"
  60.    R6X= "Replace all|!Finished"
  61.    R7T= "Ready"
  62.    R7B1="Totally "
  63.    R7B2=" Replacements"
  64. end
  65.  
  66.  
  67. if start = "1" | start = "r" then do
  68.    if length(Suchstring)>16 then Suchstring=left(Suchstring,16)
  69.    'REQUEST Body="' || R1B || '" Title="' || R1T || '" Var=Suchstring String Old="' || Suchstring || '"'
  70.    if RC > 0 then do
  71.       'UNLOCK'
  72.       exit
  73.    end
  74. end
  75. SuchstringLaenge=length(Suchstring)
  76. if SuchstringLaenge > 16 then Suchstring=left(Suchstring,16)
  77. 'FIX VAR=Suchstring'
  78.  
  79. if length(Suchstring)=0 then do
  80.    'UNLOCK'
  81.    exit
  82. end
  83.  
  84. if Wild=TRUE & Left(Suchstring, 1)=="?" then do
  85.    'REQUEST Problem="' || R2P || '"'
  86.    'UNLOCK'
  87.    exit
  88. end
  89.  
  90. 'SET Name=Find Value="' || Suchstring || '"'
  91. Optstring = " "
  92. if start = "2" then Optstring = Optstring || "NEXT "
  93. if grkl=TRUE   then Optstring = Optstring || "USECASE "
  94. if Wild=TRUE   then Optstring = Optstring || "WILDCARD "
  95.  
  96. 'HEXSEARCHASCII SEARCH="' || Suchstring || '"' || Optstring
  97.  
  98. if RC > 0 then do
  99.    'REQUEST Problem="' || R3P || '"'
  100.    'UNLOCK'
  101.    exit
  102. end
  103.  
  104. if start="r" then call ersetzen
  105.  
  106. 'UNLOCK'
  107. exit
  108.  
  109. ersetzen:
  110.  
  111. ErsetzenstringLaenge = 0
  112. do until ErsetzenstringLaenge = SuchstringLaenge
  113.  
  114.    'REQUEST Body="' || R4B1 || SuchstringLaenge || R4B2 || '" Title="' || R4T || '" Var=Ersetzenstring Max=' || length(Suchstring) || ' String Old="' || Ersetzenstring || '"'
  115.    if RC > 0 then do
  116.       'UNLOCK'
  117.       exit
  118.    end
  119.    ErsetzenstringLaenge=length(Ersetzenstring)
  120.    Ersetzenstringorg = Ersetzenstring
  121.    'FIX VAR=Ersetzenstring'
  122.    if ErsetzenstringLaenge ~= SuchstringLaenge then 'REQUEST Problem="' || R5P || '"'
  123. end
  124.  
  125. 'SET Name=Rplc Value="' || Ersetzenstring || '"'
  126.  
  127. call doersetzen
  128.  
  129. 'REQUEST Title="' || R6T || '" Body="' || R6B || '" BUTTON="' || R6X || '"'
  130. if result = 0 then return
  131.  
  132. Anzahl=1
  133. do forever
  134.    'HEXSEARCHASCII SEARCH="'Suchstring || '"' || Optstring
  135.    if RC > 0 then do
  136.       'REQUEST Title="' || R7T || '" Body="' || R7B1 || Anzahl || R7B2 || '"'
  137.       return
  138.    end
  139.    'QUERY Name=CTRL Var=ctrl'
  140.    if ctrl=TRUE then return
  141.    call doersetzen
  142.    Anzahl = Anzahl + 1
  143. end
  144.  
  145. return
  146.  
  147.  
  148. doersetzen:
  149.  
  150. do i=1 to length(Ersetzenstringorg)
  151.    teil = substr(Ersetzenstringorg,i,1)
  152.    'FIX Var=teil'
  153.    'HEXKEY KEYA="' || teil || '"'
  154. end
  155.  
  156. return
  157.  
  158. /* ---------------------------- END OF YOUR CODE --------------------- */
  159.  
  160. SYNTAX:
  161.  
  162. SAY "Sorry, error line" SIGL ":" ERRORTEXT(RC) ":-("
  163.  
  164. 'UNLOCK'
  165.  
  166. exit
  167.