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