home *** CD-ROM | disk | FTP | other *** search
- 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)
-