home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / 1990 / 12 / einsteig / comp_mod.bas < prev    next >
Encoding:
BASIC Source File  |  1990-09-12  |  8.7 KB  |  263 lines

  1. 'Programminformationen
  2. '
  3. 'comp_mod.bas
  4. '
  5. 'Programm zur Verwaltung der Menüpunkte des Hauptmodules
  6. 'Comp_Art.BAS für eine Verwaltung von Artikeln in Computerzeitschriften
  7.  
  8.  
  9. '----------------------------------------------------------
  10. 'Definitionen und Deklarationen
  11.  
  12.  
  13. 'Sub-Deklarationen
  14.  
  15. DECLARE SUB warten (ZeilenNr%)
  16. DECLARE SUB JaNein (Zeile%, Spalte%, text$, ant$)
  17. DECLARE SUB Eingabemaske (Position%(), satz AS ANY)
  18. DECLARE SUB DateiDurchsuchen (Eintrag%, Suchbegriff$)
  19. DECLARE SUB Speichern (NeuerEintrag$())
  20. DECLARE SUB hell ()
  21. DECLARE SUB normal ()
  22. DECLARE SUB invers ()
  23. DECLARE SUB InputNeu (vorgabe$, gueltig$, typ$, laenge%, nachkomma%, Zeile%, Spalte%, taste$)
  24. DECLARE SUB bildloeschen (ZeileLinksOben%, SpalteLinksOben%, ZeileRechtsUnten%, SpalteRechtsUnten%, LoeschZeichen$)
  25.  
  26.  
  27. 'Datensatzdefinitionen
  28.  
  29. TYPE Artikelsatz
  30.     Zeitschrift AS STRING * 20
  31.     AusgabeNr AS INTEGER
  32.     Jahrgang AS INTEGER
  33.     ArtikelTyp AS STRING * 10
  34.     HauptStichwort AS STRING * 30
  35.     UnterStichwort1 AS STRING * 30
  36.     UnterStichwort2 AS STRING * 30
  37.     Kurzbeschreibung AS STRING * 77
  38.     Loeschkennung AS INTEGER
  39. END TYPE
  40.  
  41. 'Variablendefinitionen
  42.  
  43. COMMON /CompMod/ groesse%(), Suchoptionen$()
  44.  
  45. SUB ArtikelEingabe
  46.  
  47.     SHARED groesse%()
  48.    
  49.     DIM NeuerEintrag$(8)
  50.     DIM LeerSatz AS Artikelsatz
  51.     DIM Eingabeposition%(8, 2)
  52.    
  53.     CALL bildloeschen(7, 2, 19, 79, "")
  54.     CALL bildloeschen(22, 2, 24, 79, "")
  55.     CALL Eingabemaske(Eingabeposition%(), LeerSatz)
  56.     CALL bildloeschen(22, 2, 24, 79, "")
  57.     LOCATE 22, 2
  58.     CALL hell
  59.     PRINT "          F1 - Speichern des Artikels       ESC - Abbruch"
  60.     CALL normal
  61.     Datenfeld% = 1
  62.     taste$ = ""
  63.     DO
  64.        vorgabe$ = NeuerEintrag$(Datenfeld%)
  65.        IF Datenfeld% = 2 OR Datenfeld% = 3 THEN gueltig$ = "0123456789" ELSE gueltig$ = ""
  66.        CALL InputNeu(vorgabe$, gueltig$, "C", groesse%(Datenfeld%), 0, Eingabeposition%(Datenfeld%, 1), Eingabeposition%(Datenfeld%, 2), taste$)
  67.        NeuerEintrag$(Datenfeld%) = vorgabe$
  68.        SELECT CASE taste$
  69.        CASE "CURHOCH"
  70.             IF Datenfeld% = 1 THEN Datenfeld% = 8 ELSE Datenfeld% = Datenfeld% - 1
  71.        CASE "CURRUNTER"
  72.             IF Datenfeld% = 8 THEN Datenfeld% = 1 ELSE Datenfeld% = Datenfeld% + 1
  73.        CASE "ENTER"
  74.             IF Datenfeld% <> 8 THEN Datenfeld% = Datenfeld% + 1
  75.        CASE "F1"
  76.             IF NeuerEintrag$(1) <> "" THEN
  77.                CALL Speichern(NeuerEintrag$())
  78.                CALL Eingabemaske(Eingabeposition%(), LeerSatz)
  79.                Datenfeld% = 1
  80.             ELSE
  81.                CALL bildloeschen(22, 2, 24, 79, "")
  82.                LOCATE 22, 3
  83.                CALL hell
  84.                PRINT "Ohne Eintrag im Feld [Zeitschrift] kann nicht gespeichert werden !"
  85.                CALL normal
  86.                CALL warten(24)
  87.                CALL bildloeschen(22, 2, 24, 79, "")
  88.                LOCATE 22, 2
  89.                CALL hell
  90.                PRINT "          F1 - Speichern des Artikels       ESC - Abbruch"
  91.                CALL normal
  92.                Datenfeld% = 1
  93.             END IF
  94.        END SELECT
  95.     LOOP UNTIL taste$ = "ESC"
  96. END SUB
  97.  
  98. SUB DateiDurchsuchen (Eintrag%, Suchbegriff$)
  99.    
  100.     SHARED Suchoptionen$()
  101.    
  102.     DIM satz AS Artikelsatz
  103.     DIM Position%(8, 2)
  104.     DIM vergleich$(3)
  105.    
  106.     Gefunden% = 0
  107.     SuchbegriffGross$ = UCASE$(Suchbegriff$)
  108.  
  109.     OPEN "Comp_Art.DAT" FOR RANDOM AS #1 LEN = LEN(satz)
  110.     Satzzahl% = LOF(1) / LEN(satz)
  111.    
  112.     FOR I% = 1 TO Satzzahl%
  113.         GET #1, I%, satz
  114.         SELECT CASE Eintrag%
  115.         CASE IS = 1
  116.             vergleich$(1) = UCASE$(satz.Zeitschrift)
  117.         CASE IS = 2
  118.             vergleich$(1) = STR$(satz.Jahrgang)
  119.         CASE IS = 3
  120.             vergleich$(1) = UCASE$(satz.HauptStichwort)
  121.             vergleich$(2) = UCASE$(satz.UnterStichwort1)
  122.             vergleich$(3) = UCASE$(satz.UnterStichwort2)
  123.         CASE IS = 4
  124.             vergleich$(1) = UCASE$(satz.ArtikelTyp)
  125.         END SELECT
  126.         FOR K% = 1 TO 3
  127.            IF INSTR(vergleich$(K%), SuchbegriffGross$) <> 0 THEN
  128.               IF Gefunden% = 0 THEN
  129.                  CALL bildloeschen(7, 2, 19, 79, "")
  130.                  CALL bildloeschen(22, 2, 24, 79, "")
  131.               END IF
  132.               CALL Eingabemaske(Position%(), satz)
  133.               CALL JaNein(22, 3, "Weitersuchen  (J/N)", antwort$)
  134.               Gefunden% = 1
  135.            END IF
  136.            IF Eintrag% <> 3 THEN EXIT FOR
  137.         NEXT K%
  138.         IF UCASE$(antwort$) = "N" THEN EXIT FOR
  139.     NEXT I%
  140.     CLOSE #1
  141.     CALL bildloeschen(22, 2, 24, 79, "")
  142.     LOCATE 22, 3
  143.     CALL hell
  144.     IF Gefunden% = 0 THEN
  145.        PRINT Suchoptionen$(Eintrag% - 1); " ["; Suchbegriff$; "] ist nicht vorhanden !"
  146.     END IF
  147.     IF Gefunden% = 1 AND UCASE$(antwort$) = "J" THEN
  148.        PRINT "Kein weiterer Satz mit ";
  149.        PRINT Suchoptionen$(Eintrag% - 1); " ["; Suchbegriff$; "] gefunden !"
  150.     END IF
  151.     CALL warten(24)
  152.     CALL normal
  153. END SUB
  154.  
  155. SUB Eingabemaske (Position%(), satz AS Artikelsatz)
  156.    
  157.     SHARED groesse%()
  158.  
  159.     Position%(1, 1) = 7:        Position%(1, 2) = 24
  160.     Position%(2, 1) = 9:        Position%(2, 2) = 24
  161.     Position%(3, 1) = 11:       Position%(3, 2) = 24
  162.     Position%(4, 1) = 13:       Position%(4, 2) = 24
  163.     Position%(5, 1) = 15:       Position%(5, 2) = 24
  164.     Position%(6, 1) = 16:       Position%(6, 2) = 24
  165.     Position%(7, 1) = 17:       Position%(7, 2) = 24
  166.     Position%(8, 1) = 19:       Position%(8, 2) = 3
  167.    
  168.     LOCATE 7, 3: PRINT "Zeitschrift:         "
  169.     LOCATE 9, 3: PRINT "Nummer der Ausgabe:  "
  170.     LOCATE 11, 3: PRINT "Jahrgang:            "
  171.     LOCATE 13, 3: PRINT "Artikeltyp:          "
  172.     LOCATE 15, 3: PRINT "Stichwort 1:         "
  173.     LOCATE 16, 3: PRINT "Stichwort 2:         "
  174.     LOCATE 17, 3: PRINT "Stichwort 3:         "
  175.     LOCATE 18, 3: PRINT "Kurzbeschreibung:    "
  176.  
  177.     CALL invers
  178.     LOCATE Position%(1, 1), Position%(1, 2): PRINT satz.Zeitschrift
  179.     LOCATE Position%(2, 1), Position%(2, 2)
  180.     IF STR$(satz.AusgabeNr) = " 0" THEN PRINT SPACE$(groesse%(2)) ELSE PRINT RIGHT$(STR$(satz.AusgabeNr), 2)
  181.     LOCATE Position%(3, 1), Position%(3, 2)
  182.     IF STR$(satz.Jahrgang) = " 0" THEN PRINT SPACE$(groesse%(3)) ELSE PRINT RIGHT$(STR$(satz.Jahrgang), 2)
  183.     LOCATE Position%(4, 1), Position%(4, 2): PRINT satz.ArtikelTyp
  184.     LOCATE Position%(5, 1), Position%(5, 2): PRINT satz.HauptStichwort
  185.     LOCATE Position%(6, 1), Position%(6, 2): PRINT satz.UnterStichwort1
  186.     LOCATE Position%(7, 1), Position%(7, 2): PRINT satz.UnterStichwort2
  187.     LOCATE Position%(8, 1), Position%(8, 2): PRINT satz.Kurzbeschreibung
  188.     CALL normal
  189. END SUB
  190.  
  191. SUB Speichern (NeuerEintrag$())
  192.    
  193.     DIM EintragNeu AS Artikelsatz
  194.  
  195.     EintragNeu.Zeitschrift = NeuerEintrag$(1)
  196.     EintragNeu.AusgabeNr = VAL(NeuerEintrag$(2))
  197.     EintragNeu.Jahrgang = VAL(NeuerEintrag$(3))
  198.     EintragNeu.ArtikelTyp = NeuerEintrag$(4)
  199.     EintragNeu.HauptStichwort = NeuerEintrag$(5)
  200.     EintragNeu.UnterStichwort1 = NeuerEintrag$(6)
  201.     EintragNeu.UnterStichwort2 = NeuerEintrag$(7)
  202.     EintragNeu.Kurzbeschreibung = NeuerEintrag$(8)
  203.     EintragNeu.Loeschkennung = 0
  204.  
  205.     OPEN "Comp_Art.DAT" FOR RANDOM AS #1 LEN = LEN(EintragNeu)
  206.     Satzzahl% = LOF(1) / LEN(EintragNeu)
  207.     PUT #1, Satzzahl% + 1, EintragNeu
  208.     CLOSE #1
  209.    
  210.     FOR I% = LBOUND(NeuerEintrag$) TO UBOUND(NeuerEintrag$)
  211.         NeuerEintrag$(I%) = ""
  212.     NEXT I%
  213. END SUB
  214.  
  215. SUB Suchen (wahl%)
  216.    
  217.     SHARED groesse%()
  218.    
  219.     taste$ = ""
  220.     vorgabe$ = ""
  221.    
  222.     CALL bildloeschen(7, 2, 19, 79, "")
  223.     CALL bildloeschen(22, 2, 24, 79, "")
  224.    
  225.     SELECT CASE wahl%
  226.     CASE IS = 1
  227.        text$ = "die gesuchte Zeitschrift "
  228.        gueltig$ = ""
  229.        Eingabelaenge% = groesse%(1)
  230.     CASE IS = 2
  231.        text$ = "den gesuchten Jahrgang "
  232.        gueltig$ = "0123456789"
  233.        Eingabelaenge% = groesse%(3)
  234.     CASE IS = 3
  235.        text$ = "das gesuchte Stichwort "
  236.        gueltig$ = ""
  237.        Eingabelaenge% = groesse%(5)
  238.     CASE IS = 4
  239.        text$ = "den gesuchten Artikeltyp "
  240.        gueltig$ = ""
  241.        Eingabelaenge% = groesse%(4)
  242.     END SELECT
  243.  
  244.     LOCATE 12, 18
  245.     PRINT "Bitte geben Sie "; text$; "ein: ";
  246.     LOCATE 22, 2
  247.     CALL hell
  248.     PRINT "              Eingabe mit "; CHR$(17); "─┘ abschliessen    ";
  249.     PRINT "     ESC - Abbruch"
  250.     CALL normal
  251.     DO
  252.       CALL InputNeu(vorgabe$, gueltig$, "C", Eingabelaenge%, 0, 15, 18, taste$)
  253.       IF vorgabe$ = "" AND taste$ = "ENTER" THEN
  254.          LOCATE 23, 3
  255.          PRINT "Bitte einen Suchbegriff eingeben oder mit ESC abbrechen !"
  256.          CALL warten(24)
  257.          LOCATE 23, 3: PRINT SPACE$(60)
  258.       END IF
  259.     LOOP UNTIL vorgabe$ <> "" AND taste$ = "ENTER" OR taste$ = "ESC"
  260.     IF taste$ = "ENTER" THEN CALL DateiDurchsuchen(wahl%, vorgabe$)
  261. END SUB
  262.  
  263.