home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / 1991 / 04 / einstieg / comp_art.bas next >
Encoding:
BASIC Source File  |  1991-02-13  |  10.9 KB  |  350 lines

  1. '*---------------------------------------------------------*
  2. '*                        COMP_ART.BAS                     *
  3. '*               für Quick-Basic ab V. 4.00                *
  4. '*          (C) 1991 Th.Frins, W.Kehr 1990 & TOOLBOX       *
  5. '*---------------------------------------------------------*
  6.  
  7. '*------------ Definitionen und Deklarationen: ------------*
  8.  
  9. '* Prozedurdeklarationen:
  10. DECLARE SUB Suchen (wahl%, aufgabe$, aendern%)
  11. DECLARE SUB Artikeleingabe (satznummer%, leersatz AS ANY, _
  12.         aufgabe$)
  13. DECLARE SUB NichtAktiv (wahlnr%, options$())
  14. DECLARE SUB Verarbeitung (nummer%, options$(), elemente%)
  15. DECLARE SUB HellBlinken ()
  16. DECLARE SUB Unterstrichen ()
  17. DECLARE SUB Hell ()
  18. DECLARE SUB Normal ()
  19. DECLARE SUB Blinken ()
  20. DECLARE SUB Invers ()
  21. DECLARE SUB Bildloeschen (zeilelinksoben%, _
  22.         spaltelinksoben%, zeilerechtsunten%, _
  23.         spalterechtsunten%, loeschzeichen$)
  24. DECLARE SUB Rahmen (zeilelinksoben%, spaltelinksoben%, _
  25.         zeilerechtsunten%, spalterechtsunten%, _
  26.         rahmenzeichen$)
  27. DECLARE SUB InputNeu (vorgabe$, gueltig$, typ$, _
  28.         laenge%, nachkomma%, zeile%, spalte%, taste$)
  29. DECLARE SUB Pruefuebergabe (zeile%, spalte%, typ$, _
  30.         laenge%, nachkomma%, gueltig$, vorgabe$, _
  31.         vorzeichen%, komma%, fehler%)
  32. DECLARE SUB Warten (zeilennr%)
  33. DECLARE SUB Numerisch (komma%, vorzeichen%, einfmerker%, _
  34.         eingabe$, laenge%, position%, v$)
  35. DECLARE SUB Zeichen (einfmerker%, eingabe$, laenge%, _
  36.         position%, v$)
  37. DECLARE SUB FehlMeld (zeilennr%, fehlertext$)
  38. DECLARE SUB LeseIndizes ()
  39. DECLARE SUB SpeicherIndizes ()
  40. DECLARE SUB ErstelleIndizes ()
  41. DECLARE SUB DosShell ()
  42. DECLARE SUB DosBefehl ()
  43. DECLARE SUB Loeschen ()
  44. DECLARE SUB Meldung (zeile%, spalte%, text$)
  45. DECLARE SUB JaNein (zeile%, spalte%, text$, ant$)
  46. DECLARE SUB Druck (wahl%)
  47.  
  48. '* Funktionsdeklarationen
  49. DECLARE FUNCTION BalkenMenue% (zeilennr%, SpaltenNr%, _
  50.         elemente%, ErsteWahl%, abstand%, Optionen$())
  51. DECLARE FUNCTION ZeilenMenue% (zeilennr%, SpaltenNr%, _
  52.         elemente%, ErsteWahl%, Optionen$())
  53.  
  54. '* Konstantendefinitionen
  55.  
  56. CONST leer = "                                                                              "
  57. CONST wahr = -1
  58. CONST falsch = NOT wahr
  59.  
  60.  
  61. '* Datensatzdefinitionen
  62.  
  63. TYPE Artikelsatz
  64.   Zeitschrift AS STRING * 20
  65.   AusgabeNr AS INTEGER
  66.   Jahrgang AS INTEGER
  67.   ArtikelTyp AS STRING * 10
  68.   HauptStichwort AS STRING * 30
  69.   UnterStichwort1 AS STRING * 30
  70.   UnterStichwort2 AS STRING * 30
  71.   Kurzbeschreibung AS STRING * 77
  72.   Loeschkennung AS INTEGER
  73. END TYPE
  74.  
  75. TYPE Zeitindextyp
  76.   Zeitschrift AS STRING * 30
  77.   Satznummer AS INTEGER
  78. END TYPE
  79.  
  80. TYPE Jahrindextyp
  81.   Jahrgang AS INTEGER
  82.   Satznummer AS INTEGER
  83. END TYPE
  84.  
  85. TYPE Artikelindextyp
  86.   ArtikelTyp AS STRING * 10
  87.   Satznummer AS INTEGER
  88. END TYPE
  89.  
  90. TYPE Stichindextyp
  91.   Stichwort AS STRING * 30
  92.   Satznummer AS INTEGER
  93. END TYPE
  94.  
  95.  
  96. '* Variablendefinitionen
  97.  
  98. COMMON /Tools/ InversFlag
  99. COMMON /CompMod/ Groesse%(), SuchOptionen$()
  100.  
  101. COMMON SHARED Zeitindex() AS Zeitindextyp
  102. COMMON SHARED Jahrindex() AS Jahrindextyp
  103. COMMON SHARED Stichindex() AS Stichindextyp
  104. COMMON SHARED Artikelindex() AS Artikelindextyp
  105. COMMON SHARED Loeschliste%(), Anzsaetze%, AnzLoeschSatz%
  106.  
  107. REM $DYNAMIC
  108. DIM Loeschliste%(50)
  109. DIM Zeitindex(1 TO 500) AS Zeitindextyp
  110. DIM Jahrindex(1 TO 500) AS Jahrindextyp
  111. DIM Stichindex(1 TO 1500) AS Stichindextyp
  112. DIM Artikelindex(1 TO 500) AS Artikelindextyp
  113. REM $STATIC
  114.  
  115. DIM ZeilenOptionen$(4)
  116. ZeilenOptionen$(0) = "Artikel bearbeiten"
  117. ZeilenOptionen$(1) = "Artikel suchen"
  118. ZeilenOptionen$(2) = "Drucken"
  119. ZeilenOptionen$(3) = "Dienste"
  120. ZeilenOptionen$(4) = "Programmende"
  121.  
  122. DIM BearbeitOptionen$(3)
  123. BearbeitOptionen$(0) = "Eingabe neuer Artikel"
  124. BearbeitOptionen$(1) = "Ändern von Artikeln"
  125. BearbeitOptionen$(2) = "Löschen von Artikeln"
  126. BearbeitOptionen$(3) = "Zurück"
  127.  
  128. DIM SuchOptionen$(4)
  129. SuchOptionen$(0) = "Zeitschrift"
  130. SuchOptionen$(1) = "Jahrgang"
  131. SuchOptionen$(2) = "Artikeltyp"
  132. SuchOptionen$(3) = "Stichwort"
  133. SuchOptionen$(4) = "Zurück"
  134.  
  135. DIM DruckOptionen$(3)
  136. DruckOptionen$(0) = "Alle Datensätze"
  137. DruckOptionen$(1) = "Einzelnen Datensatz"
  138. DruckOptionen$(2) = "Selektierte Liste"
  139. DruckOptionen$(3) = "Zurück"
  140.  
  141. DIM UtilOptionen$(3)
  142. UtilOptionen$(0) = "Reorganisation"
  143. UtilOptionen$(1) = "DOS-Shell aufrufen"
  144. UtilOptionen$(2) = "DOS-Kommando ausführen"
  145. UtilOptionen$(3) = "Zurück"
  146.  
  147. DIM Eintrag AS Artikelsatz
  148.  
  149. DIM Groesse%(8)
  150. Groesse%(1) = LEN(Eintrag.Zeitschrift)
  151. Groesse%(2) = 2
  152. Groesse%(3) = 2
  153. Groesse%(4) = LEN(Eintrag.ArtikelTyp)
  154. Groesse%(5) = LEN(Eintrag.HauptStichwort)
  155. Groesse%(6) = LEN(Eintrag.UnterStichwort1)
  156. Groesse%(7) = LEN(Eintrag.UnterStichwort2)
  157. Groesse%(8) = LEN(Eintrag.Kurzbeschreibung)
  158.  
  159.  
  160. '*------------------ HAUPTPROGRAMM ------------------------*
  161.  
  162. OPEN "Comp_art.dat" FOR RANDOM AS #1 LEN = LEN(Eintrag)
  163. Anzsaetze% = LOF(1) / LEN(Eintrag)
  164.  
  165. CALL ErstelleIndizes
  166.  
  167. CLS
  168. CALL Rahmen(1, 1, 5, 80, CHR$(201))
  169. LOCATE 2, 3, 0
  170. Hell 
  171. PRINT "Artikel aus Computerzeitschriften verwalten  "; 
  172. Normal
  173. LOCATE 2, 60, 0: PRINT "(C) THF/WK/DMV 1990"
  174. CALL Rahmen(6, 1, 20, 80, CHR$(214))
  175. CALL Rahmen(21, 1, 25, 80, CHR$(201))
  176. DO
  177.   Hell
  178.   LOCATE 22, 3, 0
  179.   PRINT "Mit "; CHR$(27); " und "; CHR$(26);
  180.   PRINT " selektieren, mit "; CHR$(17); "─┘ aktivieren";
  181.   Normal
  182.   wahl% = ZeilenMenue%(4, 2, 5, 1, ZeilenOptionen$())
  183.   SELECT CASE wahl%
  184.     CASE 1
  185.       Verarbeitung wahl%, BearbeitOptionen$(), 4
  186.     CASE 2
  187.       Verarbeitung wahl%, SuchOptionen$(), 5
  188.     CASE 3
  189.       Verarbeitung wahl%, DruckOptionen$(), 4
  190.     CASE 4
  191.       Verarbeitung wahl%, UtilOptionen$(), 4
  192.   END SELECT
  193. LOOP UNTIL wahl% = 5
  194.  
  195. CLOSE
  196. CLS
  197. END
  198.  
  199. '*------------------ ENDE DES HAUPTPROGRAMMS --------------*
  200.  
  201. SUB NichtAktiv (wahlnr%, options$())
  202.   Bildloeschen 22, 2, 24, 79, " "
  203.   LOCATE 22, 3, 0: PRINT "Sie haben ";
  204.   CALL Hell: PRINT options$(wahlnr% - 1); : Normal
  205.   PRINT " gewählt !";
  206.   LOCATE 23, 3, 0
  207.   PRINT "Dieser Programmteil ist derzeit nicht aktiv !";
  208. END SUB
  209.  
  210. SUB Verarbeitung (nummer%, options$(), elemente%)
  211. DIM leersatz AS Artikelsatz
  212. SHARED SuchOptionen$()
  213.   Balkenwahl% = 1
  214.   aendern% = falsch
  215.   DO
  216.     Vorhanden% = 0
  217.     LOCATE 22, 2: PRINT leer
  218.     Hell
  219.     LOCATE 22, 3, 0
  220.     PRINT "Mit "; CHR$(24); " und "; CHR$(25); 
  221.     PRINT " selektieren, mit "; CHR$(17); "─┘ aktivieren"
  222.     Normal
  223.     SELECT CASE nummer%
  224.       CASE 1
  225.         Balkenwahl% = BalkenMenue%(8, 26, elemente%, _
  226.                       Balkenwahl%, 2, options$())
  227.         IF Balkenwahl% = 1 THEN
  228.           CALL Artikeleingabe(Anzsaetze% + 1, leersatz, _
  229.                               "Eingabe")
  230.           Vorhanden% = 1
  231.         END IF
  232.         IF Balkenwahl% = 2 THEN
  233.           CALL Bildloeschen(7, 2, 19, 79, "")
  234.           DO
  235.             Balkenwahl% = 1
  236.             Balkenwahl% = BalkenMenue%(8, 26, 5, _
  237.                           Balkenwahl%, 2, SuchOptionen$())
  238.             IF Balkenwahl% <> 5 THEN
  239.               CALL Suchen(Balkenwahl%, "Aendern", aendern%)
  240.             END IF
  241.             CALL Bildloeschen(7, 2, 19, 79, "")
  242.             CALL Bildloeschen(22, 2, 24, 79, "")
  243.             CALL JaNein(23, 5, "Weitere Artikel ändern" + _
  244.                                " (J/N)", ant$)
  245.             CALL Bildloeschen(22, 2, 24, 79, "")
  246.             CALL Hell
  247.             LOCATE 22, 3, 0
  248.             PRINT "Mit "; CHR$(24); " und "; CHR$(25);
  249.             PRINT " selektieren, mit "; CHR$(17);
  250.             PRINT "─┘ aktivieren"
  251.             CALL Normal
  252.           LOOP UNTIL UCASE$(ant$) = "N"
  253.           IF aendern% = wahr THEN
  254.             CALL Bildloeschen(22, 2, 24, 79, "")
  255.             CALL Meldung(22, 5, "Ich erstelle die Indizes")
  256.             CALL ErstelleIndizes
  257.             CALL Warten(24)
  258.             CALL Normal
  259.           END IF
  260.           Balkenwahl% = 2
  261.           Vorhanden% = 1
  262.         END IF
  263.         IF Balkenwahl% = 3 THEN
  264.           CALL Bildloeschen(7, 2, 19, 79, "")
  265.           DO
  266.            Balkenwahl% = 1
  267.             Balkenwahl% = BalkenMenue%(8, 26, 5, _
  268.                           Balkenwahl%, 2, SuchOptionen$())
  269.             IF Balkenwahl% <> 5 THEN
  270.               CALL Suchen(Balkenwahl%, "Loeschen", aendern%)
  271.             END IF
  272.             CALL Bildloeschen(7, 2, 19, 79, "")
  273.             CALL Bildloeschen(22, 2, 24, 79, "")
  274.             CALL JaNein(23, 5, "Weitere Artikel loeschen" +_
  275.                                " (J/N)", ant$)
  276.             CALL Bildloeschen(22, 2, 24, 79, "")
  277.             IF UCASE$(ant$) = "J" THEN
  278.               CALL Hell
  279.               LOCATE 22, 3, 0
  280.               PRINT "Mit "; CHR$(24); " und "; CHR$(25);
  281.               PRINT " selektieren, mit "; CHR$(17);
  282.               PRINT "─┘ aktivieren"
  283.               CALL Normal
  284.             END IF
  285.           LOOP UNTIL UCASE$(ant$) = "N"
  286.           IF aendern% = wahr THEN CALL Loeschen
  287.           Balkenwahl% = 3
  288.           Vorhanden% = 1
  289.         END IF
  290.       CASE 2
  291.         Balkenwahl% = BalkenMenue%(8, 26, elemente%, _
  292.                       Balkenwahl%, 2, options$())
  293.         IF Balkenwahl% <> 5 THEN
  294.           CALL Suchen(Balkenwahl%, "Suchen", aendern%)
  295.         END IF
  296.         Vorhanden% = 1
  297.       CASE 3
  298.         Balkenwahl% = BalkenMenue%(8, 26, elemente%, _
  299.                       Balkenwahl%, 2, options$())
  300.         IF Balkenwahl% = 1 THEN CALL Druck(Balkenwahl%)
  301.         IF Balkenwahl% = 2 THEN
  302.           Balkenwahl% = 1
  303.           CALL Bildloeschen(7, 2, 19, 79, "")
  304.           Balkenwahl% = BalkenMenue%(8, 26, 5, _
  305.                         Balkenwahl%, 2, SuchOptionen$())
  306.           IF Balkenwahl% <> 5 THEN
  307.             CALL Suchen(Balkenwahl%, "EinzelDrucken", _
  308.                         aendern%)
  309.           END IF
  310.           CALL Bildloeschen(7, 2, 19, 79, "")
  311.           CALL Bildloeschen(22, 2, 24, 79, "")
  312.           Balkenwahl% = 2
  313.         END IF
  314.         IF Balkenwahl% = 3 THEN
  315.           Balkenwahl% = 1
  316.           CALL Bildloeschen(7, 2, 19, 79, "")
  317.           Balkenwahl% = BalkenMenue%(8, 26, 5, _
  318.                         Balkenwahl%, 2, SuchOptionen$())
  319.           IF Balkenwahl% <> 5 THEN
  320.             CALL Suchen(Balkenwahl%, "ListDrucken", _
  321.                         aendern%)
  322.           END IF
  323.           CALL Bildloeschen(7, 2, 19, 79, "")
  324.           CALL Bildloeschen(22, 2, 24, 79, "")
  325.           Balkenwahl% = 3
  326.         END IF
  327.         Vorhanden% = 1
  328.       CASE 4
  329.         Balkenwahl% = BalkenMenue%(8, 26, elemente%, _
  330.                       Balkenwahl%, 2, options$())
  331.         SELECT CASE Balkenwahl%
  332.           CASE IS = 1
  333.             CALL ErstelleIndizes
  334.           CASE IS = 2
  335.             CALL DosShell
  336.           CASE IS = 3
  337.             CALL DosBefehl
  338.         END SELECT
  339.         Vorhanden% = 1
  340.     END SELECT
  341.     IF options$(Balkenwahl% - 1) <> "Zurück" AND _
  342.        Vorhanden% = 0 THEN
  343.       CALL NichtAktiv(Balkenwahl%, options$())
  344.       CALL Warten(24)
  345.     END IF
  346.     CALL Bildloeschen(7, 2, 19, 79, "")
  347.     CALL Bildloeschen(22, 2, 24, 79, "")
  348.   LOOP UNTIL Balkenwahl% = elemente%
  349. END SUB
  350.