100 REM ******************************* 101 REM * DIDMERGE.BAC * 102 REM * VER 1.3 / 1983-01-01 * 103 REM * Gjort av Nils H{ggblom * 104 REM * Mod. av Nils H{ggblom * 105 REM * Ins{nt av Nils H{ggblom * 106 REM ******************************* 107 N9%=103% 108 DIM F$(29%)=12%,S0$(N9%+1%)=50%,A%(N9%+1%),B%(N9%+1%),X$(1%)=17%,X$=120%,X0$=25%,Y1$=90% 109 DIM E0$=4%,E1$=14%,D0$=4%,W0$=20%,W$=20%,Z$=20% 110 \%=PEEK(65420%)-1% 111 DEFFNF1(X%,Y%)=FNK0%(X%)/(FNK0%(Y%)+0)+.00001 112 DEFFNK0%(X%)=X%/D2% AND 255% 113 DEFFNL0%(X$,Y$)=MID$(X$,D1%,25%)34% ; CHR$(12%)'Felet'ERRCODE' uppstod.' : END 123 CLOSE 1% 124 N%=N%-1% 125 KILL 'Dr 1: Dumpfil' 126 X$(0%)='i bokstavsordning' 127 X$(1%)='efter felfrekvens' 128 Y1$=CUR(22%,0%)+SPACE$(79%)+CUR(22%,0%) : ; Y1$'Sortera efter f{lt '; 129 GET X$ 130 IF X$<>'1' AND X$<>'2' 129 131 ; X$ : D%=VAL(X$)-1% : D1%=D%*25%+1% : D2%=D%*255%+1% 132 ; CUR(23%,0%)'Maximal utfilsl{ngd : '; : L%=5% : GOSUB 252 : ; ' '; 133 X=VAL(X$) : IF X<0% OR X>50000 THEN 132 ELSE L9%=X 134 IF L9%<9% 132 135 ; CUR(22%,0%)SPACE$(79%);CUR(22%,0%); 136 ; 'S{tt en skiva d{r det finns tillr{ckligtmed rum f|r utfilerna i DR1:'; 137 GET X$ : ; ''; 138 GOSUB 213 139 U1%=0% : FOR I%=0% TO N% 140 X0%=0% 141 OPEN F$(I%) ASFILE 1% 142 INPUT #1%,X$ 143 ONERRORGOTO 158 144 GOSUB 202 145 INPUTLINE #1%X$ : INPUT #1%,Z1%,Z2% 146 X0%=X0%+1% 147 IF NOT F2% T%=T%+1% 148 X$=LEFT$(X$,LEN(X$)-2%) 149 ON \%+1% GOSUB 181,191 : IF L1% 143 150 FOR X%=0% TO U1%-1% 151 ON \%+1% GOSUB 170,175 152 IF L4% 155 153 NEXT X% 154 IF U1%=N9% 143 155 GOSUB 218 156 IF U1%<>N9% U1%=U1%+1% : U%=U%+1% 157 GOTO 143 158 REM Flera filer? 159 CLOSE 1% : NEXT I% : F2%=65535% 160 GOSUB 227 161 IF T%<>U% AND U1%=N9% 139 162 IF U0%=0% CLOSE 2% : KILL D0$+E1$+E0$ 163 ; CUR(0%,0%) : CLOSE 1% : CLOSE 2% 164 ; Y1$'S{tt Didactos tillbaka i Dr1: om det inte redan {r d{r.'; : GET X$ 165 ONERRORGOTO 164 166 OPEN 'Dr1: Didactos.bac' ASFILE 1% 167 CLOSE 1% 168 ; CUR(0%,0%); : CHAIN 'Dr1:Didactos' 169 STOP 170 REM Bokstavsordning 171 F%=0% : L4%=0% 172 IF FNL1%(X$,S0$(X%)) IF NOT F% F%=65535% : GOTO 177 ELSE RETURN 173 L4%=FNL0%(X$,S0$(X%)) 174 RETURN 175 REM Felfrekvensordning 176 F%=0% : L4%=0% 177 Z3%=A%(X%) : Z4%=B%(X%) : GOSUB 208 178 IF W0$=Z$ IF NOT F% F%=65535% : GOTO 172 ELSE RETURN 179 L4%=W0$=W$ 201 187 IF U1%=N9% IF FNL0%(S0$(U1%-1%),X$) 201 ELSE 188 ELSE RETURN 188 IF NOT FNL1%(X$,S0$(U1%-1%)) RETURN 189 IF NOT F% F%=65535% : GOTO 196 190 GOTO 201 191 REM Felfrekvens-skip 192 F%=0% : L1%=0% 193 GOSUB 206 : Z$=W0$ 194 IF Z$>W$ 201 195 IF Z$=W$ IF FNL0%(X$,B0$) OR FNL1%(B0$,X$) 201 196 IF U1%=N9% Z3%=A%(U1%-1%) : Z4%=B%(U1%-1%) : GOSUB 208 : IF W0$>Z$ 201 ELSE 197 ELSE RETURN 197 IF W0$<>Z$ RETURN 198 IF NOT F% F%=65535% : GOTO 187 199 GOTO 201 200 RETURN 201 L1%=65535% : RETURN 202 REM Meddela status 203 ; CUR(22%,6%)E1$E0$TAB(21%)CUR(23%,6%)F$(I%)TAB(21%); 204 ; CUR(23%,22%)X0%TAB(27%)':'U0%TAB(33%)':'T%TAB(39%); 205 RETURN 206 REM Kvot 207 Z3%=Z1% : Z4%=Z2% 208 ONERRORGOTO 212 209 Y=FNF1(Z3%,Z4%) 210 W0$=NUM$(FNK0%(Z4%)-FNK0%(Z3%)) : W0$=SPACE$(4%-LEN(W0$))+W0$ 211 W0$=NUM$(Y)+W0$ : RETURN 212 Y=2% : GOTO 210 213 REM Mask 214 ; CUR(22%,0%)SPACE$(79%); 215 ; CUR(22%,0%)'Utfil:' : ; 'Infil:'; 216 ; CUR(22%,22%)'Infil:Utfil:Totalt'; 217 RETURN 218 REM Skjut in 219 FOR Y%=U1%-1% TO X% STEP 65535% 220 S0$(Y%+1%)=S0$(Y%) 221 A%(Y%+1%)=A%(Y%) 222 B%(Y%+1%)=B%(Y%) 223 NEXT Y% 224 S0$(X%)=X$ 225 A%(X%)=Z1% : B%(X%)=Z2% 226 RETURN 227 REM Output 228 ONERRORGOTO 246 229 FOR Y%=0% TO U1%-1% 230 Z%=U%-U1%+Y% : IF Z%/L9%=(Z%+0)/L9% GOSUB 260 231 IF Z%-Z%/L9%*L9%<>100% 237 232 E0$='.dim' 233 ONERRORGOTO 235 234 KILL D0$+E1$+E0$ 235 ONERRORGOTO 246 236 NAME D0$+E1$+'.did' AS E1$+E0$ 237 ; #2%S0$(Y%) 238 ; #2%A%(Y%) 239 ; #2%B%(Y%) 240 U0%=U0%+1% 241 GOSUB 202 242 NEXT Y% 243 B0$=S0$(Y%-1%) 244 Z3%=A%(Y%-1%) : Z4%=B%(Y%-1%) : GOSUB 208 : W$=W0$ 245 RETURN 246 IF ERRCODE<>41% 122 247 CLOSE 2% 248 KILL D0$+E1$+E0$ 249 E1$=CHR$(7%)+'Skivan full' 250 GOSUB 202 251 GOTO 163 252 REM Inmatning 253 X$='' 254 X%=LEN(X$) : GET Y$ : Y%=ASC(Y$) : IF Y%=13% IF X%<>0% RETURN ELSE 254 255 IF X%=L% AND Y%<>8% 254 256 IF Y%=8% IF X% X$=LEFT$(X$,X%-1%) : ; CHR$(8%)' 'CHR$(8%); 257 IF Y%<48% OR Y%>57% 254 258 ; Y$; : X$=X$+Y$ 259 GOTO 254 260 REM Sk|t om utfilen 261 CLOSE 2% : U0%=0% 262 E1$='Ut'+NUM$((U%-U1%+Y%)/L9%+1%) : E0$='.did' 263 PREPARE D0$+E1$+E0$ ASFILE 2% 264 X$='Detta {r en fil som sorterats '+X$(\%)+' utg}ende' 265 X$=X$+SPACE$(80%-LEN(X$))+'fr}n flera sm} filer.' 266 ; #2%X$ 267 RETURN