100 'DATAFIX 120 ' 140 'BY Art Schneider Feb 8,1982 150 ' Boston Computer Society, IBM Personal Computer Users Group 160 ' 180 'DESCRIPTION: Utility program for Sequential data files! 200 ' 220 ' 1. For line line numbered data files this program 240 ' strips off line numbers {and or leading <',> 260 ' characters} from the data line and saves the remaining 280 ' full data line in a new file. The line numbered file 300 ' must have been saved in ASCII (A'option) 320 ' 340 ' 2. For convential data files (with out line numbers) 360 ' this program will add a leading line number and <',> 380 ' {remark format}. The new line numbered file may be 400 ' loaded and edited in BASIC 420 ' 440 'INSTRUCTIONS: Run program and respond to questions. 460 ' Questions relate to choice 1 or 2 as noted above; 480 ' the names of input and output files; and if you wish 500 ' to see on the screen the file modification as it occurs. 510 ' 515 'REFERENCE: "DIRECT TYPED SEQUENTIAL DATA FILES" 517 ' 520 ' Type and edit data files with the full Screen Basic Editor! 522 ' 525 ' A 15 page report on how to use this program with sequential 527 ' data files is available. SEND $1.00 to: 530 ' Art Schneider 8 Melanie Ln Mattapoisett MA 02739 540 ' 560 'LANQUAGE: BASIC IBM Personal Computer (microsoft) Disk 570 ' 580 '................................... INITIALIZE ................ 600 ' 620 SCREEN 0,0 : CLS : CLOSE 'set up & clear 640 DEFINT A-Z : WIDTH 80 : K =0 660 KEY OFF : TB = 10 : C$ ="" 680 FALSE = 0 : TRUE = NOT FALSE 700 PRINT TAB(TB+10); 720 COLOR 0,7 :PRINT "SEQUENTIAL DATA FILE UTILITY DATAFIX" 740 PRINT : COLOR 15,0 'bright screen 760 PRINT TAB(TB);"Select option to ADD or REMOVE line numbers from data file" 780 PRINT : PRINT TAB(TB); "A = Add R = Remove ";:INPUT "[A or R]";S$ 800 PRINT 820 PRINT TAB(TB);"Do you want the as modified file also listed on the screen;" 840 PRINT TAB(TB);:INPUT "{ LIST ... Y or N }";P$ 860 IF P$="Y" OR P$ ="y" THEN P = TRUE 'yes do a screen list 880 IF S$ ="A" OR S$="a" THEN 1600 'add line utility 900 IF S$ ="R" OR S$="r" THEN 960 'remove line 920 PRINT S$; " ain't A or R ":GOTO 780 940 ' 960 '................................ REMOVE LINE NUMBERS UTILITY ... 1000 COLOR 7,0 : PRINT 1020 PRINT "Remove line numbers from......" 1040 INPUT "Line numbered data file name...d:Name.Ext ";L$ 1060 ON ERROR GOTO 2260 'process open error 1080 OPEN "I",#1,L$ 'input file with line # 1100 PRINT "input File.... ";L$;" found" 1120 PRINT 1140 PRINT "State file format 1,2,3" 1160 PRINT "1 = Direct 2 = Comma 3 = Remark (4=HELP)"; 1180 INPUT " {1,2,3 or 4} ";F 1200 IF F = 4 THEN GOTO 2600 'help - explain format 1220 IF F=1 THEN C$ = " " ELSE C$ = CHR$(44) ' 1 =blank 2&3 = comma 1240 PRINT 1260 PRINT "If you name a presaved output file we will append to it!!" 1280 INPUT "Name of file without line #.......d:Name.Ext ";D$ 1300 ON ERROR GOTO 2380 'open file error 1320 OPEN "A",#2,D$ 'with optional Append 1340 PRINT "output file ";D$ ; " ready" 1360 LOCATE 25,30 'reserved 25th line 1380 COLOR 18,0: PRINT " processing file " ' Blink it 1400 COLOR 7,0 'normal screen 1420 WHILE NOT EOF(1) 'close & end 1440 LINE INPUT #1,A$ 'read full data line 1460 B = INSTR(1,A$,C$) 'locate 1st delimeter 1480 K = K+1 'count the lines 1500 B$ = RIGHT$(A$,LEN(A$)-B) 'the desired full data string 1520 PRINT #2,B$ 'save data string in D$ file 1540 IF P OR K <2 THEN PRINT B$ 'list all or atleast one line 1560 WEND 'continue for the length of file 1580 GOTO 2740 1600 '.................. ADD LINE NUMERS AND <',> UTILITY ........... 1640 COLOR 7,0 : PRINT 1660 PRINT "Add line numbers and <',> to data in file...." 1680 INPUT "Data file name....d:Name.Ext ";L$ 1700 ON ERROR GOTO 2320 1720 OPEN "I" ,#1,L$ 'input a sequential data file 1740 PRINT : PRINT "File ...." L$ " Found" 1760 PRINT 1780 PRINT "If you name a presaved file next, we will destroy old values!!" 1800 INPUT "Line numbered data file ... d:Name.Ext";D$ 1820 ON ERROR GOTO 2440 'open error trap 1840 OPEN "O",#2,D$ 'file with line numbers 1860 PRINT : PRINT "Output file " D$ " Ready" 1880 PRINT : ON ERROR GOTO 2500 'trap large data line 1900 LOCATE 25,30 1920 COLOR 18,0 : PRINT " processing file" 1940 COLOR 7,0 1960 LINENUM= 990 : INC=10 '1st line number & increment 1980 R$ =" "+CHR$(39)+"," 'remark format < ',> 2000 WHILE NOT EOF(1) 'close and end 2020 LINE INPUT #1,A$ 'read full data line 2040 LINENUM = LINENUM + INC 'the line number 2060 'drop leading numeric line number blank by string conversion 2080 LINES$ =RIGHT$(STR$(LINENUM),4) + R$ 'line number string 2100 B$ = LINES$ + A$ 'put them together 2120 K = K + 1 'counter 2140 PRINT #2,B$ 'load the file 2160 IF P OR K <2 THEN PRINT B$ 'list all or atleast one line 2180 WEND 'continue 2200 GOTO 2740 2220 '...................... ERROR TRAPS ....................... 2240 ' 2260 IF ERR= 53 OR ERR=64 THEN PRINT "I Can't find file ";L$ : RESUME 1040 2280 IF ERR= 68 OR ERR=71 THEN PRINT "check disk & retype name":RESUME 1040 2300 ON ERROR GOTO 0 'halt on any other error 2320 IF ERR= 53 OR ERR=64 THEN PRINT "I Can't find file ";L$ : RESUME 1640 2340 IF ERR= 68 OR ERR=71 THEN PRINT "check disk & retype name":RESUME 1640 2360 ON ERROR GOTO 0 'halt on any other error 2380 IF ERR= 53 OR ERR= 64 THEN PRINT "I Can't open file ";D$ : RESUME 1240 2400 IF ERR= 68 OR ERR=71 THEN PRINT "check disk & retype name":RESUME 1240 2420 ON ERROR GOTO 0 'halt on any other error 2440 IF ERR= 53 OR ERR= 64 THEN PRINT "I Can't open file ";D$ : RESUME 1760 2460 IF ERR= 68 OR ERR=71 THEN PRINT "check disk & retype name":RESUME 1760 2480 ON ERROR GOTO 0 'halt on any other error 2500 IF ERR = 15 THEN RESUME 2520 ELSE ON ERROR GOTO 0 2520 PRINT 2540 PRINT TAB(TB) "You have a very big line and I can't add the line number" 2560 PRINT :PRINT A$ 'big line 2580 PRINT : PRINT "So I have to halt":GOTO 2740 2600 PRINT :PRINT " By format we mean the first characters after the line number" : PRINT "Your line numbered file should be in one of the following forms:" 2620 PRINT 2640 PRINT " 1. DIRECT a string data value follows the line number." 2660 PRINT " 2. COMMA a <,> follows the line number." 2680 PRINT " 3. REMARK the two <',> characters follow the line number." 2700 GOTO 1120 'repeat the question 2710 ' 2720 '......................... CLOSE AND END ..................... 2740 CLOSE 'all data files 2760 PRINT : PRINT : COLOR 15,0 2780 PRINT TAB(TB) K " Data Lines Processed into " CHR$(34) D$; 2800 IF INSTR(1,D$,".") THEN PRINT CHR$(34) ELSE PRINT ". " CHR$(34) 2820 RD1 = VAL(MID$(TIME$,4,2))*540 'use clock for random seed 2840 RD2 = VAL(MID$(TIME$,7,2))*100 2860 RANDOMIZE RD1-RD2 2880 FOR J = 1 TO 5 2900 SOUND RND*1000+37,4 'random sound at end 2920 NEXT J : SOUND 100,0 : COLOR 7,0 2940 KEY ON : ON ERROR GOTO 0 'must also end open error traps 2960 END 'by Art Schneider (617) 993-2621