ï ñ ò Information 325

### WORTPRUEFUNG, Prüfparameter

Folgende Prüfparameter können gesetzt werden:

    FELD:<fn>

Gibt den Feldnamen des zu prüfenden Feldes an. Die Wortlistendatei kann einen anderen Namen als das zu prüfende Feld haben. So können Sie z.B. das Feld DESKRIPTOR mit der Datei BEGRIFF.WTX prüfen.

    ähnlich:yy

Gibt den Ähnlichkeitswert für das Ersatzwort an.
Wertebereich: 50...100 %
Standardwert: 70 %.
Sonst, also im Zweifelsfall, wird für das Ersatzwort

    ???

gesetzt.
Bedeutung: Wenn 70 % der Zeichen einer Zeichenkette mit dem vermeintlich fehlerhaften Wort übereinstimmen, wird diese Zeichenkette als Ersatzwort angeboten.

    diff:zz

Gibt die Längendifferenz des Ersatzwortes zum angenommenen fehlerhaften Wort an.
Wertebereich: 0...10 Zeichen
Standardwert: 2 Zeichen.
Bedeutung: Das Ersatzwort (die Vergleichszeichenkette) kann also 2 Zeichen länger oder kürzer sein als das vermeintlich falsche Wort.

    exakt

Gibt an, dass Gross-/Kleinschreibung zu berücksichtigen ist.

#### weitere Informationen:

ñ WORTPRUEFUNG, Prüfung mit Wortliste

ï ñ ò Information 326

### WRITEAUSTAUSCH, Erzeuge Austauschformat

Das Programm erzeugt das delimited-Format für den Datenaustausch.
P1:MIDOS-Quelldatei
P2:delimited-Format-Datei (ggf. .DLF)
P3:Writeaustauschparameter
Hinweis:
Es werden nur die Felder der Datenbeschreibung MISCHABS des aktuellen Verzeichnisses berücksichtigt. Für nicht im Dokument vorhandene Felder werden Leere Felder im Austauschformat erzeugt.
Sollen Felder nicht in das Austauschformat übergeben werden, muß die Verarbeitung in einem gesonderten Datenbankverzeichnis mit einer veränderten Datenbeschreibungsdatei erfolgen. Sie dürfen in der Originaldatei MISCHABS keine Felder löschen, die Sie in Ihrer Datenbank noch brauchen. Wenn Sie den MIDOS-Datenbankeditor öffnen, werden in allen anschliessend korrigierten Datensätzen Felder entfernt, die nicht in der Datei MISCHABS enthalten sind.
Alle Bedingungen der Passfähigkeit mit dem Datenaustauschpartner sind vom Anwender zu beachten (Feldlängen, Zeichensatz, Feldnamen, Datentypen, ...).
Sie müssen ggf. die Datenbank umcodieren, wenn der Empfänger in einem anderen Zeichensatz arbeitet.
Die Formatdefinition finden Sie unter Delimited-Format exportieren

#### weitere Informationen:

ñ WRITEAUSTAUSCH, Writeaustauschparameter; ñ Delimited-Format exportieren; ñ READAUSTAUSCH, Lese Austauschformat; ñ MAKEDBASE, Erzeuge DBase-Datenbankdatei

ï ñ ò Information 327

### WRITEAUSTAUSCH, Writeaustauschparameter

#### Delimiterzeichen

    EZ:x

x = Einschließungszeichen, im allgemeinen ", ASCII-dezimal 34, von uns empfohlen.

    TZ:y

y = Trennzeichen der Feldwerte, Feldtrenner, im allgemeinen Komma oder Semikolon. Semikolon wird von uns empfohlen.

    SZ:abc

abc = Satzendezeichen, normalerweise #13#10 (CRLF)

#### Kopfsatz

    NOHEAD

Es wird keine Kopfzeile erzeugt, nicht empfohlen, muss beim Empfänger rückgefragt werden.

#### weitere Informationen:

ñ Dateiausgabe (Export) ñ WRITEAUSTAUSCH, Erzeuge Austauschformat; ñ Delimited-Format exportieren

ï ñ ò Information 328

### WRITEFILE, Schreibe in Datei

Das Programm schreibt Zeichenketten in eine Datei.
P1:Dateiname
P2:Dateiposition
P3:Zeichenkette
Hinweis:
Existiert die Datei nicht, wird sie angelegt und die Zeichenkette ab Position 0 (Null) geschrieben.
Die Zeichenkette kann Steuerzeichen enthalten: ^ für CRLF oder #13#10 oder #nnn für beliebigen ASCII-Code.
Zweck:
Sie verwenden diese Funktion, um z.B. eine Steuerinformation in eine Datei zu schreiben, um eine leere Datei (nur ein #13#10 enthalten) anzulegen u.ä.
Mit APPENDSTRING fügen Sie eine Zeichenkette am Ende einer Datei an.

#### weitere Informationen:

ñ APPENDSTRING, Zeichekette anfügen; ñ ACOPY, Anfügend Kopieren; ñ WRITEFILEDATE, Schreibe Datum in Datei; ñ WRITEINFO, Schreibe Info in Datei

ï ñ ò Information 329

### WRITEFILEDATE, Schreibe Datum in Datei

Das Programm schreibt das Änderungsdatum einer Datei in eine Textdatei.
P1:Dateiname, Textdatei
P2:Dateiname, überwachte Datei
P3:---
Zweck:
Wird für die Steuerung der Datenbankfortschreibung benutzt, um z.B. auf zu aktualisierende Indexe hinzuweisen.

#### weitere Informationen:

ñ APPENDSTRING, Zeichekette anfügen; ñ WRITEINFO, Schreibe Info in Datei; ñ WRITEFILE, Schreibe in Datei

ï ñ ò Information 330

### WRITEINFO, Schreibe Info in Datei

Das Programm schreibt in die Datei MWWTX.INI Informationen mit aktuellem Datum und Uhrzeit.
P1:Infotext
P2:---
P3:---
Schlüsselwörter
DATE aktuelles Datum vom System
TIME aktuelle Uhrzeit vom System
Um die Schlüsselwörter herum kann beliebiger Text angeordnet sein. Gesamtlänge 255 Zeichen.

    WRITEINFO Heute am DATE wurde ich um TIME neu angelegt. Schön.

#### weitere Informationen:

ñ WRITEFILE, Schreibe in Datei; ñ WRITEFILEDATE, Schreibe Datum in Datei; ñ INDEX, Indexdatei erzeugen; ñ FASTINDEX, Fastindexdatei erzeugen

ï ñ ò Information 331

### WTXRECH, Wörterbuchrecherche

Das Programm führt auf der Basis einer Textdatei mit Suchbegriffen eine Indexsuche durch und gibt die Treffer in eine MIDOS-Datenbankdatei (im Speicherformat) aus.
P1:WTX-Datei
P2:MIDOS-Zieldatei
P3:Textdatei ANSI
Die Textdatei enthält die Suchwörter zeilenweise. Die Anzahl ist z.Zt. auf 2000 Suchwörter beschränkt.

    ANSI

Die Zieldatei wird im ANSI-Code angelegt, wenn der Parameter gesetzt ist, sonst im ASCII-Code.
Hinweis:
Die Textdatei enthält die Suchbegriffe sinnvollerweise als ganze Wörter/Suchbegriffe ohne Wildcardzeichen. Um zu sichern, dass die Suchbegriffe im Index auch gefunden werden, können Sie den beteffenden Index mit der Funktion SAMMELLISTE generieren, wobei der Inhalt der Textdatei mit den Suchwörtern gleichzeitig die Datei ist, die unter SAMMELLISTE als Datei angegeben wird.

#### weitere Informationen:

ñ INDEX, Indexdatei erzeugen; ñ FASTINDEX, Fastindexdatei erzeugen

ï ñ ò Information 332

### ZFORMAT, Zeilenformat erzeugen

Das Programm erzeugt ein zeichen- und zeilenorientiertes Ausgabeformat.
Es führt eine Zeilenformatierung wie unter MS-DOS-Anwendungen (MIDOS3.0) von MIDOS-Datenbankdateien aus.
P1:MIDOS-Quelldatei
P2:Ausgabedatei
P3:Formatparameter

#### Formatparameter

    ZZ:xx

Gibt die Zeichen pro Zeile an.
Wertebereich: 10...100)

    WU:y

Gibt an, ob Wortumbruch ein oder ausgeschaltet werden soll.
y=1: ja, Wortumbruch,
y=0: nein, kein Wortumbruch.

    ER:zz

Angabe der Position der Einrückung in Zeichen.
Wertebereich: 0...30
Hinweis:
Die Zeilenformatierung ohne Wortumbruch kann von manchen Datenbanksystemem eingelesen werden.
Die Dateien werden als Textdatei im Blocksatz bezeichnet, allerdings wird rechts Flattersatz erzeugt, da eine Silbentrennung und ein Blockausgleich nicht zur Verfügung stehen.
Wenn Sie variabel lange Feldnamen benutzen, wird eine mit ZFORMAT ausgegebene Datei schlecht lesbar sein. Bevor Sie ZFORMAT benutzen, müssen Sie die MIDOS-Datenbankdatei ggf. umformen (mit Feldmanipulation).
Achten Sie darauf: Beim Wortumbruch bleibt am Zeilenende ein Leerzeichen erhalten. Es wird auch an Bindestrich-Leerzeichen umgebrochen.

#### Beispiel ZFORMAT

WU=J, ER=3, ZZ=64

    DB:XXXX
    ND:52047
    DT:GEBRAUCHSMUSTER.
    IP:A01B039-02; A01B039-04; A01M021-04; A01B069-00
    TI:Vorrichtung zur mechanischen Unkrautbekaempfung in
       Reihenkulturen in der Pflanzenreihe.
    AU:Zuerl, Berthold, Dipl.-Ing. (FH), 96184 Rentweinsdorf, DE
    PR:20000204
    AD:20000518
    OD:20000413
    AB:1. Vorrichtung zur mechanischen Unkrautbekaempfung in der
       Reihe, vorzugsweise als Heck-, Front- oder
       Zwischenachsanbaugeraet oder Selbstfahrer ausgefuehrt,
        ausgeruestet mit einem Antriebsstrang (14 u. 16) fuer
       Bearbeitungswerkzeuge (9) dadurch gekennzeichnet, dass -
       der Antriebstrang der Bearbeitungswerkzeuge ueber einen
       speziellen Rollenantrieb (8) angetrieben (12) und
       ...
    PU:DEG2000007 DE 20002047 U1 0011
    &&&

#### weitere Informationen:

ñ AFORMAT, Ausgabeformat erzeugen; ñ MIDOSRECH, Sequentielle Recherche; ñ WTXRECH, Wörterbuchrecherche

ï ñ ò Information 333

### FASTINDEX, Fastindexdatei erzeugen

Die Funktion FASTINDEX erstellt Indexdateien für MIDOS-Datenbankdateien. Sie hat eine Erweiterung gegenüber INDEX und läuft wesentlich schneller, vor allem für grosse Datenbanken.
P1: MIDOS-Quelldatei
P2: Indexdatei ( .WTX)
P3: Fastindexeinstellungen
Hinweis:
Siehe auch unter INDEX, Indexdatei erzeugen

#### weitere Informationen:

ñ FASTINDEX, Fastindexeinstellungen; ñ INDEX, Indexdatei erzeugen

ï ñ ò Information 334

### FASTINDEX, Fastindexeinstellungen

Die Parameter in Kurzfassung:

    INDEX:feldname1;feldname2; ...

Ein oder mehrere Felder können für einen Index ausgewählt werden. Maximum steht z.Zt. auf 15 Felder.

    NOANSI

Es soll keine ANSI-Umsetzung im Index erfolgen. Bei ANSI-Datenbanken hat der Parameter keine Wirkung.

    EINZEL

Einzelwörter in den Index stellen, sonst Feldaussagen

    TRENNZEICHEN:xyz

Wort lesen bis zu den Zeichen xyz,
b ist reserviert für Blank (Leerzeichen), hebt EINZEL auf!

    NULLZEICHEN:xyz

Die Zeichen xyz werden aus dem Feldwert gelöscht.

    NUMMER

Satzadresse = laufende Nummer, zusätzlicher Satznummernindex wird automatisch gebildet.

    MITFELDNAME

Index mit Ursprungsfeld.

    STW:datei1.stw;datei2.stw ...

Stoppwortlistendateien, es können mehrere pro Index genannt werden.

    WL:xx

Wortlänge: xx = 1..250, sonst 80 Zeichen

    TEXT

Statt einer MIDOS-Datenbankdatei wird im Parameter 1 eine Textdatei, 1 Zeile = 1 Satz, angegeben.

    APPEND

Erweitert vorhandenen Index - Kommando ADDFILE vorher im JOB zum Fortschreiben der Datenbankdatei mit einem Zugang.

    VONZEICHEN:x

Feldaussage ab Zeichen x einlesen

    BISZEICHEN:x

Feldaussage bis Zeichen x einlesen

    SAMMELEINTRAG:YYY

Eintrag im Index.

    SAMMELWORT:XXX

Sucht beliebiges Wort. Wenn kein Sammeleintrag dann YYY=XXX

    SAMMELLISTE:dateiname

Liste in Textdatei mit den im Index zu Suchenden Sammelwörtern (max. 2000 Einträge a 30 Zeichen)

    MITSW:xxx

Index - nur wenn xxx im Satz

    OHNESW:xxx

Index - nur wenn xxx nicht im Satz.
Langfassung siehe INDEX, Indexdatei.

#### weitere Informationen:

ñ FASTINDEX, Fastindexdatei erzeugen; ñ INDEX, Indexdatei erzeugen

ï ñ ò Information 335

### Zeichenkettenmanipulation

Die Zeichenkettenmanipulation arbeitet mit einem Suchen und Ersetzen im Stapel, wobei jedes Kommando der Zeichenkettenersetzung über den gesamten Datensatz ausgeführt wird. Es gibt jedoch einschränkende Bedingungen.
Die Zeichenkettenmanipulationskommandos speichern Sie am besten in einer Datei mit der Endung .MAN.
Unter Datensätze ändern und im MIDOS-Datenbankeditor unter Fremddatei einlesen, Anpassungen sind die Kommandostrukturen in gleicher Weise verwendbar, wie im folgenden erläutert.

#### weitere Informationen:

ñ Zeichenkettenmanipulation, Feldeinschränkung; ñ Zeichenkettenmanipulation, Satzende einstellen; ñ Zeichenkettenmanipulation, Zeichenkettenersetzung

ï ñ ò Information 336

### Zeichenkettenmanipulation, Satzende einstellen

    SATZENDE:<zeichenkette>

Sie geben die Zeichenkette an, die von Ihnen als Datensatzende ermittelt wurde. Wenn Sie Online-Protokolle in Datenbanken umformen wollen, könnte es sein, dass die Zeichenfolge

    #13#10#32#13#10

das Datensatzende ist. In MIDOS-Dateien ist das Datensatzende mit

    &&&

definiert.
Finden Sie kein signifikantes Endezeichen, versuchen Sie ein signifikantes Anfangsmerkmal für einen Datensatz zu ermitteln. Geben Sie dann diese Zeichenkette als Satzende an. Sie müssen in diesem Fall Anfang und Ende der Datei gesondert säubern, wenn Sie ein gültiges MIDOS-Format erzeugen wollen. Dazu benutzen Sie WRITEFILE und APPENDSTRING.

#### weitere Informationen:

ñ Zeichenkettenmanipulation; ñ Zeichenkettenmanipulation, Zeichenkettenersetzung; ñ Zeichenkettenmanipulation, Feldeinschränkung

ï ñ ò Information 337

### Zeichenkettenmanipulation, Zeichenkettenersetzung

Die Zeichenkettenersetzung erfolgt dadurch, dass eine Ist-Zeichenkette genannt wird, ein Backslash folgt und dann eine Soll-Zeichenkette angegeben wird, so als wäre in einem Programm geschrieben worden:

    if istzk=true then istzk:=sollzk

Geschrieben wird es einfacher als:

    istzeichenkette\sollzeichenkette

    a\b

Aus jedem a wird ein b an allen Stellen im Datensatz, an dem ein a vorkommt.
Alle Zeichen können durch ihren ASCII-Wert ausgedrückt werden. Die Zeichen von #0 bis #255 sind darstellbar.

    #0\#32

Aus ASCII 0 wird ASCII 32 (Leerzeichen)
Manchmal müssen Zeichen durch ihren ASCII-Wert oder ein Ersatzzeichen dargestellt werden:

    #13#10 oder ^

stehen für CRLF.

    zeichenkette\

Die Zeichenkette wird bis zum Zeilenende (CRLF) gelöscht, wenn das erste Zeichen nach Backslash ein Stern ist.

    #92\BACKSLASH
    BACKSLASH\#92

Backslash muss umschrieben werden.

    a\°b
    #248\ Grad
     Grad C \ #248 C

Das Gradzeichen bewirkt, dass die Ersetzungsanweisung nur einmal im Datensatz ausgeführt wird. Also hier würde ein einziges mal ein a durch ein b ersetzt. Soll das Gradzeichen umgeformt werden oder entstehen, muss es mit #248 umschrieben werden.

    ^Preis pro Jahr\°^PREIS:

Manchmal sind Wörter oder Zeichenfolgen, die am Zeilenanfang stehen, als Feld geeignet. Man erzeugt daraus ein Feld. Damit die Zeichenfolge "pro Jahr" nicht verloren geht, fügen wir sie wieder ein mit:

    PREIS=#94;\° pro Jahr^

Damit wird das Zeilenwechselzeichen bezogen auf das Feld manipuliert.

    Satzende:End of Document
    ^#32^End of Document\^&&&^^

Das eingestellte Datensatzende kann manipuliert werden. Es ist allerdings nicht möglich, das hinter dem Datensatzende stehende Zeichen zusammen mit dem Datensatzende zu manipulieren.

#### weitere Informationen:

ñ Zeichenkettenmanipulation; ñ Zeichenkettenmanipulation, Satzende einstellen; ñ Zeichenkettenmanipulation, Feldeinschränkung

ï ñ ò Information 338

### Zeichenkettenmanipulation, Feldeinschränkung

Sobald Sie ein Feld erzeugt haben, das im Manipulator definiert ist mit

    ^FN:WERT

können Sie die Wirkung eines Zeichenkettenersetzungskommandos auf ein Feld einschränken. Sie nennen dazu den Feldnamen und fügen zwei Gleichheitszeichen an.

    VFU==Sokol'ov\Sokolov

Die Austauschanweisung wird nur im Feld VFU vorgenommen.

    VFU==#39\

Eine Zeichenkette, hier das ASCII-Zeichen #39, wird im Feld generell gelöscht, hier VFU, wenn auf der rechten Seite keine Zeichenkette steht.

    VFU==Müll#39\°Müll

Eine Zeichenkette wird nur einmal im Feld, hier VFU, geändert, wenn direkt nach dem Backslash ein #248 steht.

    VFU==Müll#39\

Eine Zeichenkette wird bis zum Zeilenende nur im Feld, hier VFU, gelöscht, wenn nach dem Backslash ein steht.

    VFU==Müll#39\°

Ein Stern hat keine Löschwirkung, wenn er nicht direkt auf den Backslash folgt. Hier wird also gegen den Stern ausgetauscht.
Achten Sie auf ausreichende Eindeutigkeit von Austauschanweisungen.
Mit REM oder ; auf Position 1 einer Zeile können Sie Kommentare in die Zeichenkettenmanipulation einfügen.
Beispiel:
Es liegt eine Datei vor, die die nachfolgen aufgeführte Grundstruktur haben soll. Zu Vereinfachung soll angenommen werden, alle Datensätze hätten eine saubere Struktur.

    AUTOR  Müller, F.; Warz, Rudolf
    TITEL  Anwendung von 13 Regeln
           der schwarzen Magie
           auf Zeichenketten.
    QUELLE Astrophobie Jg. 5 (1999)
           Heft 3. - S. 13 - 15
    End of Dok

Es sollen folgende Felder in einem sauberen MIDOS-Format entstehen, mit folgenden Feldern:

    VFU mit den Verfassernamen
    STU mit dem Aufsatztitel
    ST  mit dem Zeitschriftentitel
    JG  mit dem Jahrgang
    EJ  mit dem Erscheinungsjahr
    HE  mit der Heftnummer
    SE  mit der Seitenangabe

Zunächst wird eine Grundstruktur von MIDOS erzeugt, wobei alle Umbrüche, mit Ausnahme der vor Feldnamen entfernt werden. Die Manipulation sieht nachfolgender ähnlich:

    SATZENDE:End of Dok
    REM Grundumformung
    #13#10AUTOR#32\#1AUTOR:
    #13#10TITEL#32\#1TITEL:
    #13#10QUELLE#32\#1QUELLE:
    #13#10End of Dok\#1#38#38#38#1
    REM Entfernen der Umbrüche, aber
    REM merken, da sie ggf. in jedem
    REM Feld anders zu behandeln sind
    REM Rücksetzen der Einrückung um
    REM fünf, sechs oder sieben
    REM Leerzeichen.
    #13#10#32#32#32#32#32#32#32\#94
    #13#10#32#32#32#32#32#32\#94
    #13#10#32#32#32#32#32\#94
    REM Rücksetzen des Merkers #1
    #1\#13#10
    REM Einzelne Felder erzeugen
    REM VFU mit den Verfassernamen,
    REM Semikolon wird Aussagentrenner
    #13#10AUTOR:\#13#10VFU:
    VFU==;\;
    REM STU mit dem Aufsatztitel;
    REM gemerkter Umbruch wird Leerzeichen
    #13#10TITEL:\#13#10STU:
    STU==#94\#32
    REM ST mit dem Zeitschriftentitel,
    REM ab Jg neues Feld erzeugen
    QUELLE== Jg. \#13#10JG:
    #13#10QUELLE:\#13#10ST:
    REM JG mit dem Jahrgang enthält
    REM auch den Rest des alten
    REM Feldes Quelle
    REM EJ mit dem Erscheinungsjahr
    REM erzeugen aus der (
    JG==(\#13#10EJ:
    REM HE mit der Heftnummer über Heft
    REM erzeugen
    EJ==Heft \#13#10HE:
    REM SE mit der Seitenangabe
    HE==. - S.\#13#10SE:S.
    REM ggf. noch säubern
    EJ==)\
    #32#32\#32
    #32#94\#32
    #32#13#10\#13#10
    REM Ende

Der neue Satz sollte nun wie folgt aussehen:

    VFU:Müller, F.; Warz, Rudolf
    STU:Anwendung von 13 Regeln der schwarzen Magie auf Zeichenketten.
    ST:Astrophobie
    JG:5
    EJ:1999
    HE:3
    SE:S. 13 - 15
    &&&

Hinweis:
Im allgemeinen ist das Grundschema immer wieder anwendbar:

1. Ende oder Anfang eines Datensatzes erkennen, entsprechenden Satzendeparameter setzen,
2. Felder erkennen und separieren,
3. Umbrüche und Einrückungen entfernen, innerhalb von Feldern ggf. Ersatzzeichen für Absatz benutzen #94 oder #124,
4. Felder erzeugen,
5. jedes Feld entsprechend seinem Inhalt einzeln behandeln,
6. Trennzeichen, Gross-/Kleinschreibweise, unerwünschte Zeichen und Feldenden bereinigen,
7. Datensatzende manipulieren.

Wenn die Zeichenkettenmanipulation nicht ausreicht, um alle Felder sauber umzuformen, dann können Sie auch ein Feld bilden, das Sie erst mit den programmierbaren EXEC-Anweisungen der Feldmanipulation auseinandernehmen.
Am Ende von Zeichenkettenmanipulation und Feldmanipulation sollte eine Ihren Wünschen entsprechende Datenbankdatei vorliegen. Sie können aber auch noch die Funktion PRUEFE über die Datensätze schicken, mit von Ihnen hergestellten Prüfbedingungen.
Am Ende und während des Tests Ihrer Manipulationsanweisungen sollten Sie die Ergebnisdatei mit der Funktion ANALYSE von MIDOS-Update analysieren und das Protokoll gewissenhaft auswerten. Ebenso sollten Sie hin und wieder die Verarbeitung prüfen, indem Sie sich die Zieldatei ansehen.
Wenn Sie andere Datenformate erzeugen wollen, dann kann es sein, dass die Zeichenkettenmanipulation dafür ausreicht.

#### weitere Informationen:

ñ Zeichenkettenmanipulation; ñ Zeichenkettenmanipulation, Satzende einstellen; ñ Zeichenkettenmanipulation, Zeichenkettenersetzung; ñ FELD, Feldmanipulation

ï ñ ò Information 339

### Feldmanipulation, Allgemeines

Mit der Funktion MIDOS-Update - Programm MWUPDATE.EXE - des Datenbanksystem MIDOS2000, haben Sie einen leistungsfähigen, programmierbaren Transformationsbaustein für MIDOS-Datenbanken oder andere, beliebig formatierte, fremde Textdateien zur Verfügung.
Ziel ist, diese Fremddateien, den eigenen Wünschen entsprechend, in eine MIDOS-Datenbankdatei zu überführen und sie genau in die vom Anwender gewünschte Datenstruktur zu bringen.
Liegen der Manipulation Fremddateien zu Grunde, die nicht im MIDOS-Datenbankformat vorliegen, sind diese zunächst in eine grobe, feldorientierte Struktur zu bringen. Dafür verwenden Sie:

- MAN, die Zeichenkettenmanipulation,
- REL für relationale Strukturen einschliesslich dBase-Datenbankdateien oder
- READAUSTAUSCH für das delimited-Format aus MIDOS-Update oder
- im Funktionskomplex Datenbank des MIDOS-Datenbankmanagers die Funktion Datei importieren.

Die Feldmanipulation setzt eine gültige MIDOS-Datensatz-Syntax voraus, wobei im einfachsten Fall ein Datensatz aus einem Textfeld bestehen kann und mit einem Datensatzende abgeschlossen ist.
Bei der Feldmanipulation werden:

- die Quelldatei Datensatz für Datensatz gelesen,
- über jeden Datensatz die Kommandos der Feldmanipulationstabelle abgearbeitet, die im allgemeinen einen Ergebnisdatensatz erzeugen,
- der zusammengestellte Datensatz in eine Ausgabedatei geschrieben.

In Spezialfällen können auch mehrere Quelldatensätze in einem Memory gesammelt werden und auf Grund eines Ereignisses - einer Bedingung in der Quelldatei - in den Ausgabebereich ausgegeben werden.

#### weitere Informationen:

ñ FELD, Feldmanipulation; ñ Feldmanipulation, allgemeine Programmsyntax; ñ Feldmanipulation, Datensatz-Syntax; ñ Feldmanipulation, Transformationstabelle

ï ñ ò Information 340

### Feldmanipulation, Datensatz-Syntax

Wenn Sie ein gültiges MIDOS-Format per Programm erzeugen wollen, dann müssen Sie natürlich wissen, wie die MIDOS-Syntax für Datenbankdateien definiert ist.
Im folgenden unternehmen wir den Versuch, Sie über diese Syntax zu informieren. Beachten Sie, dass ein MIDOS-Datensatz keinerlei inhaltlich-semantische Vorbedingungen stellt. Das Datenbanksystem ist semantisch offen und kann im Spezialfall bibliografisch, dokumentarisch, bibliothekarisch oder archivarisch genutzt werden. In der Praxis ist es auch als Autorensystem für die Vorbereitung von Publikationen und für die Herstellung von Programmdokumentationen im Einsatz.
In der Feldmanipulation, insbesondere in EXEC-Prozeduren ist der Anwender für die Herstellung einer gültige MIDOS-Datenbankstruktur zuständig. Das betrifft vor allem:

- die Bereitstellung eines CRLF (#13#10 oder ^) am Feldende,
- die Bereitstellung eines gültigen Datensatzendes (&&&),
- das Setzen gültiger Aussagentrennzeichen (#124),
- die Verwendung gültiger Feldnamen (1 bis 12 Zeichen plus Doppelpunkt, Ziffern und Buchstaben, möglichst keine Sonderzeichen und Umlaute, 1 bis 7 Zeichen bei Arbeit mit Suchlisten),
- die Ausgabe im richtigen Zeichensatz ASCII oder ANSI.

Soll der Transfer in ein anders Datenbanksystem (z.B. ACCESS, ORACLE) erfolgen, so muss die Syntax für Datensätze bekannt sein und ebenfalls eigenständig erzeugt werden. Dazu ist ggf. die Unterfunktionen

- WRITEAUSTAUSCH aus MIDOS-Update,
- die Funktion Dateiausgabe (Export) aus dem Funktionskomplex Ausgabe oder auch
- eine spezielle Ausgabebeschreibung

zu verwenden.
Wann immer inhaltliche Anpassungen vor einer Datenübergabe an Dritte erforderlich sind, kann dies durch die Feldmanipulation erfolgen.
Soll das Zielsystem ein relationales Datenbanksystem sein, können die Funktion WRITEAUSTAUSCH oder MAKEDBASE in MIDOS-Update hilfreich sein. Wenn mehrere Relationen erzeugt werden müssen, ist ggf. je Relation eine Feldmanipulationstabelle erforderlich.
Es ist in jedem Fall zuerst die inhaltliche Verarbeitung durchzuführen, dann erst die physische Datensatzstruktur zu erzeugen.
Die Übergabe von Dokumenten an Word für Windows oder ähnliche Textverarbeitungssysteme erfolgt dagegen zweckmäßiger über die Funktion Dateiausgabe (Export) in der ggf. eine Ausgabebeschreibung zur Gestaltung der Übergabeform für das RTF-Format oder für das HTML-Format zu benutzen ist.
HTML-Dateien sind in Listen- oder Tabellenform ebenfalls mit den dafür vorliegenden Funktionen herzustellen. Die Vorbereitung der Daten kann jedoch auch auf einen Transfer gestützt erfolgen.

#### Syntaxdarstellung

Folgende Symbole werden zur Syntaxdarstellung verwendet:

    []... Element kann vorhanden sein,
    ; ... eins von den Elementen kann
          vorhanden sein,
    ...   Element ist wiederholbar.

#### MIDOS-Datensatzformat

    MIDOS-Format::=[^][ANSI]^[^...]<ds>[^[^...]<ds>...]

<ds>::=Datensatz
^ steht für CRLF, Zeilenwechsel.
ANSI wird von der Funktion MAKEANSI gesetzt.
Vor und nach einem gültigen Datensatz können mehrere #13#10 stehen. Sie sind syntaktisch nicht relevant.

    <datensatz>::lt;feld>[^<feld>...]^<datensatzende>^

Ein gültiger Datensatz besteht mindestens aus einem gültigen Feld, das einen Feldwert haben sollte. Leere Felder sind zulässig aber unschön.
Die Reihenfolge der Felder im Datensatz ist nicht festgelegt.

    <feld>::lt;feldname:><feldwert>[<austrz><feldwert>...]

Der Feldwert kann durch Markierungen strukturiert werden.

    <feldwert>::=[<regkenn>][<[<htmtxze>]teilzkt[</htmtxz>]>[<sortkzt>][<absmark>][<teilzkt>]]

Die Trenn- und Kennzeichnungen haben folgende Bedeutung:

    <regkenn>::=Registerkennzeichen, Standard: #
    <htmtxze>::=einleitendes HTML-Tag, Standard: fett <b>, kursiv <i>, unterstrichen <u>
    <teilzkt>::=Teilzeichenkette
    </htmtxz>::=beendendes HTML-Tag, Standard: fett </b>, kursiv </i>, unterstrichen </u>
    <sortkzt>::=Sortierbeginnkennzeichen, Standard: &=
    <absmark>::=Absatzmarke, Standard: #94

Die Struktur ist durch folgende Merkmale gekennzeichnet.
Der Feldnamen ist entsprechend dem Zweck zu bilden:

    <feldname>::#60;bezeichner>

Länge: 1...12, empfohlen: 2 bis 7 Zeichen, ohne Sonderzeichen.
<feldwert>::=Zeichenfolge, Standard: ANSI oder ASCII, maximale Länge: 32000 Zeichen
Das Datensatzende ist wählbar, sollte aber auf dem Standardwert belassen werden.

    <dokumentende>::lt;spezialzeichen>
    Standard: &&& maximale Länge: 20 Zeichen

Das Feldende z.Zt. nicht mehr wählbar.

    <feldende>::lt;spezialzeichen>, Standard: CRLF (#13#10, ^)

Mit der Version des Formates unter MIDOS2000 können in <zeichenkette> einfache HTML-Kommandostrukturen bis hin zu Tabellen enthalten sein. Sie sollten Ihre Datenbank so strukturieren, dass Sie auf HTML-Elemente in Textfeldern - ausser für einfache Textauszeichnungen - verzichten können.
Beispiel:

    ABST:Hier folgt ein kurzes Beispiel. ^ ist das Umbruchzeichen, # ist das Registerkennzeichen, &= ist die Sortierkennung.
    TITL:Die MIDOS2000-Hilfe, eine
    <i>&=HTML-Lösung
    </i> die es in sich hat.
    DESK:Beispiel; Test; #MIDOS2000; Transfer; Feld; #Beschreibung; #Kommandosprache
    DAT1:2000.10.22
    DAT2:2000.12.31
    TIME:23:12:02,4
    PREI:34.90
    WAEH:DEM
    AUTR:
    <u>Mayer, X.
    </u>; #Müller, J.
    &amp;&amp;&amp;

#### weitere Informationen:

ñ FELD, Feldmanipulation; ñ Feldmanipulation, allgemeine Programmsyntax; ñ Feldmanipulation, Transformationstabelle; ñ Feldmanipulation, Allgemeines

ï ñ ò Information 341

### Feldmanipulation, allgemeine Programmsyntax

Die Feldmanipulation kann auf jede Datei angewendet werden, die in einem gültigen Datenbankformat von MIDOS2.1, MIDOS3.0, MIDOS97 und MIDOS2000 vorliegt, wobei mindestens ein Datensatz mit einem Feld und einem Dokumentende enthalten sein muss.
Die in der Kommandobeschreibung mit gekennzeichneten Kommandos sind nur auf das strenger definierte MIDOS2000-Format anwendbar, siehe Feldmanipulation, Datensatz-Syntax. Entscheident dafür sind die folgenden Parameter:

    <aussagentrenner>= | oder ascii 124

    <dokumentende>= &&& (3 mal Ampersand)

    <feldende>= CRLF, auch #13#10, mit ^ symbolisiert.

Bei Unstimmigkeiten bezüglich des vorliegenden Formates konsultieren Sie den Entwickler oder bearbeiten Sie Ihre Dateien mit der Funktion Datenbankanalyse in MIDOS-Update oder unter Ausgabe.
Prüfen Sie die Dateien an den Stellen, die Ihnen als Syntaxfehler oder als extreme Werte für die Feldlänge, als verdächtige Zeichen oder extreme Feldaussagenlänge nachgewiesen werden. Extreme Werte in Datenfeldern sind:

- Dokumentlänge: kleiner als 10 oder größer als die Summe aller Feldlängen in der Datei MISCHABS, der Datenstrukturdefinition,
- Feldlänge: gleich 0 oder größer als die Feldlänge in der Datei MISCHABS,
- Aussagenlänge: gleich 0 oder größer als die definierte Aussagenlänge in der Datei MISCHABS,
- Aussagenanzahl: größer als die definierte Aussagenanzahl in der Datei MISCHABS,
- Feldanzahl: größer als die Dokumentanzahl. Dann haben ein oder mehrere Dokumente kein richtiges Ende oder ein Feld kommt in einem Dokument mehrfach vor.

Die Rolle der Datei MISCHABS als Datenbeschreibung wird in der Dokumentation zu MIDOS2000 erläutert, siehe Datenbeschreibung.
Beachten Sie, dass ein leeres Feld und ein nicht vorhandenes Feld verschiedene Wirkungen in der Verarbeitung der Datensätze haben.

#### Die Feldmanipulationstabelle

Eine Feldmanipulationstabelle besteht aus:

- einer zeilenweise angeordneten Quellfeld-Zielfeld-Zuweisung und
- sofern eine EXEC-Prozedur in der Quellfeld-Zielfeld-Zuweisung aufgerufen wird, aus dem EXEC-Prozedur-Teil.

Quellfeld-Zielfeld-Zuweisung und EXEC-Prozedur-Teil müssen durch eine Leerzeile getrennt werden.
Mehrere EXEC-Prozeduren untereinander sind ebenfalls mit einer Leerzeile zu trennen. Am Schluss des EXEC-Prozedur-Teils muss eine Leerzeile stehen.
Eine Translate-Tabelle muss mit einer Leerzeile abgeschlossen werden.
Eine Leerzeile in dieser Syntax besteht aus einem CRLF, einem Leerzeichen und einem weiteren CRLF.
Innerhalb von EXEC-Prozeduren wird nur ein Kommando pro Zeile geschrieben.
In der Quellfeld-Zielfeld-Zuweisung kann eine nicht auszuführene Anweisung mit REM auskommentiert werden.
Eine in der Quellfeld-Zielfeld-Zuweisung aufgerufene, aber nicht vorhandene EXEC-Prozedur wird als Fehler gemeldet.
Sprunganweisungen müssen immer vorwärts gerichtete Sprungmarken ansteuern. Fehlende Sprungsmarken führen im allgemeinen zum Ende der EXEC-Prozedur, ohne das eine Ausgabe erfolgt.
Hinter einer Anweisung mit ZFname kann ein Kommentar stehen.
Hinter ZFBEGIN darf ausser für (MODE) keine Zahl stehen.
In einer EXEC-Prozedure kann eine externe Tabelle, eine Translate-Datei aufgerufen werden, die z.B. zur Übersetzung von Feldaussagen dient. Diese Datei muss zum Aufrufzeitpunkt vorhanden sein, andernfalls wird ein Fehler gemeldet.
Die Programmentwicklung kann in MIDOS-Update im Testmodus erfolgen, wenn das Symbol Bildschirm eingeschaltet wird. Die MIDOS-Dateieditor muss für die Programmentwicklung benutzt werden, da die Syntaxprüfung für die Kommandos einer Transformation an den Editor gebunden ist. Wenn Sie einen anderen Editor verwenden, sind keine Fehlermeldungen erzeugbar.

    transformationsprogramm::= quellfeld-zeilfeld-zuweisung [exec-prozedurteil]

    quellfeld-zeilfeld-zuweisung::= [execprozeduraufruf]... [[quellfeld]... [zielfeld]...]...

Die Quellfeld-Zielfeld-Zuweisung besteht im einfachsten Fall nur aus der Nennung des Quellfeldnamen. Sie müssen die oben stehende allgemeine Syntax zerlegen in folgende Möglichkeiten:

1. execprozeduraufruf
   Die Verarbeitung für ein Feld erfolgt komplett in einer EXEC-Prozedur, in der auch der Zielfeldname erzeugt werden muss, wenn ein MIDOS-Format erzeugt werden soll.
2. execprozeduraufruf zielfeld
   Die Verarbeitung für ein Feld erfolgt komplett in einer EXEC-Prozedur. Der Zielfeldname wird dem Ergebnis der EXEC-Prozedur in der Quellfeld-Zielfeld-Zuweisung zugeordnet. Sie müssen darauf achten, dass möglichst keine Leerfelder entstehen.
3. quellfeld
   Das Quellfeld wird mit gleichem Namen und Inhalt zum Zielfeld.
4. quellfeld zielfeld
   Das Quellfeld wird mit dem Zielfeldnamen und unverändertem Inhalt zum Zielfeld.

#### EXEC-Prozedurteil

    exec-prozedurteil::=leerzeile EXECnn: CRLF prozedur [leerzeile]

    Grenzwert: nn=[1..99]. 99 EXEC-Prozeduren in einem Programm sind möglich.

Bei der Arbeit mit den neuen Zwischenfeldkommandos:

    prozedur::=[zfprozedurbeginn] zfkommando CRLF [zfkommando]... [zfprozedurende]

Bei der Arbeit mit den älteren Kommandos:

    prozedur::=kommando CRLF [kommando]...

Die Feldmanipulation kann nicht nur dazu benutzt werden, ein MIDOS-Format zu erzeugen. Vielmehr kann die Anordnung der Daten in der Ausgabe in völlig freier Form programmiert werden.
Wenn Sie aber MIDOS-Format erzeugen müssen, dann empfehlen wir, die Entwicklung von Programmen im Rahmen eines Jobs durchzuführen, bei dem Sie die Programme ANALYSE und INDEX zur Überprüfung der Ergebnisse einsetzen.

#### weitere Informationen:

ñ AUSGABE ñ Datenbankanalyse ñ FELD, Feldmanipulation; ñ Feldmanipulation, Transformationstabelle; ñ Feldmanipulation, Allgemeines; ñ Feldmanipulation, Datensatz-Syntax

ï ñ ò Information 342

### Feldmanipulation, Transformationstabelle

#### Transformationspraxis

Die Kommandos der Feldmanipulation werden in einer Transformationstabelle definiert und in einer Datei abgelegt, die vom Typ .TAB sein muss. Die Größe der Datei darf z.Zt. 32 KByte nicht überschreiten. Sie muß mit dem MIDOS-Dateieditor bearbeitet werden, damit die Vorteile der integrierten Syntaxprüfung zur Verfügung stehen.
Eine Transformationsdatei besteht aus den Teilen:
1. Transformationstabelle mit Quellfeld-Zielfeld-Zuweisung
2. EXEC-Prozedurteil mit den EXEC-Prozeduren.
Die Transformationstabelle ist nach dem Format

    <quellfeldname1> <leerzeichen> <zielfeldnameY>
    <quellfeldname2> <leerzeichen> <zielfeldnameY>
    ...
    <quellfeldnameN> <leerzeichen> <zielfeldnameZ>

zu erfassen.

- <quellfeldname> steht für den Namen des Feldes in der <quelldatei>.
- <zielfeldname> steht für den Namen des Feldes in der <zieldatei>.
- <quellfeldname> bzw. <zielfeldname> können max 12 Zeichen lang sein.

Als <quellfeldname> kann das Schlüsselwort EXEC gefolgt von einer max. 2 stelligen Zahl (0..99) stehen. Damit werden Prozeduren aufgerufen, die im Transformationsprogramm nach der Feldzuordnungstabelle definiert werden müssen.
Die Angabe EXECn wird als EXEC-Prozeduraufruf bezeichnet.
Hinter einem EXEC-Prozeduraufruf kann eine <zielfeldname> stehen. Dann wird das Ergebnis der Verarbeitung aus der EXEC-Prozedur diesem Feldnamen zugeordnet.

    EXEC33 AUTOR

Steht hinter einem EXEC-Prozeduraufruf kein Feldname, so muß in der EXEC-Prozedur ganz besonders auf die Erzeugung der richtigen Syntax des Feldes bzw. Dokumentes geachtet werden. Hinweis: Es sind Fälle denkbar, bei denen kein Feldname erzeugt werden soll.

    EXEC33

Der <zielfeldname> kann entfallen, dann ist <quellfeldname> gleich <zielfeldname>. Eine inhaltliche Änderung der Feldwerte erfolgt nicht (1:1-Zuweisung).

    AUTOR

Der Inhalt von <quellfeldname>, die weder in der Transfertabelle noch in einer EXEC-Prozedure genannt bzw. verarbeitet werden, werden nicht in die <zieldatei> ausgegeben.
Die Quellfeld-Zielfeld-Zuweisungen können mit dem Wortsymbol

    NWENDE {nwende}

abgeschlossen werden. Damit wird das als Standardwert definierte Datensatzendezeichen &&& automatisch nach jedem Datensatz geschrieben.
Es sind Fälle denkbar, in denen eine andere Endezeichenkette gewünscht wird. Dann ist NWENDE wegzulassen und das Dokumentende ist via EXEC-Prozedur zu setzen, wenn das Datensatzende des Zieldatensatzes erreicht ist.
Ist ein in der Transformationstabelle genanntes <quellfeld> leer, wird es auch im Zielformat leer erzeugt. Soll der Transfer anders ablaufen, ist eine EXEC-Prozedur zu schreiben, die die Übergabe leerer Felder in die Ausgabe unterdrückt (siehe Bedingte Anweisung if...). Man kann die Länge des Zwischenfeldes z.B. auf 0 abprüfen.
Soll im Rahmen der Transformation ein MIDOS-Datenbankformat entstehen, so muß der Anwender selbst für die richtige Syntax des entstehenden Formates sorgen, also Feldnamen, Feldnamenende, Feldende und Aussagentrenner sowie Datensatzende erzeugen.
Beim Öffnen einer EXEC-Prozedur mit ZFBEGIN eird ein leeres Zwischenfeld ZF initialisiert.
Außer dem Zwischenfeld gibt es noch ein MEMO-Feld. Das MEMO-Feld kann 64 KByte Daten aufnehmen und muss aktiv gefüllt und, wenn notwendig, auch gelöscht werden.
Die beiden Felder brauchen nicht definiert werden.
Die Verarbeitung von Datensätzen erfolgt im Prinzip in folgender Weise:

1. Der MIDOS-Datensatz wird gelesen und seine Felder werden lokalisiert,
2. die Feldzuweisungen werden ausgeführt; Kommandos mit ZF speichern Zwischenwerte in das Zwischenfeld, Kommandos mit MEMO benutzen das Memory-Feld, um dass sich der Anwender vollständig selbst kümmern muss (füllen, umspeichern, löschen), die Copy-Kommandos ohne ZF und MEMO geben die Werte direkt in den Ausgabebereich aus,
3. der neue Datensatz wird schrittweise zusammengesetzt und am Ende der EXEC-Prozedur bzw. beim erreichen von NWENDE geschrieben.

EXEC-Kommandos sind im Anschluß an die Transformationstabelle nach einer Leerzeile zu definieren. Eine Leerzeile im Sinne dieser Syntax besteht aus CRLF Leerzeichen CRLF.
Es kann nur ein Kommando pro Zeile stehen.
Hinter einem Zwischenfeldkommando kann ein Kommentar stehen. Die Kommandos von Zwischenfeldbefehlen werden mit ZFBEGIN eingeleitet und mit ZFENDE beendet. Mit ZFBEGIN wird das Zwischenfeld initialisiert. Mit ZFENDE wird der Inhalt des Zwischenfeldes in den Ausgabebereich übertragen.
Kommandos ohne Zwischenfeld tragen die Daten direkt in den Ausgabebereich ein, so dass auf die erzeugten Daten nicht noch einmal zurückgegriffen werden kann.
EXEC-Prozeduren sind mit EXECnn: nn=[1..99] einzuleiten und mit einer Leerzeile abzuschließen.
Fehlt eine EXEC-Prozedur wird beim Start des Transfers ein Syntaxfehler gemeldet. Die Syntaxprüfung ist an die Verwendung des MIDOS-Dateieditors gebunden.
Es ist möglich, ein Memory-Feld zu benutzen, das vom Programmierer aktiv gefüllt und geleert werden muss. Diese Memory-Feld kann ggf. Datensatz-übergreifend gefüllt und abgespeichert werden. Es bleibt auch über EXEC-Prozeduren hinaus erhalten, wenn es nicht aktiv gelöscht wird.
Das Ergebnis eines EXEC-Prozedur-Aufrufs kann in einem direkt folgenden EXEC-Prozedur-Aufruf weiterverwendet werden, wenn

- entweder mit Memoryfeld gearbeitet wird oder
- dem Kommando zum Initialisieren des Zwischenfeldes ein Parameter ungleich 0 übergeben wird. ZFBEGIN(1) besagt: Übernehme das Ergebnis des vorhergehenden EXEC-Prozedur-Aufrufs.

Das Ergebnis einer EXEC-Prozedur kann in ein folgendes Dokument übernommen werden, wenn es über das Memory-Feld gespeichert und weitergereicht wird.

#### Beispiel:

    EN EXTNR     Quellfeld = Zielfeld mit Wechsel des Feldnamens
    VF VERF
    ST TITEL
    EK           Quellfeld = Zielfeld, Feldname bleibt gleich
    DT
    EXEC1 DE2    Zielfeldinhalt wird in EXEC1 erzeugt und in DE2 gespeichert
    EXEC2 STO
    EXEC3        Zielfeld wird in EXEC3 erzeugt, Feldname muss dort zugewiesen werden
    NWENDE       Dokumentende automatisch übertragen
                 Leerzeile mit 1 Leerzeichen
    EXEC1:       EXEC-Prozedur
    CA(DE,1,100,; )
    CC(^,&)      Konstante wird dzugewiesen
                 Leerzeile mit 1 Leerzeichen
    EXEC2: ...   nächste EXEC-Prozedur Feldname im Feldteil zugewiesen
                 Leerzeile mit 1 Leerzeichen
    EXEC3:       In der EXEC-Prozedur muß der Feldname erzeugt werden, weil oben nicht zugewiesen.
    CC(X1:)
    CS(RF,1,25)
    CC(^)        Das Feldende muß erzeugt werden.

In der folgenden Kommandobeschreibung gilt für die Schreibweise:
<b>{ } </b>steht für alternative Schreibweise
<b>[ ] </b> steht für wahlweise Angabe
<b> < > </b> markiert Variable
Reservierte Wortsymbole sind in Grossbuchstaben geschrieben. Die Programmkommandos sind aber in Groß- und Kleinbuchstaben zulässig.

#### weitere Informationen:

ñ FELD, Feldmanipulation; ñ Feldmanipulation, allgemeine Programmsyntax; ñ Feldmanipulation, Allgemeines; ñ Feldmanipulation, Datensatz-Syntax; ñ Löschen von Teilzeichenketten; ñ Kopieren einer Konstanten; ñ Kopieren einer Teilzeichenkette; ñ Kopieren eines Feldes; ñ Kopieren in das Zwischenfeld; ñ Kopieren von Feldaussagen; ñ Zwischenfeld-Befehle; ñ Zwischenfeldanfang und Ende säubern; ñ Übersetzen von Feldaussagen

ï ñ ò Information 343

### Kopieren eines Feldes

    COPYALL(<feldname>,[<bedingung>])
    {COPY(...)}  {CO(...)}

- kopiert das gesamte Feld vom 1. Zeichen nach dem Feldnamen, im bis vor <feldende>, im allg. CRLF (#13#10) in den Ausgabebereich.
- <bedingung> siehe Bedingungen.

#### weitere Informationen:

ñ Feldmanipulation, Transformationstabelle; ñ Feldmanipulation, allgemeine Programmsyntax; ñ Feldmanipulation, Datensatz-Syntax; ñ Feldmanipulation, Allgemeines; ñ Kopieren einer Konstanten; ñ Kopieren einer Teilzeichenkette; ñ Kopieren in das Zwischenfeld; ñ Kopieren von Feldaussagen; ñ Bedingungen für Kopieranweisungen; ñ Löschen von Teilzeichenketten

ï ñ ò Information 344

### Kopieren einer Konstanten

    COPYCONST(<zeichenkette>,[&])
    {CC(...)}

- Kopiert eine Zeichenkette <zeichenkette> als Konstante in den Ausgabebereich.
- Die <bedingung &> bewirkt, das die Konstante nur kopiert wird, wenn bereits ein Wert (<feld> oder <zeichenkette>) in den Ausgabebereich kopiert wurde.
- Die maximale Konstantenlänge beträgt 40 Zeichen. Längere Zeichenketten müssen aus mehreren Teilzeichenketten zusammengesetzt werden.
- Konstanten, die Zeichen aus der Syntax der Kommandos, wie Komma, runde Klammern oder Leerzeichen enthalten, sind in Apostroph einzuschliessen. Die Zeichen können auch in ihrem ASCII-Wert angegeben werden.

      CC(' ')   ein Leerzeichen
      CC(#32)   auch ein Leerzeichen

- Unter MIDOS2000 sind die Umlaute speziell zu behandeln. Ein Umlaut in einer Konstanten, einer Bedingung oder einer Translate-Zeile ist immer mit seinem ANSI-Code darzustellen (vergl. ISO-LATIN-1) und wird in diesem Code abgefragt und geschrieben.
- Sind ASCII-Umlaute im Dokument enthalten, müssen sie mit dem ASCII-Zeichen dezimal abgefragt werden. Das gilt für jedes ASCII-Zeichen größer als dezimal 128.

Beispiel:

    if exist(NAME,#154) goto xy

Wenn im Feld NAME ein Ü existiert, springe zur Marke xy.

    CC('#142nderungsdatum: ')

Erzeugt im Ausgabebereich ASCII-Code für Ä.

    CC('Änderungsdatum: ')

Erzeugt im Ausgabebereich ANSI-Code für Ä. Die Apostroph sind für das Leerzeichen nach dem Doppelpunkt erforderlich.

#### weitere Informationen:

ñ Feldmanipulation, Transformationstabelle; ñ Feldmanipulation, allgemeine Programmsyntax; ñ Feldmanipulation, Datensatz-Syntax; ñ Feldmanipulation, Allgemeines; ñ Kopieren in das Zwischenfeld; ñ Kopieren einer Teilzeichenkette; ñ Kopieren von Feldaussagen; ñ Löschen von Teilzeichenketten

ï ñ ò Information 345

### Kopieren einer Teilzeichenkette

    COPYSUBSTRING(<feldname>,<von>,<bis>,[<bedingung>],[])
    {CS(...)}

- kopiert eine Teilzeichenkette aus dem Feld <feldname> von der Position <von> bis zur Position <bis>, wenn die Angaben Zahlen sind (1...32756)
- kopiert eine Teilzeichenkette aus einem Feld von der Position <vonzeichenkette> bis zur Position <biszeichenkette>, wenn die von/bis-Angaben Zeichenketten sind und die Position <biszeichenkette> ungleich Null und größer als <vonzeichenkette> ist.
- <bedingung> siehe Bedingungen.

Beispiel:

    CS(EK,1,20)

Kopiert von Position 1 bis Position 20 aus dem Feld EK in den Ausgabebereich.

    CS(EK,Berlin,'(')

Kopiert vom 1. Auftreten des Wortes Berlin, bis zur 1. runden Klammer. Die Funktion liefert nur dann ein richtiges Ergebnis, wenn die "(" nach dem Wort "Berlin" steht, andernfalls ist das Ergebnis leer.

#### weitere Informationen:

ñ Feldmanipulation, Transformationstabelle; ñ Feldmanipulation, allgemeine Programmsyntax; ñ Feldmanipulation, Datensatz-Syntax; ñ Feldmanipulation, Allgemeines; ñ Kopieren in das Zwischenfeld; ñ Kopieren eines Feldes; ñ Kopieren einer Konstanten; ñ Kopieren von Feldaussagen; ñ Bedingungen für Kopieranweisungen; ñ Löschen von Teilzeichenketten

ï ñ ò Information 346

### Kopieren von Feldaussagen

    COPYAUSSAGE(<feldname>,<von>,<bis>,<trennzeichen>,[<bedingung>],[])
    {CA(...)}

- Kopiert aus dem Feld <feldname> die Feldaussagen <von> einer Aussagennummer <bis> zu einer Aussagennummer in den Ausgabebereich.
- <trennzeichen> ist der Aussagentrenner, der in der Zieldatei als Trenner verwendet wird (Standard:; ). Für die Quelldatei wird als Aussagentrenner; vorausgesetzt.

Beispiel:

    COPYAUSSAGE(DE,3,3,; )

Dritte Aussage des Feldes DE kopieren.

    COPYAUSSAGE(DE,2,2,; )

Zweite Aussage des Feldes DE kopieren.

    CA(DE,1,1,; )

Erste Aussage des Feldes DE kopieren. In den vorgenannten Beispielen ist der Aussagentrenner ohne Bedeutung, muss aber aus syntaktischen Gründen gesetzt werden.

    CA(DE,4,20,#94)

Aussage 4 bis 20 kopieren und den Aussagentrenner in das Symbol für Absatz ändern.

#### weitere Informationen:

ñ Feldmanipulation, Transformationstabelle; ñ Feldmanipulation, allgemeine Programmsyntax; ñ Feldmanipulation, Datensatz-Syntax; ñ Feldmanipulation, Allgemeines; ñ Kopieren in das Zwischenfeld; ñ Kopieren eines Feldes; ñ Kopieren einer Teilzeichenkette; ñ Kopieren einer Konstanten; ñ Bedingungen für Kopieranweisungen; ñ Löschen von Teilzeichenketten

ï ñ ò Information 347

### Übersetzen von Feldaussagen

    TRANSLATE(<feldname>,<von>,<bis>,<trennzeichen>)
    [FILE:<dateiname>]
    {TR(...)}

- Transformiert Aussageninhalte des Feldes <feldname> gemäß einer Translate-Tabelle, die direkt nach dieser Anweisung folgt oder in einer externen Textdatei FILE:dateiname stehen muß.
- <von>, <bis> definieren, von der wievielten Feldaussage bis zu welcher Feldaussage des Quellfeldes der TRANSLATE-Befehl ausgeführt werden soll.
- <trennzeichen> definiert eine <zeichenkette> die im <zielfeld> zwischen die übersetzten Feldaussagen gesetzt werden soll.
- <zeichenkette> kann bis zu 3 Zeichen lang sein und muß ggf. in Apostroph eingeschlossen oder durch dezimale ASCII-Werte dargestellt werden.
- Die Tabelle ist mit einer Leerzeile (CRLF Leertaste CRLF) zu beenden.
- Liegt die Translate-Tabelle in einer externen Datei vor, muß diese mit FILE:<dateiname> unmittelbar in der Folgezeile von TRANSLATE aufgerufen werden.
- <dateiname> umfaßt entweder die komplette Laufwerks- und Verzeichnisangabe oder nur den Dateinamen. In letzteren Fall muß sich die Datei im Verzeichnis befinden, in dem auch die Transformationstabelle steht.
- Nach der Angaben von FILE muß in jedem Fall eine Leerzeile stehen, bevor ein weiteres Kommando folgen kann (z.B. CC(#94)).
- Versehentlich enthaltene Leerzeilen in einer Translate-Tabelle beenden diese.

Beispiel:
EXEC-Prozedur

    EXEC12:
    if not exist(CC) goto m1
    TRANSLATE(CC,1,6,|)
    FILE:CCKONK.TXT

    CC(^)
    :m1

Die Aussagen Nummer 1 bis 6 des Feldes CC sollen mit der externen Translate-Tabelle CCKONK.TXT übersetzt werden. Als Trenner soll; gesetzt werden.
Beim Translate-Kommando können Leerfelder in der Ausgabe entstehen, wenn keine der Feldaussagen, die als <quellaussagen> genannt sind, im Datensatz enthalten ist. Ggf. muss mit TRANSLATEALL gearbeitet werden. Ausserdem sollte vor dem Aufruf von TRANSLATE abgeprüft werden, ob das Feld im Datensatz auftritt.

    TRANSLATEMAX(<feldname>,<von>,<bis>,<trennzeichen>)
     [FILE:<dateiname>]
     {TRMAX(...)}

- wie TRANSLATE jedoch können <quellaussage> und/oder <zielaussage> eine Länge von je max. 255 Zeichen haben.
- Achtung: Eine Tabellenzeile belegt damit 520 Byte Hauptspeicherplatz. Bei sehr umfangreichen Listen oder bei zu geringen Hauptspeicher kann unter WINDOWS 3.1/95/NT eine Schutzverletzung auftreten.

    TRANSLATEALL(<feldname>,<von>,<bis>,<trennzeichen>)
     [FILE:<dateiname>]
     {TRALL(...)}

- wie TRANSLATE, jedoch werden nicht in der Tabelle enthaltene <quellfeldaussagen> unverändert als <zielfeldaussage> übertragen.
- Aussagenlänge max. 80 Zeichen.

    TRANSLATEALLMAX(<feldname>,<von>,<bis>,<trennzeichen>)
     [FILE:<dateiname>]
     {TRALLMAX(...)}

- wie TRANSLATEALL, jedoch können <quellfelaussage> und/oder <zielfeldaussage> eine Länge von max. 255 Zeichen haben.
- Achtung: ein Listeneintrag belegt 520 Byte Hauptspeicher. Bei sehr umfangreichen Listen oder bei zu geringen Hauptspeicher kann unter WINDOWS 3.1/95/NT eine Schutzverletzung auftreten.
- Praxisanwendungen mit bis zu 4000 "natürlichen" Tabellenelementen bei 32 MB Hauptspeicher liefen ohne Fehler.)

#### weitere Informationen:

ñ Feldmanipulation, Transformationstabelle; ñ Feldmanipulation, allgemeine Programmsyntax; ñ Feldmanipulation, Datensatz-Syntax; ñ Feldmanipulation, Allgemeines; ñ Tabellenstruktur Translate-Tabelle; ñ Löschen von Teilzeichenketten

ï ñ ò Information 348

### Tabellenstruktur Translate-Tabelle

- Die linke Seite der Translate-Tabelle enthält die <quellfeldaussage>, die rechte Seite die <zielfeldaussage>.
- Die <quellfeldaussage> und <zielfeldaussage> in der Tabelle können mit Komma oder ^ ASCII 94, nur wenn die Tabelle in externer Datei gespeichert ist, getrennt werden.
- Enthält eine Quell- oder Zielaussage ein zu erhaltendes Komma oder ein ^, dann sind diese Zeichen durch ihren ASCII-Wert 44 bzw. 94 auszudrücken.
- Runde Klammer zu am Zeilenende ist mit #41 zu umschreiben.
- Werte im Feld, die nicht als <quellfeldaussagen> in der Tabelle enthalten sind, entfallen, vergleiche aber TRANSLATEALL.
- Die Länge eines Begriffes darf 80 Zeichen nicht überschreiten (Hauptspeicherplatz pro Listeneintrag: 166 Byte), vergleiche aber TRANSLATEMAX.
- Eine in der Tabelle enthaltene Leerzeile beendet die Tabelle. Grosse, automatisch erzeugte Tabellen müssen dahingehend überprüft werden.
- Ein leerer Wert auf der rechten Tabellenseite führt zur Löschung (leere <zielaussage>) der Quellaussage.
- ^ als Trenner wird nur in externen Translatedateien unterstützt.
- Leerzeichen am Ende der <zielaussage> werden weggenommen.

Beispiel: Translate-Datei mit ^ getrennt

    AAA^AAA Allgemeines
    BBB^BBB Philosophisches, Beispiel
    XXX^CCC Charakteristisches; AAA Allgemeines
    YYY$ZZZ^ZZZ Sonstiges (z.B. Merkwürdiges#41
    ABC^

Beachte:
Zeile 3 mit Besonderheit: Aus einem Code werden zwei Aussagen.
Zeile 4 endet mit dem Ersatzzeichen für ")".
Zeile 5 löscht den Quellwert. Gibt dadurch eventuell ein leeres Feld aus.
Beispiel: Externe/interne Translate-Tabelle mit Komma

    TRALLMAX(DE,1,10,; )
    PC,Rechner
    Computer,Rechner#44klein
    Laube,Gartenhaus
    Drücker,Drucker (Gerät#41
    Dr#129cker,Drucker (Ger#132t#41

    CC(^)

Beachte: Es wird der ANSI-Code für ä in Gerät erzeugt. In Drücker wird das ü mit seinem ANSI-Code gesucht. Wenn Sie es im ASCII-Code suchen wollen, müssen Sie #129 angeben.
Sie müssen, wenn ein Feld im Ausgabebereich fertiggestellt ist, dieses noch mit CRLF - ^ als Symbol - abschliessen. Dazu dient die letzte Anweisung CC(^)

    TRALL(DE,1,10,|)
    FILE:KONVERT.TXT

    CC(^)

#### weitere Informationen:

ñ Feldmanipulation, Transformationstabelle; ñ Feldmanipulation, allgemeine Programmsyntax; ñ Feldmanipulation, Datensatz-Syntax; ñ Feldmanipulation, Allgemeines; ñ Übersetzen von Feldaussagen; ñ Löschen von Teilzeichenketten

ï ñ ò Information 349

### Formatieren von Feldern

    FORMAT(<feldname>,<links/rechts>,<anzahl>,<füllzeichen>)
    {FO(...)}

- Formatiert das ganze Feld <feldname> linksbündig oder rechtsbündig und stellt es in den Ausgabebereich.
- <links>/<rechts> gibt die Formatierungsrichtung an.
- <anzahl> gibt die Länge des formatierten Feldes an.
- <füllzeichen> gibt das Zeichen an, daß zum Auffüllen überzähliger Zeichen benutzt wird (wenn Feldlänge kleiner <anzahl>).
- Ist die Feldlänge größer als <anzahl> wird ohne Warnung abgeschnitten. Wo abgeschnitten wird, bestimmt der Parameter links/rechts.
- Es empfiehlt sich, Zahlen mit Vornullen links aufzufüllen und Text mit Leerzeichen rechts.

Hinweis: Durch das Aneinanderfügen von mehreren formatierten Feldern entsteht ein Grundformat für relationale Datenbanken.

#### weitere Informationen:

ñ Feldmanipulation, Transformationstabelle; ñ Feldmanipulation, allgemeine Programmsyntax; ñ Feldmanipulation, Datensatz-Syntax; ñ Feldmanipulation, Allgemeines; ñ Kopieren einer Teilzeichenkette; ñ Kopieren in das Zwischenfeld; ñ Löschen von Teilzeichenketten