home *** CD-ROM | disk | FTP | other *** search
- 'Programminformationen
- '
- 'comp_mod.bas
- '
- 'Programm zur Verwaltung der Menüpunkte des Hauptmodules
- 'Comp_Art.BAS für eine Verwaltung von Artikeln in Computerzeitschriften
-
-
- '----------------------------------------------------------
- 'Definitionen und Deklarationen
-
-
- 'Sub-Deklarationen
-
- DECLARE SUB warten (ZeilenNr%)
- DECLARE SUB JaNein (Zeile%, Spalte%, text$, ant$)
- DECLARE SUB Eingabemaske (Position%(), satz AS ANY)
- DECLARE SUB DateiDurchsuchen (Eintrag%, Suchbegriff$)
- DECLARE SUB Speichern (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$)
-
-
- '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
-
- 'Variablendefinitionen
-
- COMMON /CompMod/ groesse%(), Suchoptionen$()
-
- SUB ArtikelEingabe
-
- SHARED groesse%()
-
- DIM NeuerEintrag$(8)
- DIM LeerSatz AS Artikelsatz
- DIM Eingabeposition%(8, 2)
-
- CALL bildloeschen(7, 2, 19, 79, "")
- CALL bildloeschen(22, 2, 24, 79, "")
- CALL Eingabemaske(Eingabeposition%(), LeerSatz)
- CALL bildloeschen(22, 2, 24, 79, "")
- LOCATE 22, 2
- CALL hell
- PRINT " F1 - Speichern des Artikels ESC - Abbruch"
- CALL normal
- Datenfeld% = 1
- taste$ = ""
- DO
- vorgabe$ = NeuerEintrag$(Datenfeld%)
- IF Datenfeld% = 2 OR Datenfeld% = 3 THEN gueltig$ = "0123456789" ELSE gueltig$ = ""
- 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
- CASE "CURRUNTER"
- IF Datenfeld% = 8 THEN Datenfeld% = 1 ELSE Datenfeld% = Datenfeld% + 1
- CASE "ENTER"
- IF Datenfeld% <> 8 THEN Datenfeld% = Datenfeld% + 1
- CASE "F1"
- IF NeuerEintrag$(1) <> "" THEN
- CALL Speichern(NeuerEintrag$())
- CALL Eingabemaske(Eingabeposition%(), LeerSatz)
- Datenfeld% = 1
- ELSE
- CALL bildloeschen(22, 2, 24, 79, "")
- LOCATE 22, 3
- CALL hell
- PRINT "Ohne Eintrag im Feld [Zeitschrift] kann nicht gespeichert werden !"
- CALL normal
- CALL warten(24)
- CALL bildloeschen(22, 2, 24, 79, "")
- LOCATE 22, 2
- CALL hell
- PRINT " F1 - Speichern des Artikels ESC - Abbruch"
- CALL normal
- Datenfeld% = 1
- END IF
- END SELECT
- LOOP UNTIL taste$ = "ESC"
- END SUB
-
- SUB DateiDurchsuchen (Eintrag%, Suchbegriff$)
-
- SHARED Suchoptionen$()
-
- DIM satz AS Artikelsatz
- DIM Position%(8, 2)
- DIM vergleich$(3)
-
- Gefunden% = 0
- SuchbegriffGross$ = UCASE$(Suchbegriff$)
-
- OPEN "Comp_Art.DAT" FOR RANDOM AS #1 LEN = LEN(satz)
- Satzzahl% = LOF(1) / LEN(satz)
-
- FOR I% = 1 TO Satzzahl%
- GET #1, I%, satz
- SELECT CASE Eintrag%
- CASE IS = 1
- vergleich$(1) = UCASE$(satz.Zeitschrift)
- CASE IS = 2
- vergleich$(1) = STR$(satz.Jahrgang)
- CASE IS = 3
- vergleich$(1) = UCASE$(satz.HauptStichwort)
- vergleich$(2) = UCASE$(satz.UnterStichwort1)
- vergleich$(3) = UCASE$(satz.UnterStichwort2)
- CASE IS = 4
- vergleich$(1) = UCASE$(satz.ArtikelTyp)
- END SELECT
- FOR K% = 1 TO 3
- IF INSTR(vergleich$(K%), SuchbegriffGross$) <> 0 THEN
- IF Gefunden% = 0 THEN
- CALL bildloeschen(7, 2, 19, 79, "")
- CALL bildloeschen(22, 2, 24, 79, "")
- END IF
- CALL Eingabemaske(Position%(), satz)
- CALL JaNein(22, 3, "Weitersuchen (J/N)", antwort$)
- Gefunden% = 1
- END IF
- IF Eintrag% <> 3 THEN EXIT FOR
- NEXT K%
- IF UCASE$(antwort$) = "N" THEN EXIT FOR
- NEXT I%
- CLOSE #1
- CALL bildloeschen(22, 2, 24, 79, "")
- LOCATE 22, 3
- CALL hell
- IF Gefunden% = 0 THEN
- PRINT Suchoptionen$(Eintrag% - 1); " ["; Suchbegriff$; "] ist nicht vorhanden !"
- END IF
- IF Gefunden% = 1 AND UCASE$(antwort$) = "J" THEN
- PRINT "Kein weiterer Satz mit ";
- PRINT Suchoptionen$(Eintrag% - 1); " ["; Suchbegriff$; "] gefunden !"
- END IF
- CALL warten(24)
- CALL normal
- 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)
- LOCATE Position%(3, 1), Position%(3, 2)
- IF STR$(satz.Jahrgang) = " 0" THEN PRINT SPACE$(groesse%(3)) ELSE PRINT RIGHT$(STR$(satz.Jahrgang), 2)
- 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 Speichern (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
-
- OPEN "Comp_Art.DAT" FOR RANDOM AS #1 LEN = LEN(EintragNeu)
- Satzzahl% = LOF(1) / LEN(EintragNeu)
- PUT #1, Satzzahl% + 1, EintragNeu
- CLOSE #1
-
- FOR I% = LBOUND(NeuerEintrag$) TO UBOUND(NeuerEintrag$)
- NeuerEintrag$(I%) = ""
- NEXT I%
- END SUB
-
- SUB Suchen (wahl%)
-
- 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$ = "das gesuchte Stichwort "
- gueltig$ = ""
- Eingabelaenge% = groesse%(5)
- CASE IS = 4
- text$ = "den gesuchten Artikeltyp "
- gueltig$ = ""
- Eingabelaenge% = groesse%(4)
- END SELECT
-
- LOCATE 12, 18
- PRINT "Bitte geben Sie "; text$; "ein: ";
- LOCATE 22, 2
- CALL hell
- PRINT " Eingabe mit "; CHR$(17); "─┘ abschliessen ";
- 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 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 DateiDurchsuchen(wahl%, vorgabe$)
- END SUB
-
-