10 @"Word Editor" 20 @"By David E. Trachtenbarg" 25 @"Copyright 1981" 30 Rem Wl=Word Length 40 Integer H,I,J,K,Item,Number,First,Found,Wl 50 Integer Start,Displacement 60 Wl=15 70 Dim Word$(Wl-1),Word2$(Wl-1),Data'file$(13) 80 Dim Command$(10),Command2$(Wl-1) 90 Dim Words$(Wl*20) 100 Set 0,-1 110 On Esc Goto Closer 120 Data'file$="CHECK.DAT" 180 Call .List'words (1,Word$) 190 *Commands 200 On Error Stop 210 Gosub Bottom'lines 220 @"'F'orward#,'B'ackward#,#,'C'hange#,'A'dd,'D'elete#,'M'enu. "; 230 Input"",Command$(-1); 240 If Command$="" Then 210 250 Word$="" : Number=Val(Command$) 260 If Number>0 Then First=Number : Call .List'words (First,Word$) : Goto Commands 270 Number=Val(Command$(1)) 280 If Number=0 And Len(Command$)>1 Then Call .List'words (1,Command$) : Goto Commands 290 Call .Capitalize (Command$) 300 If Pos("ABCDFM",Command$(0,0),0)=-1 Then 210 310 If Number<1 Then Number=1 320 If Command$(0,0)="A" Then Gosub Add'words 330 If Command$(0,0)="B" Then Do 340 If First>1 Then Do 350 First=First-(Number)*20 : Call .List'words (First,Word$) 360 Else 370 Word2$=Words$(0,Wl-1) 420 Call .List'words (1,Word2$) 430 Enddo 440 Enddo 450 If Command$(0,0)="C" Then Call .Get'word (Number) : Gosub Change'word 460 If Command$(0,0)="D" Then Call .Get'word (Number) : Gosub Delete'word 470 If Command$(0,0)="F" Then Do 480 If First>1 Then Do 490 First=First+(Number)*20 : Call .List'words (First,Word$) 500 Else 510 Word2$=Words$(19*Wl,20*Wl-1) 570 Call .List'words (1,Word2$) 580 Enddo 590 Enddo 600 If Command$(0,0)="M" Then Run"SMENU.SAV" 610 Goto Commands 620 Procedure .Print'word (Num) 630 @ Using"#####. ",Num; 640 @"'";Word$;"'" 660 Endproc 670 Procedure .List'words (Start,Start'word$) 680 Gosub Screen'erase 690 Set 3,0 700 Words$="" 710 Displacement=0 720 On Error Stop 730 Kopen\1\Data'file$ 740 If Start'word$="" Then Do 750 First=Start 760 On Error Goto 780 770 Kgetrec\1,Start-1\ 780 On Error Stop 790 Else 800 First=1 810 On Error Goto 830 820 Kgetapp\1,Start'word$(-1)\ 830 On Error Stop 840 Enddo 850 On Error Goto 870 860 Kretrieve\1\Word$(-1) 870 On Error Stop 880 Words$(Displacement*Wl,(Displacement+1)*Wl-1)=Word$(-1) 890 Call .Print'word (Displacement+Start) 900 Repeat 910 Displacement=Displacement+1 920 Word$="" 930 On Error Goto 980 940 Kgetfwd\1\ 950 Kretrieve\1\Word$(-1) 960 Words$(Displacement*Wl,(Displacement+1)*Wl-1)=Word$(-1) 970 Call .Print'word (Displacement+Start) 980 On Error Stop 990 Until Displacement>=19 1000 On Error Stop 1010 Kclose\1\ 1020 If Sys(3)=163 Then @" **** END ****"; 1040 @ : @ 1050 Endproc 1060 Procedure .Get'word (Number) 1070 Kopen\1\Data'file$ 1080 On Error Goto Error1 1090 If Number<21 Then Do 1100 Kgetkey\1,Words$((Number-1)*Wl,Number*Wl-1)\ 1110 Else 1120 Kgetrec\1,Number-1\ 1130 Enddo 1140 Kretrieve\1\Word$(-1) 1150 Kclose\1\ 1160 Endproc 1170 *Add'words 1180 Gosub Bottom'lines 1190 Input"Enter a new word. ",Word$; 1200 If Word$="" Then Return 1210 If Word$<"A" Then Goto Add'words 1219 On Error Goto Error1 1220 Kopen\1\Data'file$ 1221 Kadd\1,Word$(-1)\ 1222 Kclose\1\ 1230 Call .List'words (1,Word$) 1240 Return 1250 *Change'word 1260 Gosub Bottom'lines 1270 Word2$=Word$ 1280 @"Enter a new spelling for '";Word$;"'. "; 1290 Input"",Word2$; 1300 Call .Lowercase (Word2$) 1310 If Word2$="" Then Return 1320 If Word2$=Word$ Then Return 1330 If Word$<"A" Then Goto Change'word 1340 On Error Goto Error1 1350 Kopen\1\Data'file$ 1360 Kdel\1,Word$(-1)\ 1370 Kadd\1,Word2$(-1)\ 1390 Kclose\1\ 1400 Call .List'words (1,Word2$) 1410 Return 1420 *Delete'word 1430 Gosub Bottom'lines 1440 @"If you wish to delete '";Word$;"' type Y. "; 1450 Input"",Command2$; 1460 Call .Capitalize (Command2$) 1470 If Command2$<>"Y" Then Return 1475 On Error Goto Error1 1480 Kopen\1\Data'file$ 1490 Kdel\1,Word$(-1)\ 1500 Highest=Highest-1 1510 Kclose\1\ 1515 If First>1 Then Word$="" : First=First-1 1520 Call .List'words (First,Word$) 1530 Return 1540 *Screen'erase 1550 Out 1,126 : Out 1,28 : Return 1560 *Bottom'lines 1570 Out 1,126 : Out 1,17 : Out 1,0 : Out 1,22 1580 Out 1,126 : Out 1,24 : Return 1590 *Error1 1600 Close 1610 Gosub Bottom'lines 1620 @"Error No. ";Sys(3);" has occured." 1630 Input"Press RETURN to go on. ",Command2$ 1640 Goto Commands 1650 Procedure .Capitalize (String$) 1660 Local I,J,K 1670 K=Len(String$) 1680 For I=0 To K-1 1690 J=Asc(String$(I,I)) 1700 If J>96 And J<123 Then String$(I,I)=Chr$(J-32) 1710 Next I 1720 Endproc 1730 Procedure .Lowercase (String$) 1740 Local I,J,K 1750 K=Len(String$) 1760 For I=1 To K-1 1770 J=Asc(String$(I,I)) 1780 If J>64 And J<91 Then String$(I,I)=Chr$(J+32) 1790 Next I 1800 Endproc 1810 *Closer 1820 Close 1830 End