home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / 1991 / 03 / einsteig / comp_mod.bas < prev    next >
Encoding:
BASIC Source File  |  1991-02-17  |  32.2 KB  |  955 lines

  1. '*---------------------------------------------------------*
  2. '*                        COMP_MOD.BAS                     *
  3. '*       Modul für COMP_ART.BAS (Quick-Basic V. 4.XX)      *
  4. '*          (C) 1991 Th.Frins, W.Kehr & TOOLBOX            *
  5. '*---------------------------------------------------------*
  6.  
  7. '*-------------- Definitionen und Deklarationen -----------*
  8.  
  9. '* Prozedur-Deklarationen:
  10.  
  11. DECLARE SUB Warten (zeilennr%)
  12. DECLARE SUB JaNein (zeile%, spalte%, text$, ant$)
  13. DECLARE SUB Eingabemaske (position%(), satz AS ANY)
  14. DECLARE SUB IndexSuche (eintrag%, suchbegriff$, aufgabe$, _
  15.         aendern%)
  16. DECLARE SUB Speichern (aufgabe$, satznummer%, _
  17.         neuereintrag$())
  18. DECLARE SUB Hell ()
  19. DECLARE SUB Normal ()
  20. DECLARE SUB Invers ()
  21. DECLARE SUB InputNeu (vorgabe$, gueltig$, typ$, laenge%, _
  22.         nachkomma%, zeile%, spalte%, taste$)
  23. DECLARE SUB BildLoeschen (zeilelinksoben%, _
  24.         spaltelinksoben%, zeilerechtsunten%, spalterechtsunten%, _
  25.         loeschzeichen$)
  26. DECLARE SUB BearbeiteIndex (datsatz AS ANY, speichersatz%)
  27. DECLARE SUB Einfuegen (datsatz AS ANY, i%, satznummer%, n%)
  28. DECLARE SUB EinzelDruck (drucksatz AS ANY, d$)
  29. DECLARE SUB JaNeinESC (zeile%, spalte%, text$, ant$)
  30. DECLARE SUB Druck (wahl%)
  31. DECLARE SUB Speicherindizes ()
  32. DECLARE SUB ErstelleIndizes ()
  33. DECLARE SUB ArtikelEingabe (satznummer%, satz AS ANY, _
  34.         aufgabe$)
  35. DECLARE SUB Meldung (zeile%, spalte%, text$)
  36.  
  37. '* Funktionsdeklarationen:
  38.  
  39. DECLARE FUNCTION BinSuch% (datsatz AS ANY, n%)
  40.  
  41. '* Konstantendefinitionen:
  42.  
  43. CONST leer = "                                                                              "
  44. CONST wahr = -1
  45. CONST falsch = NOT wahr
  46.  
  47. '* Datensatzdefinitionen:
  48.  
  49. TYPE Artikelsatz
  50.   Zeitschrift AS STRING * 20
  51.   AusgabeNr AS INTEGER
  52.   Jahrgang AS INTEGER
  53.   Artikeltyp AS STRING * 10
  54.   Hauptstichwort AS STRING * 30
  55.   UnterStichwort1 AS STRING * 30
  56.   Unterstichwort2 AS STRING * 30
  57.   Kurzbeschreibung AS STRING * 77
  58.   Loeschkennung AS INTEGER
  59. END TYPE
  60.  
  61. TYPE Zeitindextyp
  62.   Zeitschrift AS STRING * 30
  63.   Satznummer AS INTEGER
  64. END TYPE
  65.  
  66. TYPE Jahrindextyp
  67.   Jahrgang AS INTEGER
  68.   Satznummer AS INTEGER
  69. END TYPE
  70.  
  71. TYPE Artikelindextyp
  72.   Artikeltyp AS STRING * 10
  73.   Satznummer AS INTEGER
  74. END TYPE
  75.  
  76. TYPE Stichindextyp
  77.   Stichwort AS STRING * 30
  78.   Satznummer AS INTEGER
  79. END TYPE
  80.  
  81.  
  82. '* Variablendefinitionen:
  83.  
  84. COMMON /CompMod/ groesse%(), Suchoptionen$()
  85. COMMON SHARED Zeitindex() AS Zeitindextyp
  86. COMMON SHARED Jahrindex() AS Jahrindextyp
  87. COMMON SHARED Stichindex() AS Stichindextyp
  88. COMMON SHARED Artikelindex() AS Artikelindextyp
  89. COMMON SHARED Loeschliste%(), AnzSaetze%, AnzLoeschSatz%
  90. DIM SHARED AnzZeitSatz%, AnzJahrSatz%, AnzArtikelSatz%
  91. DIM SHARED AnzStichSatz%
  92.  
  93. REM $DYNAMIC
  94. DIM SHARED Loeschliste%(50)
  95. REM $STATIC
  96.  
  97. SUB ArtikelEingabe (satznummer%, satz AS Artikelsatz, _
  98.                     aufgabe$)
  99. SHARED groesse%()
  100. DIM neuereintrag$(8)
  101. DIM eingabeposition%(8, 2)
  102.   IF aufgabe$ = "Aendern" THEN
  103.     neuereintrag$(1) = Satz.Zeitschrift
  104.     IF STR$(Satz.AusgabeNr) = " 0" THEN
  105.       neuereintrag$(2) = SPACE$(groesse%(2))
  106.     ELSE
  107.       neuereintrag$(2) = RIGHT$(STR$(Satz.AusgabeNr), 2)
  108.     END IF
  109.     IF STR$(Satz.Jahrgang) = " 0" THEN
  110.       neuereintrag$(3) = SPACE$(groesse%(3))
  111.     ELSE
  112.       neuereintrag$(3) = RIGHT$(STR$(Satz.Jahrgang), 2)
  113.     END IF
  114.     neuereintrag$(4) = Satz.Artikeltyp
  115.     neuereintrag$(5) = Satz.Hauptstichwort
  116.     neuereintrag$(6) = Satz.UnterStichwort1
  117.     neuereintrag$(7) = Satz.Unterstichwort2
  118.     neuereintrag$(8) = Satz.Kurzbeschreibung
  119.   END IF
  120.   CALL BildLoeschen(7, 2, 19, 79, "")
  121.   CALL BildLoeschen(22, 2, 24, 79, "")
  122.   CALL Eingabemaske(eingabeposition%(), satz)
  123.   CALL BildLoeschen(22, 2, 24, 79, "")
  124.   LOCATE 22, 2
  125.   CALL Hell
  126.   PRINT "          F1 - Speichern des Artikels       ";
  127.   PRINT "ESC - Abbruch"
  128.   CALL Normal
  129.   Datenfeld% = 1
  130.   taste$ = ""
  131.   DO
  132.     vorgabe$ = RTRIM$(neuereintrag$(Datenfeld%))
  133.     IF Datenfeld% = 2 OR Datenfeld% = 3 THEN
  134.       gueltig$ = "0123456789"
  135.     ELSE
  136.       gueltig$ = ""
  137.     END IF
  138.     CALL InputNeu(vorgabe$, gueltig$, "C", _
  139.          groesse%(Datenfeld%), 0, _
  140.          eingabeposition%(Datenfeld%, 1), _
  141.          eingabeposition%(Datenfeld%, 2), taste$)
  142.     neuereintrag$(Datenfeld%) = vorgabe$
  143.     SELECT CASE taste$
  144.       CASE "CURHOCH"
  145.         IF Datenfeld% = 1 THEN
  146.           Datenfeld% = 8
  147.         ELSE
  148.           Datenfeld% = Datenfeld% - 1
  149.         END IF
  150.       CASE "CURRUNTER"
  151.         IF Datenfeld% = 8 THEN
  152.           Datenfeld% = 1
  153.         ELSE
  154.           Datenfeld% = Datenfeld% + 1
  155.         END IF
  156.       CASE "ENTER"
  157.         IF Datenfeld% <> 8 THEN Datenfeld% = Datenfeld% + 1
  158.       CASE "F1"
  159.         IF neuereintrag$(1) <> "" THEN
  160.           CALL Speichern(aufgabe$, satznummer%, _
  161.                neuereintrag$())
  162.           IF aufgabe$ = "Aendern" THEN EXIT DO
  163.           CALL Eingabemaske(eingabeposition%(), satz)
  164.           Datenfeld% = 1
  165.         ELSE
  166.           CALL BildLoeschen(22, 2, 24, 79, "")
  167.           LOCATE 22, 3
  168.           CALL Hell
  169.           PRINT "Ohne Eintrag im Feld [Zeitschrift] kann";
  170.           PRINT " nicht gespeichert werden !"
  171.           CALL Normal
  172.           CALL Warten(24)
  173.           CALL BildLoeschen(22, 2, 24, 79, "")
  174.           LOCATE 22, 2
  175.           CALL Hell
  176.           PRINT "          F1 - Speichern des Artikels";
  177.           PRINT "       ESC - Abbruch"
  178.           CALL Normal
  179.           Datenfeld% = 1
  180.         END IF
  181.     END SELECT
  182.   LOOP UNTIL taste$ = "ESC"
  183. END SUB
  184.  
  185. SUB BearbeiteIndex (datsatz AS Artikelsatz, speichersatz%)
  186.   zeile% = BinSuch%(datsatz, 1)
  187.   CALL Einfuegen(datsatz, speichersatz%, zeile%, 1)
  188.   IF Datsatz.Jahrgang <> 0 THEN
  189.     zeile% = BinSuch%(datsatz, 2)
  190.     CALL Einfuegen(datsatz, speichersatz%, zeile%, 2)
  191.   END IF
  192.   IF RTRIM$(Datsatz.Artikeltyp) <> "" THEN
  193.     zeile% = BinSuch%(datsatz, 3)
  194.     CALL Einfuegen(datsatz, speichersatz%, zeile%, 3)
  195.   END IF
  196.   IF RTRIM$(Datsatz.Hauptstichwort) <> "" THEN
  197.     zeile% = BinSuch%(datsatz, 4)
  198.     CALL Einfuegen(datsatz, speichersatz%, zeile%, 4)
  199.   END IF
  200.   IF RTRIM$(Datsatz.UnterStichwort1) <> "" THEN
  201.     zeile% = BinSuch%(datsatz, 5)
  202.     CALL Einfuegen(datsatz, speichersatz%, zeile%, 5)
  203.   END IF
  204.   IF RTRIM$(Datsatz.Unterstichwort2) <> "" THEN
  205.     zeile% = BinSuch%(datsatz, 6)
  206.     CALL Einfuegen(datsatz, speichersatz%, zeile%, 6)
  207.   END IF
  208. END SUB
  209.  
  210. FUNCTION BinSuch% (datsatz AS Artikelsatz, n%)
  211.   SELECT CASE n%
  212.     CASE 1
  213.       Start% = LBOUND(Zeitindex)
  214.       Ende% = LBOUND(Zeitindex) + AnzZeitSatz% - 1
  215.       WHILE Ende% >= Start%
  216.         Mitte% = INT((Ende% + Start%) / 2)
  217.         IF UCASE$(RTRIM$(Datsatz.Zeitschrift)) > _
  218.         LEFT$(UCASE$(RTRIM$(Zeitindex(Mitte%).Zeitschrift)), _
  219.         LEN(RTRIM$(Datsatz.Zeitschrift))) THEN
  220.           Start% = Mitte% + 1
  221.         ELSE
  222.           Ende% = Mitte% - 1
  223.         END IF
  224.       WEND
  225.     CASE 2
  226.       Start% = LBOUND(Jahrindex)
  227.       Ende% = LBOUND(Jahrindex) + AnzJahrSatz% - 1
  228.       WHILE Ende% >= Start%
  229.         Mitte% = INT((Ende% + Start%) / 2)
  230.         IF Datsatz.Jahrgang>Jahrindex(Mitte%).Jahrgang THEN
  231.           Start% = Mitte% + 1
  232.         ELSE
  233.           Ende% = Mitte% - 1
  234.         END IF
  235.       WEND
  236.     CASE 3
  237.       Start% = LBOUND(Artikelindex)
  238.       Ende% = LBOUND(Artikelindex) + AnzArtikelSatz% - 1
  239.       WHILE Ende% >= Start%
  240.         Mitte% = INT((Ende% + Start%) / 2)
  241.         IF UCASE$(RTRIM$(Datsatz.Artikeltyp)) > _
  242.            UCASE$(RTRIM$(Artikelindex(Mitte%).Artikeltyp)) _
  243.            THEN
  244.           Start% = Mitte% + 1
  245.         ELSE
  246.           Ende% = Mitte% - 1
  247.         END IF
  248.       WEND
  249.     CASE 4
  250.       Start% = LBOUND(Stichindex)
  251.       Ende% = LBOUND(Stichindex) + AnzStichSatz% - 1
  252.       WHILE Ende% >= Start%
  253.         Mitte% = INT((Ende% + Start%) / 2)
  254.         IF UCASE$(RTRIM$(Datsatz.Hauptstichwort)) > _
  255.            UCASE$(RTRIM$(Stichindex(Mitte%).Stichwort)) THEN
  256.           Start% = Mitte% + 1
  257.         ELSE
  258.           Ende% = Mitte% - 1
  259.         END IF
  260.       WEND
  261.     CASE 5
  262.       Start% = LBOUND(Stichindex)
  263.       Ende% = LBOUND(Stichindex) + AnzStichSatz% - 1
  264.       WHILE Ende% >= Start%
  265.         Mitte% = INT((Ende% + Start%) / 2)
  266.         IF UCASE$(RTRIM$(Datsatz.UnterStichwort1)) > _
  267.            UCASE$(RTRIM$(Stichindex(Mitte%).Stichwort)) THEN
  268.           Start% = Mitte% + 1
  269.         ELSE
  270.           Ende% = Mitte% - 1
  271.         END IF
  272.       WEND
  273.     CASE 6
  274.       Start% = LBOUND(Stichindex)
  275.       Ende% = LBOUND(Stichindex) + AnzStichSatz% - 1
  276.       WHILE Ende% >= Start%
  277.         Mitte% = INT((Ende% + Start%) / 2)
  278.         IF UCASE$(RTRIM$(Datsatz.Unterstichwort2)) > _
  279.            UCASE$(RTRIM$(Stichindex(Mitte%).Stichwort)) THEN
  280.           Start% = Mitte% + 1
  281.         ELSE
  282.           Ende% = Mitte% - 1
  283.         END IF
  284.       WEND
  285.   END SELECT
  286.   BinSuch% = Start%
  287. END FUNCTION
  288.  
  289. SUB DosBefehl
  290.   CALL BildLoeschen(7, 2, 19, 79, "")
  291.   CALL BildLoeschen(22, 2, 24, 79, "")
  292.   DEF SEG = &H40
  293.     check% = PEEK(&H49)
  294.   DEF SEG
  295.   IF check% = 7 THEN DEF SEG = &HB000 ELSE DEF SEG = &HB800
  296.   BSAVE "\BSchirm.sik", 0, 4000
  297.   CALL BildLoeschen(7, 2, 19, 79, "")
  298.   DO
  299.     CALL Meldung(10, 5, _
  300.                 "Geben Sie einen gültigen DOS-Befehl ein: ")
  301.     LOCATE 11, 5: INPUT "", dos$
  302.   LOOP WHILE dos$ = ""
  303.   CLS
  304.   SHELL dos$
  305.   SHELL "pause"
  306.   BLOAD "\BSchirm.sik"
  307.   SHELL "del \BSchirm.sik > nul"
  308.   LOCATE CSRLIN - 1, 1
  309. END SUB
  310.  
  311. SUB DosShell
  312.   CALL BildLoeschen(7, 2, 19, 79, "")
  313.   CALL BildLoeschen(22, 2, 24, 79, "")
  314.   DEF SEG = &H40
  315.     check% = PEEK(&H49)
  316.   DEF SEG
  317.   IF check% = 7 THEN DEF SEG = &HB000 ELSE DEF SEG = &HB800
  318.   BSAVE "\BSchirm.sik", 0, 4000
  319.   CALL BildLoeschen(7, 2, 19, 79, "")
  320.   CLS
  321.   p$ = ENVIRON$("PROMPT")
  322.   ENVIRON "PROMPT=Zurück EXIT>"
  323.   SHELL
  324.   ENVIRON "PROMPT=" + p$
  325.   BLOAD "\BSchirm.sik"
  326.   SHELL "del \BSchirm.sik >nul"
  327.   LOCATE CSRLIN - 1, 1
  328. END SUB
  329.  
  330. SUB Druck (wahl%)
  331. DIM drucksatz AS Artikelsatz
  332.   CALL BildLoeschen(7, 2, 19, 79, "")
  333.   CALL BildLoeschen(22, 2, 24, 79, "")
  334.   text$ = "Es sind " + STR$(AnzZeitSatz%)
  335.   text$ = text$ + " Datensätze vorhanden"
  336.   CALL Meldung(10, 25, text$)
  337.   CALL JaNeinESC(22, 5, "Druck in Schmalschrift(J/N)                        ESC - Abbruch", ant$)
  338.   IF ant$ <> "ESC" THEN
  339.     CALL BildLoeschen(7, 2, 19, 79, "")
  340.     CALL BildLoeschen(22, 2, 24, 79, "")
  341.     CALL Meldung(22, 3, "Ist ihr Drucker eingeschaltet ?")
  342.     CALL Warten(23)
  343.     IF UCASE$(ant$) = "J" THEN
  344.       LPRINT CHR$(15)
  345.       WIDTH "LPT1:", 136
  346.       FOR i% = LBOUND(Zeitindex) TO LBOUND(Zeitindex) + _
  347.                                     AnzZeitSatz% - 1
  348.         GET #1, Zeitindex(i%).Satznummer, drucksatz
  349.         IF i% / 22 = INT(i% / 22) THEN LPRINT CHR$(12)
  350.         LPRINT USING "Nummer: ###"; i%;
  351.         LPRINT " Zeitschrift: "; Drucksatz.Zeitschrift;
  352.         LPRINT USING " Ausgabe: ##"; Drucksatz.AusgabeNr;
  353.         LPRINT USING " ## "; Drucksatz.Jahrgang;
  354.         LPRINT "Typ: "; Drucksatz.Artikeltyp
  355.         LPRINT TAB(13); "Stichworte: ";
  356.         LPRINT Drucksatz.Hauptstichwort;
  357.         LPRINT TAB(63); Drucksatz.UnterStichwort1;
  358.         LPRINT TAB(100); Drucksatz.Unterstichwort2
  359.         LPRINT TAB(13); "Text: "; Drucksatz.Kurzbeschreibung
  360.       NEXT i%
  361.       LPRINT CHR$(18)
  362.       WIDTH "LPT1:", 80
  363.     ELSE
  364.       CALL BildLoeschen(22, 2, 24, 79, "")
  365.       CALL Meldung(22, 3, "Normaldruck ist NICHT aktiv")
  366.       CALL Warten(24)
  367.     END IF
  368.   END IF
  369. END SUB
  370.  
  371. SUB Einfuegen (datsatz AS Artikelsatz, i%, satznummer%, n%)
  372.   SELECT CASE n%
  373.     CASE 1
  374.       FOR k% = LBOUND(Zeitindex) + AnzZeitSatz% - 1 _
  375.       TO satznummer% STEP -1
  376.         Zeitindex(k% + 1) = Zeitindex(k%)
  377.       NEXT k%
  378.       Zeitindex(satznummer%).Zeitschrift = _
  379.                 Datsatz.Zeitschrift
  380.       Zeitindex(satznummer%).Satznummer = i%
  381.       AnzZeitSatz% = AnzZeitSatz% + 1
  382.     CASE 2
  383.       FOR k% = LBOUND(Jahrindex) + AnzJahrSatz% - 1 TO _
  384.       satznummer% STEP -1
  385.         Jahrindex(k% + 1) = Jahrindex(k%)
  386.       NEXT k%
  387.       Jahrindex(satznummer%).Jahrgang = Datsatz.Jahrgang
  388.       Jahrindex(satznummer%).Satznummer = i%
  389.       AnzJahrSatz% = AnzJahrSatz% + 1
  390.     CASE 3
  391.       FOR k% = LBOUND(Artikelindex) + AnzArtikelSatz% - 1 _
  392.       TO satznummer% STEP -1
  393.         Artikelindex(k% + 1) = Artikelindex(k%)
  394.       NEXT k%
  395.       Artikelindex(satznummer%).Artikeltyp = _
  396.                    Datsatz.Artikeltyp
  397.       Artikelindex(satznummer%).Satznummer = i%
  398.       AnzArtikelSatz% = AnzArtikelSatz% + 1
  399.     CASE 4
  400.       FOR k% = LBOUND(Stichindex) + AnzStichSatz% - 1 TO _
  401.       satznummer% STEP -1
  402.         Stichindex(k% + 1) = Stichindex(k%)
  403.       NEXT k%
  404.       Stichindex(satznummer%).Stichwort = _
  405.                  Datsatz.Hauptstichwort
  406.       Stichindex(satznummer%).Satznummer = i%
  407.       AnzStichSatz% = AnzStichSatz% + 1
  408.     CASE 5
  409.       FOR k% = LBOUND(Stichindex) + AnzStichSatz% - 1 TO _
  410.       satznummer% STEP -1
  411.         Stichindex(k% + 1) = Stichindex(k%)
  412.       NEXT k%
  413.       Stichindex(satznummer%).Stichwort = _
  414.                  Datsatz.UnterStichwort1
  415.       Stichindex(satznummer%).Satznummer = i%
  416.       AnzStichSatz% = AnzStichSatz% + 1
  417.     CASE 6
  418.       FOR k% = LBOUND(Stichindex) + AnzStichSatz% - 1 TO _
  419.       satznummer% STEP -1
  420.         Stichindex(k% + 1) = Stichindex(k%)
  421.       NEXT k%
  422.       Stichindex(satznummer%).Stichwort = _
  423.                  Datsatz.Unterstichwort2
  424.       Stichindex(satznummer%).Satznummer = i%
  425.       AnzStichSatz% = AnzStichSatz% + 1
  426.   END SELECT
  427. END SUB
  428.  
  429. SUB Eingabemaske (position%(), satz AS Artikelsatz)
  430. SHARED groesse%()
  431.   position%(1, 1) = 7:  position%(1, 2) = 24
  432.   position%(2, 1) = 9:  position%(2, 2) = 24
  433.   position%(3, 1) = 11: position%(3, 2) = 24
  434.   position%(4, 1) = 13: position%(4, 2) = 24
  435.   position%(5, 1) = 15: position%(5, 2) = 24
  436.   position%(6, 1) = 16: position%(6, 2) = 24
  437.   position%(7, 1) = 17: position%(7, 2) = 24
  438.   position%(8, 1) = 19: position%(8, 2) = 3
  439.   LOCATE 7, 3: PRINT "Zeitschrift:         "
  440.   LOCATE 9, 3: PRINT "Nummer der Ausgabe:  "
  441.   LOCATE 11, 3: PRINT "Jahrgang:            "
  442.   LOCATE 13, 3: PRINT "Artikeltyp:          "
  443.   LOCATE 15, 3: PRINT "Stichwort 1:         "
  444.   LOCATE 16, 3: PRINT "Stichwort 2:         "
  445.   LOCATE 17, 3: PRINT "Stichwort 3:         "
  446.   LOCATE 18, 3: PRINT "Kurzbeschreibung:    "
  447.   CALL Invers
  448.   LOCATE position%(1, 1), position%(1, 2)
  449.   PRINT Satz.Zeitschrift
  450.   LOCATE position%(2, 1), position%(2, 2)
  451.   IF STR$(Satz.AusgabeNr) = " 0" THEN
  452.     PRINT SPACE$(groesse%(2))
  453.   ELSE
  454.     PRINT RIGHT$(STR$(Satz.AusgabeNr), 2)
  455.   END IF
  456.   LOCATE position%(3, 1), position%(3, 2)
  457.   IF STR$(Satz.Jahrgang) = " 0" THEN
  458.     PRINT SPACE$(groesse%(3))
  459.   ELSE
  460.     PRINT RIGHT$(STR$(Satz.Jahrgang), 2)
  461.   END IF
  462.   LOCATE position%(4, 1), position%(4, 2)
  463.   PRINT Satz.Artikeltyp
  464.   LOCATE position%(5, 1), position%(5, 2)
  465.   PRINT Satz.Hauptstichwort
  466.   LOCATE position%(6, 1), position%(6, 2)
  467.   PRINT Satz.UnterStichwort1
  468.   LOCATE position%(7, 1), position%(7, 2)
  469.   PRINT Satz.Unterstichwort2
  470.   LOCATE position%(8, 1), position%(8, 2)
  471.   PRINT Satz.Kurzbeschreibung
  472.   CALL Normal
  473. END SUB
  474.  
  475. SUB EinzelDruck (drucksatz AS Artikelsatz, d$)
  476.   IF d$ = "Einzel" OR d$ = "Erster" THEN
  477.     CALL BildLoeschen(22, 2, 24, 79, "")
  478.     CALL Meldung(22, 3, "Ist ihr Drucker eingeschaltet ?")
  479.     CALL Warten(23)
  480.   END IF
  481.   LPRINT CHR$(15)
  482.   WIDTH "LPT1:", 136
  483.   LPRINT "Zeitschrift: "; Drucksatz.Zeitschrift;
  484.   LPRINT USING " Ausgabe: ##"; Drucksatz.AusgabeNr;
  485.   LPRINT USING " ## "; Drucksatz.Jahrgang;
  486.   LPRINT "Typ: "; Drucksatz.Artikeltyp
  487.   LPRINT "Stichworte: "; Drucksatz.Hauptstichwort;
  488.   LPRINT TAB(63); Drucksatz.UnterStichwort1;
  489.   LPRINT TAB(100); Drucksatz.Unterstichwort2
  490.   LPRINT "Text: "; Drucksatz.Kurzbeschreibung
  491.   LPRINT CHR$(18)
  492.   WIDTH "LPT1:", 80
  493. END SUB
  494.  
  495. SUB ErstelleIndizes
  496.   DIM datsatz AS Artikelsatz
  497.   REDIM Zeitindex(1 TO 500) AS Zeitindextyp
  498.   REDIM Jahrindex(1 TO 500) AS Jahrindextyp
  499.   REDIM Artikelindex(1 TO 500) AS Artikelindextyp
  500.   REDIM Stichindex(1 TO 1500) AS Stichindextyp
  501.   AnzZeitSatz% = 0
  502.   AnzJahrSatz% = 0
  503.   AnzArtikelSatz% = 0
  504.   AnzStichSatz% = 0
  505.   FOR i% = 1 TO AnzSaetze%
  506.     GET #1, i%, datsatz
  507.     CALL BearbeiteIndex(datsatz, i%)
  508.   NEXT i%
  509. END SUB
  510.  
  511. SUB IndexSuche (eintrag%, suchbegriff$, aufgabe$, aendern%)
  512. SHARED Suchoptionen$()
  513. DIM satz AS Artikelsatz, Findsatz AS Artikelsatz
  514. DIM position%(8, 2)
  515.   Gefunden% = falsch
  516.   aendern% = falsch
  517.   AnzLoeschSatz% = 0
  518.   Erstdruck = wahr
  519.   SELECT CASE eintrag%
  520.     CASE 1
  521.       Satz.Zeitschrift = suchbegriff$
  522.       zeile% = Binsuch(satz, eintrag%)
  523.       DO WHILE _
  524.       LEFT$(UCASE$(RTRIM$(Zeitindex(zeile%).Zeitschrift)), _
  525.       LEN(RTRIM$(suchbegriff$))) = _
  526.       UCASE$(RTRIM$(suchbegriff$))
  527.         IF Gefunden% = falsch THEN
  528.           Gefunden% = wahr
  529.           CALL BildLoeschen(7, 2, 19, 79, "")
  530.           CALL BildLoeschen(22, 2, 24, 79, "")
  531.         END IF
  532.         GET #1, Zeitindex(zeile%).Satznummer, Findsatz
  533.         CALL Eingabemaske(position%(), Findsatz)
  534.         SELECT CASE aufgabe$
  535.           CASE IS = "Suchen", "EinzelDrucken"
  536.             IF aufgabe$ = "EinzelDrucken" THEN
  537.               CALL JaNeinESC(22, 3, _
  538.                              "Diesen Satz drucken (J/N) ?                 ESC - Abbruch", zeichen$)
  539.               IF UCASE$(zeichen$) = "J" THEN
  540.                 CALL EinzelDruck(Findsatz, "Einzel")
  541.               END IF
  542.               IF zeichen$ = "ESC" THEN EXIT DO
  543.             ELSE
  544.               CALL JaNein(22, 3, "Weitersuchen  (J/N)", _
  545.                           antwort$)
  546.               IF UCASE$(antwort$) = "N" THEN EXIT DO
  547.             END IF
  548.             zeile% = zeile% + 1
  549.           CASE IS = "Aendern"
  550.             CALL JaNeinESC(22, 3, _
  551.                            "Diesen Satz ändern (J/N)   " + _
  552.                            "   ESC - Abbruch", ant$)
  553.             IF ant$ = "ESC" THEN EXIT DO
  554.             IF UCASE$(ant$) = "J" THEN
  555.               aendern% = wahr
  556.               CALL ArtikelEingabe(_
  557.                    Zeitindex(zeile%).Satznummer, Findsatz, _
  558.                    aufgabe$)
  559.               CALL BildLoeschen(22, 2, 24, 79, "")
  560.             END IF
  561.             zeile% = zeile% + 1
  562.           CASE IS = "Loeschen"
  563.             CALL JaNeinESC(22, 3, "Diesen Satz löschen "+ _
  564.                           "(J/N)      ESC - Abbruch", ant$)
  565.             IF ant$ = "ESC" THEN EXIT DO
  566.             IF UCASE$(ant$) = "J" THEN
  567.               aendern% = wahr
  568.               AnzLoeschSatz% = AnzLoeschSatz% + 1
  569.               Loeschliste%(AnzLoeschSatz%) = _
  570.                            Zeitindex(zeile%).Satznummer
  571.               Findsatz.Loeschkennung = -1
  572.               PUT #1, Zeitindex(zeile%).Satznummer, _
  573.                       Findsatz
  574.               CALL BildLoeschen(22, 2, 24, 79, "")
  575.             END IF
  576.             zeile% = zeile% + 1
  577.           CASE IS = "ListDrucken"
  578.             IF Erstdruck = wahr THEN
  579.               text$ = "Alle Sätze mit Zeitschrift "
  580.               text$ = text$ + "[" + suchbegriff$ + "]"
  581.               text$ = text$ + " drucken  (J/N) ?"
  582.               CALL Meldung(22, 3, text$)
  583.               CALL JaNeinESC(23, 3, "ESC - Abbruch", ant$)
  584.               IF ant$ = "ESC" THEN
  585.                 EXIT DO
  586.               ELSE
  587.                 CALL EinzelDruck(Findsatz, "Erster")
  588.               END IF
  589.               Erstdruck = falsch
  590.             END IF
  591.             CALL EinzelDruck(Findsatz, "NichtErster")
  592.             zeile% = zeile% + 1
  593.         END SELECT
  594.       LOOP
  595.     CASE 2
  596.       Satz.Jahrgang = VAL(suchbegriff$)
  597.       zeile% = Binsuch(satz, eintrag%)
  598.       DO WHILE Jahrindex(zeile%).Jahrgang = _
  599.                VAL(suchbegriff$)
  600.         IF Gefunden% = falsch THEN
  601.           Gefunden% = wahr
  602.           CALL BildLoeschen(7, 2, 19, 79, "")
  603.           CALL BildLoeschen(22, 2, 24, 79, "")
  604.         END IF
  605.         GET #1, Jahrindex(zeile%).Satznummer, Findsatz
  606.         CALL Eingabemaske(position%(), Findsatz)
  607.         SELECT CASE aufgabe$
  608.           CASE IS = "Suchen", "EinzelDrucken"
  609.             IF aufgabe$ = "EinzelDrucken" THEN
  610.               CALL JaNeinESC(22, 3, "Diesen Satz drucken" +_
  611.                 " (J/N) ?                 ESC - Abbruch", +_
  612.                                                   zeichen$)
  613.               IF UCASE$(zeichen$) = "J" THEN
  614.                 CALL EinzelDruck(Findsatz, "Einzel")
  615.               END IF
  616.               IF zeichen$ = "ESC" THEN EXIT DO
  617.             ELSE
  618.               CALL JaNein(22, 3, "Weitersuchen  (J/N)", _
  619.                                  antwort$)
  620.               IF UCASE$(antwort$) = "N" THEN EXIT DO
  621.             END IF
  622.             zeile% = zeile% + 1
  623.           CASE IS = "Aendern"
  624.             CALL JaNeinESC(22, 3, "Diesen Satz ändern "+ _
  625.                            "(J/N)      ESC - Abbruch", ant$)
  626.             IF ant$ = "ESC" THEN EXIT DO
  627.             IF UCASE$(ant$) = "J" THEN
  628.               aendern% = wahr
  629.               CALL ArtikelEingabe(_
  630.                    Jahrindex(zeile%).Satznummer, Findsatz, _
  631.                    aufgabe$)
  632.               CALL BildLoeschen(22, 2, 24, 79, "")
  633.             END IF
  634.             zeile% = zeile% + 1
  635.           CASE IS = "Loeschen"
  636.             CALL JaNeinESC(22, 3, "Diesen Satz löschen" + _
  637.                          " (J/N)      ESC - Abbruch", ant$)
  638.             IF ant$ = "ESC" THEN EXIT DO
  639.             IF UCASE$(ant$) = "J" THEN
  640.               aendern% = wahr
  641.               AnzLoeschSatz% = AnzLoeschSatz% + 1
  642.               Loeschliste%(AnzLoeschSatz%) = _
  643.                            Zeitindex(zeile%).Satznummer
  644.               Findsatz.Loeschkennung = -1
  645.                 PUT #1, Zeitindex(zeile%).Satznummer, _
  646.                         Findsatz
  647.                 CALL BildLoeschen(22, 2, 24, 79, "")
  648.             END IF
  649.             zeile% = zeile% + 1
  650.           CASE IS = "ListDrucken"
  651.             IF Erstdruck = wahr THEN
  652.               text$ = "Alle Sätze mit Jahrgang " + "["
  653.               text$ = text$ + suchbegriff$ + "]"
  654.               text$ = text$ + " drucken  (J/N) ?"
  655.               CALL Meldung(22, 3, text$)
  656.               CALL JaNeinESC(23, 3, "ESC - Abbruch", ant$)
  657.               IF ant$ = "ESC" THEN
  658.                 EXIT DO
  659.               ELSE
  660.                 CALL EinzelDruck(Findsatz, "Erster")
  661.               END IF
  662.               Erstdruck = falsch
  663.             END IF
  664.             CALL EinzelDruck(Findsatz, "NichtErster")
  665.             zeile% = zeile% + 1
  666.         END SELECT
  667.       LOOP
  668.     CASE 3
  669.       Satz.Artikeltyp = suchbegriff$
  670.       zeile% = Binsuch(satz, eintrag%)
  671.       DO WHILE UCASE$(RTRIM$(_
  672.       Artikelindex(zeile%).Artikeltyp)) = _
  673.       UCASE$(RTRIM$(suchbegriff$))
  674.         IF Gefunden% = falsch THEN
  675.           Gefunden% = wahr
  676.           CALL BildLoeschen(7, 2, 19, 79, "")
  677.           CALL BildLoeschen(22, 2, 24, 79, "")
  678.         END IF
  679.         GET #1, Artikelindex(zeile%).Satznummer, Findsatz
  680.         CALL Eingabemaske(position%(), Findsatz)
  681.         SELECT CASE aufgabe$
  682.           CASE IS = "Suchen", "EinzelDrucken"
  683.             IF aufgabe$ = "EinzelDrucken" THEN
  684.               CALL JaNeinESC(22, 3, "Diesen Satz drucken" +_
  685.                  " (J/N) ?                 ESC - Abbruch", _
  686.                  zeichen$)
  687.               IF UCASE$(zeichen$) = "J" THEN
  688.                 CALL EinzelDruck(Findsatz, "Einzel")
  689.               END IF
  690.               IF zeichen$ = "ESC" THEN
  691.                 EXIT DO
  692.               ELSE
  693.                 CALL JaNein(22, 3, "Weitersuchen  (J/N)", _
  694.                             antwort$)
  695.                 IF UCASE$(antwort$) = "N" THEN EXIT DO
  696.               END IF
  697.             END IF
  698.             zeile% = zeile% + 1
  699.           CASE IS = "Aendern"
  700.             CALL JaNeinESC(22, 3, "Diesen Satz ändern (J/N)      ESC - Abbruch", ant$)
  701.             IF ant$ = "ESC" THEN EXIT DO
  702.             IF UCASE$(ant$) = "J" THEN
  703.               aendern% = wahr
  704.               CALL ArtikelEingabe(Artikelindex(_
  705.                    zeile%).Satznummer, Findsatz, aufgabe$)
  706.               CALL BildLoeschen(22, 2, 24, 79, "")
  707.             END IF
  708.             zeile% = zeile% + 1
  709.           CASE IS = "Loeschen"
  710.             CALL JaNeinESC(22, 3, "Diesen Satz löschen" + _
  711.                           " (J/N)      ESC - Abbruch", ant$)
  712.             IF ant$ = "ESC" THEN EXIT DO
  713.             IF UCASE$(ant$) = "J" THEN
  714.               aendern% = wahr
  715.               AnzLoeschSatz% = AnzLoeschSatz% + 1
  716.               Loeschliste%(AnzLoeschSatz%) = _
  717.                            Zeitindex(zeile%).Satznummer
  718.               Findsatz.Loeschkennung = -1
  719.               PUT #1, Zeitindex(zeile%).Satznummer, Findsatz
  720.               CALL BildLoeschen(22, 2, 24, 79, "")
  721.             END IF
  722.             zeile% = zeile% + 1
  723.           CASE IS = "ListDrucken"
  724.             IF Erstdruck = wahr THEN
  725.               text$ = "Alle Sätze mit Artikeltyp " + "["
  726.               text$ = text$ + suchbegriff$ + "]"
  727.               text$ = text$ + " drucken  (J/N) ?"
  728.               CALL Meldung(22, 3, text$)
  729.               CALL JaNeinESC(23, 3, "ESC - Abbruch", ant$)
  730.               IF ant$ = "ESC" THEN
  731.                 EXIT DO
  732.               ELSE
  733.                 CALL EinzelDruck(Findsatz, "Erster")
  734.               END IF
  735.               Erstdruck = falsch
  736.             END IF
  737.             CALL EinzelDruck(Findsatz, "NichtErster")
  738.             zeile% = zeile% + 1
  739.         END SELECT
  740.       LOOP
  741.     CASE 4
  742.       Satz.Hauptstichwort = suchbegriff$
  743.       zeile% = Binsuch(satz, eintrag%)
  744.       DO WHILE UCASE$(RTRIM$(_
  745.       Stichindex(zeile%).Stichwort)) = _
  746.       UCASE$(RTRIM$(suchbegriff$))
  747.         IF Gefunden% = falsch THEN
  748.           Gefunden% = wahr
  749.           CALL BildLoeschen(7, 2, 19, 79, "")
  750.           CALL BildLoeschen(22, 2, 24, 79, "")
  751.         END IF
  752.         GET #1, Stichindex(zeile%).Satznummer, Findsatz
  753.         CALL Eingabemaske(position%(), Findsatz)
  754.         SELECT CASE aufgabe$
  755.           CASE IS = "Suchen", "EinzelDrucken"
  756.             IF aufgabe$ = "EinzelDrucken" THEN
  757.               CALL JaNeinESC(22, 3, "Diesen Satz druck" + _
  758.                 "en (J/N) ?                 ESC - Abbr" + _
  759.                 "uch", zeichen$)
  760.               IF UCASE$(zeichen$) = "J" THEN
  761.                 CALL EinzelDruck(Findsatz, "Einzel")
  762.               END IF
  763.               IF zeichen$ = "ESC" THEN EXIT DO
  764.             ELSE
  765.               CALL JaNein(22, 3, "Weitersuchen  (J/N)", _
  766.                           antwort$)
  767.               IF UCASE$(antwort$) = "N" THEN EXIT DO
  768.             END IF
  769.             zeile% = zeile% + 1
  770.           CASE IS = "Aendern"
  771.             CALL JaNeinESC(22, 3, "Diesen Satz ändern " + _
  772.                            "(J/N)      ESC - Abbruch", ant$)
  773.             IF ant$ = "ESC" THEN EXIT DO
  774.             IF UCASE$(ant$) = "J" THEN
  775.               aendern% = wahr
  776.               CALL ArtikelEingabe(Stichindex(_
  777.                    zeile%).Satznummer, Findsatz, aufgabe$)
  778.               CALL BildLoeschen(22, 2, 24, 79, "")
  779.             END IF
  780.             zeile% = zeile% + 1
  781.           CASE IS = "Loeschen"
  782.             CALL JaNeinESC(22, 3, "Diesen Satz löschen " + _
  783.                            "(J/N)      ESC - Abbruch", ant$)
  784.             IF ant$ = "ESC" THEN EXIT DO
  785.             IF UCASE$(ant$) = "J" THEN
  786.               aendern% = wahr
  787.               AnzLoeschSatz% = AnzLoeschSatz% + 1
  788.               Loeschliste%(AnzLoeschSatz%) = _
  789.                            Zeitindex(zeile%).Satznummer
  790.               Findsatz.Loeschkennung = -1
  791.               PUT #1, Zeitindex(zeile%).Satznummer, Findsatz
  792.               CALL BildLoeschen(22, 2, 24, 79, "")
  793.             END IF
  794.             zeile% = zeile% + 1
  795.           CASE IS = "ListDrucken"
  796.             IF Erstdruck = wahr THEN
  797.               text$ = "Alle Sätze mit Stichwort " + "["
  798.               text$ = text$ + suchbegriff$ + "]" +
  799.               text$ = text$ + " drucken  (J/N) ?"
  800.               CALL Meldung(22, 3, text$)
  801.               CALL JaNeinESC(23, 3, "ESC - Abbruch", ant$)
  802.               IF ant$ = "ESC" THEN
  803.                 EXIT DO
  804.               ELSE
  805.                 CALL EinzelDruck(Findsatz, "Erster")
  806.               END IF
  807.               Erstdruck = falsch
  808.             END IF
  809.             CALL EinzelDruck(Findsatz, "NichtErster")
  810.             zeile% = zeile% + 1
  811.         END SELECT
  812.       LOOP
  813.   END SELECT
  814.   CALL BildLoeschen(22, 2, 24, 79, "")
  815.   LOCATE 22, 3
  816.   CALL Hell
  817.   IF Gefunden% = falsch THEN
  818.     PRINT Suchoptionen$(eintrag% - 1);
  819.     PRINT " ["; suchbegriff$; "] ist nicht vorhanden !"
  820.     CALL Warten(24)
  821.     CALL Normal
  822.   END IF
  823.   IF (Gefunden% = wahr AND UCASE$(antwort$) = "J") OR _
  824.      (Gefunden% = wahr AND UCASE$(zeichen$) = "N") THEN
  825.     PRINT "Kein weiterer Satz mit ";
  826.     PRINT Suchoptionen$(eintrag% - 1); " ["; suchbegriff$;
  827.     PRINT "] gefunden !"
  828.     CALL Warten(24)
  829.     CALL Normal
  830.   END IF
  831. END SUB
  832.  
  833. SUB Loeschen
  834. DIM satz AS Artikelsatz
  835.   CALL BildLoeschen(7, 2, 19, 79, "")
  836.   CALL BildLoeschen(22, 2, 24, 79, "")
  837.   CALL Meldung(10, 10, "Datensätze L Ö S C H E N ")
  838.   CALL Meldung(15, 10, "Markierte Datensätze löschen(J)" + _
  839.                        " - Löschmarken aufheben (N)")
  840.   CALL JaNein(22, 10, "Ihre Wahl (J/N)", ant$)
  841.   CALL BildLoeschen(22, 2, 24, 79, "")
  842.   IF UCASE$(ant$) = "J" THEN
  843.     CALL Meldung(22, 10, "Ich lösche die markierten" + _
  844.                          " Datensätze")
  845.     CLOSE
  846.     SHELL "Copy Comp_art.dat Comp_art.bak > nul"
  847.     LOCATE CSRLIN - 1, 1
  848.     SHELL "Del Comp_art.dat > nul"
  849.     LOCATE CSRLIN - 1, 1
  850.     OPEN "Comp_art.dat" FOR RANDOM AS #1 LEN = LEN(satz)
  851.     OPEN "Comp_art.bak" FOR RANDOM AS #2 LEN = LEN(satz)
  852.     J% = 0
  853.     FOR i% = 1 TO AnzSaetze%
  854.       GET #2, i%, satz
  855.       IF Satz.Loeschkennung = 0 THEN
  856.         J% = J% + 1
  857.         PUT #1, J%, satz
  858.       END IF
  859.     NEXT i%
  860.     AnzSaetze% = J%
  861.     CLOSE #2
  862.     CALL ErstelleIndizes
  863.     REDIM Loeschliste(50)
  864.   ELSE
  865.     CALL Meldung(22, 10, "Ich hebe die gesetzten " + _
  866.                          "Löschmarken auf")
  867.     Loeschkennung% = 0
  868.     CLOSE #1
  869.     OPEN "Comp_Art.DAT" FOR BINARY AS #1
  870.     FOR i% = 1 TO AnzLoeschSatz%
  871.       PUT #1, (Loeschliste%(i%) - 1) * 203 + 202, _
  872.                Loeschkennung%
  873.     NEXT i%
  874.     CLOSE #1
  875.     OPEN "Comp_Art.dat" FOR RANDOM AS #1 LEN = LEN(satz)
  876.   END IF
  877.   CALL Warten(23)
  878.   CALL BildLoeschen(22, 2, 24, 79, "")
  879. END SUB
  880.  
  881. SUB Speichern (aufgabe$, satznummer%, neuereintrag$())
  882. DIM EintragNeu AS Artikelsatz
  883.   EintragNeu.Zeitschrift = neuereintrag$(1)
  884.   EintragNeu.AusgabeNr = VAL(neuereintrag$(2))
  885.   EintragNeu.Jahrgang = VAL(neuereintrag$(3))
  886.   EintragNeu.Artikeltyp = neuereintrag$(4)
  887.   EintragNeu.Hauptstichwort = neuereintrag$(5)
  888.   EintragNeu.UnterStichwort1 = neuereintrag$(6)
  889.   EintragNeu.Unterstichwort2 = neuereintrag$(7)
  890.   EintragNeu.Kurzbeschreibung = neuereintrag$(8)
  891.   EintragNeu.Loeschkennung = 0
  892.   IF aufgabe$ <> "Aendern" THEN
  893.     satznummer% = AnzSaetze% + 1
  894.     PUT #1, satznummer%, EintragNeu
  895.     AnzSaetze% = AnzSaetze% + 1
  896.     CALL BearbeiteIndex(EintragNeu, satznummer%)
  897.   ELSE
  898.     PUT #1, satznummer%, EintragNeu
  899.   END IF
  900.   FOR i% = LBOUND(neuereintrag$) TO UBOUND(neuereintrag$)
  901.     neuereintrag$(i%) = ""
  902.   NEXT i%
  903. END SUB
  904.  
  905. SUB Suchen (wahl%, aufgabe$, aendern%)
  906. SHARED groesse%()
  907.   taste$ = ""
  908.   vorgabe$ = ""
  909.   CALL BildLoeschen(7, 2, 19, 79, "")
  910.   CALL BildLoeschen(22, 2, 24, 79, "")
  911.   SELECT CASE wahl%
  912.   CASE IS = 1
  913.     text$ = "die gesuchte Zeitschrift "
  914.     gueltig$ = ""
  915.     Eingabelaenge% = groesse%(1)
  916.   CASE IS = 2
  917.     text$ = "den gesuchten Jahrgang "
  918.     gueltig$ = "0123456789"
  919.     Eingabelaenge% = groesse%(3)
  920.   CASE IS = 3
  921.     text$ = "den gesuchten Artikeltyp "
  922.     gueltig$ = ""
  923.     Eingabelaenge% = groesse%(4)
  924.   CASE IS = 4
  925.     text$ = "das gesuchte Stichwort "
  926.     gueltig$ = ""
  927.     Eingabelaenge% = groesse%(5)
  928.   END SELECT
  929.   LOCATE 12, 18
  930.   PRINT "Bitte geben Sie "; text$; "ein: ";
  931.   LOCATE 22, 2
  932.   CALL Hell
  933.   PRINT "              Eingabe mit "; CHR$(17);
  934.   PRINT "─┘ abschließen     ";
  935.   PRINT "     ESC - Abbruch"
  936.   CALL Normal
  937.   DO
  938.     CALL InputNeu(vorgabe$, gueltig$, "C", _
  939.                   Eingabelaenge%, 0, 15, 18, taste$)
  940.     IF vorgabe$ = "" AND taste$ = "ENTER" THEN
  941.       LOCATE 23, 3
  942.       PRINT "Bitte einen Suchbegriff eingeben ";
  943.       PRINT "oder mit ESC abbrechen !"
  944.       CALL Warten(24)
  945.       LOCATE 23, 3: PRINT SPACE$(60)
  946.     END IF
  947.   LOOP UNTIL vorgabe$ <> "" AND taste$ = "ENTER" OR _
  948.              taste$ = "ESC"
  949.   IF taste$ = "ENTER" THEN
  950.     CALL IndexSuche(wahl%, vorgabe$, aufgabe$, aendern%)
  951.   END IF
  952. END SUB
  953. '*---------------------------------------------------------*
  954. '*                Ende von COMP_MOD.BAS                    *
  955.