1 REM Ins{nd av Lars Gj|rling <6825> 1989-04-27 22.30.32 (DUMP)
10 INTEGER : EXTEND : ; CHR$(12);
20 !
100 ; "*======================================================================*"
110 ; "* *"
120 ; "* ManipMsg.BAS av Lars Gj|rling <6825>. Program d{r du v{ljer msgin- *"
130 ; "* l{gg ur en moderfil och kopierar till en dotterfil (eller printer). *"
135 ; "* Moderfilen skall huvudsakligen inneh}lla msg-inl{gg. *"
140 ; "* *"
150 ; "* P} slutet kan programmet om s} |nskas spara en backup av moderfilen *"
160 ; "* och {ndra dotterfilens namn till moderfilens. *"
170 ; "* *"
180 ; "* Om kopiering till printer |nskas, anges dotterfilen till 'PR:' *"
190 ; "* *"
193 ; "* Avsedd att anv{ndas av msg-utdragare, men kan med f|rdel anv{ndas av *"
194 ; "* vem som helst i st{llet f|r texteditor, sedan man loggat ut fr}n MSG.*"
195 ; "* Se artikeln 'En Msg-utdragares vederm|dor' i ABC-bladet 1.1989 ! *"
197 ; "* *"
200 ; "* Utprovad p} ABC806, men fungerar f|rhoppningsvis p} ABC80x *"
210 ; "* *"
220 ; "*======================================================================*"
230 ;
240 !
500 ! ManipMsg.BAS
520 DIM Pek.(5000) ! ... Pek.( ) lagrar filpekarens v{rden f|r olika inl{gg.
530 True=-1 : False=0
535 Echo=False ! ... Echo: sk{rmeko/ejsk{rmeko f|r msgtext.
540 INPUT "Ange namn p} moderfil (med enhet och extension): "Moder$
550 Moder$=FNStora$(Moder$)
560 OPEN Moder$ AS FILE 1
570 P=INSTR(1,Moder$,".") : IF P=0 THEN P=LEN(Moder$)+1
580 Backup$=LEFT$(Moder$,P-1)+".BKP"
590 P=INSTR(1,Backup$,":") : Backup$=RIGHT$(Backup$,P+1)
600 INPUT "Ange namn p} dotterfil (med enhet och extension): "Dotter$
610 Dotter$=FNStora$(Dotter$)
620 PREPARE Dotter$ AS FILE 2
630 ; CHR$(12);
640 !
700 ! ************************* HUVUDPROGRAM *******************************
710 !
720 WHILE -1
730 ON ERROR GOTO 920 : Positv{rde.=POSIT(1) : INPUT LINE #1 B$
740 IF INSTR(1,B$,"( Text")=1 OR INSTR(1,B$,"( Brev")=1 THEN Z=FNNyttinl{gg
750 IF Echo=True THEN ; CUR(Rad,0) B$; : Rad=Rad+1
760 IF Rad>21 THEN Z=FNL}ngtinl{gg
770 WEND
780 !
900 ! ************************* FELHANTERING *******************************
910 !
920 IF ERRCODE=53 THEN 730
930 IF ERRCODE<>34 ; "Fel nr" ERRCODE : ; : ; ELSE Nr=Nr-1
940 Z=FNSluta
950 GOTO 730
960 !
1000 ! ************************* FUNKTIONER *******************************
1010 !
1020 DEF FNNyttinl{gg LOCAL Q$=1
1030 IF LEN(B$)>20 THEN Pek.(Nr)=Positv{rde. : Echo=True : RETURN 0
1040 ! ... Ett nytt inl{gg har just b|rjat, om LEN(B$)>20!
1050 ! ------------------------------------------------------------------
1060 ! ... Ett inl{gg har just slutat, om LEN(B$)<20:
1070 IF Echo=False THEN RETURN 0 ! ...(N{sta inl{gg beg{rt fr}n l}ngt inl{gg).
1080 ; CUR(Rad,0) B$; : Rad=0 : Echo=False
1090 ; CUR(22,0) STRING$(80,45);
1100 ; CUR(23,0) "PF1=Avbryt K=Kopiera text -->=N{sta text <--=F|reg.text Kop: " NUM$(Ant) " av " NUM$(Nr);
1110 WHILE -1
1120 GET Q$
1130 IF Q$=CHR$(192) THEN RETURN FNSluta ! ... Avbrott beg{rt med PF1.
1140 IF Q$="K" OR Q$="k" THEN RETURN FNKopiera
1150 IF Q$=CHR$(9) THEN RETURN FNN{stainl{gg
1160 IF Q$=CHR$(8) THEN RETURN FNF|reginl{gg
1170 WEND
1180 FNEND
1190 !
2000 ! *************************************************************************
2010 !
2020 DEF FNN{stainl{gg
2030 ; CHR$(12); : Nr=Nr+1 : Echo=False : Rad=0
2040 RETURN 0
2050 FNEND
2060 !
3000 ! *************************************************************************
3010 !
3020 DEF FNF|reginl{gg
3030 IF Nr>0 THEN Nr=Nr-1
3040 POSIT #1,Pek.(Nr) : ; CHR$(12); : Rad=0
3050 RETURN 0
3060 FNEND
4000 ! *************************************************************************
4010 !
4020 DEF FNL}ngtinl{gg LOCAL Q$=1
4030 ; CUR(22,0) STRING$(80,45);
4040 ; CUR(23,0) "