home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ftp.barnyard.co.uk
/
2015.02.ftp.barnyard.co.uk.tar
/
ftp.barnyard.co.uk
/
cpm
/
walnut-creek-CDROM
/
CPM
/
DATABASE
/
DIMS103.ARK
/
DUNFLAG.ASC
< prev
next >
Wrap
Text File
|
1986-12-07
|
4KB
|
186 lines
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)