10 ON ERROR GOTO Err_Routine ! ! Program Name: Sys$SysRoot:[SysUTL.Dict]ProofRead.Bas ! ! Latest Revision: 28-NOV-1984 ! ! Version: 2.0 ! ! Creation Date: June 1984 ! ! Author: Paul Lind ! ! %INCLUDE 'Sys$SysRoot:[SysUTL.Dict]Dictmap.MAP' %INCLUDE 'Sys$SysRoot:[SysUTL.NameLib]NameLib.Def' %INCLUDE 'Sys$SysRoot:[SysUTL.ScanLib]ScanLib.Def' DECLARE STRING & CommandLine, & PrimDict, & SecDict, & BadDict, & EdtFile, & InFile, & Dross DECLARE INTEGER & Cnt, & Nxt, & LNum, & Check_New, & Check_Bad, & TTChan, & True DECLARE LONG STS EXTERNAL LONG CONSTANT SS$_NORMAL DECLARE STRING & Template$_, & Bold$_, & Rev$_, & Off$_, & Ln$_, & Wd$_, & Ans$_, & Fil$_ Bold$_ = ESC + '[1m' Rev$_ = ESC + '[7m' Off$_ = ESC + '[0m' ! "#$%&'()*+,-./0123456789:;<=>?@ Template$_ = SPACE$(39%) + "' " + & 'ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz ' ! [\]^_` {|}~ DECLARE INTEGER FUNCTION Next_Space(STRING, INTEGER) DEF INTEGER Next_Space(STRING Line$_,INTEGER Cnt) DECLARE INTEGER Ln_Len Ln_Len = LEN(Line$_) Cnt=1 IF Cnt=0 Cnt=Cnt+1 WHILE (MID$(Line$_,Cnt,1%) = ' ' AND Cnt<= Ln_Len) Cnt=POS(Line$_,' ',Cnt) Next_Space = Cnt Next_Space = Ln_Len+1 IF Cnt = 0 END DEF CALL GetCommandLine(CommandLine) CALL SplitCommandLine(CommandLine, PrimDict, Dross) CALL SplitCommandLine(CommandLine, SecDict, Dross) CALL SplitCommandLine(CommandLine, BadDict, Dross) CALL SplitCommandLine(CommandLine, EdtFile, Dross) CALL SplitCommandLine(CommandLine, InFile, Dross) ! ! *** OPEN PRIMARY DICTIONARY FILE ! OPEN PrimDict AS FILE 2% & ,ORGANIZATION INDEXED VARIABLE & ,ALLOW MODIFY & ,MAP Entry & ,PRIMARY KEY FullWord ! ! *** OPEN SECONDARY DICTIONARY FILE ! OPEN SecDict AS FILE 3% & ,ORGANIZATION INDEXED VARIABLE & ,ALLOW MODIFY & ,MAP Entry & ,PRIMARY KEY FullWord ! ! *** OPEN MISSPELLED DICTIONARY FILE ! OPEN BadDict AS FILE 4% & ,ORGANIZATION INDEXED VARIABLE & ,ALLOW MODIFY & ,MAP Wrong & ,PRIMARY KEY BadWord DUPLICATES & ,ALTERNATE KEY GoodWord DUPLICATES CALL Dev_Assign('TT',TTChan,STS) CALL SYS$EXIT(STS BY VALUE) IF STS <> SS$_Normal 50 OPEN InFile FOR INPUT AS FILE 6% 55 ! ! OPEN EDT Command File ! OPEN EDTFile FOR OUTPUT AS FILE 8% PRINT #8;'SET SEARCH EXACT' ! ! OPEN Ignore_Unknown file ! OPEN 'TemDictIg.tmp' FOR OUTPUT AS FILE 5% & ,ORGANIZATION INDEXED VARIABLE & ,MAP Entry & ,PRIMARY KEY FullWord LNum = 0% True = 1% While True 60 LINPUT #6%,Ln$_ LNum = LNum + 1% PRINT PRINT Ln$_ Ln$_ = XLATE(Ln$_,Template$_) Cnt = 1% While Cnt < LEN(Ln$_) Check_New = 0% Check_Bad = 0% Nxt = Next_Space(Ln$_,Cnt) Wd$_ = EDIT$(MID$(Ln$_,Cnt,Nxt-Cnt),136%) Cnt = Nxt + 1% FullWord = EDIT$(Wd$_,40%) 80 ! *** Check for word in Primary Dictionary *** GET #2%,KEY #0% EQ FullWord IF Wd$_ <> "" AND Wd$_ <> "'" GOTO 120 90 ! *** Check for word in Secondary Dictionary *** GET #3%, Key #0% EQ FullWord GOTO 120 100 ! *** Check for word in Ignore List *** GET #5%, Key #0% EQ FullWord GOTO 120 110 Call Mis_Spelled(Wd$_, TTChan, LNum) 120 NEXT NEXT GOTO 32000 2000 Err_routine: SELECT ERR CASE = 154% SELECT ERL CASE = 80% RESUME 80 CASE = 90% RESUME 90 CASE =100% RESUME 100 END SELECT CASE = 155% SELECT ERL CASE = 80% RESUME 90 CASE = 90% RESUME 100 CASE =100% RESUME 110 END SELECT CASE = 1,5 RESUME 32760 CASE = 11 RESUME 32000 CASE = 228 PRINT BEL;"SORRY... I can't read a file like this." PRINT 'The INPUT file must have "CARRAGE RETURN"'; & ' as its RECORD ATTRABUTES' IF ERL = 50% PRINT RESUME 32000 CASE ELSE PRINT 'Error #'; ERR; ' at line '; ERL PRINT ERT$(ERR) END SELECT RESUME 32000 32000 ON ERROR GOTO 32010 KILL "TemDictIg.tmp" 32010 RESUME 32760 32760 ON ERROR GOTO 32700 PRINT #8%;'EXIT' 32700 RESUME 32767 32767 CLOSE #2% CLOSE #3% CLOSE #4% CLOSE #5% CLOSE #6% CLOSE #8% END