1 REM Ins{nd av Allan Lindblom <5879> 1985-11-24 01.42.16 10 REM +------------------------------------------------+ 20 REM ! LOGGBOK.BAC Ver. 1.1 ! 30 REM ! Av Allan Lindblom 851122 ! 40 REM ! <5879> ! 50 REM +------------------------------------------------+ 60 REM Enkel loggbok f|r modemk|rningar. Programl{ngd ca 7kb. 70 REM Postl{ngd och max antal poster best{ms i rad 1610. 80 REM Antal poster l{ggs i post noll. 100 REM Variabler : 110 REM F% - filnummer, B% - aktuellt blocknummer, P% - aktuellt postnummer, 120 REM L% - postl{ngd, P1% - antal poster per block, 130 REM P2% - antal inl{sta poster, F1% - filstorlek (max antal poster), 140 REM D9% - skrivflagga, [% - slask, [$ - slask, 150 REM F$ - filnamn, P$ - aktuell post, B$ - blockbuffer, 160 REM D$ - delimiter, D% - delimitm{rke, D1% - delimitm{rke, 170 REM A% - antal menyrubriker, T% - tabulering, I% - loop, 180 REM C1$ - datum, C2$ - tid, C3$ -kostnad, 190 REM C -kotnad/minut, C4$ - total tid, C5$ - total kostnad 200 REM F9% - flagga, E9% - felkod, T - f|rdr|jning 210 GOSUB 1620 : REM Initiera 220 D$='*' 230 DEFFNJ%=INSTR(1%,'Jj',[$) 240 DEFFNS%=L%-LEN(P$) 250 REM --------------------- MENY ---------------------- 260 T%=35% : REM Tabulering 270 A%=6% : REM Antal rubriker 280 DATA ' I - Inskrivning av post' 290 DATA ' L - L{sning av post' 300 DATA ' [ - [ndring av post' 310 DATA ' S - Summering' 320 DATA ' \ - \ppna ny fil' 330 DATA ' E - Exit' 340 ; CHR$(12%) : ; : ; TAB(T%)'LOGGBOK' : ; 350 RESTORE 280 360 FOR I%=1% TO A% : READ A$ : ; A$ : NEXT I% 370 GET [$ 380 ON INSTR(1%,'IL\[ES',[$)+1% GOSUB 340,410,680,920,980,1560,1300 390 GOTO 340 400 REM ---------------- INSKRIVNING AV POST ------------------- 410 ; CHR$(12%) : ; TAB(T%)'SKRIVNING' 420 ONERRORGOTO 640 430 GOSUB 1840 : REM \ppna 440 IF E9% THEN 640 450 P%=0% : GOSUB 2100 : REM L{s antal poster 460 F9%=INSTR(1%,P$,D$) : IF F9%>0% THEN P$=LEFT$(P$,F9%-1%) 470 P%=VAL(P$)+1% : ; : ; 'Postnummer: 'P% 480 ; : ; 'Datum: '; : INPUT C1$ 490 P$=C1$+D$ 500 ; : ; 'Minuter: '; : INPUT C2$ 510 P$=P$+C2$+D$ 520 ; : ; 'Kostnad / minut: (.02)'; : INPUT [$ 530 IF [$='' THEN C=.02 ELSE C=VAL([$) 540 C3$=NUM$(VAL(C2$)*C) : P$=P$+C3$+D$ 550 ; : ; 'Kostnad: 'C3$ 560 IF LEN(P$)0% THEN D%=INSTR(8%,P$,D$) : D1%=INSTR(D%+1%,P$,D$) ELSE 800 780 C2$=MID$(P$,8%,D%-8%) 790 C3$=MID$(P$,D%+1%,D1%-D%-1%) 800 ; : ; 'Datum: 'C1$ : ; : ; 'Tid: 'C2$ 810 ; : ; 'Kostnad: 'C3$ 820 ONERRORGOTO 880 830 ; : ; 'Vill du l{sa en annan post? '; : GET [$ : IF FNJ% THEN 840 ELSE 860 840 ; : ; 'Skriv postnummer: '; : INPUT P% 850 GOTO 750 860 GOSUB 1920 : REM St{ng 870 IF E9% THEN 880 ELSE 900 880 ; 'FEL: 'E9% 890 GOSUB 2360 900 RETURN 910 REM ---------------- \PPNA EN NY FIL ------------------ 920 ; CHR$(12%) 930 ; TAB(T%)'\PPNA NY FIL' 940 GOSUB 1730 950 IF E9% THEN ; 'FEL: 'E9% 960 RETURN 970 REM --------------- [NDRA ------------------ 980 ; CHR$(12%) : ; TAB(T%)'[NDRA POST' 990 ONERRORGOTO 1260 1000 GOSUB 1840 : REM \ppna 1010 IF E9% THEN 640 1020 P%=0% : GOSUB 2100 : REM L{s antal poster 1030 F9%=INSTR(1%,P$,CHR$(0%)) : IF F9%>0% THEN P$=LEFT$(P$,F9%-2%) 1040 P%=VAL(P$) : ; : ; 'Postnummer: 'P% 1050 GOSUB 2100 : REM L{s post 1060 C1$=LEFT$(P$,6%) 1070 IF P%<>0% THEN D%=INSTR(8%,P$,D$) : D1%=INSTR(D%+1%,P$,D$) ELSE 1100 1080 C2$=MID$(P$,8%,D%-8%) 1090 C3$=MID$(P$,D%+1%,D1%-D%-1%) 1100 ; : ; '1 - Datum: 'C1$ : ; : ; '2 - Tid: 'C2$ 1110 ; : ; '3 - Kostnad: 'C3$ 1120 ONERRORGOTO 1260 1130 ; : ; 'Vill du {ndra en annan post? '; : GET [$ : IF FNJ% THEN 1140 ELSE 1160 1140 ; : ; 'Skriv postnummer: '; : INPUT P% 1150 GOTO 1050 1160 ; : ; 'Vilken rad vill du {ndra?'; : GET [$ 1170 IF [$='1' THEN C1$='' ELSE IF [$='2' THEN C2$='' ELSE IF [$='3' THEN C3$='' ELSE 1280 1180 IF C1$='' THEN ; : ; 'Datum: '; : INPUT C1$ 1190 IF C2$='' THEN ; : ; 'Tid: '; : INPUT C2$ 1200 IF C3$='' THEN ; : ; 'Kostnad: '; : INPUT C3$ 1210 P$=C1$+D$+C2$+D$+C3$+D$ : IF LEN(P$)D9% THEN D9%=L% 1700 DIM P$=D9% 1710 RETURN 1720 REM ------------- PREPARERA ------------- 1730 E9%=0% 1740 PREPARE F$ ASFILE F% 1750 B%=0% : B$=STRING$(253%,48%) 1760 GOSUB 2190 1770 IF E9% THEN 1800 1780 B%=B%+1% 1790 IF B%<=F1%/P1% THEN 1760 1800 CLOSE F% : ONERRORGOTO 0 : GOTO 1820 1810 E9%=ERRCODE 1820 RETURN 1830 REM --------------- \PPNA ------------------ 1840 E9%=0% : ONERRORGOTO 1890 1850 OPEN F$ ASFILE F% 1860 ONERRORGOTO 0 1870 D9%=0% : B%=9999% 1880 GOTO 1900 1890 E9%=ERRCODE 1900 RETURN 1910 REM --------------- ST[NG -------------- 1920 IF D9% THEN GOSUB 2190 1930 CLOSE F% 1940 RETURN 1950 REM --------------- SKRIV POST ---------------- 1960 E9%=0% 1970 IF LEN(P$)=L% THEN 1990 1980 E9%=100% : GOTO 2080 1990 IF P%/P1%=B% THEN 2050 2000 IF D9% THEN GOSUB 2190 : REM Skrivblock 2010 IF E9% THEN 2080 2020 B%=P%/P1% 2030 GOSUB 2270 : REM L{sblock 2040 IF E9% THEN 2080 2050 [%=(P%-B%*P1%)*L% 2060 B$=LEFT$(B$,[%)+P$+RIGHT$(B$,[%+L%+1%) 2070 D9%=-1% 2080 RETURN 2090 REM -------------- L[S POST ---------------- 2100 IF P%/P1%=B% THEN 2160 2110 IF D9% THEN GOSUB 2190 2120 IF E9% THEN 2180 2130 B%=P%/P1% 2140 GOSUB 2270 2150 D9%=0% 2160 [%=(P%-B%*P1%)*L% 2170 P$=MID$(B$,[%+1%,L%) 2180 RETURN 2190 REM ---------------- SKRIV BLOCK ---------------- 2200 E9%=0% : ONERRORGOTO 2240 2210 [%=CALL(28666%,F%) : Q0$=B$ 2220 [%=CALL(28670%,B%) 2230 GOTO 2250 2240 E9%=ERRCODE 2250 ONERRORGOTO 0 2260 RETURN 2270 REM ----------------- L[S BLOCK ----------------- 2280 E9%=0% : ONERRORGOTO 2320 2290 [%=CALL(28666%,F%)+CALL(28668%,B%) 2300 B$=Q0$ 2310 GOTO 2330 2320 E9%=ERRCODE : B$=STRING$(253%,0%) 2330 ONERRORGOTO 0 2340 RETURN 2350 REM ----------------- DR\J -------------- 2360 FOR T=0 TO 2000 : NEXT T : RETURN