10 REM LIST KATALOG.BAS 20 REM +------------------------------+ 30 REM ! ============== ! 40 REM ! 1987-01-18 J C Liebe-Harkort ! 50 REM ! <4201> ! 60 REM ! Program f|r uppl{ggning av ! 70 REM ! inneh}llsfiler f|r bibliotek ! 80 REM ! ! 90 REM ! Filens namn: F\RTECKN.LIB ! 100 REM +------------------------------+ 101 ! [ndrat rad 40080 "PR:" till Printer$ som f}r v{rde p} rad 135 102 ! [ndrat raderna 1460-1470. Rad 1465 tillkommit. 103 ! 104 ! [ndrat rad 135, s} att den passar Epson 110 EXTEND : INTEGER 120 ; CHR$(12%); 130 DIM Post$=78%,Rad$(9%)=80%,Lengd%(9%) 135 Printer$="PR:VSA36A72.55B" ! Passar bla ADMATE DP100-->".6" 140 DATA 78,12,3,6,13,13,48,48,48 150 FOR I%=1% TO 9% 160 READ Lengd%(I%) 170 NEXT I% 180 ! ---------------------------- 190 ! EDITERING AV HELA FORMUL[RET 200 ! ---------------------------- 210 DEF FNEdit% 220 GET Tkn$ 230 Tkn%=ASCII(Tkn$) 240 IF Tkn%=8% OR Tkn%=9% OR Tkn%=13% OR Tkn%=24% OR Tkn%=192% OR Tkn%=193% OR Tkn%=195% OR Tkn%=199% GOTO 300 250 IF Tkn%>126% GOTO 220 260 Pos%=Pos%+1% 270 IF Pos%9% GOTO 450 330 IF Tkn%=24% Dummy%=FNRensa% 340 IF Tkn%=192% Dummy%=FNHome% 350 IF Tkn%=193% GOTO 450 360 IF Tkn%=195% GOTO 460 370 IF Tkn%=199% Dummy%=FNTabort% 380 GOTO 220 390 IF Pos%6% Klm%=Kol%-15% 430 ; CUR(Radnr%+2%+Rad%,Klm%) ""; 440 IF Rad%<10% GOTO 220 450 RETURN 0% 460 RETURN 1% 470 FNEND 480 ! ----------------------------------------------------------- 490 ! FLYTTAR CURSORN TILL FORMUL[RETS F\RSTA (TILL]TNA) POSITION 500 ! ----------------------------------------------------------- 510 DEF FNHome% 520 IF Rutin%=1% OR Rutin%=2% Pos%=0% : Rad%=2% : Radnr%=3% : Klm%=Kol% 530 IF Rutin%=5% Pos%=0% : Rad%=1% : Kol%=2% 540 ; CUR(Radnr%+2%+Rad%,Kol%) ""; 550 RETURN 0% 560 FNEND 570 ! --------------------- 580 ! FLYTTAR CURSORN BAK]T 590 ! --------------------- 600 DEF FNBacka% 610 IF Pos%>0% GOTO 690 620 Rad%=Rad%-1% : IF Rutin%=5% IF Rad%=0% Rad%=1% : GOTO 710 630 IF Rad%=1% Rad%=2% : GOTO 710 640 IF Rad%>6% Klm%=Kol%-15% ELSE Klm%=Kol% 650 IF Rad%=3% Radnr%=Radnr%+1% 660 IF Rad%=4% Klm%=Kol%+7% 670 ; CUR(Radnr%+2%+Rad%,Klm%+Lengd%(Rad%)) ""; 680 Pos%=Lengd%(Rad%) 690 ; CHR$(8%); 700 Pos%=Pos%-1% 710 RETURN 0% 720 FNEND 730 ! ---------------------- 740 ! FLYTTAR CURSORN FRAM]T 750 ! ---------------------- 760 DEF FNFram% 770 ; CUR(Radnr%+2%+Rad%,Klm%+Pos%+1%) ""; 780 Pos%=Pos%+1% 790 IF Pos%6% Klm%=Kol%-15% ELSE Klm%=Kol% 820 IF Rad%=4% Klm%=Kol%+7% : Radnr%=Radnr%-1% 830 Pos%=0% 840 ; CUR(Radnr%+2%+Rad%,Klm%+Pos%) ""; 850 RETURN 0% 860 FNEND 870 ! ------------------------------- 880 ! FLYTTAR CURSORN TILL N[STA F[LT 890 ! ------------------------------- 900 DEF FNReturn% 910 IF Rad%=2% AND Pos%=0% Rad%=10% : GOTO 970 920 Rad%=Rad%+1% : Pos%=0% : IF Rad%>9% GOTO 960 930 IF Rad%>6% Klm%=Kol%-15% ELSE Klm%=Kol% 940 IF Rad%=4% Klm%=Kol%+7% : Radnr%=Radnr%-1% 950 ; CUR(Radnr%+2%+Rad%,Klm%) ""; 960 RETURN 0% 970 RETURN 1% 980 FNEND 990 ! ------------------- 1000 ! TAR BORT ETT TECKEN 1010 ! ------------------- 1020 DEF FNTabort% 1030 ; CUR(Radnr%+2%+Rad%,Klm%+Pos%) MID$(Rad$(Rad%),Pos%+2%,Lengd%(Rad%)-Pos%-1%)+" "; 1040 ; CUR(Radnr%+2%+Rad%,Klm%+Pos%) ""; 1050 IF Pos% <"; 1390 ; CUR(Radnr%+5%,Kol%-30%) "STORLEK, DATUM > < > <"; 1400 ; CUR(Radnr%+6%,Kol%-30%) "H]RDVARA? > <"; 1410 ; CUR(Radnr%+7%,Kol%-30%) " > <"; 1420 ; CUR(Radnr%+8%,Kol%-30%) "BESKRIVNING >"+SPACE$(48%)+"<"; 1430 ; CUR(Radnr%+9%,Kol%-30%) " >"+SPACE$(48%)+"<"; 1440 ; CUR(Radnr%+10%,Kol%-30%) " >"+SPACE$(48%)+"<"; 1450 IF Rutin%=1% ; CUR(Radnr%+14%,Kol%-40%) "******** MATA IN HELA FILBESKRIVNINGEN ********"; : GOTO 1480 1460 ; CUR(Radnr%+14%,Kol%-40%) "******** OM POSTEN SKALL TAS BORT, TRYCK ! ********"; 1465 ; CUR(Radnr%+15%,Kol%-40%) "******** Till f|rsta position i posten, tryck ********"; 1470 ; CUR(Radnr%+16%,Kol%-40%) "******** N[STA post, tryck i f|rsta position ********"; 1480 ; CUR(Radnr%+4%,Kol%) ""; 1490 GOTO 1540 1500 ; CUR(Radnr%+8%,Kol%-30%) "VILL DU HA LISTAN P] SK[RMEN? (J/N) "; 1510 GET A$ 1520 A%=INSTR(1%,"JjNn",A$) : IF A%=0% GOTO 1500 1530 IF A%<3% A%=1% ELSE A%=3% 1540 RETURN 0% 1550 FNEND 1560 ! ---------------------- 1570 ! ST[NGA FILEN OCH SLUTA 1580 ! ---------------------- 1590 DEF FNSluta% 1600 ; CHR$(12%) 1610 Radnr%=9% 1620 ; CUR(Radnr%-1%,2%) STRING$(75%,127%) 1630 ; CUR(Radnr%,2%) STRING$(17%,127%)+" T A C K F \ R I D A G "+STRING$(17%,127%); 1640 ; CUR(Radnr%+1%,2%) STRING$(75%,127%) 1650 Dummy%=FNFilbyte% 1660 CLOSE 1670 KILL "F\RTECKN.LIB" 1680 NAME "ARBETS.FIL" AS "F\RTECKN.LIB" 1690 END 1700 RETURN 0% 1710 FNEND 1720 ! ------------ 1730 ! L[SA EN POST 1740 ! ------------ 1750 DEF FNL{sa% 1760 ON ERROR GOTO 1810 1770 INPUT LINE #1% Inpost$ 1780 Post$=LEFT$(Inpost$+SPACE$(80%),78%) 1790 RETURN 0% 1800 ! 1810 RETURN 1% 1820 FNEND 1830 ! ----------------- 1840 ! SKRIVA EN FELTEXT 1850 ! ----------------- 1860 DEF FNFeltext%(Text$) 1870 ; CUR(24%,5%) Text$; 1880 RETURN 0% 1890 FNEND 1900 ! ----------------- 1910 ! SKRIVER HJ[LPSIDA 1920 ! ----------------- 1930 DEF FNHj{lp% 1940 ; CHR$(12%); 1950 ; CUR(Radnr%-1%,2%) STRING$(75%,127%); 1960 ; CUR(Radnr%,2%) STRING$(15%,127%)+" HJ[LPSIDA "+STRING$(47%,127%); 1970 ; CUR(Radnr%+1%,2%) STRING$(75%,127%); 1980 ; CUR(Radnr%+3%,10%) "DU FYLLER I RADERNA SOM LEDTEXTERNA VISAR"; 1990 ; CUR(Radnr%+7%,10%) "F\LJANDE TANGENTER KAN DU ANV[NDA F\R ATT UNDERL[TTA DET HELA:"; 2000 ; CUR(Radnr%+9%,10%) "-> <- = F\RFLYTTAR DIG I F[LTEN."; 2010 ; CUR(Radnr%+10%,10%) "RETURN = AVSLUTAR F[LTEN - [VEN MITT I."; 2020 ; CUR(Radnr%+11%,10%) "PF8 = TAR BORT ETT TECKEN."; 2030 ; CUR(Radnr%+12%,10%) "CE = T\MMER F[LTEN."; 2040 ; CUR(Radnr%+13%,10%) "PF2 = AVSLUTAR PROGRAMMET."; 2050 ; CUR(Radnr%+14%,10%) "PF1 = FLYTTAR DIG TILL FORMUL[RETS F\RSTA (TILL]TNA) POSITION."; 2060 ; CUR(Radnr%+16%,10%) "RETURN I FORMUL[RETS F\RSTA (TILL]TNA) POSITION,"; 2070 ; CUR(Radnr%+17%,10%) " = TILLBAKA TILL HUVUDMENYN."; 2080 ; CUR(Radnr%+19%,10%) "N[R DU HAR L[ST F[RDIG - TRYCK EN TANGENT! "; 2090 GET A$ 2100 RETURN 0% 2110 FNEND 2120 ! ------------------ 2130 ! SKRIVER HUVUDMENYN 2140 ! ------------------ 2150 DEF FNMeny1% 2160 ; CHR$(12%); 2170 ; CUR(Radnr%-1%,2%) STRING$(75%,127%); 2180 ; CUR(Radnr%,2%) STRING$(15%,127%)+" KATALOGISERING AV BIBLIOTEK "+STRING$(29%,127%); 2190 ; CUR(Radnr%+1%,2%) STRING$(75%,127%); 2200 ; CUR(Radnr%+4%,19%) "VAD VILL DU G\RA?"; 2210 ; CUR(Radnr%+6%,15%) "1. L[GGA TILL NYA FILNAMN"; 2220 ; CUR(Radnr%+7%,15%) "2. [NDRA/TA BORT GAMLA FILNAMN"; 2230 ; CUR(Radnr%+8%,15%) "4. SKRIVA EN LISTA P] SKRIVAREN/SK[RMEN"; 2240 ; CUR(Radnr%+10%,15%) "6. HJ[LPSIDA"; 2250 ; CUR(Radnr%+12%,15%) "9. AVSLUTA - (ST[NGER FILEN)"; 2260 ; CUR(Radnr%+14%,20%) "ANGE \NSKAD SIFFRA "; : GET A$ 2270 ON ERROR GOTO 2260 2280 Rutin%=VAL(A$) 2290 IF Rutin%=1% OR Rutin%=2% OR Rutin%=4% OR Rutin%=6% OR Rutin%=9% GOTO 2310 2300 GOTO 2260 2310 RETURN 0% 2320 FNEND 2330 ! ------------------------------ 2340 ! SKRIVER BIBLIOTEKS[NDRINGSMENY 2350 ! ------------------------------ 2360 DEF FNMeny3% 2370 ; CHR$(12%); 2380 Dummy%=FNInitrader% 2390 ; CUR(Radnr%-1%,2%) STRING$(75%,127%) 2400 ; CUR(Radnr%,2%) Rubrik$; 2410 ; CUR(Radnr%+1%,2%) STRING$(75%,127%) 2420 Radnr%=3% 2430 ; CUR(Radnr%+4%,2%) "BIBLIOTEKSNAMN"; 2440 ; CUR(Radnr%+10%,2%) "TRYCK RETURN OM DU INTE VILL [NDRA NAMNET"; 2450 ; CUR(Radnr%+6%,2%) ""; 2460 RETURN 0% 2470 FNEND 2480 ! ------------------ 2490 ! EDITERAR FILNAMNET 2500 ! ------------------ 2510 DEF FNFilnamn% 2520 ON ERROR GOTO 2640 2530 FOR I%=12% TO 1% STEP -1% 2540 Tkn$=MID$(Rad$(2%),I%,1%) : Tkn%=ASCII(Tkn$) 2550 IF Tkn%=32% OR Tkn%=46% OR (Tkn%>64% AND Tkn%<94%) GOTO 2590 2560 IF Tkn%>96% AND Tkn%<126% Tkn$=CHR$(ASCII(Tkn$)-32%) : MID$(Rad$(2%),I%,1%)=Tkn$ : GOTO 2590 2570 IF Tkn%>47% AND Tkn%<58% IF I%<>1% GOTO 2590 2580 J%=O% : I%=1% : GOTO 2610 2590 IF Tkn$<>"." GOTO 2610 2600 J%=I% 2610 NEXT I% 2620 Rad$(2%)=LEFT$(Rad$(2%),J%-1%)+SPACE$(9%-J%)+MID$(Rad$(2%),J%,4%) 2630 RETURN 0% 2640 RETURN 1% 2650 FNEND 2660 ! ------------------------------- 2670 ! FLYTTA INFILEN TILL ARBETSFILEN 2680 ! ------------------------------- 2690 DEF FNFilbyte% 2700 Dummy%=FNL{sa% 2710 IF Dummy%=1% GOTO 2740 2720 ; #2% LEFT$(Post$+SPACE$(80%),78%) 2730 GOTO 2700 2740 RETURN 0% 2750 FNEND 2760 ! ------------------ 2770 ! EDITERAR STORLEKEN 2780 ! ------------------ 2790 DEF FNStorlek% 2800 WHILE MID$(Rad$(3%),3%,1%)=" " 2810 Rad$(3%)=LEFT$(" "+Rad$(3%),3%) 2820 WEND 2830 RETURN 0% 2840 FNEND 6000 ! ----------------------- 6010 ! H[R B\RJAR HUVUDRUTINEN 6020 ! ----------------------- 6030 Dummy%=FNInitrader% 6040 GOSUB 50000 6050 Radnr%=3% 6060 Dummy%=FNMeny1% 6070 Dummy%=FNInitrader% 6080 ON VAL(A$) GOTO 6090,6100,6130,6110,6130,6120,6130,6130,6140,6130 6090 GOSUB 10000 : GOTO 6150 6100 GOSUB 20000 : GOTO 6150 6110 GOSUB 40000 : GOTO 6140 6120 Dummy%=FNHj{lp% : GOTO 6150 6130 GOTO 6150 6140 Dummy%=FNSluta% 6150 IF Tkn%=193% GOTO 6140 ELSE GOTO 6060 10000 ! ------------------------- 10010 ! INMATNING AV NYA FILNAMN 10020 ! ------------------------- 10030 Post$="" : Pos%=0% : Rad%=2% : Kol%=45% : Radnr%=3% 10040 Dummy%=FNFilbyte% 10050 Klm%=Kol% 10060 Rubrik$=STRING$(11%,127%)+" N Y A F I L N A M N "+STRING$(39%,127%) 10070 Dummy%=FNMeny2% 10080 Dummy%=FNEdit% 10090 IF Dummy%=1% OR Tkn%=193% GOTO 10220 10100 Dummy%=FNFilnamn% 10105 IF Dummy%=0% GOTO 10120 10110 Dummy%=FNFeltext%("FELAKTIGT FILNAMN - TRYCK EN TANGENT!") : GET A$ 10115 Radnr%=3% : ; CUR(Radnr%+4%,Kol%) ""; : Rad%=2% : Klm%=Kol% : GOTO 10080 10120 IF Rad$(3%)<>" " Dummy%=FNStorlek% 10130 Post$=Rad$(2%)+" "+Rad$(3%)+" "+Rad$(4%)+" "+Rad$(7%) 10140 ; #2% LEFT$(Post$+SPACE$(80%),78%) 10150 IF Rad$(5%)=SPACE$(13%) AND Rad$(8%)=SPACE$(48%) GOTO 10030 10160 Post$=SPACE$(15%)+Rad$(5%)+" "+Rad$(8%) 10170 ; #2% LEFT$(Post$+SPACE$(80%),78%) 10180 IF Rad$(6%)=SPACE$(13%) AND Rad$(9%)=SPACE$(48%) GOTO 10030 10190 Post$=SPACE$(15%)+Rad$(6%)+" "+Rad$(9%) 10200 ; #2% LEFT$(Post$+SPACE$(80%),78%) 10210 GOTO 10030 10220 RETURN 20000 ! ------------------- 20010 ! [NDRING OCH BORTTAG AV FILNAMN 20020 ! ------------------- 20030 Post$="" : Pos%=0% : Rad%=2% : Kol%=45% : Radnr%=3% 20040 Klm%=Kol% 20050 Rubrik$=STRING$(11%,127%)+" [ N D R I N G / B O R T T A G A V F I L N A M N "+STRING$(9%,127%) 20060 Dummy%=FNMeny2% 20070 Dummy%=FNL{sa% ! POSTEN MED UNDERSTRYKNINGSRADEN 20080 ; #2% Post$ 20090 Dummy%=FNL{sa% 20100 WHILE Eofil%<>1% 20110 Dummy%=FNInitrader% 20120 Pos%=1% 20130 Rad$(2%)=LEFT$(Post$,Lengd%(2%)) : Pos%=Pos%+Lengd%(2%)+3% 20140 Rad$(3%)=MID$(Post$,Pos%,Lengd%(3%)) : Pos%=Pos%+Lengd%(3%)+4% 20150 Rad$(4%)=MID$(Post$,Pos%,Lengd%(4%)) : Pos%=Pos%+Lengd%(4%)+2% 20160 Rad$(7%)=MID$(Post$,Pos%,Lengd%(7%)) 20170 Dummy%=FNL{sa% : IF Dummy%=1% OR MID$(Post$,9%,1%)="." GOTO 20260 20180 Pos%=16% 20190 Rad$(5%)=MID$(Post$,Pos%,Lengd%(5%)) : Pos%=Pos%+Lengd%(5%)+2% 20200 Rad$(8%)=MID$(Post$,Pos%,Lengd%(8%)) 20210 Dummy%=FNL{sa% : IF Dummy%=1% OR MID$(Post$,9%,1%)="." GOTO 20260 20220 Pos%=16% 20230 Rad$(6%)=MID$(Post$,Pos%,Lengd%(6%)) : Pos%=Pos%+Lengd%(6%)+2% 20240 Rad$(9%)=MID$(Post$,Pos%,Lengd%(9%)) 20250 Dummy%=FNL{sa% 20260 IF Dummy%=1% Eofil%=1% 20270 Radnr%=3% 20280 FOR I%=2% TO 9% 20290 IF I%>6% Klm%=Kol%-15% ELSE Klm%=Kol% 20300 IF I%=4% Klm%=Kol%+7% : Radnr%=Radnr%-1% 20310 ; CUR(Radnr%+2%+I%,Klm%) Rad$(I%) 20320 NEXT I% 20330 Pos%=0% : Rad%=2% : Kol%=45% : Klm%=Kol% : Radnr%=3% : ; CUR(7%,Kol%) ""; 20340 Dummy%=FNEdit% 20350 IF Tkn%=195% GOTO 20480 20360 IF Tkn%=193% Eofil%=Tkn% 20370 Dummy%=FNFilnamn% 20380 IF Dummy%=1% Dummy%=FNFeltext%("FELAKTIGT FILNAMN - TRYCK EN TANGENT!") : GET A$ : ; CUR(Radnr%+4%,Kol%) ""; : GOTO 20330 20390 IF Rad$(3%)<>SPACE$(3%) Dummy%=FNStorlek% 20400 Post$=Rad$(2%)+" "+Rad$(3%)+" "+Rad$(4%)+" "+Rad$(7%) 20410 ; #2% LEFT$(Post$+SPACE$(80%),78%) 20420 IF Rad$(5%)=SPACE$(13%) AND Rad$(8%)=SPACE$(48%) GOTO 20480 20430 Post$=SPACE$(15%)+Rad$(5%)+" "+Rad$(8%) 20440 ; #2% LEFT$(Post$+SPACE$(80%),78%) 20450 IF Rad$(6%)=SPACE$(13%) AND Rad$(9%)=SPACE$(48%) GOTO 20480 20460 Post$=SPACE$(15%)+Rad$(6%)+" "+Rad$(9%) 20470 ; #2% LEFT$(Post$+SPACE$(80%),78%) 20480 Post$=LEFT$(Inpost$,78%) 20490 IF Eofil%=193% Tkn%=Eofil% : Eofil%=1% : ; #2% Post$ 20500 WEND 28020 RETURN 40000 ! ------------- 40010 ! SKRIVER LISTA 40020 ! ------------- 40030 Kol%=45% 40040 Rubrik$=STRING$(11%,127%)+" U T S K R I F T A V F I L E N "+STRING$(27%,127%) 40050 Dummy%=FNMeny2% 40060 IF A%=1% GOTO 40110 40070 ; CUR(11%,10%) SPACE$(10%)+"P R I N T E R N [ R I N T E P ] !"; 40080 OPEN Printer$ AS FILE 3% 40090 Maxrad%=60% 40100 GOTO 40130 40110 OPEN "CON:" AS FILE 3% 40120 Maxrad%=22% 40130 CLOSE 1%,2% 40140 OPEN "F\RTECKN.LIB" AS FILE 1% 40150 Dummy%=FNL{sa% : Spar1$=Post$ 40160 Dummy%=FNL{sa% : Spar2$=Post$ 40170 Dummy%=FNL{sa% 40180 IF A%=1% ; #3% CHR$(12%) 40190 ; #3% Spar1$ 40200 IF A%=3% ; CUR(11%,1%) SPACE$(60%) 40210 ; #3% Spar2$ 40220 IF A%=1% Rad%=2% : GOTO 40270 40230 ; #3% "" 40240 ; #3% "FILNAMN STORLEK DATUM BESKRIVNING" 40250 ; #3% " H]RDVARA" 40260 Rad%=5% 40270 WHILE Rad%"." Rad%=Rad%-1% : GOTO 40270 40360 ; #3% CHR$(12%) 40370 GOTO 40180 40380 IF A%=3% ; #3% CHR$(12%) 40390 CLOSE 1% 40400 IF A%=1% Dummy%=FNFeltext%("TRYCK EN TANGENT, D] DU L[ST F[RDIGT") : GET A$ 40410 OPEN "F\RTECKN.LIB" AS FILE 1% : OPEN "ARBETS.FIL" AS FILE 2% 40420 RETURN 50000 ! --------------------------------------- 50010 ! [NDRAR BIBLIOTEKSNAMNET I F\RSTA POSTEN 50020 ! --------------------------------------- 50030 ; CHR$(12%) 50040 Rad%=1% : Klm%=2% : Radnr%=3% : Forsta%=0% : Rutin%=5% 50050 ON ERROR GOTO 50070 50060 KILL "ARBETS.FIL" 50070 PREPARE "ARBETS.FIL" AS FILE 2% 50080 ON ERROR GOTO 50110 50090 OPEN "F\RTECKN.LIB" AS FILE 1% 50100 GOTO 50120 50110 PREPARE "F\RTECKN.LIB" AS FILE 1% 50120 Rubrik$=STRING$(11%,127%)+" [ N D R I N G A V B I B L I O T E K S N A M N "+STRING$(11%,127%) 50130 Dummy%=FNMeny3% 50140 Dummy%=FNL{sa% 50150 IF Dummy%=1% Post$=SPACE$(78%) : Forsta%=1% 50160 ; CUR(Radnr%+Rad%+5%,Klm%) Post$; 50170 Rad$(1%)=Post$ 50180 ; CUR(Radnr%+6%,2%) ""; 50190 Radnr%=6% : Kol%=2% 50200 Dummy%=FNEdit% 50210 Post$=Rad$(1%) 50220 ; #2% Post$ 50230 IF Forsta%=1% ; #2% STRING$(78%,35%) 50240 RETURN