/* RxSpell.rexx - revised 21 Mar 1991 by RLStockton for BaudBandit RxSpell docs: As words are sent to RxSpell it will load the dict file as needed, eating up lots of memory :-) There are only 2 commands: Quit, and CheckWord (or just Check) Quit tells RxSpell to quit. CkeckWord, given a word as an argument, searches for the word and returns 1 if the word was found, 0 if it wasn't, and 10 if there was an error reading the file or there wasn't enough memory. */ SIGNAL ON BREAK_C SIGNAL ON BREAK_E rev = "" pen3 = "" def = "" CR = "0D"x LF = "0A"x bbspath=GETCLIP('BBS_path') RxStart='CD' bbspath'Spell'LF'Run RxSpell Dict.' PARSE ARG name IF ~Open(fh,name,r) then do;Say 'Can''t open file'CR;exit;end IF ~Show(P,SPELL) then address command RxStart do i=1 TO 50 while ~Show(P,SPELL);call Delay 10;end IF ~Show(P,SPELL) then do;Say 'RxSpell problems, exiting'CR;exit;end ADDRESS SPELL DO linenumber=1 WHILE ~EOF(fh) new='' line=ReadLn(fh) line=Translate(line,' ','9'x'_.-/') /* ARexx doesn't like mixed tabs and spaces */ DO i=1 TO Words(line) wd=Word(line,i) Check wd IF RC=0 THEN new=new rev||wd||def ELSE IF RC=1 THEN new=new wd ELSE IF RC=10 THEN Say 'File Error!'CR ELSE Say 'Unknown Error 'RC'. word='i' line='line||CR END SAY pen3||RIGHT(linenumber,3)||def new||CR END BREAK_E: BREAK_C: EXIT;