10 PRINT"This program must be entered from DEDIT.":STOP 1000 GOSUB 2060 'cs 1010 PRINT:PRINT TAB(29);"DUNFLAG March 11, 1984 1015 ' by Dan Dugan -- public domain 1020 PRINT 1030 DEFINT A-Z 1040 COMMON I,J,K,X,Y,T$,R$,S$,T1$,SKIPPARSE,FT,SEARCH, C,N,NC,P6,P7,P8,P9,PI,S,T,T1,T2,C(),B$(),N$(), SEARCHWORD$(),SEARCHFIELD(),SKIPWORD$(),LOOKFIELD(),DD$(),F$,FT$ 1060 ' SET UP 1065 PRINT"Here are the fields in "F$":" 1070 GOSUB 2290 'show fields 1075 PRINT 1080 INPUT"Number of field to unflag? ",F 1085 IF F=0 THEN 1740 'quit 1090 PRINT:INPUT"String to find and remove";FLAG$ 1100 L=LEN(FLAG$) 1150 ' RECORD WORK LOOP 1160 C2=0 ' first time 1170 LC=0 ' count 1180 ' 1190 FOR I=T1 TO T2 ' <==== FOR 1200 GOSUB 2210 ' get rec 1205 IF ASC(T$)=0 THEN PRINT"0";:GOTO 1720 1210 PRINT"+"; 1220 T1$=T$ ' save it 1230 IF SKIPPARSE=1 THEN 1250 1240 GOSUB 1780 ' parse record string 1250 IF SEARCH=0 THEN 1540 1260 ' SEARCH 1270 IF SEARCH<>2 THEN 1320 1275 ' FIND 1280 IF INSTR(T$,SEARCHWORD$(0))=0 THEN 1720 1300 GOSUB 1780 ' parse 1310 GOTO 1540 1320 ' FIELD SEARCH 1330 J=0 ' check for skips first 1340 IF SKIPWORD$(J)="" THEN 1420 ' try search then 1350 IF LOOKFIELD(J)<>0 THEN 1390 ' look in field 1360 IF INSTR(T1$,SKIPWORD$(J))<>0 THEN 1720 ' whole rec search - skip it 1370 J=J+1 1380 GOTO 1340 1390 IF INSTR(B$(LOOKFIELD(J)),SKIPWORD$(J))<>0 THEN 1720 ' field compare - skip 1400 J=J+1 1410 GOTO 1340 1420 IF SEARCHWORD$(0)="" THEN 1520 ' don't care so print it 1430 J=0: GOTO 1450 ' now search 1440 IF SEARCHWORD$(J)="" THEN 1720 ' hesitate no longer 1450 IF SEARCHFIELD(J)<>0 THEN 1490 ' field 1460 IF INSTR(T1$,SEARCHWORD$(J))<>0 THEN 1520 ' found it 1470 J=J+1 1480 GOTO 1440 1490 IF INSTR(B$(SEARCHFIELD(J)),SEARCHWORD$(J))<>0 THEN 1520 1500 J=J+1 1510 GOTO 1440 1520 ' GET READY TO DO IT 1530 IF SKIPPARSE=1 THEN GOSUB 1780 ' parse 1540 ' PAUSE CONTROLS (TERM DEP IF UPPERCASE ONLY) 1541 GOSUB 2030 ' exit returns A 1542 IF A=122 THEN 1560 ' z means go on 1543 PRINT I;B$(1);TAB(14);"Ready (SPACE/z/r/n/ESC) >"; 1544 A$=INPUT$(1):A=ASC(A$):IF A=27 THEN CLOSE 3:GOTO 1740 1545 PRINT A$:IF A=13 OR A=32 OR A=122 THEN 1560 1546 IF A=114 THEN I=IPREV:GOTO 1200 ' r 1547 IF A=110 THEN 1548 ELSE 1540 ' n or loop 1548 INPUT"Enter number of desired record: ";I:GOTO 1200 1550 GOSUB 2030 ' exit 1560 ' DO IT 1570 TEST=INSTR(B$(F),FLAG$) 1580 IF TEST THEN 1590 ELSE 1720 1590 B$(F)=LEFT$(B$(F),TEST-1)+MID$(B$(F),TEST+L) 1600 ' ASSEM CHANGED REC STR & PUT TO DISK 1610 T$="" 1620 FOR J=1 TO NC 1630 T$=T$+B$(J)+CHR$(126) 1640 NEXT 1650 GOSUB 2350:PRINT"*";:GOSUB 2420:PRINT"!" 1720 GOSUB 2030 ' check exit 1730 NEXT I ' END OF RECORD WORK LOOP 1740 ' FINISH 1760 PRINT:PRINT:PRINT TAB(32)"Re-loading DEDIT. 1770 CHAIN DD$(1)+"DEDIT",1000 1780 ' (SUB) PARSE STRING 1790 K=0 1800 M=INSTR(T$,CHR$(126)) ' delimiter 1810 IF M=0 THEN RETURN 1820 K=K+1 1830 B$(K)="" 1840 B$(K)=MID$(T$,1,M-1) 1850 T$=MID$(T$,M+1) 1860 GOTO 1800 2030 ' (SUB) EXIT TEST (TERM DEP) 2040 X$=INKEY$ 2042 IF X$<>"" THEN A=ASC(X$) 2045 IF A=27 THEN CLOSE 3:GOTO 1740 'use ESC to escape listing 2050 RETURN 2060 ' (SUB) CLEAR SCREEN (TERM DEP) 2070 PRINT CHR$(12); 2080 RETURN 2210 ' (SUB) GET RECORD "I" IN T$ 2220 T$="" ' necessary! 2230 ON FT GOTO 2260,2240 2240 GET#1,FT*I+2 ' latter half 2250 T$=LEFT$(R$,127) 2260 GET#1,FT*I+1 ' whole or first half 2270 T$=R$+T$ 2280 RETURN 2290 ' SHOW FIELDS (SUB) 2300 FOR K=1 TO NC 2310 PRINT TAB(29); 2320 PRINT USING"##";K;:PRINT". "LEFT$(N$(K),4)" "RIGHT$(N$(K),1) 2330 NEXT 2340 RETURN 2350 ' PUT T$ AS RECORD I (SUB) 2360 ON FT GOTO 2390,2370 2370 LSET R$=MID$(T$,129) 'latter half 2380 PUT #1,FT*I+2 2390 LSET R$=LEFT$(T$,128) 2400 PUT #1,FT*I+1 2410 RETURN 2420 ' PUT T$ AS DUPE REC I (SUB) 2430 ON FT GOTO 2460,2440 2440 LSET S$=MID$(T$,129) 2450 PUT #2,FT*I+2 2460 LSET S$=LEFT$(T$,128) 2470 PUT #2,FT*I+1 2480 RETURN FT GOTO 2460,2440 2440 LSET S$=MID$(T$,129) 2450 PUT #2,FT*I+2 2460 LSET S$=LEFT$(T$,128)