[Tustep-Liste] #VA: Akzente (ZSYN.M)

Peter Stahl peter.stahl at uni-wuerzburg.de
Mo Dez 10 21:02:27 CET 2018


Makro ZSYN.M von Michael Trauth:


----------------------------------------------------------------
$$-                              (Last modified 2018-05-23 / MTr)
$$-
$$- Mit dem Makro ZSYN kann man zwei bis neun Texte in Form einer
$$- Zeilensynopse vergleichen lassen. Es kann außerdem Sonderzeichen
$$- fakultativ als Codierungen oder als Sonderzeichen ausgeben,
$$- ferner bestimmte Textunterschiede als definierte Textüberein-
$$- stimmungen behandeln, Aufsatzpunkte für die einzelnen Vergleiche
$$- von der Tastatur übernehmen und die Zeilensynopse in ein
$$- ASCII-File zur Weiterverarbeitung durch ein anderes Textverar-
$$- beitungsprogramm überführen.
$$-
$$- Das Makro hat folgende Spezifikationen:
$$-
$$!
$$ MODE TUSCRIPT, {}

----------------------------------------------------------------
-*** Vordefinition von (Text)Variablen, die in mehreren Windows
-*** benötigt werden:

SET f_kopf  = "  Achtung!  "
SET ok      = "OK"
SET prtyp   = "PS-Q1"
-- KORR_GES ist die Variable, in die sämtliche Namen
-- sämtlicher Korrekturanweisungsdateien gesteckt werden:
SET korr_ges  = ""
SET ascii   = "", name = "", vglges = ""
SET asc     = 0, aflag = 0, eflag = 0, afszp = 0
SET shift   = "", shift1  = "", shift2  = ""
-- Variable KOLL enthält den Namen der Datei, die als
-- Kollationsgrundlage angesetzt ist:
SET koll    = ""
-- Die Variablen VGL1 bis VGL9 enthalten die Namen der Dateien, die
-- mit der Kollationsgrundlage KOLL verglichen werden sollen:
SET vgl1    = "", vgl2 = "", vgl3 = "", vgl4 = ""
SET vgl5    = "", vgl6 = "", vgl7 = "", vgl8 = "", vgl9 = ""
-- Variablen für die VergleichsAufsatzpunkte:
SET asp_lst1 = *
SET asp_lst2 = *
SET asp_lst3 = *
SET asp_lst4 = *
SET asp_lst5 = *
SET asp_lst6 = *
SET asp_lst7 = *
SET asp_lst8 = *

-*** Button-Beschriftungen:

SET ende      = " Ende "
SET help      = "  Hilfe  "
SET zurueck   = " Zurück  "
SET sorry     = " Abbruch "
SET losgehts  = " Weiter  "
SET erledigt  = " Fertig  "
SET start     = "  Start  "
----------------------------------------------------------------

WINDOW anfang: [] 70 feld

SET feld  = "weiter"
SET ttext = *
    DATA       ***  ZSYN  ***
    DATA
    DATA (c) Michael Trauth 1989-2018

SET utext = *
    DATA Funktionen des Makros:

DATA +----------------[titel                       ]----------------+
DATA |                [titel                       ]                |
DATA |                [titel                       ]                |
DATA |                                                              |
DATA |                                                              |
DATA |           Zeilensynoptischer Vergleich von Texten            |
DATA |                    ---------------------                     |
DATA |                                                              |
DATA |                                                              |
DATA |  [ueber                 ]                                    |
DATA |                                                              |
DATA |  - Vergleich von zwei bis neun Texten;                       |
DATA |  - Zeilensynoptische Druckaufbereitung des Ergebnisses;      |
DATA |  - Unterdrückung definierter Textunterschiede;               |
DATA |  - Darstellung von Sonderzeichen auf verschiedenen Druckern; |
DATA |  - Ausgabe des Vergleichprotokolls in ASCII-File.            |
DATA |                                                              |
DATA |                                                              |
DATA |                               [abbruch    ]   [weiter     ]  |
DATA |                                                              |
DATA +--------------------------------------------------------------+

FIELD titel: OUTPUT 1e ttext

FIELD ueber: OUTPUT 8f utext

FIELD abbruch: BUTTON/CANCEL 4e sorry

    EDIT

    IF ((CANCEL) .OR. (ENTER)) STOP

FIELD weiter: BUTTON/ENTER 2a losgehts

    EDIT

    IF ((ENTER) .OR. (CR)) GOTO WINDOW auswahl

END WINDOW

----------------------------------------------------------------

WINDOW auswahl: [] 71 feld

DATA +-----------[kopf                           ]------------------+
DATA |                                                              |
DATA |   Wählbare Dateien:         Bereits ausgewählt:              |
DATA |                                                              |
DATA |   [liste1         ]         [koll           ] = KOLL         |
DATA |   [liste1         ]                                          |
DATA |   [liste1         ]         [vgl1           ] = VGL1         |
DATA |   [liste1         ]         [vgl2           ] = VGL2         |
DATA |   [liste1         ]         [vgl3           ] = VGL3         |
DATA |   [liste1         ]         [vgl4           ] = VGL4         |
DATA |   [liste1         ]         [vgl5           ] = VGL5         |
DATA |   [liste1         ]         [vgl6           ] = VGL6         |
DATA |   [liste1         ]         [vgl7           ] = VGL7         |
DATA |   [liste1         ]         [vgl8           ] = VGL8         |
DATA |   [liste1         ]         [vgl9           ] = VGL9         |
DATA |   [liste1         ]                                          |
DATA |   [liste1         ]                                          |
DATA |   [liste1         ]                                          |
DATA |   [liste1         ]                                          |
DATA |   [liste1         ]                                          |
DATA |   [liste1         ]                                          |
DATA |                                                              |
DATA |   [hilfe    ]   [zurueck  ]   [abbruch  ]   [weiter   ]      |
DATA |                                                              |
DATA +--------------------------------------------------------------+

FIELD kopf: OUTPUT 8F kopftxt1

FIELD liste1: SELECT/SINGLE/CLICK 1f liste1, nummer

    LOOP

       SET nummer = 0

       EDIT

       IF ({nummer}.EQ.0)  EXIT

       SET name = SELECT (liste1, {nummer})

-*** Prüfen, ob mit den ausgewählten Dateien alles in Ordnung ist:
-*** Wenn nein: Fehlermeldung ausgeben:

       SET status = OPEN ("{name}", WRITE, -STD-)
       SET status = CHECK ("{name}", UPDATE)

       IF ("{status}" .NE. "OK") THEN
          DO dateifehler
          CYCLE
       ENDIF

-*** Wenn mit der ausgewählten Datei alles in Ordnung ist, wird
-*** sie mit REMOVE aus 'liste1' herausgenommen und als eine der
-*** zu vergleichenden Dateien verbucht:

       SET liste1 = REMOVE (liste1, {nummer})

       IF ("{koll}" .EQ. "") THEN
          SET koll = "{name}"
       ELSEIF ("{vgl1}" .EQ. "") THEN
          SET vgl1 = "{name}"
       ELSEIF ("{vgl2}" .EQ. "") THEN
          SET vgl2 = "{name}"
       ELSEIF ("{vgl3}" .EQ. "") THEN
          SET vgl3 = "{name}"
       ELSEIF ("{vgl4}" .EQ. "") THEN
          SET vgl4 = "{name}"
       ELSEIF ("{vgl5}" .EQ. "") THEN
          SET vgl5 = "{name}"
       ELSEIF ("{vgl6}" .EQ. "") THEN
          SET vgl6 = "{name}"
       ELSEIF ("{vgl7}" .EQ. "") THEN
          SET vgl7 = "{name}"
       ELSEIF ("{vgl8}" .EQ. "") THEN
          SET vgl8 = "{name}"
       ELSEIF ("{vgl9}" .EQ. "") THEN
          SET vgl9 = "{name}"
       ELSE
          BEEP
       ENDIF

    ENDLOOP

-*** In den Zielfeldern können die gewählten Dateien wieder
-*** abgewählt werden:

FIELD koll: SELECT/SINGLE/CLICK 4f koll, nummer

     EDIT

     IF (TAB) GOTO FIELD liste1

     SET name   = SELECT (koll, {nummer})

     IF ("{name}" .NE. "") THEN
        SET koll   = "{vgl1}"
        SET vgl1   = "{vgl2}"
        SET vgl2   = "{vgl3}"
        SET vgl3   = "{vgl4}"
        SET vgl4   = "{vgl5}"
        SET vgl5   = "{vgl6}"
        SET vgl6   = "{vgl7}"
        SET vgl7   = "{vgl8}"
        SET vgl8   = "{vgl9}"
        SET vgl9   = ""
        SET liste1 = INSERT (liste1, 0, name)
     ENDIF

     GOTO FIELD liste1

FIELD vgl1: SELECT/SINGLE/CLICK 4f vgl1, nummer

     EDIT

     IF (TAB) GOTO FIELD liste1

     SET name   = SELECT (vgl1, {nummer})

     IF ("{name}" .NE. "") THEN
        SET vgl1   = "{vgl2}"
        SET vgl2   = "{vgl3}"
        SET vgl3   = "{vgl4}"
        SET vgl4   = "{vgl5}"
        SET vgl5   = "{vgl6}"
        SET vgl6   = "{vgl7}"
        SET vgl7   = "{vgl8}"
        SET vgl8   = "{vgl9}"
        SET vgl9   = ""
        SET liste1 = INSERT (liste1, 0, name)
     ENDIF

     GOTO FIELD liste1

FIELD vgl2: SELECT/SINGLE/CLICK 4f vgl2, nummer

     EDIT

     IF (TAB) GOTO FIELD liste1

     SET name   = SELECT (vgl2, {nummer})

     IF ("{name}" .NE. "") THEN
        SET vgl2   = "{vgl3}"
        SET vgl3   = "{vgl4}"
        SET vgl4   = "{vgl5}"
        SET vgl5   = "{vgl6}"
        SET vgl6   = "{vgl7}"
        SET vgl7   = "{vgl8}"
        SET vgl8   = "{vgl9}"
        SET vgl9   = ""
        SET liste1 = INSERT (liste1, 0, name)
     ENDIF

     GOTO FIELD liste1

FIELD vgl3: SELECT/SINGLE/CLICK 4f vgl3, nummer

     EDIT

     IF (TAB) GOTO FIELD liste1

     SET name   = SELECT (vgl3, {nummer})

     IF ("{name}" .NE. "") THEN
        SET vgl3   = "{vgl4}"
        SET vgl4   = "{vgl5}"
        SET vgl5   = "{vgl6}"
        SET vgl6   = "{vgl7}"
        SET vgl7   = "{vgl8}"
        SET vgl8   = "{vgl9}"
        SET vgl9   = ""
        SET liste1 = INSERT (liste1, 0, name)
     ENDIF

     GOTO FIELD liste1

FIELD vgl4: SELECT/SINGLE/CLICK 4f vgl4, nummer

     EDIT

     IF (TAB) GOTO FIELD liste1

     SET name   = SELECT (vgl4, {nummer})

     IF ("{name}" .NE. "") THEN
        SET vgl4   = "{vgl5}"
        SET vgl5   = "{vgl6}"
        SET vgl6   = "{vgl7}"
        SET vgl7   = "{vgl8}"
        SET vgl8   = "{vgl9}"
        SET vgl9   = ""
        SET liste1 = INSERT (liste1, 0, name)
     ENDIF

     GOTO FIELD liste1

FIELD vgl5: SELECT/SINGLE/CLICK 4f vgl5, nummer

     EDIT

     IF (TAB) GOTO FIELD liste1

     SET name   = SELECT (vgl5, {nummer})

     IF ("{name}" .NE. "") THEN
        SET vgl5   = "{vgl6}"
        SET vgl6   = "{vgl7}"
        SET vgl7   = "{vgl8}"
        SET vgl8   = "{vgl9}"
        SET vgl9   = ""
        SET liste1 = INSERT (liste1, 0, name)
     ENDIF

     GOTO FIELD liste1

FIELD vgl6: SELECT/SINGLE/CLICK 4f vgl6, nummer

     EDIT

     IF (TAB) GOTO FIELD liste1

     SET name   = SELECT (vgl6, {nummer})

     IF ("{name}" .NE. "") THEN
        SET vgl6   = "{vgl7}"
        SET vgl7   = "{vgl8}"
        SET vgl8   = "{vgl9}"
        SET vgl9   = ""
        SET liste1 = INSERT (liste1, 0, name)
     ENDIF

     GOTO FIELD liste1

FIELD vgl7: SELECT/SINGLE/CLICK 4f vgl7, nummer

     EDIT

     IF (TAB) GOTO FIELD liste1

     SET name   = SELECT (vgl7, {nummer})

     IF ("{name}" .NE. "") THEN
        SET vgl7   = "{vgl8}"
        SET vgl8   = "{vgl9}"
        SET vgl9   = ""
        SET liste1 = INSERT (liste1, 0, name)
     ENDIF

     GOTO FIELD liste1

FIELD vgl8: SELECT/SINGLE/CLICK 4f vgl8, nummer

     EDIT

     IF (TAB) GOTO FIELD liste1

     SET name   = SELECT (vgl8, {nummer})

     IF ("{name}" .NE. "") THEN
        SET vgl8   = "{vgl9}"
        SET vgl9   = ""
        SET liste1 = INSERT (liste1, 0, name)
     ENDIF

     GOTO FIELD liste1

FIELD vgl9: SELECT/SINGLE/CLICK 4f vgl9, nummer

     EDIT

     IF (TAB) GOTO FIELD liste1

     SET name   = SELECT (vgl9, {nummer})

     IF ("{name}" .NE. "") THEN
        SET vgl9   = ""
        SET liste1 = INSERT (liste1, 0, name)
     ENDIF

     GOTO FIELD liste1

FIELD hilfe: BUTTON/HELP 2a help

    EDIT

    IF (HELP) THEN

       SET h_tit = "HILFE: Datei-Auswahl"
       SET h_txt  = *
          DATA Wählen Sie bitte im linken Fenster die Dateien aus,
          DATA die Sie vergleichen möchten. Die erste Datei wird
          DATA zur Kollationsgrundlage KOLL, alle weiteren zu den
          DATA Vergleichsdateien VGL1, VGL2 usw.  In der rechten
          DATA Spalte können Sie die ausgewählten Dateien wieder
          DATA abwählen (durch Mausklick oder RETURN).
       SET nix = DISPLAY (0:0, 1F-71-79-80, h_tit, h_txt, ok)

    ENDIF

    GOTO FIELD liste1

FIELD zurueck: BUTTON 1e zurueck

    EDIT

    IF ((ENTER) .OR. (CR)) GOTO WINDOW anfang

FIELD abbruch: BUTTON/CANCEL 4e sorry

    EDIT

    IF ((CANCEL) .OR. (ENTER)) STOP

FIELD weiter: BUTTON 2a losgehts

    EDIT

    IF ("" .EQ. "{koll}", "{vgl1}") THEN

       SET f_txt  = *
          DATA   Es müssen mindestens zwei Dateien zum Vergleich
          DATA ausgewählt werden. Bitte korrigieren oder abbrechen!
       SET nix = DISPLAY (0:0, 1f-70-4e-2a, f_kopf, f_txt, ok)

       GOTO FIELD liste1

    ELSE

       SET vglges = "{vgl1}"

       LOOP shift = "{vgl2}'{vgl3}'{vgl4}'{vgl5}'{vgl6}'{vgl7}'{vgl8}"

          IF ("{shift}" .EQ. "") EXIT
          SET vglges = APPEND (vglges, "'", shift)

       ENDLOOP

       GOTO WINDOW optionen

    ENDIF

END WINDOW

-----------------------------------------------------------------
SECTION dateifehler

    SET f_txt = *
       DATA Es gibt ein Problem mit der Datei {name}:
       DATA keine TUSTEP-Datei? von einem anderen Prozeß
       DATA belegt? nicht vorhanden? Bitte andere Auswahl!
    SET nix = DISPLAY (0:0, 1f-70-4e-2a, f_kopf, f_txt, ok)

ENDSECTION
-----------------------------------------------------------------

-*** Beschriftung des Feldes 'kopf' und der Buttons:

SET kopftxt1  = "Auswahl der Vergleichsdateien"

-*** Schreibt die TUSTEP-konformen Namen der Dateien im aktu-
-*** ellen Projektverzeichnis in die (Stern)Variable 'liste1':

SET liste1    = FILE_NAMES (+, -STD-)

-----------------------------------------------------------------
-*** Vorbelegung von Variablen für das Window 'optionen':
SET elim   = 0
SET sndrz  = 1
SET synops = 1
SET prt    = 1
-----------------------------------------------------------------

WINDOW optionen: [] 71 feld

DATA +----------[kopf                                   ]-----------+
DATA |                                                              |
DATA |   [s] [sonderz                                           ]   |
DATA |   [s] [sonderz                                           ]   |
DATA |                                                              |
DATA |   [e] [eliminieren                                       ]   |
DATA |       [eliminieren                                       ]   |
DATA |                                                              |
DATA |   [y] [synopsenart                                       ]   |
DATA |   [y] [synopsenart                                       ]   |
DATA |                                                              |
DATA |   [p] [protokoll                                         ]   |
DATA |   [p] [protokoll                                         ]   |
DATA |        ggf. Name der ASCII-Datei:   [asciidat          ]     |
DATA |        ggf. Erlaubnis zum Überschreiben dieser Datei [l]     |
DATA |                                                              |
DATA |   [a] [aufsatzp                                          ]   |
DATA |                                                              |
DATA |        Eingestellter Druckertyp:    [drtyp             ]     |
DATA |   [d] [ch_drtyp                                          ]   |
DATA |                                                              |
DATA |    [hilfe    ]   [zurueck  ]   [abbruch  ]   [weiter   ]     |
DATA |                                                              |
DATA +--------------------------------------------------------------+

IF ({sndrz} .EQ. 0)  SET sndrz = 1

FIELD kopf: OUTPUT 8F kopftxt2

FIELD s: FLAGS/SINGLE/CLICK 80 sndrz

    EDIT

    IF ({sndrz} .EQ. 0) SET sndrz = 1

FIELD sonderz: OUTPUT/CLICK 70 sz_liste

FIELD e: FLAGS/SINGLE/CLICK 80 elim

    EDIT

    IF (({elim}.EQ.1) .AND. ({eflag}.NE.1)) DISPLAY eliminieren
    IF ({elim}.EQ.0) SET eflag = 0

    GOTO FIELD weiter

FIELD eliminieren: OUTPUT 70 elimtxt

IF ({synops} .EQ. 0)  SET synops = 1

FIELD y: FLAGS/SINGLE/CLICK 80 synops

    EDIT

    IF ({synops} .EQ. 0) SET synops = 1
    GOTO FIELD weiter

FIELD synopsenart: OUTPUT/CLICK 70 synlst

IF ({prt} .EQ. 0)  SET prt = 1

FIELD p: FLAGS/SINGLE/CLICK 80 prt

       EDIT

       IF ({prt} .EQ. 0) THEN
          SET prt = 1
          GOTO FIELD weiter
       ELSEIF ({prt} .EQ. 1) THEN
          GOTO FIELD weiter
       ELSE
          GOTO FIELD asciidat
       ENDIF

FIELD protokoll: OUTPUT/CLICK 70 prot_txt

FIELD l: FLAGS/SINGLE 4e loe

    EDIT

FIELD asciidat: INPUT 1e ascii, asc

    LOOP

       EDIT

       IF ("{ascii}" .EQ. "") EXIT

       IF ("{ascii}" .NE. DATEINAME) THEN

          SET f_txt = *
             DATA Der von Ihnen angegebene Dateiname ent-
             DATA spricht nicht den TUSTEP-Konventionen
             DATA (max. 12 Zeichen, Buchstabe am Anfang,
             DATA nur '_' als Sonderzeichen erlaubt).
             DATA Bitte korrigieren!
          SET nix = DISPLAY (0:0, 1f-70-4e-2a, f_kopf, f_txt, ok)

       ELSE

          IF ({prt} .NE. 2) THEN

             SET f_txt = *
                DATA Sie haben die Ausgabe auf einem Drucker angewählt,
                DATA nicht die Ausgabe in eine ASCII-Datei. Bitte hier
                DATA nur dann einen Dateinamen angeben, wenn Sie diese
                DATA ASCII-Ausgabe angewählt haben!
             SET nix = DISPLAY (0:0, 1f-70-4e-2a, f_kopf, f_txt, ok)

             GOTO FIELD p

          ELSE

             SET status1 = OPEN (ascii, WRITE, -STD-)

             IF (("{status1}" .EQ. "OK") .AND. ({loe} .EQ. 1)) THEN

                EXIT

             ELSEIF (("{status1}" .EQ. "OK") .AND. ({loe} .NE. 1)) THEN

                SET f_txt = *
                   DATA Die Datei existiert schon, aber Sie haben die
                   DATA Erlaubnis zum Löschen (noch?) nicht gegeben.
                   DATA Bitte korrigieren!
                SET nix = DISPLAY (0:0, 1f-70-4e-2a, f_kopf, f_txt, ok)

                GOTO FIELD l

             ELSEIF ("{status1}" .NE. "OK") THEN

                SET status2 = CREATE (ascii, SDF-P, -STD-)

                IF ("{status2}" .EQ. "OK") THEN

                   EXIT

                ELSE

                   SET f_txt = *
                      DATA Die angegebene ASCII-Datei kann nicht
                      DATA angelegt werden - weiß der Teufel warum.
                      DATA Bitte andere Wahl!
                   SET nix = DISPLAY (0:0, 1f-70-4e-2a, f_kopf, f_txt, ok)

                ENDIF

             ENDIF

          ENDIF

       ENDIF

    ENDLOOP

FIELD a: FLAGS/SINGLE/CLICK 80 afszp

    EDIT

    IF ({afszp}.EQ.0) SET aflag = 0

    IF (({afszp}.EQ.1) .AND. ({aflag}.NE.1)) THEN

       SET hv1 = 0

       LOOP shift = "{vglges}"

          SET hv1      = {hv1} + 1
          SET asp_lst  = *
          SET kopftxt = *
             DATA Manuelle Eingabe von Aufsatzpunkten
             DATA für den Vergleich der beiden Dateien
             DATA {koll} - {shift}

          DISPLAY aufsatzpt

          SET asp_lst{hv1} = VALUE (asp_lst)

       ENDLOOP

    SET aflag = 1

    ENDIF

    GOTO FIELD weiter

FIELD aufsatzp: OUTPUT/CLICK 70 afszp_txt

FIELD drtyp: OUTPUT 1e prtyp

FIELD d: FLAGS/SINGLE/CLICK 80 chprtyp

    EDIT

    IF ({chprtyp} .EQ. 1) GOTO WINDOW dr_auswahl

FIELD ch_drtyp: OUTPUT/CLICK 70 ch_drtyp

FIELD hilfe: BUTTON/HELP 2a help

    EDIT

    IF (HELP) THEN

       SET h_tit = "HILFE: Vergleichsoptionen"
       SET h_txt  = *
          DATA Sorry, noch keine Hilfe definiert!
       SET nix = DISPLAY (0:0, 1F-71-79-80, h_tit, h_txt, ok)

    ENDIF

    GOTO FIELD {feld}

FIELD zurueck: BUTTON 1e zurueck

    EDIT

    IF ((ENTER) .OR. (CR)) GOTO WINDOW auswahl

FIELD abbruch: BUTTON/CANCEL 4e sorry

    EDIT

    IF ((CANCEL) .OR. (ENTER)) STOP

FIELD weiter: BUTTON 2a start

    EDIT

    IF ((ENTER) .OR. (CR)) THEN

       IF ({prt} .EQ. 2) THEN

          IF ("{ascii}" .EQ. "") THEN

             SET f_txt = *
                DATA Sie haben die Ausgabe in eine ASCII-Datei
                DATA verlangt, aber keinen Dateinamen angegeben.
                DATA Bitte korrigieren!
             SET nix = DISPLAY (0:0, 1f-70-4e-2a, f_kopf, f_txt, ok)

             GOTO FIELD asciidat

          ENDIF

       ELSE

          IF ("{ascii}" .NE. "") THEN

             SET f_txt = *
                DATA Sie haben die Aufbereitung der Synopse für
                DATA einen Drucker verlangt, zugleich aber einen
                DATA Dateinamen für die Ausgabe in eine ASCII-
                DATA Datei angegeben. Bitte korrigieren!
             SET nix = DISPLAY (0:0, 1f-70-4e-2a, f_kopf, f_txt, ok)

             GOTO FIELD asciidat

          ENDIF

       ENDIF

       IF (({elim}.EQ.1) .AND. ({eflag}.NE.1)) GOTO WINDOW eliminieren

    ENDIF

END WINDOW

-----------------------------------------------------------------

-*** Beschriftung des Feldes 'kopf' etc.:

SET kopftxt2  = "          Vergleichsoptionen"

SET sz_liste  = *
    DATA Darstellung von Sonderzeichen als Codierung
    DATA Darstellung von Sonderzeichen als Sonderzeichen

SET synlst  = *
    DATA Synopse enthält den gesamten Text.
    DATA Synopse enthält nur die Abweichungen.

SET elimtxt = *
    DATA Eliminieren definierter Textunterschiede, die wie
    DATA Textübereinstimmungen behandelt werden sollen.

SET prot_txt = *
    DATA Synopse für Ausgabe auf einem Drucker aufbereiten.
    DATA Synopse in ASCII-Datei ausgeben.

SET afszp_txt = "Eingabe von Aufsatzpunkten"

SET ch_drtyp  = "ggf. anderen Druckertyp auswählen"

----------------------------------------------------------------
WINDOW dr_auswahl: [] 71 feld

DATA +--------------------------------------------------------------+
DATA |                                                              |
DATA |           [kopf                           ]                  |
DATA |                                                              |
DATA |     Wählbare Druckertypen:         Ausgewählt:               |
DATA |                                                              |
DATA |       [drtliste        ]         [drtyp          ]           |
DATA |       [drtliste        ]                                     |
DATA |       [drtliste        ]                                     |
DATA |       [drtliste        ]                                     |
DATA |       [drtliste        ]                                     |
DATA |       [drtliste        ]                                     |
DATA |       [drtliste        ]                                     |
DATA |       [drtliste        ]                                     |
DATA |       [drtliste        ]                                     |
DATA |       [drtliste        ]                                     |
DATA |       [drtliste        ]                                     |
DATA |                                                              |
DATA |   [hilfe    ]   [zurueck  ]   [abbruch  ]   [weiter   ]      |
DATA |                                                              |
DATA +--------------------------------------------------------------+

SET kopftxt = "Auswahl des Druckertyps"

SET prtlist = "HP'HP-10'HP-12'HP-LP'HP-LP1'HP-LP2'HPDJ'HPII'HPLJ'" ...
               "MAC-10'MAC-12'MAC-PR'WIN-10'WIN-12'" ...
               "PS-10'PS-10-A3'PS-10-QF'PS-12'PS-12-A3'PS-12-QF'PS-Q1'" ...
               "PS-Q1-A3'PS-Q2'PS-Q2-A3'PS-10-LTR'PS-10-LGL'" ...
               "PS-12-LTR'PS-12-LGL'PS-Q1-LTR'PS-Q2-LTR'" ...
               "PS-Q1-LGL'PS-Q2-LGL'LX'FX'LQ'ST"

FIELD kopf: OUTPUT 8F kopftxt

FIELD drtliste: SELECT/SINGLE/CLICK 1f prtlist, nummer

    LOOP

       SET nummer = 0

       EDIT

       IF ({nummer}.EQ.0)  EXIT

       SET prtyp = SELECT (prtlist, {nummer})

    ENDLOOP

FIELD drtyp: OUTPUT 4f prtyp

FIELD hilfe: BUTTON/HELP 2a help

    EDIT

    IF (HELP) THEN

       SET h_tit = "HILFE: Auswahl des Druckertyps"
       SET h_txt  = *
          DATA Wählen Sie bitte im linken Fenster den Druckertyp
          DATA für die Ausgabe aus. Diese Angabe ist auch dann
          DATA erforderlich, wenn Sie nicht ausdrucken, sondern
          DATA nur in eine ASCII-Datei ausgeben lassen möchten.
          DATA Als Standardwert ist PS-12 (= DIN-A4 hoch, mit
          DATA 94 Zeichen pro Zeile) voreingestellt. Wenn eine
          DATA Ausgabe mit möglichst vielen Zeichen pro Zeile
          DATA gewünscht wird, ist etwa PS-Q1 (DIN-A4 quer, mit
          DATA 120 Zeichen pro Zeile) empfehlenswert. Mehr über
          DATA die von TUSTEP unterstützten Druckertypen erfah-
          DATA Sie auf Kommandoebene mit dem Kommando #LI,DR
       SET nix = DISPLAY (0:0, 1F-71-79-80, h_tit, h_txt, ok)

    ENDIF

    GOTO FIELD {feld}

FIELD zurueck: BUTTON 1e zurueck

    EDIT

    IF ((ENTER) .OR. (CR)) THEN

       SET chprtyp = 0

       GOTO WINDOW optionen

    ENDIF

FIELD abbruch: BUTTON/CANCEL 4e sorry

    EDIT

    IF ((CANCEL) .OR. (ENTER)) STOP

FIELD weiter: BUTTON 2a erledigt

    EDIT

    IF ((ENTER) .OR. (CR)) THEN

       SET chprtyp = 0

       GOTO WINDOW optionen

    ENDIF

END WINDOW
-----------------------------------------------------------------
WINDOW eliminieren: [] 71 feld

DATA +-----------------------------------------------------------------+
DATA |                                                                 |
DATA |        [kopf                                          ]         |
DATA |        [kopf                                          ]         |
DATA |                                                                 |
DATA |                                                                 |
DATA |   [m] [elimliste                                            ]   |
DATA |   [m] [elimliste                                            ]   |
DATA |   [m] [elimliste                                            ]   |
DATA |   [m] [elimliste                                            ]   |
DATA |   [m] [elimliste                                            ]   |
DATA |   [m] [elimliste                                            ]   |
DATA |   [m] [elimliste                                            ]   |
DATA |   [m] [elimliste                                            ]   |
DATA |   [m] [elimliste                                            ]   |
DATA |   [m] [elimliste                                            ]   |
DATA |   [m] [elimliste                                            ]   |
DATA |   [m] [elimliste                                            ]   |
DATA |   [m] [elimliste                                            ]   |
DATA |                                                                 |
DATA |                                                                 |
DATA |   [hilfe    ]     [zurueck  ]     [abbruch  ]     [weiter   ]   |
DATA |                                                                 |
DATA +-----------------------------------------------------------------+

SET kopftxt = *
    DATA  Definierte Textunterschiede beim Vergleich
    DATA     wie Textübereinstimmungen behandeln

SET elimlst = *
    DATA Satzzeichen (.:,;!?"=-/') ohne Belang
    DATA Groß-/Kleinschreibung ohne Belang
    DATA Identische Doppelkonsonanten = einfache Konsonanten
    DATA aw/auw/ow/ouw = au
    DATA         Ch/ch = H/h
    DATA     ck/gk/k/c = k
    DATA         Ei/ei = Ai/ai
    DATA           F/f = V/v
    DATA       J/j/Y/y = I/i   (z.B.: May/Maj/Mai)
    DATA           P/p = B/b
    DATA       ss/sß/ß = s
    DATA       tt/d/dt = t
    DATA           v/w = u     (z.B.: Bawer/Bauer)

FIELD kopf: OUTPUT 1f kopftxt

FIELD m: FLAGS/MULTIPLE 2e elimnr

    EDIT

FIELD elimliste: OUTPUT/CLICK 1f elimlst

FIELD hilfe: BUTTON/HELP 2a help

    EDIT

    IF (HELP) THEN

       SET h_tit = "HILFE: Textunterschiede eliminieren"
       SET h_txt = *
          DATA Wählen Sie aus den angebotenen Optionen die von
          DATA Ihnen benötigten aus  (durch Klick oder RETURN)
       SET nix = DISPLAY (0:0, 1F-71-79-80, h_tit, h_txt, ok)

    ENDIF

    GOTO FIELD m

FIELD zurueck: BUTTON 1e zurueck

    EDIT

    IF ((ENTER) .OR. (CR)) GOTO WINDOW optionen

FIELD abbruch: BUTTON/CANCEL 4e sorry

    EDIT

    IF ((CANCEL) .OR. (ENTER)) STOP

FIELD weiter: BUTTON 2a erledigt

    EDIT

    IF ((ENTER) .OR. (CR)) SET eflag = 1

END WINDOW
----------------------------------------------------------------
WINDOW aufsatzpt: [] 71 feld

DATA +--------------------------------------------------------------+
DATA |                                                              |
DATA |           [kopf                                ]             |
DATA |           [kopf                                ]             |
DATA |           [kopf                                ]             |
DATA |                                                              |
DATA |                                                              |
DATA |   [vglasp                                                ]   |
DATA |   [vglasp                                                ]   |
DATA |   [vglasp                                                ]   |
DATA |   [vglasp                                                ]   |
DATA |   [vglasp                                                ]   |
DATA |   [vglasp                                                ]   |
DATA |   [vglasp                                                ]   |
DATA |   [vglasp                                                ]   |
DATA |   [vglasp                                                ]   |
DATA |   [vglasp                                                ]   |
DATA |   [vglasp                                                ]   |
DATA |   [vglasp                                                ]   |
DATA |   [vglasp                                                ]   |
DATA |                                                              |
DATA |        [hilfe     ]     [abbruch   ]     [weiter    ]        |
DATA |                                                              |
DATA +--------------------------------------------------------------+

FIELD kopf: OUTPUT 8F kopftxt

FIELD vglasp: INPUT/EDIT 1f asp_lst, nummer

    EDIT/LF

FIELD hilfe: BUTTON/HELP 2a help

    EDIT

    IF (HELP) THEN

       SET h_tit = "HILFE: Eingabe von Aufsatzpunkten"
       SET h_txt  = *
          DATA Geben Sie hier manuelle Aufsatzpunkte für den
          DATA Vergleich der beiden Texte an: entweder einen
          DATA pro Zeile oder mehrere, durch Hochkommata ge-
          DATA trennt, nebeneinander. Beispiele für korrekte
          DATA Aufsatzpunkte:      1.1=2.1
          DATA                     1.1-3.12=1.1-3.44
          DATA                     3.13-7.60=3.45-6.32
       SET nix = DISPLAY (0:0, 1F-71-79-80, h_tit, h_txt, ok)

    ENDIF

    GOTO FIELD vglasp

FIELD abbruch: BUTTON/CANCEL 4e sorry

    EDIT

    IF ((CANCEL) .OR. (ENTER)) STOP

FIELD weiter: BUTTON 2a erledigt

    EDIT

END WINDOW
-----------------------------------------------------------------
-  trace on
DISPLAY anfang
-  trace off
-----------------------------------------------------------------

DATA #mo,re#pr,start#pr,/#pa,aus#fe,ein

SET hv1 = 0

LOOP shift = "{vglges}"

    SET hv1 = hv1 + 1
       SET korr_dat   = "zsyn*korr_dat.9_{hv1}"
       SET asp_lst = VALUE (asp_lst{hv1})
       --SET korr_ges  = REPLACE (korr_ges, 0, korr_dat)
       SET korr_ges  = APPEND (korr_ges, "'", korr_dat)

    DATA #da,{korr_dat},fr=-
    DATA #ve,{koll},{shift},mo=t,lo=+,pa=*,ko={korr_dat},pr=-
    DATA par       {}
    DATA vkz       |{shift}|
    DATA umg       1 50 1
    DATA asp       {asp_lst}
    DATA sw        0
    DATA *eof

ENDLOOP

IF ({elim} .EQ. 1) THEN

    SET hv2 = 0

    LOOP shift = "{vglges}"

       SET hv2 = hv2 + 1
       SET kor = "zsyn*korr_dat.9_{hv2}"
       SET zwi = "zsyn*zwi_dat.9_{hv2}"

-*** Das nachfolgende KOPIERE hat die Aufgabe, aus der Ergebnisdatei
-*** des jeweiligen VERGLEICHE (KOR.n) diejenigen festgestellten Unter-
-*** schiede zu eliminieren, die nach festen Vorgaben (XX-Karten) nicht
-*** wie Unterschiede behandelt werden sollen:

       DATA #da,{zwi},fr=-
       DATA #ko,{kor},{zwi},,+,*
       DATA par       <>
       DATA >0z       .:,;!?"=-/'
       DATA >1z       </><aeiouäöü
       DATA         * Das nachfolgende Austausche (XX-Karten) defi-
       DATA         * niert Zeichen(folge)paare, die als identisch
       DATA         * gelten sollen.

       LOOP shift1 = elimnr

          SELECT "{shift1}"

          CASE 1
             DATA xx    1   |>0|||%>0><>0|»0| :: |]=|]+|]-||
          CASE 2
             DATA xx    1   |<*|>-01|
          CASE 3
             DATA xx    2   |>1>=01|>=01|
          CASE 4
             DATA xx    3   |<Aw|Au|>aw|au|
             DATA xx    3   |<Auw|Au|>auw|au|
             DATA xx    3   |<Ow|Au|>ow|au|
             DATA xx    3   |<Ouw|Au|>ouw|au|
          CASE 5
             DATA xx    3   |<Ch|<H|>ch|h|
          CASE 6
             DATA xx    3   |ck|k|gk|k|c|k|
          CASE 7
             DATA xx    4   |<Ei|Ai|>ei|ai|
          CASE 8
             DATA xx    4   |<F|V|>f|v|
          CASE 9
             DATA xx    4   |<J|I|>j|i|<Y|I|>y|i|
          CASE 10
             DATA xx    4   |<P|B|>p|b|
          CASE 11
             DATA xx    4   |ss|s|sß|s|ß|s|
          CASE 12
             DATA xx    4   |tt|t|<D|T|>d|t|dt|t|
          CASE 13
             DATA xx    4   |<V|U|>v|u|<W|U|>w|u|

          ENDSELECT

       ENDLOOP

          DATA ak1   8   | :: |
          DATA ek1   8 = ak1   8
          DATA aei   8   11
          DATA av    9   |]=|]+|]-|
          DATA vi    9   11
          DATA vgl   9   0
          DATA vtz   9   3
          DATA           _1__2__3__4__5__6__7__8__9
          DATA sp0       12  8  8  8  8  8  8 91  3
          DATA spn        8  8  8  8  8  8  8  8 90
          DATA spj        8  8  8  8  8  8  8  8  0
          DATA sp2       22 32 42 52 62 72 17 15  8
          DATA sp5       99
          DATA sp7       82
          DATA *eof
          DATA #ko,{zwi},{kor},,+
          DATA #lo,,{zwi}

    ENDLOOP

ENDIF

SET proto1 = "zsyn*zwi_prt.9_4"
SET proto2 = "zsyn*zwi_prt.9_5"
IF ({synops} .EQ. 2) SET synops = 0

DATA #da,{proto1},fr=-
DATA #va,{koll},ko={korr_ges},lo=+,pa=*,pr={proto1}
DATA par       {}
DATA pr        {synops}
DATA kt        |#/+Synopse: {koll} _#(pfb)_ {vgl1} {vgl2} {vgl3}
DATA kt         {vgl4} {vgl5} {vgl6} {vgl7} {vgl8}@/xxxx#/-|
DATA kt        |#0+__@/#0-|

IF ("{prtyp}" .EQ. "HP-12","HP-GM") THEN
    DATA dr        1 2 88
ELSEIF ("{prtyp}" .EQ. "PS-12","PS-12-LTR","PS-12-LGL") THEN
    DATA dr        1 2 88
ELSEIF ("{prtyp}" .EQ. "HP-LP1","PS-Q1") THEN
    DATA dr        1 3 125
ELSE
    DATA dr        1 2 74
ENDIF

DATA drt       {prtyp}
DATA drz       3 61
DATA *eof

IF ({sndrz} .EQ. 2) THEN

    DATA #da,{proto2},fr=-
    DATA #ko,{proto1},{proto2},,+,*
    DATA par       <>
    DATA >0z       <%>< <>
    DATA zf+   1   |^#;|^#!|^#.|^#'|^#,|^%^\|^%>@|^#(<>4</)|^#>%+|^#>%-|
    DATA         * Superskribierung = #; + gesamten Wortrest:
    DATA xx    1   |^#;<>>0|#;<=01___|
    DATA         * Subskribierung = #! + gesamten Wortrest:
    DATA xx    1   |^#!<>>0|#!<=01___|
    DATA         * Einfache Hochstellung = #' + gesamten Wortrest:
    DATA xx    1   |^#'<>>0|#'<=01__|
    DATA         * Einfache Tiefstellung = #, + gesamten Wortrest:
    DATA xx    1   |^#,<>>0|#,<=01__|
    DATA         * Ligatur = #. + gesamten Wortrest:
    DATA xx    1   |^#.<>>0|«=01__|
    DATA         * Gravis über Buchstaben + gesamten Wortrest:
    DATA xx    1   |^%^\<>>0|%\>=03__|
    DATA         * Gravis unter Buchstaben + gesamten Wortrest:
    DATA xx    1   |^%^\^\<>>0|%\\>=04__|
    DATA         * Akzent über Buchstaben + gesamten Wortrest:
    DATA xx    1   |^%>@<>>0|%>=(2-3)__|
    DATA         * Akzent unter Buchstaben + gesamten Wortrest:
    DATA xx    1   |^%>@>@<>>0|%>=(2-4)___|
    DATA         * Sonderkodierungen + gesamten Wortrest:
    DATA xx    1   |^#(><4</)><<>>0|#(>=03)<=01______|
    DATA xx    1   |^#(><3</)><<>>0|#(>=03)<=01_____|
    DATA xx    1   |^#(><2</)><<>>0|#(>=03)<=01____|
    DATA         * Zeichenformatierungen:
    DATA xx    1   |^#>%+><<>>0|#>=02+<=01___|
    DATA xx    1   |^#>%-><<>>0|#>=02-<=01___|

    DATA spn        3
    DATA sp2       11
    DATA *eof
    DATA #ko,{proto2},{proto1},,+
    DATA #lo,,{proto2}

ENDIF

IF ({asc} .EQ. 1) THEN

     IF ("{ascii}" .EQ. SCRATCH) DATA #lo,,{ascii}

     DATA #da,{ascii},sdf-ap

     DATA #da,{proto2},fr=-
     DATA #ko,{proto1},{proto2},,+,*
     DATA par       <>
     DATA ta-   1   |-|*|
     DATA ta-   1   |>/#0+\\|>/#=>/>/>/#0+\\|
     DATA xx    1   |><|>/||
     DATA xx    1   |#=>/>/>/||#+>/>/>/||#->/>/>/||
     DATA xx    1   |^_|_|^#|#|^&|&|^%|%|^\|\|^@|@|
     DATA blu       0 1
     DATA *eof
     DATA #um,{proto2},{ascii},-STD-,+,CO=ISO
     DATA #lo,,{proto2}

ENDIF

DATA #mo,ho#pa,ein#pr,+
DATA #da,zsyn.ziel,seq-ap
DATA #ko,{proto1},zsyn.ziel,,+
DATA #lo,,{proto1}

DATA #makro

DATA $$ SET kopftxt = "    Bitte beachten Sie:    "
DATA $$ SET ok      = "OK"

DATA $$ WINDOW drucken: [] 8f feld

DATA +--------------------------------------------------------------+
DATA |                                                              |
DATA |              [kopf                        ]                  |
DATA |                                                              |
DATA |          Das Resultat der Vergleichsprozedur                 |
DATA |           steht jetzt in der Protokolldatei                  |
DATA |         ZSYN.ZIEL und kann ausgedruckt werden.               |
DATA |                                                              |
DATA |                                                              |
DATA |          Bitte wählen Sie:                                   |
DATA |          -----------------                                   |
DATA |                                                              |
DATA |    [w]  Bildschirmausgabe (Preview mit WIN-10)               |
DATA |    [p]  Ausgabe auf den Defaultdrucker Ihres Rechners        |
DATA |                                                              |
DATA |    [ok] Jetzt beenden                                        |
DATA |                                                              |
DATA |                                                              |
DATA +--------------------------------------------------------------+

DATA $$= - [ ]

DATA FIELD kopf: OUTPUT 8F kopftxt

DATA FIELD w: FLAGS/SINGLE 1e win10

DATA    EDIT

DATA FIELD p: FLAGS/SINGLE 1e print

DATA    EDIT

DATA FIELD ok: BUTTON/ENTER 2e ok

DATA    EDIT

DATA END WINDOW

DATA -----------------------------------------------------------------

DATA DISPLAY drucken

DATA -----------------------------------------------------------------

DATA IF ([win10] .EQ. 1) THEN

DATA    DATA #dr,zsyn.ziel,win-10,+

DATA ENDIF

DATA IF ([print] .EQ. 1) THEN

DATA    DATA #dr,zsyn.ziel,{prtyp}

DATA ENDIF

DATA *eof

-- 
Dr. Peter Stahl
Julius-Maximilians-Universität Würzburg
Deutsche Sprachwissenschaft
Am Hubland
D-97074 Würzburg

Tel.: +49 931 31 85 627
Fax:  +49 931 31 81 114
E-Mail: stahl at germanistik.uni-wuerzburg.de
Raum: 4.E.4

Sekretariat: Elisabeth Schönig (4.E.12)
Tel.: +49 931 31 85 630




Mehr Informationen über die Mailingliste Tustep-Liste