#

Cobukas - Dokumentation zur Portierung

 
 


Einlesen der Parameter - Originalversion
========================================

   PROCEDURE readPara;
   VAR
      parFile: text;

      FUNCTION readParaLine (c: char; forceBackSlash: boolean): string;

      VAR
         paraStr: string80;

      BEGIN
         readln (parFile, paraStr);
         IF (paraStr <> null) AND (paraStr [1] = c) THEN
         BEGIN
            delete (paraStr, 1, 1);
            IF forceBackSlash AND (paraStr <> null) AND (lastCh (paraStr) <> '\') THEN
            BEGIN
               paraStr := paraStr + '\';
            END;
            readParaLine := paraStr;
         END
         ELSE
         BEGIN
            readParaLine := null;
         END;
      END;

   VAR
      paraStr                            : string80;
      i                                  : integer;
      sInit, sLpp, sCpi12, sCpi17        : string32;
      sMaxFFNorm, sMaxFFKto, sMaxFF17cpi : string8;
      erg                                : integer;

   BEGIN
      
      {
        Ersetzt: paraName => 'cobukas.par' ("projekt" = "cobukas" / "paraName" überflüssig)
        Ersetzt: paraDat  =>  parFile ("Dat" stand wohl für "Datei", ist aber irreführend)
      }
      assign (parFile, 'cobukas.par');
      reset (parFile);
      IF ioResult = 0 THEN
      BEGIN
         IF eof (parFile) THEN
         BEGIN
            gotoxy(15,mz); write('Parameter-Datei korrupt !, bitte löschen');
{
            tempMeldung ('Parameter-Datei korrupt !, bitte löschen');
}
            wait;
            EXIT;
         END;
           

         {1.Zeile lesen}
         {-------------}
         readln (parFile, paraStr);   (* einstellige Switches *)
         {
           Jedes Zeichen dieser ersten Zeile hat eine Schalterfunktion.
           Die Reihenfolge der Zeichen ist beliebig.
           Die Schalterfunktionen werden an unterschiedlichen Stellen gesetzt.
         }


         {
           Die folgenden Schalter werden gesetzt 
            ->5.Hilfsprogramme ->9.Parameter ->3.Start-Parameter ->1.Parameter für Rechnerumgebung
           =======================================================================================
           (Anleitungsbuch Seite 13-14)     

           (* pBios, pMono - wird von Hardware initialisiert *)
   
           pBios wird definiert in sysmod.pas (byte) und dort mit "0" initialisiert
           pBios ->directVideo, checkSnow in TXSCREEN.PAS
           Boolean Variable "directVideo" aus unit "crt" gibt es nur unter DOS!
           Also entfernen: pBios, directVideo 
        
           pMono wird definiert in sysmod.pas (boolean) und dort mit "false" initialisiert
           pMono wird auf "true" gesetzt, wenn "M" in der ersten Zeile steht.
           Damit ist die Schwarz-Weis-Darstellung gesetzt.
         }

            
         {
           Die folgenden Schalter werden gesetzt 
           ->5.Hilfsprogramme ->9.Parameter ->3.Start-Parameter ->2.Parameter für COBUKAS
           ==============================================================================
           (Anleitungsbuch Seite 13-14)     
         }


         pDecimal := false;
         {
           pDezimal wird definiert in sysmod.pas (boolean) und mit "false" initialisiert

           pDezimal gibt an, ob die Eingabe der Geld-Beträge mit Komma erfolgen soll
           oder nicht. Wenn kein Komma eingegeben werden soll, dann müssen die beiden
           Nachkommastellen immer mit eingegeben werden.
           "Eingabe von Beträgen mit Dezimalzeichen? "J" setzt "D", "D" setzt "pDezimal := true"
           ---
           Bewertung: Der normale Fluss ist, ein Komma oder Dezimalpunkt einzugeben. Deshalb könnte
           diese Wahlmöglichkeit eigentlich eliminiert werden. (Entwickler fragen: Kuhlmann, ...)
         }


         pSofort := false;   { In Unit "verwausw.pas" }
         {
           pSofort wird in cbkvars.pas definiert (boolean) und mit "true" initalisiert

           Beim Einrichten des Aufbaus der Darstellung von Aktiva, Passiva und GuV
           werden auf der rechten Bildschirmhälfte die zu einer Position zugeordneten Konten
           entweder sofort angezeigt oder erst nach Betätigen der Funktionstaste F10. Dann bleibt
           diese Kontenliste rechts im Bild stehen, auch wenn links andere Positionen angewählt
           wurden. 
           ---
           Bewertung:  Der Nicht-Sofortaufbau erscheint mir sehr unpraktisch. Diese Wahlmöglichkeit
           könnte eliminiert werden. (Entwickler fragen: Kuhlmann, ...)
         }

         pHelpMenu := false;
         { 
           pHelpMenu wird in cbkvars.pas definiert (boolean) und mit "false" initalisiert
            pHelpMenu := ... ; wurde hier nicht initialisiert sondern in der Datei "cbkliz.pas".
           Habe ich jetzt hier eingebaut.
                
           Die Ausgabe der Hilfe wird unterdrückt, wenn in der ersten Zeile kein "H" gesetzt wird.
              
           (*  pHelpMenu := false;
               05.05.93 CS: Initialisierung findet in initLizenz statt wg. /H
           *)

           Da "cbkliz.pas" nicht mehr benötigt wird, muss "/H" beim Aufruf noch eingebaut werden.
         }


         pLeerPos := false; (* Positionen ohne Saldo in Bilanz unterdrücken ? *)
         {
           pLeerPos wird in cbkvars.pas definiert (boolean) und mit "false" initalisiert

           Ein "L" in der ersten ParameterZeile sagt, dass die leeren Konten/Positionen
             in der Saldenlisten (->4.Auswerten ->5.Saldenliste) und
             in der Bilanz/GuV   (->4.Auswerten ->4.Bilanz/GuV)  
           unterdrückt werden sollen.                    
         }


         pAutoSumme := false; (* Automatische Endsumme in Bilanz unterdrücken ? *)
         {
           pAutoSumme wird in cbkvars.pas definiert (boolean) und mit "false" initalisiert

           Ein "A" in der erste ParameterZeile schaltet diese Funktion aus (pAutoSumme := true;)
           und bewirkt damit, dass ein nicht zugeordnetes Konto = nicht weiterverrechnetes Konto 
           gefunden werden muss.
         }


         {
           pZwiSu wird in cbkvars.pas definiert und mit "1" initalisiert
           pZwiSu := 1 - entspricht der "5" in der ersten Paramterzeile
           In dem "Startparameter Programm" steht:
             "Zwischensummen-Parameter für Saldenliste ?"  1 
     
           pZwiSu := 2 - entspricht der "6" in der ersten Paramterzeile, ...
           ...
           pZwiSu := 5 - entspricht der "9" in der ersten Paramterzeile, ...

           Bei der Ausgabe der Saldenliste (->4.Auswerten ->5.Saldenliste) hat dieser
           Parameter keine Wirkung bei der Ausgabe auf dem Bildschirm, sondern nur beim Druck.
           Es werden Zwischensalden gebildet und zwar in Abhängigkeit von den Kontonummern.
            1(5): Nur Gesamtsaldo
            2(6): Saldo jeder Kontenklassen (1...)
            3(7): Saldo jeder Kontengruppe  (11..)
            4(8): Saldo jeder Kontenuntergruppe (111.)
            5(9): macht nur bei 5-stelligen Kontonummern (Debitoren, Kreditoren) Sinn.
                  Ansonsten entsteht nur eine Leerzeile zwischen den Konten (1111)

           Diese Funktion war in Version 3.1 noch nicht vorhanden. Daher nicht in Anleitungsbuch.

           Initialisierung sollte hier erfolgen, wegen Konsistenz 
         }

         pAbgrRg := false; (* Summen in AbgrenzungsRg negieren ? *)
         {
           pAbgrRg wird in cbkvars.pas definiert (boolean) und mit "false" initalisiert
           Ein "N" in der erste ParameterZeile schaltet diese Funktion ein (pAbgrRg := true;)

           Die Variable wird in der Unit "koleirec.pas" verwendet.

           Funktion habe ich noch nicht erkannt - (Entwickler fragen: Kuhlmann, ...)
         }
              
  
         {
           Die folgenden Schalter werden gesetzt 
           ->5.Hilfsprogramme ->9.Parameter ->4.Drucker-Auswahl ->1.-5.
           ===========================================================
           (Anleitungsbuch Seite 15)     
         }


         prnType := prnIBM;
         {
           DruckerTypen im Parameter-Angebot: 
             Standard (S, prnStandard)
             IBM-kompatibel (prnIBM) - unten kein Buchstabe für vorhanden
             Epson-FX-kompatibel (E, prnEpson)
             benutzerdefiniert (U, prnUser)
             HP-LaserJet II Portrait (J, prnHPLJ2) - in Unit syswrite durch getEnvNorm
                                                     dort auch prnNecP3 und prnKodak erwähnt
         }


         FOR i := 1 TO length (paraStr) DO
         BEGIN
            CASE paraStr [i] OF
{
             '1' : pBios := 1;
             '2' : pBios := 2;
             '3' : pBios := 3;
}  
             'M' : pMono := true;

             'D' : pDecimal := true;  
             'K' : pSofort := true;
             'H' : pHelpMenu := true;
             'L' : pLeerPos := true; (* Wenn Saldo = 0, dann auch keine Anzeige *)
             'A' : pAutoSumme := true;
  
             '5' : pZwiSu := 1;
             '6' : pZwiSu := 2;
             '7' : pZwiSu := 3;
             '8' : pZwiSu := 4;
             '9' : pZwiSu := 5;

             'N' : pAbgrRg := true;

             'E' : prnType := prnEpson;
             'U' : prnType := prnUser;
             'S' : prnType := prnStandard;
             'J' : prnType := prnHPLJ2;
         END;  
      END;

            
            {
              Die folgenden drei Werte werden gesetzt 
               ->5.Hilfsprogramme ->9.Parameter ->3.Start-Parameter ->1.Parameter für Rechnerumgebung
              =======================================================================================
              (Anleitungsbuch Seite 13-14)     
            }

      {2.Zeile lesen}
      {-------------}
      druckDatei := readParaLine ('P', false); (* Druckerumlenkung *)

      {3.Zeile lesen}
      {-------------}
      laufwerk   := readParaLine ('V', true ); (* Benutzerpfad *)

      {4.Zeile lesen}
      {-------------}
      dasiLw     := readParaLine ('W', true ); (* DatensicherungsPfad *) 

            {
              Die folgenden Werte werden gesetzt 
              ->5.Hilfsprogramme ->9.Parameter ->1.Passwort
              =============================================
            }
      {5.Zeile lesen}
      {-------------}
      readln (parFile, passWort);              (* PassWort *)

            {
              Die folgenden Werte werden gesetzt 
              ->5.Hilfsprogramme ->9.Parameter ->4.Drucker-Auswahl ->5.Farbattribute
              ======================================================================
              (Anleitungsbuch Seite 17)
              Alle drei definiert in Unit verwpara.pas und in Unit hilfprog.pas (string32)
            }
      {6.Zeile lesen}
      {-------------}
      FOR i := 0 TO 7 DO read (parFile, farbAttrTable [i]); (* Farben *)
         readln (parFile); { Zeilenende NL lesen }

      {
        tAttrTable, ... definiert in Unit txscreen.pas
      }

            {
              Die folgenden Werte werden gesetzt 
              ->5.Hilfsprogramme ->9.Parameter ->4.Drucker-Auswahl ->4. benuzterdefiniert
              ===========================================================================
              (Anleitungsbuch Seite 15-16)
              Alle drei definiert in Unit verwpara.pas und in Unit hilfprog.pas (string32)
            }
      {7.-10.Zeile lesen}
      {-----------------}
      readln (parFile, sInit);                 (* Drucker-SteuerZeichen *)
      readln (parFile, sLpp);
      readln (parFile, sCpi12);
      readln (parFile, sCpi17);
      WITH controlSeq [prnUser] DO
      BEGIN
        init := chrStr (sInit);
        lpp := chrStr (sLpp);
        cpi12 := chrStr (sCpi12);
        cpi17 := chrStr (sCpi17);
      END;

            {
              Die folgenden Werte werden gesetzt 
            ->5.Hilfsprogramme ->9.Parameter ->4.Drucker-Auswahl ->6. Zeilen pro Seite
              ========================================================================
              (Anleitungsbuch Seite 15 - stimmt nicht mehr ganz)
              Wieviele Zeilen pro Seite drucken 
               - auf normalen Listen ->sMaxFFNorm  (Z..) in Zeile 11
               - auf Kontoauszügen   ->sMaxFFKto   (X..) in Zeile 12           
               - auf breiten Listen  ->sMaxFF17cpi (Y..) in Zeile 13
              Alle drei definiert in Unit verwpara.pas (string8) und initiert mit "null"
            }
            sMaxFFNorm := null;
            sMaxFFKto := null;
            sMaxFF17cpi := null;


    {11.-13.Zeile lesen}
    {------------------}
      IF NOT eof (parFile) THEN
      BEGIN
        sMaxFFNorm := readParaLine ('Z', false); (* Anzahl Zeilen pro Seite *)
      END;

      IF NOT eof (parFile) THEN
      BEGIN
        sMaxFFKto := readParaLine ('X', false); (* Anzahl Zeilen für Ktoauszug *)
      END;

      IF NOT eof (parFile) THEN
      BEGIN
        sMaxFF17cpi := readParaLine ('Y', false); (* breite Listen *)
      END;

      close (parFile);

    {Einlesen ParameterDatei zu Ende }



    IF sMaxFFNorm <> null THEN
      BEGIN
        valInt (sMaxFFNorm, maxFFNorm, erg);
      END;

      IF sMaxFFKto <> null THEN
      BEGIN
        valInt (sMaxFFKto, maxFFKto, erg);
      END;

      IF sMaxFF17cpi <> null THEN
      BEGIN
        valInt (sMaxFF17cpi, maxFF17cpi, erg);
      END;

   END;

     paraChg := false;
     IF ioResult <> 0 THEN; (* Für den Fall der Fälle *)
   END;