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) " = radvis matn. = sidvis matn. K = Kopiera text --> = n{sta text"; 4050 WHILE -1 4060 GET Q$ 4070 IF Q$=CHR$(192) RETURN FNSluta ! Avbrott beg{rd med PF1! 4080 IF Q$="K" OR Q$="k" THEN RETURN FNKopiera 4090 IF Q$=CHR$(9) THEN RETURN FNN{stainl{gg 4100 IF Q$=CHR$(8) THEN RETURN FNF|reginl{gg 4110 IF Q$=" " THEN Rad=0 : ; CHR$(12); : RETURN 0 ! ... Sidvis frammatning 4120 WHILE Q$=CHR$(13) ! ... Radvis frammatning 4130 ; CUR(22,0) SPACE$(80) CUR(23,0) SPACE$(80) : Rad=21 4140 RETURN 0 4150 WEND 4160 WEND 4170 FNEND 4180 ! 5000 ! ************************************************************************* 5010 ! 5020 DEF FNKopiera LOCAL Q$=1 5030 ON ERROR GOTO 5100 5040 Ant=Ant+1 5050 POSIT #1,Pek.(Nr) 5060 WHILE -1 5070 INPUT LINE #1 C$ : ; #2,C$; 5080 IF (INSTR(1,C$,"( Text")>0 OR INSTR(1,C$,"( Brev")>0) AND LEN(C$)<20 THEN ; #2 : RETURN FNN{stainl{gg 5090 WEND 5100 ; ; : ; "Fel nr" ERRCODE : GET Q$ : RETURN FNN{stainl{gg 5110 FNEND 5120 ! 6000 ! ************************************************************************* 6010 ! 6020 DEF FNSluta LOCAL Q$=1 6030 ON ERROR GOTO 6040 ; CHR$(12); 6050 ; Ant "st inl{gg av" Nr "kopierade fr}n moderfilen till dotterfilen." 6060 ; : ; "Om du vill g} tillbaka till programmet, tryck <-- !" : ; 6070 ; : ; "Skall jag {ndra namnet " Moder$ " till " Backup$; 6080 P=INSTR(1,Moder$,":") 6090 IF LEFT$(Dotter$,3)<>"PR:" THEN ; : ; "och " Dotter$ " till " RIGHT$(Moder$,P+1) "? (N) "; ELSE ; "? (N) "; 6100 WHILE Q$<>"J" AND Q$<>"j" 6110 GET Q$ 6120 IF Q$=CHR$(8) THEN Nr=Nr+1 : RETURN FNF|reginl{gg 6130 IF Q$=CHR$(13) OR Q$="N" OR Q$="n" ; "N" : CLOSE : GOTO 6210 6140 WEND 6150 ; "J" 6160 CLOSE 6170 ON ERROR GOTO 6190 6180 KILL Backup$ 6190 ON ERROR GOTO : NAME Moder$ AS Backup$ 6200 IF LEFT$(Dotter$,3)<>"PR:" THEN NAME Dotter$ AS RIGHT$(Moder$,P+1) 6210 END 6220 FNEND 6230 ! 7000 ! ************************************************************************* 7010 ! 7020 DEF FNStora$(A$) LOCAL B$=80,A,I 7030 B$=A$ 7040 WHILE I95 THEN MID$(B$,I,1)=CHR$(A-32) 7070 WEND 7080 RETURN B$ 7090 FNEND 7100 ! 7110 ! *************************************************************************