home *** CD-ROM | disk | FTP | other *** search
- '*---------------------------------------------------------*
- '* COMP_MOD.BAS *
- '* Modul für COMP_ART.BAS (Quick-Basic V. 4.XX) *
- '* (C) 1991 Th.Frins, W.Kehr & TOOLBOX *
- '*---------------------------------------------------------*
-
- '*-------------- Definitionen und Deklarationen -----------*
-
- '* Prozedur-Deklarationen:
-
- DECLARE SUB Warten (zeilennr%)
- DECLARE SUB JaNein (zeile%, spalte%, text$, ant$)
- DECLARE SUB Eingabemaske (position%(), satz AS ANY)
- DECLARE SUB IndexSuche (eintrag%, suchbegriff$, aufgabe$, _
- aendern%)
- DECLARE SUB Speichern (aufgabe$, satznummer%, _
- neuereintrag$())
- DECLARE SUB Hell ()
- DECLARE SUB Normal ()
- DECLARE SUB Invers ()
- DECLARE SUB InputNeu (vorgabe$, gueltig$, typ$, laenge%, _
- nachkomma%, zeile%, spalte%, taste$)
- DECLARE SUB BildLoeschen (zeilelinksoben%, _
- spaltelinksoben%, zeilerechtsunten%, spalterechtsunten%, _
- loeschzeichen$)
- DECLARE SUB BearbeiteIndex (datsatz AS ANY, speichersatz%)
- DECLARE SUB Einfuegen (datsatz AS ANY, i%, satznummer%, n%)
- DECLARE SUB EinzelDruck (drucksatz AS ANY, d$)
- DECLARE SUB JaNeinESC (zeile%, spalte%, text$, ant$)
- DECLARE SUB Druck (wahl%)
- DECLARE SUB Speicherindizes ()
- DECLARE SUB ErstelleIndizes ()
- DECLARE SUB ArtikelEingabe (satznummer%, satz AS ANY, _
- aufgabe$)
- DECLARE SUB Meldung (zeile%, spalte%, text$)
-
- '* Funktionsdeklarationen:
-
- DECLARE FUNCTION BinSuch% (datsatz AS ANY, n%)
-
- '* Konstantendefinitionen:
-
- CONST leer = " "
- CONST wahr = -1
- CONST falsch = NOT wahr
-
- '* Datensatzdefinitionen:
-
- TYPE Artikelsatz
- Zeitschrift AS STRING * 20
- AusgabeNr AS INTEGER
- Jahrgang AS INTEGER
- Artikeltyp AS STRING * 10
- Hauptstichwort AS STRING * 30
- UnterStichwort1 AS STRING * 30
- Unterstichwort2 AS STRING * 30
- Kurzbeschreibung AS STRING * 77
- Loeschkennung AS INTEGER
- END TYPE
-
- TYPE Zeitindextyp
- Zeitschrift AS STRING * 30
- Satznummer AS INTEGER
- END TYPE
-
- TYPE Jahrindextyp
- Jahrgang AS INTEGER
- Satznummer AS INTEGER
- END TYPE
-
- TYPE Artikelindextyp
- Artikeltyp AS STRING * 10
- Satznummer AS INTEGER
- END TYPE
-
- TYPE Stichindextyp
- Stichwort AS STRING * 30
- Satznummer AS INTEGER
- END TYPE
-
-
- '* Variablendefinitionen:
-
- COMMON /CompMod/ groesse%(), Suchoptionen$()
- COMMON SHARED Zeitindex() AS Zeitindextyp
- COMMON SHARED Jahrindex() AS Jahrindextyp
- COMMON SHARED Stichindex() AS Stichindextyp
- COMMON SHARED Artikelindex() AS Artikelindextyp
- COMMON SHARED Loeschliste%(), AnzSaetze%, AnzLoeschSatz%
- DIM SHARED AnzZeitSatz%, AnzJahrSatz%, AnzArtikelSatz%
- DIM SHARED AnzStichSatz%
-
- REM $DYNAMIC
- DIM SHARED Loeschliste%(50)
- REM $STATIC
-
- SUB ArtikelEingabe (satznummer%, satz AS Artikelsatz, _
- aufgabe$)
- SHARED groesse%()
- DIM neuereintrag$(8)
- DIM eingabeposition%(8, 2)
- IF aufgabe$ = "Aendern" THEN
- neuereintrag$(1) = Satz.Zeitschrift
- IF STR$(Satz.AusgabeNr) = " 0" THEN
- neuereintrag$(2) = SPACE$(groesse%(2))
- ELSE
- neuereintrag$(2) = RIGHT$(STR$(Satz.AusgabeNr), 2)
- END IF
- IF STR$(Satz.Jahrgang) = " 0" THEN
- neuereintrag$(3) = SPACE$(groesse%(3))
- ELSE
- neuereintrag$(3) = RIGHT$(STR$(Satz.Jahrgang), 2)
- END IF
- neuereintrag$(4) = Satz.Artikeltyp
- neuereintrag$(5) = Satz.Hauptstichwort
- neuereintrag$(6) = Satz.UnterStichwort1
- neuereintrag$(7) = Satz.Unterstichwort2
- neuereintrag$(8) = Satz.Kurzbeschreibung
- END IF
- CALL BildLoeschen(7, 2, 19, 79, "")
- CALL BildLoeschen(22, 2, 24, 79, "")
- CALL Eingabemaske(eingabeposition%(), satz)
- CALL BildLoeschen(22, 2, 24, 79, "")
- LOCATE 22, 2
- CALL Hell
- PRINT " F1 - Speichern des Artikels ";
- PRINT "ESC - Abbruch"
- CALL Normal
- Datenfeld% = 1
- taste$ = ""
- DO
- vorgabe$ = RTRIM$(neuereintrag$(Datenfeld%))
- IF Datenfeld% = 2 OR Datenfeld% = 3 THEN
- gueltig$ = "0123456789"
- ELSE
- gueltig$ = ""
- END IF
- CALL InputNeu(vorgabe$, gueltig$, "C", _
- groesse%(Datenfeld%), 0, _
- eingabeposition%(Datenfeld%, 1), _
- eingabeposition%(Datenfeld%, 2), taste$)
- neuereintrag$(Datenfeld%) = vorgabe$
- SELECT CASE taste$
- CASE "CURHOCH"
- IF Datenfeld% = 1 THEN
- Datenfeld% = 8
- ELSE
- Datenfeld% = Datenfeld% - 1
- END IF
- CASE "CURRUNTER"
- IF Datenfeld% = 8 THEN
- Datenfeld% = 1
- ELSE
- Datenfeld% = Datenfeld% + 1
- END IF
- CASE "ENTER"
- IF Datenfeld% <> 8 THEN Datenfeld% = Datenfeld% + 1
- CASE "F1"
- IF neuereintrag$(1) <> "" THEN
- CALL Speichern(aufgabe$, satznummer%, _
- neuereintrag$())
- IF aufgabe$ = "Aendern" THEN EXIT DO
- CALL Eingabemaske(eingabeposition%(), satz)
- Datenfeld% = 1
- ELSE
- CALL BildLoeschen(22, 2, 24, 79, "")
- LOCATE 22, 3
- CALL Hell
- PRINT "Ohne Eintrag im Feld [Zeitschrift] kann";
- PRINT " nicht gespeichert werden !"
- CALL Normal
- CALL Warten(24)
- CALL BildLoeschen(22, 2, 24, 79, "")
- LOCATE 22, 2
- CALL Hell
- PRINT " F1 - Speichern des Artikels";
- PRINT " ESC - Abbruch"
- CALL Normal
- Datenfeld% = 1
- END IF
- END SELECT
- LOOP UNTIL taste$ = "ESC"
- END SUB
-
- SUB BearbeiteIndex (datsatz AS Artikelsatz, speichersatz%)
- zeile% = BinSuch%(datsatz, 1)
- CALL Einfuegen(datsatz, speichersatz%, zeile%, 1)
- IF Datsatz.Jahrgang <> 0 THEN
- zeile% = BinSuch%(datsatz, 2)
- CALL Einfuegen(datsatz, speichersatz%, zeile%, 2)
- END IF
- IF RTRIM$(Datsatz.Artikeltyp) <> "" THEN
- zeile% = BinSuch%(datsatz, 3)
- CALL Einfuegen(datsatz, speichersatz%, zeile%, 3)
- END IF
- IF RTRIM$(Datsatz.Hauptstichwort) <> "" THEN
- zeile% = BinSuch%(datsatz, 4)
- CALL Einfuegen(datsatz, speichersatz%, zeile%, 4)
- END IF
- IF RTRIM$(Datsatz.UnterStichwort1) <> "" THEN
- zeile% = BinSuch%(datsatz, 5)
- CALL Einfuegen(datsatz, speichersatz%, zeile%, 5)
- END IF
- IF RTRIM$(Datsatz.Unterstichwort2) <> "" THEN
- zeile% = BinSuch%(datsatz, 6)
- CALL Einfuegen(datsatz, speichersatz%, zeile%, 6)
- END IF
- END SUB
-
- FUNCTION BinSuch% (datsatz AS Artikelsatz, n%)
- SELECT CASE n%
- CASE 1
- Start% = LBOUND(Zeitindex)
- Ende% = LBOUND(Zeitindex) + AnzZeitSatz% - 1
- WHILE Ende% >= Start%
- Mitte% = INT((Ende% + Start%) / 2)
- IF UCASE$(RTRIM$(Datsatz.Zeitschrift)) > _
- LEFT$(UCASE$(RTRIM$(Zeitindex(Mitte%).Zeitschrift)), _
- LEN(RTRIM$(Datsatz.Zeitschrift))) THEN
- Start% = Mitte% + 1
- ELSE
- Ende% = Mitte% - 1
- END IF
- WEND
- CASE 2
- Start% = LBOUND(Jahrindex)
- Ende% = LBOUND(Jahrindex) + AnzJahrSatz% - 1
- WHILE Ende% >= Start%
- Mitte% = INT((Ende% + Start%) / 2)
- IF Datsatz.Jahrgang>Jahrindex(Mitte%).Jahrgang THEN
- Start% = Mitte% + 1
- ELSE
- Ende% = Mitte% - 1
- END IF
- WEND
- CASE 3
- Start% = LBOUND(Artikelindex)
- Ende% = LBOUND(Artikelindex) + AnzArtikelSatz% - 1
- WHILE Ende% >= Start%
- Mitte% = INT((Ende% + Start%) / 2)
- IF UCASE$(RTRIM$(Datsatz.Artikeltyp)) > _
- UCASE$(RTRIM$(Artikelindex(Mitte%).Artikeltyp)) _
- THEN
- Start% = Mitte% + 1
- ELSE
- Ende% = Mitte% - 1
- END IF
- WEND
- CASE 4
- Start% = LBOUND(Stichindex)
- Ende% = LBOUND(Stichindex) + AnzStichSatz% - 1
- WHILE Ende% >= Start%
- Mitte% = INT((Ende% + Start%) / 2)
- IF UCASE$(RTRIM$(Datsatz.Hauptstichwort)) > _
- UCASE$(RTRIM$(Stichindex(Mitte%).Stichwort)) THEN
- Start% = Mitte% + 1
- ELSE
- Ende% = Mitte% - 1
- END IF
- WEND
- CASE 5
- Start% = LBOUND(Stichindex)
- Ende% = LBOUND(Stichindex) + AnzStichSatz% - 1
- WHILE Ende% >= Start%
- Mitte% = INT((Ende% + Start%) / 2)
- IF UCASE$(RTRIM$(Datsatz.UnterStichwort1)) > _
- UCASE$(RTRIM$(Stichindex(Mitte%).Stichwort)) THEN
- Start% = Mitte% + 1
- ELSE
- Ende% = Mitte% - 1
- END IF
- WEND
- CASE 6
- Start% = LBOUND(Stichindex)
- Ende% = LBOUND(Stichindex) + AnzStichSatz% - 1
- WHILE Ende% >= Start%
- Mitte% = INT((Ende% + Start%) / 2)
- IF UCASE$(RTRIM$(Datsatz.Unterstichwort2)) > _
- UCASE$(RTRIM$(Stichindex(Mitte%).Stichwort)) THEN
- Start% = Mitte% + 1
- ELSE
- Ende% = Mitte% - 1
- END IF
- WEND
- END SELECT
- BinSuch% = Start%
- END FUNCTION
-
- SUB DosBefehl
- CALL BildLoeschen(7, 2, 19, 79, "")
- CALL BildLoeschen(22, 2, 24, 79, "")
- DEF SEG = &H40
- check% = PEEK(&H49)
- DEF SEG
- IF check% = 7 THEN DEF SEG = &HB000 ELSE DEF SEG = &HB800
- BSAVE "\BSchirm.sik", 0, 4000
- CALL BildLoeschen(7, 2, 19, 79, "")
- DO
- CALL Meldung(10, 5, _
- "Geben Sie einen gültigen DOS-Befehl ein: ")
- LOCATE 11, 5: INPUT "", dos$
- LOOP WHILE dos$ = ""
- CLS
- SHELL dos$
- SHELL "pause"
- BLOAD "\BSchirm.sik"
- SHELL "del \BSchirm.sik > nul"
- LOCATE CSRLIN - 1, 1
- END SUB
-
- SUB DosShell
- CALL BildLoeschen(7, 2, 19, 79, "")
- CALL BildLoeschen(22, 2, 24, 79, "")
- DEF SEG = &H40
- check% = PEEK(&H49)
- DEF SEG
- IF check% = 7 THEN DEF SEG = &HB000 ELSE DEF SEG = &HB800
- BSAVE "\BSchirm.sik", 0, 4000
- CALL BildLoeschen(7, 2, 19, 79, "")
- CLS
- p$ = ENVIRON$("PROMPT")
- ENVIRON "PROMPT=Zurück EXIT>"
- SHELL
- ENVIRON "PROMPT=" + p$
- BLOAD "\BSchirm.sik"
- SHELL "del \BSchirm.sik >nul"
- LOCATE CSRLIN - 1, 1
- END SUB
-
- SUB Druck (wahl%)
- DIM drucksatz AS Artikelsatz
- CALL BildLoeschen(7, 2, 19, 79, "")
- CALL BildLoeschen(22, 2, 24, 79, "")
- text$ = "Es sind " + STR$(AnzZeitSatz%)
- text$ = text$ + " Datensätze vorhanden"
- CALL Meldung(10, 25, text$)
- CALL JaNeinESC(22, 5, "Druck in Schmalschrift(J/N) ESC - Abbruch", ant$)
- IF ant$ <> "ESC" THEN
- CALL BildLoeschen(7, 2, 19, 79, "")
- CALL BildLoeschen(22, 2, 24, 79, "")
- CALL Meldung(22, 3, "Ist ihr Drucker eingeschaltet ?")
- CALL Warten(23)
- IF UCASE$(ant$) = "J" THEN
- LPRINT CHR$(15)
- WIDTH "LPT1:", 136
- FOR i% = LBOUND(Zeitindex) TO LBOUND(Zeitindex) + _
- AnzZeitSatz% - 1
- GET #1, Zeitindex(i%).Satznummer, drucksatz
- IF i% / 22 = INT(i% / 22) THEN LPRINT CHR$(12)
- LPRINT USING "Nummer: ###"; i%;
- LPRINT " Zeitschrift: "; Drucksatz.Zeitschrift;
- LPRINT USING " Ausgabe: ##"; Drucksatz.AusgabeNr;
- LPRINT USING " ## "; Drucksatz.Jahrgang;
- LPRINT "Typ: "; Drucksatz.Artikeltyp
- LPRINT TAB(13); "Stichworte: ";
- LPRINT Drucksatz.Hauptstichwort;
- LPRINT TAB(63); Drucksatz.UnterStichwort1;
- LPRINT TAB(100); Drucksatz.Unterstichwort2
- LPRINT TAB(13); "Text: "; Drucksatz.Kurzbeschreibung
- NEXT i%
- LPRINT CHR$(18)
- WIDTH "LPT1:", 80
- ELSE
- CALL BildLoeschen(22, 2, 24, 79, "")
- CALL Meldung(22, 3, "Normaldruck ist NICHT aktiv")
- CALL Warten(24)
- END IF
- END IF
- END SUB
-
- SUB Einfuegen (datsatz AS Artikelsatz, i%, satznummer%, n%)
- SELECT CASE n%
- CASE 1
- FOR k% = LBOUND(Zeitindex) + AnzZeitSatz% - 1 _
- TO satznummer% STEP -1
- Zeitindex(k% + 1) = Zeitindex(k%)
- NEXT k%
- Zeitindex(satznummer%).Zeitschrift = _
- Datsatz.Zeitschrift
- Zeitindex(satznummer%).Satznummer = i%
- AnzZeitSatz% = AnzZeitSatz% + 1
- CASE 2
- FOR k% = LBOUND(Jahrindex) + AnzJahrSatz% - 1 TO _
- satznummer% STEP -1
- Jahrindex(k% + 1) = Jahrindex(k%)
- NEXT k%
- Jahrindex(satznummer%).Jahrgang = Datsatz.Jahrgang
- Jahrindex(satznummer%).Satznummer = i%
- AnzJahrSatz% = AnzJahrSatz% + 1
- CASE 3
- FOR k% = LBOUND(Artikelindex) + AnzArtikelSatz% - 1 _
- TO satznummer% STEP -1
- Artikelindex(k% + 1) = Artikelindex(k%)
- NEXT k%
- Artikelindex(satznummer%).Artikeltyp = _
- Datsatz.Artikeltyp
- Artikelindex(satznummer%).Satznummer = i%
- AnzArtikelSatz% = AnzArtikelSatz% + 1
- CASE 4
- FOR k% = LBOUND(Stichindex) + AnzStichSatz% - 1 TO _
- satznummer% STEP -1
- Stichindex(k% + 1) = Stichindex(k%)
- NEXT k%
- Stichindex(satznummer%).Stichwort = _
- Datsatz.Hauptstichwort
- Stichindex(satznummer%).Satznummer = i%
- AnzStichSatz% = AnzStichSatz% + 1
- CASE 5
- FOR k% = LBOUND(Stichindex) + AnzStichSatz% - 1 TO _
- satznummer% STEP -1
- Stichindex(k% + 1) = Stichindex(k%)
- NEXT k%
- Stichindex(satznummer%).Stichwort = _
- Datsatz.UnterStichwort1
- Stichindex(satznummer%).Satznummer = i%
- AnzStichSatz% = AnzStichSatz% + 1
- CASE 6
- FOR k% = LBOUND(Stichindex) + AnzStichSatz% - 1 TO _
- satznummer% STEP -1
- Stichindex(k% + 1) = Stichindex(k%)
- NEXT k%
- Stichindex(satznummer%).Stichwort = _
- Datsatz.Unterstichwort2
- Stichindex(satznummer%).Satznummer = i%
- AnzStichSatz% = AnzStichSatz% + 1
- END SELECT
- END SUB
-
- SUB Eingabemaske (position%(), satz AS Artikelsatz)
- SHARED groesse%()
- position%(1, 1) = 7: position%(1, 2) = 24
- position%(2, 1) = 9: position%(2, 2) = 24
- position%(3, 1) = 11: position%(3, 2) = 24
- position%(4, 1) = 13: position%(4, 2) = 24
- position%(5, 1) = 15: position%(5, 2) = 24
- position%(6, 1) = 16: position%(6, 2) = 24
- position%(7, 1) = 17: position%(7, 2) = 24
- position%(8, 1) = 19: position%(8, 2) = 3
- LOCATE 7, 3: PRINT "Zeitschrift: "
- LOCATE 9, 3: PRINT "Nummer der Ausgabe: "
- LOCATE 11, 3: PRINT "Jahrgang: "
- LOCATE 13, 3: PRINT "Artikeltyp: "
- LOCATE 15, 3: PRINT "Stichwort 1: "
- LOCATE 16, 3: PRINT "Stichwort 2: "
- LOCATE 17, 3: PRINT "Stichwort 3: "
- LOCATE 18, 3: PRINT "Kurzbeschreibung: "
- CALL Invers
- LOCATE position%(1, 1), position%(1, 2)
- PRINT Satz.Zeitschrift
- LOCATE position%(2, 1), position%(2, 2)
- IF STR$(Satz.AusgabeNr) = " 0" THEN
- PRINT SPACE$(groesse%(2))
- ELSE
- PRINT RIGHT$(STR$(Satz.AusgabeNr), 2)
- END IF
- LOCATE position%(3, 1), position%(3, 2)
- IF STR$(Satz.Jahrgang) = " 0" THEN
- PRINT SPACE$(groesse%(3))
- ELSE
- PRINT RIGHT$(STR$(Satz.Jahrgang), 2)
- END IF
- LOCATE position%(4, 1), position%(4, 2)
- PRINT Satz.Artikeltyp
- LOCATE position%(5, 1), position%(5, 2)
- PRINT Satz.Hauptstichwort
- LOCATE position%(6, 1), position%(6, 2)
- PRINT Satz.UnterStichwort1
- LOCATE position%(7, 1), position%(7, 2)
- PRINT Satz.Unterstichwort2
- LOCATE position%(8, 1), position%(8, 2)
- PRINT Satz.Kurzbeschreibung
- CALL Normal
- END SUB
-
- SUB EinzelDruck (drucksatz AS Artikelsatz, d$)
- IF d$ = "Einzel" OR d$ = "Erster" THEN
- CALL BildLoeschen(22, 2, 24, 79, "")
- CALL Meldung(22, 3, "Ist ihr Drucker eingeschaltet ?")
- CALL Warten(23)
- END IF
- LPRINT CHR$(15)
- WIDTH "LPT1:", 136
- LPRINT "Zeitschrift: "; Drucksatz.Zeitschrift;
- LPRINT USING " Ausgabe: ##"; Drucksatz.AusgabeNr;
- LPRINT USING " ## "; Drucksatz.Jahrgang;
- LPRINT "Typ: "; Drucksatz.Artikeltyp
- LPRINT "Stichworte: "; Drucksatz.Hauptstichwort;
- LPRINT TAB(63); Drucksatz.UnterStichwort1;
- LPRINT TAB(100); Drucksatz.Unterstichwort2
- LPRINT "Text: "; Drucksatz.Kurzbeschreibung
- LPRINT CHR$(18)
- WIDTH "LPT1:", 80
- END SUB
-
- SUB ErstelleIndizes
- DIM datsatz AS Artikelsatz
- REDIM Zeitindex(1 TO 500) AS Zeitindextyp
- REDIM Jahrindex(1 TO 500) AS Jahrindextyp
- REDIM Artikelindex(1 TO 500) AS Artikelindextyp
- REDIM Stichindex(1 TO 1500) AS Stichindextyp
- AnzZeitSatz% = 0
- AnzJahrSatz% = 0
- AnzArtikelSatz% = 0
- AnzStichSatz% = 0
- FOR i% = 1 TO AnzSaetze%
- GET #1, i%, datsatz
- CALL BearbeiteIndex(datsatz, i%)
- NEXT i%
- END SUB
-
- SUB IndexSuche (eintrag%, suchbegriff$, aufgabe$, aendern%)
- SHARED Suchoptionen$()
- DIM satz AS Artikelsatz, Findsatz AS Artikelsatz
- DIM position%(8, 2)
- Gefunden% = falsch
- aendern% = falsch
- AnzLoeschSatz% = 0
- Erstdruck = wahr
- SELECT CASE eintrag%
- CASE 1
- Satz.Zeitschrift = suchbegriff$
- zeile% = Binsuch(satz, eintrag%)
- DO WHILE _
- LEFT$(UCASE$(RTRIM$(Zeitindex(zeile%).Zeitschrift)), _
- LEN(RTRIM$(suchbegriff$))) = _
- UCASE$(RTRIM$(suchbegriff$))
- IF Gefunden% = falsch THEN
- Gefunden% = wahr
- CALL BildLoeschen(7, 2, 19, 79, "")
- CALL BildLoeschen(22, 2, 24, 79, "")
- END IF
- GET #1, Zeitindex(zeile%).Satznummer, Findsatz
- CALL Eingabemaske(position%(), Findsatz)
- SELECT CASE aufgabe$
- CASE IS = "Suchen", "EinzelDrucken"
- IF aufgabe$ = "EinzelDrucken" THEN
- CALL JaNeinESC(22, 3, _
- "Diesen Satz drucken (J/N) ? ESC - Abbruch", zeichen$)
- IF UCASE$(zeichen$) = "J" THEN
- CALL EinzelDruck(Findsatz, "Einzel")
- END IF
- IF zeichen$ = "ESC" THEN EXIT DO
- ELSE
- CALL JaNein(22, 3, "Weitersuchen (J/N)", _
- antwort$)
- IF UCASE$(antwort$) = "N" THEN EXIT DO
- END IF
- zeile% = zeile% + 1
- CASE IS = "Aendern"
- CALL JaNeinESC(22, 3, _
- "Diesen Satz ändern (J/N) " + _
- " ESC - Abbruch", ant$)
- IF ant$ = "ESC" THEN EXIT DO
- IF UCASE$(ant$) = "J" THEN
- aendern% = wahr
- CALL ArtikelEingabe(_
- Zeitindex(zeile%).Satznummer, Findsatz, _
- aufgabe$)
- CALL BildLoeschen(22, 2, 24, 79, "")
- END IF
- zeile% = zeile% + 1
- CASE IS = "Loeschen"
- CALL JaNeinESC(22, 3, "Diesen Satz löschen "+ _
- "(J/N) ESC - Abbruch", ant$)
- IF ant$ = "ESC" THEN EXIT DO
- IF UCASE$(ant$) = "J" THEN
- aendern% = wahr
- AnzLoeschSatz% = AnzLoeschSatz% + 1
- Loeschliste%(AnzLoeschSatz%) = _
- Zeitindex(zeile%).Satznummer
- Findsatz.Loeschkennung = -1
- PUT #1, Zeitindex(zeile%).Satznummer, _
- Findsatz
- CALL BildLoeschen(22, 2, 24, 79, "")
- END IF
- zeile% = zeile% + 1
- CASE IS = "ListDrucken"
- IF Erstdruck = wahr THEN
- text$ = "Alle Sätze mit Zeitschrift "
- text$ = text$ + "[" + suchbegriff$ + "]"
- text$ = text$ + " drucken (J/N) ?"
- CALL Meldung(22, 3, text$)
- CALL JaNeinESC(23, 3, "ESC - Abbruch", ant$)
- IF ant$ = "ESC" THEN
- EXIT DO
- ELSE
- CALL EinzelDruck(Findsatz, "Erster")
- END IF
- Erstdruck = falsch
- END IF
- CALL EinzelDruck(Findsatz, "NichtErster")
- zeile% = zeile% + 1
- END SELECT
- LOOP
- CASE 2
- Satz.Jahrgang = VAL(suchbegriff$)
- zeile% = Binsuch(satz, eintrag%)
- DO WHILE Jahrindex(zeile%).Jahrgang = _
- VAL(suchbegriff$)
- IF Gefunden% = falsch THEN
- Gefunden% = wahr
- CALL BildLoeschen(7, 2, 19, 79, "")
- CALL BildLoeschen(22, 2, 24, 79, "")
- END IF
- GET #1, Jahrindex(zeile%).Satznummer, Findsatz
- CALL Eingabemaske(position%(), Findsatz)
- SELECT CASE aufgabe$
- CASE IS = "Suchen", "EinzelDrucken"
- IF aufgabe$ = "EinzelDrucken" THEN
- CALL JaNeinESC(22, 3, "Diesen Satz drucken" +_
- " (J/N) ? ESC - Abbruch", +_
- zeichen$)
- IF UCASE$(zeichen$) = "J" THEN
- CALL EinzelDruck(Findsatz, "Einzel")
- END IF
- IF zeichen$ = "ESC" THEN EXIT DO
- ELSE
- CALL JaNein(22, 3, "Weitersuchen (J/N)", _
- antwort$)
- IF UCASE$(antwort$) = "N" THEN EXIT DO
- END IF
- zeile% = zeile% + 1
- CASE IS = "Aendern"
- CALL JaNeinESC(22, 3, "Diesen Satz ändern "+ _
- "(J/N) ESC - Abbruch", ant$)
- IF ant$ = "ESC" THEN EXIT DO
- IF UCASE$(ant$) = "J" THEN
- aendern% = wahr
- CALL ArtikelEingabe(_
- Jahrindex(zeile%).Satznummer, Findsatz, _
- aufgabe$)
- CALL BildLoeschen(22, 2, 24, 79, "")
- END IF
- zeile% = zeile% + 1
- CASE IS = "Loeschen"
- CALL JaNeinESC(22, 3, "Diesen Satz löschen" + _
- " (J/N) ESC - Abbruch", ant$)
- IF ant$ = "ESC" THEN EXIT DO
- IF UCASE$(ant$) = "J" THEN
- aendern% = wahr
- AnzLoeschSatz% = AnzLoeschSatz% + 1
- Loeschliste%(AnzLoeschSatz%) = _
- Zeitindex(zeile%).Satznummer
- Findsatz.Loeschkennung = -1
- PUT #1, Zeitindex(zeile%).Satznummer, _
- Findsatz
- CALL BildLoeschen(22, 2, 24, 79, "")
- END IF
- zeile% = zeile% + 1
- CASE IS = "ListDrucken"
- IF Erstdruck = wahr THEN
- text$ = "Alle Sätze mit Jahrgang " + "["
- text$ = text$ + suchbegriff$ + "]"
- text$ = text$ + " drucken (J/N) ?"
- CALL Meldung(22, 3, text$)
- CALL JaNeinESC(23, 3, "ESC - Abbruch", ant$)
- IF ant$ = "ESC" THEN
- EXIT DO
- ELSE
- CALL EinzelDruck(Findsatz, "Erster")
- END IF
- Erstdruck = falsch
- END IF
- CALL EinzelDruck(Findsatz, "NichtErster")
- zeile% = zeile% + 1
- END SELECT
- LOOP
- CASE 3
- Satz.Artikeltyp = suchbegriff$
- zeile% = Binsuch(satz, eintrag%)
- DO WHILE UCASE$(RTRIM$(_
- Artikelindex(zeile%).Artikeltyp)) = _
- UCASE$(RTRIM$(suchbegriff$))
- IF Gefunden% = falsch THEN
- Gefunden% = wahr
- CALL BildLoeschen(7, 2, 19, 79, "")
- CALL BildLoeschen(22, 2, 24, 79, "")
- END IF
- GET #1, Artikelindex(zeile%).Satznummer, Findsatz
- CALL Eingabemaske(position%(), Findsatz)
- SELECT CASE aufgabe$
- CASE IS = "Suchen", "EinzelDrucken"
- IF aufgabe$ = "EinzelDrucken" THEN
- CALL JaNeinESC(22, 3, "Diesen Satz drucken" +_
- " (J/N) ? ESC - Abbruch", _
- zeichen$)
- IF UCASE$(zeichen$) = "J" THEN
- CALL EinzelDruck(Findsatz, "Einzel")
- END IF
- IF zeichen$ = "ESC" THEN
- EXIT DO
- ELSE
- CALL JaNein(22, 3, "Weitersuchen (J/N)", _
- antwort$)
- IF UCASE$(antwort$) = "N" THEN EXIT DO
- END IF
- END IF
- zeile% = zeile% + 1
- CASE IS = "Aendern"
- CALL JaNeinESC(22, 3, "Diesen Satz ändern (J/N) ESC - Abbruch", ant$)
- IF ant$ = "ESC" THEN EXIT DO
- IF UCASE$(ant$) = "J" THEN
- aendern% = wahr
- CALL ArtikelEingabe(Artikelindex(_
- zeile%).Satznummer, Findsatz, aufgabe$)
- CALL BildLoeschen(22, 2, 24, 79, "")
- END IF
- zeile% = zeile% + 1
- CASE IS = "Loeschen"
- CALL JaNeinESC(22, 3, "Diesen Satz löschen" + _
- " (J/N) ESC - Abbruch", ant$)
- IF ant$ = "ESC" THEN EXIT DO
- IF UCASE$(ant$) = "J" THEN
- aendern% = wahr
- AnzLoeschSatz% = AnzLoeschSatz% + 1
- Loeschliste%(AnzLoeschSatz%) = _
- Zeitindex(zeile%).Satznummer
- Findsatz.Loeschkennung = -1
- PUT #1, Zeitindex(zeile%).Satznummer, Findsatz
- CALL BildLoeschen(22, 2, 24, 79, "")
- END IF
- zeile% = zeile% + 1
- CASE IS = "ListDrucken"
- IF Erstdruck = wahr THEN
- text$ = "Alle Sätze mit Artikeltyp " + "["
- text$ = text$ + suchbegriff$ + "]"
- text$ = text$ + " drucken (J/N) ?"
- CALL Meldung(22, 3, text$)
- CALL JaNeinESC(23, 3, "ESC - Abbruch", ant$)
- IF ant$ = "ESC" THEN
- EXIT DO
- ELSE
- CALL EinzelDruck(Findsatz, "Erster")
- END IF
- Erstdruck = falsch
- END IF
- CALL EinzelDruck(Findsatz, "NichtErster")
- zeile% = zeile% + 1
- END SELECT
- LOOP
- CASE 4
- Satz.Hauptstichwort = suchbegriff$
- zeile% = Binsuch(satz, eintrag%)
- DO WHILE UCASE$(RTRIM$(_
- Stichindex(zeile%).Stichwort)) = _
- UCASE$(RTRIM$(suchbegriff$))
- IF Gefunden% = falsch THEN
- Gefunden% = wahr
- CALL BildLoeschen(7, 2, 19, 79, "")
- CALL BildLoeschen(22, 2, 24, 79, "")
- END IF
- GET #1, Stichindex(zeile%).Satznummer, Findsatz
- CALL Eingabemaske(position%(), Findsatz)
- SELECT CASE aufgabe$
- CASE IS = "Suchen", "EinzelDrucken"
- IF aufgabe$ = "EinzelDrucken" THEN
- CALL JaNeinESC(22, 3, "Diesen Satz druck" + _
- "en (J/N) ? ESC - Abbr" + _
- "uch", zeichen$)
- IF UCASE$(zeichen$) = "J" THEN
- CALL EinzelDruck(Findsatz, "Einzel")
- END IF
- IF zeichen$ = "ESC" THEN EXIT DO
- ELSE
- CALL JaNein(22, 3, "Weitersuchen (J/N)", _
- antwort$)
- IF UCASE$(antwort$) = "N" THEN EXIT DO
- END IF
- zeile% = zeile% + 1
- CASE IS = "Aendern"
- CALL JaNeinESC(22, 3, "Diesen Satz ändern " + _
- "(J/N) ESC - Abbruch", ant$)
- IF ant$ = "ESC" THEN EXIT DO
- IF UCASE$(ant$) = "J" THEN
- aendern% = wahr
- CALL ArtikelEingabe(Stichindex(_
- zeile%).Satznummer, Findsatz, aufgabe$)
- CALL BildLoeschen(22, 2, 24, 79, "")
- END IF
- zeile% = zeile% + 1
- CASE IS = "Loeschen"
- CALL JaNeinESC(22, 3, "Diesen Satz löschen " + _
- "(J/N) ESC - Abbruch", ant$)
- IF ant$ = "ESC" THEN EXIT DO
- IF UCASE$(ant$) = "J" THEN
- aendern% = wahr
- AnzLoeschSatz% = AnzLoeschSatz% + 1
- Loeschliste%(AnzLoeschSatz%) = _
- Zeitindex(zeile%).Satznummer
- Findsatz.Loeschkennung = -1
- PUT #1, Zeitindex(zeile%).Satznummer, Findsatz
- CALL BildLoeschen(22, 2, 24, 79, "")
- END IF
- zeile% = zeile% + 1
- CASE IS = "ListDrucken"
- IF Erstdruck = wahr THEN
- text$ = "Alle Sätze mit Stichwort " + "["
- text$ = text$ + suchbegriff$ + "]" +
- text$ = text$ + " drucken (J/N) ?"
- CALL Meldung(22, 3, text$)
- CALL JaNeinESC(23, 3, "ESC - Abbruch", ant$)
- IF ant$ = "ESC" THEN
- EXIT DO
- ELSE
- CALL EinzelDruck(Findsatz, "Erster")
- END IF
- Erstdruck = falsch
- END IF
- CALL EinzelDruck(Findsatz, "NichtErster")
- zeile% = zeile% + 1
- END SELECT
- LOOP
- END SELECT
- CALL BildLoeschen(22, 2, 24, 79, "")
- LOCATE 22, 3
- CALL Hell
- IF Gefunden% = falsch THEN
- PRINT Suchoptionen$(eintrag% - 1);
- PRINT " ["; suchbegriff$; "] ist nicht vorhanden !"
- CALL Warten(24)
- CALL Normal
- END IF
- IF (Gefunden% = wahr AND UCASE$(antwort$) = "J") OR _
- (Gefunden% = wahr AND UCASE$(zeichen$) = "N") THEN
- PRINT "Kein weiterer Satz mit ";
- PRINT Suchoptionen$(eintrag% - 1); " ["; suchbegriff$;
- PRINT "] gefunden !"
- CALL Warten(24)
- CALL Normal
- END IF
- END SUB
-
- SUB Loeschen
- DIM satz AS Artikelsatz
- CALL BildLoeschen(7, 2, 19, 79, "")
- CALL BildLoeschen(22, 2, 24, 79, "")
- CALL Meldung(10, 10, "Datensätze L Ö S C H E N ")
- CALL Meldung(15, 10, "Markierte Datensätze löschen(J)" + _
- " - Löschmarken aufheben (N)")
- CALL JaNein(22, 10, "Ihre Wahl (J/N)", ant$)
- CALL BildLoeschen(22, 2, 24, 79, "")
- IF UCASE$(ant$) = "J" THEN
- CALL Meldung(22, 10, "Ich lösche die markierten" + _
- " Datensätze")
- CLOSE
- SHELL "Copy Comp_art.dat Comp_art.bak > nul"
- LOCATE CSRLIN - 1, 1
- SHELL "Del Comp_art.dat > nul"
- LOCATE CSRLIN - 1, 1
- OPEN "Comp_art.dat" FOR RANDOM AS #1 LEN = LEN(satz)
- OPEN "Comp_art.bak" FOR RANDOM AS #2 LEN = LEN(satz)
- J% = 0
- FOR i% = 1 TO AnzSaetze%
- GET #2, i%, satz
- IF Satz.Loeschkennung = 0 THEN
- J% = J% + 1
- PUT #1, J%, satz
- END IF
- NEXT i%
- AnzSaetze% = J%
- CLOSE #2
- CALL ErstelleIndizes
- REDIM Loeschliste(50)
- ELSE
- CALL Meldung(22, 10, "Ich hebe die gesetzten " + _
- "Löschmarken auf")
- Loeschkennung% = 0
- CLOSE #1
- OPEN "Comp_Art.DAT" FOR BINARY AS #1
- FOR i% = 1 TO AnzLoeschSatz%
- PUT #1, (Loeschliste%(i%) - 1) * 203 + 202, _
- Loeschkennung%
- NEXT i%
- CLOSE #1
- OPEN "Comp_Art.dat" FOR RANDOM AS #1 LEN = LEN(satz)
- END IF
- CALL Warten(23)
- CALL BildLoeschen(22, 2, 24, 79, "")
- END SUB
-
- SUB Speichern (aufgabe$, satznummer%, neuereintrag$())
- DIM EintragNeu AS Artikelsatz
- EintragNeu.Zeitschrift = neuereintrag$(1)
- EintragNeu.AusgabeNr = VAL(neuereintrag$(2))
- EintragNeu.Jahrgang = VAL(neuereintrag$(3))
- EintragNeu.Artikeltyp = neuereintrag$(4)
- EintragNeu.Hauptstichwort = neuereintrag$(5)
- EintragNeu.UnterStichwort1 = neuereintrag$(6)
- EintragNeu.Unterstichwort2 = neuereintrag$(7)
- EintragNeu.Kurzbeschreibung = neuereintrag$(8)
- EintragNeu.Loeschkennung = 0
- IF aufgabe$ <> "Aendern" THEN
- satznummer% = AnzSaetze% + 1
- PUT #1, satznummer%, EintragNeu
- AnzSaetze% = AnzSaetze% + 1
- CALL BearbeiteIndex(EintragNeu, satznummer%)
- ELSE
- PUT #1, satznummer%, EintragNeu
- END IF
- FOR i% = LBOUND(neuereintrag$) TO UBOUND(neuereintrag$)
- neuereintrag$(i%) = ""
- NEXT i%
- END SUB
-
- SUB Suchen (wahl%, aufgabe$, aendern%)
- SHARED groesse%()
- taste$ = ""
- vorgabe$ = ""
- CALL BildLoeschen(7, 2, 19, 79, "")
- CALL BildLoeschen(22, 2, 24, 79, "")
- SELECT CASE wahl%
- CASE IS = 1
- text$ = "die gesuchte Zeitschrift "
- gueltig$ = ""
- Eingabelaenge% = groesse%(1)
- CASE IS = 2
- text$ = "den gesuchten Jahrgang "
- gueltig$ = "0123456789"
- Eingabelaenge% = groesse%(3)
- CASE IS = 3
- text$ = "den gesuchten Artikeltyp "
- gueltig$ = ""
- Eingabelaenge% = groesse%(4)
- CASE IS = 4
- text$ = "das gesuchte Stichwort "
- gueltig$ = ""
- Eingabelaenge% = groesse%(5)
- END SELECT
- LOCATE 12, 18
- PRINT "Bitte geben Sie "; text$; "ein: ";
- LOCATE 22, 2
- CALL Hell
- PRINT " Eingabe mit "; CHR$(17);
- PRINT "─┘ abschließen ";
- PRINT " ESC - Abbruch"
- CALL Normal
- DO
- CALL InputNeu(vorgabe$, gueltig$, "C", _
- Eingabelaenge%, 0, 15, 18, taste$)
- IF vorgabe$ = "" AND taste$ = "ENTER" THEN
- LOCATE 23, 3
- PRINT "Bitte einen Suchbegriff eingeben ";
- PRINT "oder mit ESC abbrechen !"
- CALL Warten(24)
- LOCATE 23, 3: PRINT SPACE$(60)
- END IF
- LOOP UNTIL vorgabe$ <> "" AND taste$ = "ENTER" OR _
- taste$ = "ESC"
- IF taste$ = "ENTER" THEN
- CALL IndexSuche(wahl%, vorgabe$, aufgabe$, aendern%)
- END IF
- END SUB
- '*---------------------------------------------------------*
- '* Ende von COMP_MOD.BAS *