100 REM ******************************* 101 REM * DIDSLICE.BAC * 102 REM * VER 2.0 / 1983-01-04 * 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 REM 108 DIM F$(29%)=12%,R%(29%),F%(29%),M(29%),O%(29%),B%(29%) 109 DIM L%(10%),P%(30%),F0%(29%),A%(29%),V(29%) 110 DIM H$=280%,I$(3%)=10%,B$(5%)=40%,S$(3%)=4% 111 DEFFNF1(X%,Y%)=FNK0%(X%)/FNK0%(Y%)+.00001 112 DEFFNK0%(X%)=X%/D2% AND 255% 113 \%=PEEK(65420%) 114 ONERRORGOTO 119 115 OPEN 'Dr1: Dumpfil' ASFILE 1% 116 INPUT #1%,F$(N%),Z% 117 N%=N%+1% 118 GOTO 116 119 IF ERRCODE<>34% ; CHR$(12%)'Felet'ERRCODE' uppstod.' : END 120 N%=N%-1% 121 CLOSE 1% 122 KILL 'Dr1: Dumpfil' 123 Y1$=CUR(22%,0%)+SPACE$(79%)+CUR(22%,0%) 124 IF \%=3% 130 125 ; Y1$'Behandla f{lt '; 126 GET X$ 127 IF X$<>'1' AND X$<>'2' 126 128 ; X$ 129 D2%=255%*VAL(X$)-254% : D%=VAL(X$) 130 IF \%=7% 145 ELSE D0$='Dr1:' 131 ; CUR(23%,0%)'Maximal utfilsl{ngd : '; : L%=5% : GOSUB 225 : ; ' '; 132 X=VAL(X$) 133 IF X<9% OR X>50000 THEN 131 ELSE L9%=X 134 IF \%=3% 141 135 ; Y1$'Of|rh|rda ord med ? '; : GET X$ 136 ON INSTR(1%,' jJnN',X$)/2%+1% GOTO 135,137,138 137 B=3% : GOTO 139 138 B=1% 139 ; Y1$'Gr{ns vid % fel.'STRING$(10%,8%); : L%=3% : GOSUB 225 140 A=VAL(X$)/100% : IF A>1 THEN 139 141 ; Y1$'S{tt en skiva d{r det finns tillr{ckligtmed rum f|r utfilerna i DR1:'; 142 GET X$ 143 IF CALL(65424%,1%)<19% 141 144 IF \%=6% OR \%=3% 335 145 REM G|r upp diagnos 146 F%=0% 147 FOR X%=0% TO 3% 148 READ I$(X%) 149 NEXT X% 150 FOR X%=0% TO 5% 151 READ B$(X%) 152 NEXT X% 153 S$(0%)='-' 154 S$(1%)='' 155 S$(2%)='+' 156 S$(3%)=' 1/2' 157 GOSUB 258 158 OPEN 'Pr:' ASFILE 1% 159 GOSUB 237 160 ON F% GOTO 161,169,181 : REM Eol,Eof,Eos 161 REM Eol => Registrera rad 162 R%(N0%)=R%(N0%)+FNK0%(L2%)-FNK0%(L1%) 163 F%(N0%)=F%(N0%)+FNK0%(L2%) 164 IF FNK0%(L2%)=0% O%(N0%)=O%(N0%)+1% : GOTO 167 165 IF FNK0%(L1%)=FNK0%(L2%) B%(N0%)=B%(N0%)+1% 166 IF FNK0%(L1%)=0% F0%(N0%)=F0%(N0%)+1% 167 N1%=N1%+1% 168 GOTO 159 169 REM Eof => Skriv filrapport 170 ONERRORGOTO 174 171 M(N0%)=(F%(N0%)+0)/N1% 172 M(N0%)=INT(M(N0%)*10%+.5)/10 173 GOTO 175 174 M(N0%)=0% 175 GOSUB 233 176 P%(N0%)=V(N0%)*100%-3%*B%(N0%)-O%(N0%)+2%*F0%(N0%) 177 A%(N0%)=N1% 178 N1%=0% 179 GOSUB 262 180 GOTO 159 181 REM Eos => Skriv slutrapport 182 IF N%<2% 223 183 L%(0%)=30% : P%(30%)=32767% 184 ; #1%CHR$(12%); 185 ; #1%STRING$(4%,10%); 186 FOR X%=0% TO N% 187 IF X%>9% N1%=9% ELSE N1%=X% 188 FOR Y%=0% TO N1% 189 IF P%(X%)>P%(L%(Y%)) 195 190 FOR Z0%=9% TO Y% STEP 65535% 191 L%(Z0%+1%)=L%(Z0%) 192 NEXT Z0% 193 L%(Y%)=X% 194 GOTO 196 195 NEXT Y% 196 NEXT X% 197 ; #1%SPACE$(31%)'SAMMANDRAG, f{lt'D% 198 ; #1%SPACE$(31%)STRING$(18%,95%) 199 ; #1% : ; #1% : ; #1%'F|rh|r i f|ljande ordning:' 200 ; #1%STRING$(26%,61%) 201 IF N%<11% Y%=N% ELSE Y%=9% 202 FOR Z%=0% TO Y% 203 ; #1%F$(L%(Z%))TAB(16%); 204 X=P%(L%(Z%)) : GOSUB 319 205 ; #1%'p' 206 NEXT Z% 207 ; #1% : ; #1% : ; #1% 208 FOR X%=1% TO 29% 209 R%(0%)=R%(0%)+R%(X%) 210 F%(0%)=F%(0%)+F%(X%) 211 O%(0%)=O%(0%)+O%(X%) 212 B%(0%)=B%(0%)+B%(X%) 213 F0%(0%)=F0%(0%)+F0%(X%) 214 A%(0%)=A%(0%)+A%(X%) 215 P%(0%)=P%(0%)+P%(X%) 216 NEXT X% 217 IF A%(0%)=0% M(0%)=0% : GOTO 219 218 M(0%)=(F%(0%)+0)/A%(0%) 219 N0%=0% 220 GOSUB 233 221 Z2%=N%+1% 222 GOSUB 278 223 ; CUR(0%,0%) 224 CHAIN 'Dr1: Didactos' 225 REM Inmatning 226 X$='' 227 X%=LEN(X$) : GET Y$ : Y%=ASC(Y$) : IF Y%=13% IF X%<>0% RETURN ELSE 227 228 IF X%=L% AND Y%<>8% 227 229 IF Y%=8% IF X% X$=LEFT$(X$,X%-1%) : ; CHR$(8%,32%,8%); 230 IF Y%<48% OR Y%>57% 227 231 ; Y$; : X$=X$+Y$ 232 GOTO 227 233 IF F%(N0%)=0% V(N0%)=4% : RETURN 234 S=INT(40*R%(N0%)/F%(N0%)+.5)/4% 235 V(N0%)=-(S>4%)*S-4%*(S<=4%)+.25 236 RETURN 237 REM Inline 238 ON F%+1% GOTO 239,243,251,252 239 FOR N0%=0% TO N% 240 OPEN F$(N0%) ASFILE 2% 241 INPUTLINE #2%H$ 242 H$=LEFT$(H$,LEN(H$)-2%) 243 ONERRORGOTO 250 244 INPUTLINE #2%,L$ 245 INPUT #2%,L1%,L2% 246 L$=LEFT$(L$,LEN(L$)-2%) 247 GOSUB 254 248 F%=1% 249 RETURN 250 IF N0%<=N% F%=2% : RETURN 251 NEXT N0% 252 F%=3% 253 RETURN 254 REM Status p} sk{rmen 255 ; CUR(22%,6%)F$(N0%)TAB(22%); 256 ; CUR(23%,6%)E$E0$TAB(20%)SPACE$(6%-LEN(NUM$(N1%)))N1%' : 'N0%+1%TAB(32%)':'N%+1%; 257 RETURN 258 REM Mask 259 ; Y1$'Infil:'TAB(22%)'In# :Fil#:Tot#' 260 ; 'Utfil:'; 261 RETURN 262 REM Skriv filrapport 263 Z2%=1% 264 ; #1%CHR$(12%); 265 IF N0%=0% ; Y1$'Justera papperet : '; : GET X$ 266 GOSUB 258 : GOSUB 254 267 ; #1% : ; #1% : ; #1% : ; #1% 268 X$='Utfil: '+F$(N0%) 269 H$=SPACE$(40%)+X$+SPACE$(80%-LEN(X$))+H$+SPACE$(160%-LEN(H$)) 270 X$=SPACE$(18%)+'#==========================================#' 271 ; #1%X$ 272 FOR X%=0% TO 6% 273 ; #1%SPACE$(18%)'# 'MID$(H$,X%*40%+1%,40%)' #' 274 NEXT X% 275 ; #1%X$; 276 ; #1% : ; #1% : ; #1% : ; #1% : ; #1%SPACE$(27%)'Diagnos av en fil, f{lt'D% 277 ; #1%SPACE$(27%)STRING$(25%,95%) 278 ; #1% : ; #1% : ; #1% 279 ; #1%'Antal f|rs|k :'; 280 X=F%(N0%) : GOSUB 319 : ; #1% 281 ; #1% : ; #1%'Antal r{tt :'; 282 X=R%(N0%) : GOSUB 319 : ; #1% 283 ; #1% : ; #1%'Antal ord :'; 284 X=A%(N0%) : GOSUB 319 : ; #1% 285 ; #1% : ; #1% 286 ; #1%'F|rs|k / Ord :'; 287 X=M(N0%) : GOSUB 319 : ; #1% 288 ; #1% : ; #1%'R{tt :'; 289 IF F%(N0%) X=100%*(R%(N0%)+0)/F%(N0%) : X=INT(X*10%+.5)/10 ELSE X=0 290 GOSUB 319 : ; #1%'%' 291 ; #1% : ; #1% 292 ; #1%'Antal bommar :'; 293 X=B%(N0%) : GOSUB 319 294 ; #1%SPACE$(15%); 295 X=-3*B%(N0%) : GOSUB 319 : ; #1%'p' 296 ; #1% : ; #1%'Antal fulltr{ffar :'; 297 X=F0%(N0%) : GOSUB 319 298 ; #1%SPACE$(15%); 299 X=2*F0%(N0%) : GOSUB 319 : ; #1%'p' 300 ; #1% : ; #1%'Antal of|rh|rda :'; 301 X=O%(N0%) : GOSUB 319 302 ; #1%SPACE$(15%); 303 X=-O%(N0%) : GOSUB 319 : ; #1%'p' 304 ; #1% : ; #1% : ; #1% 305 X%=4%*(V(N0%)-INT(V(N0%))) 306 X$='Vitsord :'+NUM$(INT(V(N0%)))+S$(X%) 307 Y%=LEN(X$) 308 ; #1%X$SPACE$(41%-LEN(X$)); 309 X=V(N0%)*100 : GOSUB 319 : ; #1%'p' 310 ; #1%STRING$(Y%,95%) 311 ; #1% : ; #1% : ; #1%'Totalt '; 312 X=P%(N0%) : GOSUB 319 : IF Z2%>1% P%(N0%)=P%(N0%)/Z2% : ; #1%' /'Z2%; 313 ; #1%' po{ng' : ; #1% : ; #1% 314 ; #1%'Orden {r 'I$(-(M(N0%)=0%)-(M(N0%)<=1%)-(M(N0%)<3%))' igenomg}ngna' 315 ; #1% : ; #1% : ; #1% 316 X%=-(P%(N0%)>1000%)-(P%(N0%)>800%)-(P%(N0%)>670%)-(P%(N0%)>580%)-(P%(N0%)>450%) 317 ; #1%'Omd|me : 'B$(X%) 318 RETURN 319 REM ;#1X USING 320 X$=NUM$(X) 321 Z0%=ASC(X$) 322 X$=RIGHT$(X$,2%) 323 IF ASC(X$)=46% X$='0'+X$ 324 X%=INSTR(1%,X$,'.') 325 IF X%=0% X%=LEN(X$)+1% 326 ; #1%SPACE$(7%-X%)CHR$(Z0%)X$; 327 RETURN 328 DATA bra,m}ttligt,d}ligt,'inte alls 329 DATA 'Uruselt, |vning ger f{rdighet! 330 DATA 'D}ligt, |va mera. 331 DATA 'N}ja, b{ttre kan du ... 332 DATA 'Inte illa! En g}ng till och du kan dem. 333 DATA 'Bra, du kan dem! 334 DATA 'UTM[RKT, det h{r {r redan s{llsynt!!! 335 REM Foga & Plocka 336 N2%=0% 337 F%=0% 338 N1%=0% 339 GOSUB 258 340 GOSUB 237 341 GOSUB 254 342 ON F% GOTO 343,338,368 343 REM WHILE ord DO 344 N1%=N1%+1% 345 IF \%=6% 379 346 IF N2%/L9%*L9%<>N2% 356 347 CLOSE 1% 348 IF \%=6% E$='Plock' ELSE E$='Fog' 349 E0$='.did' 350 E$=E$+NUM$(N2%/L9%+1%) 351 PREPARE D0$+E$+E0$ ASFILE 1% 352 N3%=0% 353 ; #1%'Detta {r en fil som '; 354 IF \%=6% ; #1%'inneh}ller sv}ra ord.' : GOTO 356 355 ; #1%'har fogats ihop fr}n andra filer.' 356 IF N3%<>100% 361 357 ONERRORGOTO 359 358 KILL D0$+E$+'.dim' 359 NAME D0$+E$+E0$ AS E$+'.dim' 360 E0$='.dim' 361 ONERRORGOTO 374 362 ; #1%L$ 363 ; #1%L1% 364 ; #1%L2% 365 N2%=N2%+1% 366 N3%=N3%+1% 367 GOTO 340 368 CLOSE 1% 369 ; Y1$'S{tt Didactos tillbaka i Dr1:'; : GET X$ 370 ONERRORGOTO 369 371 OPEN 'Dr1:Didactos.bac' ASFILE 1% 372 CLOSE 1% 373 GOTO 223 374 REM Discerror! 375 IF ERRCODE<>41% 119 376 KILL D0$+E$+E0$ 377 ; CHR$(7%)Y1$'Skivan full - arbetet avbrutet!'; 378 GOTO 223 379 REM S}lla 380 ONERRORGOTO 383 381 X=(FNK0%(L1%)+0)/FNK0%(L2%) 382 GOTO 384 383 X=2% 384 IF X>=A AND X<=B THEN 346 ELSE 340