ï ñ ò Information 300

### MISCHDAT3, Mischen von Datenbankdateien 3

Das Programm mischt zwei MIDOS-Datenbankdateien über ein Key-Merkmal zusammen, wobei die im Ergebnis verbleibenden Felder durch die Datenbeschreibungsdatei MISCHABS bestimmt werden.
Felder, die nicht in der Datenbeschreibung enthalten sind, werden im Mischergebnis nicht berücksichtigt. Felder, die in beiden Dateien enthalten sind, werden aussagenweise zusammengefügt, wobei doppelte Feldwerte entfernt werden.
Mehr als zwei Dateien werden durch wiederholte Anwendung von MISCHDAT3 zusammengefügt, wobei die Zieldatei jeweils zur Quelldatei des folgenden Jobschritts wird.
P1:MIDOS-Quelldatei1
P2:MIDOS-Quelldatei2
P3:MIDOS-Zieldatei (Mischergebnis) Mischsteuerung
Hinweis:
Die Datenbeschreibungsdatei MISCHABS muss im aktuellen Verzeichnis stehen. Es muss in ihr die Summe aller Felder definiert sein, die erhalten bleiben sollen.
MISCHDAT3 erlaubt es, mehrere relationale Tabellen aus beliebigen Anwendungen relationaler Datenbanksystemen zu einem komplexen Datensatz zusammenzufügen.

#### weitere Informationen:

ñ MISCHDAT, Mischsteuerung; ñ MISCHDAT, Mischen von Datenbankdateien; ñ MISCHDAT2, Mischen von Datenbankdateien 2; ñ MISCHDAT2, Mischsteuerung 2; ñ MISCHDAT3, Mischsteuerung 3

ï ñ ò Information 301

### MISCHDAT3, Mischsteuerung 3

Folgende Parameter der Mischsteuerung können Sie setzen:

    KEYFELD:<fname1>;<fname2>;<fname3>...

Es können mehrere Felder zu einem KEY-Merkmal zusammengestellt werden. Nur wenn dieser Key-Wert in beiden Dateien übereinstimmt, werden die betreffenden Datensätze zusammengemischt. Sie können max. 10 Felder für die Bildung des Key-Merkmals angeben. Die Key-Wert-Länge ist auf 10 Zeichen begrenzt.
Die Anzahl gleichzeitig mischbarer Datensätze ist von der Key-Wert-Länge und der Hauptspeichergrösse abhängig. Im Testmodus wird diese Anzahl errechnet und protokolliert.

    MULTIFELD

Alle Datensätze mit gleichem Key-Wert werden zusammengefügt. In der einzumischenden Datei kann also der Key-Wert in mehreren Datensätze vorliegen. Die Datenbankdatei1 sollte mehrfachen Datensätze mit gleichem Key-Wert enthalten. Ggf. sind solche Mehrfacheinträge durch die Dopplungsprüfung DOPPEL zunächst zu entfernen.

    COPYALL

Ein Datensatz der Datenbankdatei1 wird auch dann kopiert in die Datenbakdatei3, wenn keine Daten aus Datenbankdatei2 eingemischt werden konnten. MULTIFELD und COPYALL bestimmen die Reihenfolge der Dateiangaben in Parameter 1 und 2.

#### weitere Informationen:

ñ MISCHDAT, Mischsteuerung; ñ MISCHDAT, Mischen von Datenbankdateien; ñ MISCHDAT3, Mischen von Datenbankdateien 3; ñ MISCHDAT2, Mischsteuerung 2; ñ MISCHDAT2, Mischen von Datenbankdateien 2

ï ñ ò Information 302

### MISCHINDEX, Mischen von Indexdateien

Das Programm mischt zwei Indexdateien zusammen.
P1:Quellindexdatei1 ( .WTX)
P2:Quellindexdatei2 ( .WTX)
P3:Zielindexdatei ( .WTX)
Hinweise:
Wenn mehrere Indexdateien zusammengemischt werden sollen, dann sollten die Parameter für die Indexbildung für beide Dateien gleich gewählt werden, nur der Indexfeldname muss unterschiedlich sein. Z.B. EINZEL STW:DEUTSCH.STW für beide Quellindexdateien.
Mehr als zwei Indexdateien werden zusammengefügt, indem die Zielindexdatei zur Quellindexdatei im nächsten Jobschritt wird.
Der Name des Feldes das zur Erzeugung der Quellindexdatei1 benutzt wird, muss am Ende aller Mischprozesse als Dateiname der letzten Zielindexdatei verwendet werden.
Beispiel:
Wenn das 1. Index-Feld TEXT: lautet:

    MISCHINDEX TEXT.WTX TITEL.WTX MISCH.WTX
    MISCHINDEX MISCH.WTX ABSTRACT.WTX TEXT.WTX

Wenn Sie MITFELDNAME eingestellt haben, können Sie bei der Wörterbuchsuche sowohl die Einzelergebnisse je Feld ermitteln, als auch Gesamtergebnisse pro Suchwort.
In einer Anwendung kann für jedes Feld nur ein Index zum Feld existieren. Sie müssen sich deshalb entscheiden, welche Felder Sie in mit MISCHINDEX zusammenfassen.
Sie können einen Sammelindex auch durch Mischen einzelner Indexdateien erzeugen.
Das Mischen von Indexdateien kann in folgenden Fällen zweckmäßig sein:

1. Für große Datenpools mit mehr als 100000 Datensätzen kann die Indexbildung für größere Felder, vor allen für Volltextfelder, sehr zeitaufwendig werden. Wenn dann noch mehrere Felder zu einem Sammelindex zusammengefaßt werden sollen, wächst der Aufwand weiterhin stark an. Es kann deshalb zweckmäßig sein, in einem ersten Arbeitsschritt die Indexdateien für die Einzelfelder aufzubauen und anschließend diese Indexdateien für den Sammelindex zu mischen.
2. Datenbanken mit historischen Beständen können Fehler in den Datensätzen enthalten. Sollen diese in MIDOS2000 überführt werden, dann besteht die Möglichkeit zur Fehlerkorrektur. Wortlisten sind ein geeignetes Mittel, um Fehler zu erkennen. Auf der Grundlage einzelner Indexdateien lassen sich Fehler besser lokalisieren. Da mit einer Korrektur eines Datenpools auch die Indexdateien aktualisiert werden müssen, muß ein optimales Regime für den Aufbau der Indexdateien gewählt werden. Wenn die Korrekturen zu keiner Struktur- bzw. Längenänderung der Datenbank geführt haben, brauchen manchmal nur einzelne an der Sammelindexbildung beteiligte Indexdateien korrigiert werden, die dann wieder durch Mischen zum Sammelindex zusammengeführt werden.

Mit der Mischfunktion können Sie jeweils zwei Indexdateien miteinander mischen. Die Funktion können Sie wiederholt anwenden. Wenn beim Mischen Zwischendateien entstehen, können Sie für diese unter 3. Parameter Pseudonamen vergeben, z.B. MISCH1, MISCH2 usw. Wenn Sie Sammelindizes durch mehrmaliges Mischen erzeugen, ist es ratsam, wegen der Abarbeitungszeiten mit den kleinen Dateien zu beginnen und zuletzt die größeren dazuzumischen.
Beim Mischen von Indexdateien ist der Feldname zu beachten, auf den die Ziel-Indexdatei Bezug nimmt. Unabhängig von der Anzahl der Mischvorgänge wird immer der Feldname der ersten Indexdatei als Bezugsfeldname vom ersten Mischvorgang bis zum Ende verwendet. Andere Feldbezeichnungen in der Suchstrategie können über Indexdateinamen SAMMELn.WTX festgelegt werden.
Nutzen Sie für das Mischen von Indexdateien die Möglichkeiten der Jobsteuerung.
Es wird empfohlen, bei mehrstufigen Mischprozessen aus Speicherplatzgründen beim Mischen entstehende Zwischendateien spätestens nach dem Abschluß des Mischprozesses zu löschen.

#### weitere Informationen:

ñ INDEX, Indexdatei erzeugen; ñ FASTINDEX, Fastindexdatei erzeugen

ï ñ ò Information 303

### PRUEFE, Prüfe Datenbankdateien

Das Programm prüft MIDOS-Datensätze mit einem vom Anwender vorzubereitenden Prüfprogramm. Die Ergebnisse der Prüfung werden in das Protokoll, Datei MWUPDATE.PRT ausgegeben.
Die Befehle, die zum Herstellen eines Prüfprogramms zur Verfügung stehen, werden in einer Prüfprogrammdatei gespeichert.
Im Anschluss an die automatisch in eine vom Anwender angegebene Prüfprogrammdatei eingetragene Befehlsübersicht sind die Befehle des Prüfprogramms zu schreiben.
Die Prüfprogrammdateien können auch im MIDOS-Datenbankeditor benutzt werden, um interaktiv direkt während der Erfassung von Datensätzen Fehler zu ermitteln. Die Prüfung erfolgt dort mit Strg+A.
Die Syntax ähnelt den Befehlen der Feldmanipulation.
P1:MIDOS-Datenbankdatei
P2:---
P3:Prüfprogrammdatei
Hinweis:
Die Befehle erlauben die Formulierung von Prüfungen auf

1. Zeichen, Zeichensatz, Zeichenposition,
2. Aussagenanzahl, Aussagenwerte, Aussagenlänge, maximale Aussagenzahl,
3. Feldanwesenheit, (Pflichtfeld - muss immer vorhanden sein, bedingtes Pflichtfeld - muss Vorhandensein, wenn eine Bedingung erfüllt oder nicht erfüllt ist, Feldausschluss - darf nie da sein, wenn eine Bedingung erfüllt oder nicht erfüllt ist),
4. Feldlängen, einschliesslich Feldabhängigkeiten
5. Feldabhängigkeit,
6. Feldwertabhängigkeit von anderen Feldern oder von anderen Feldwerten,
7. Ereigniszähler und Ereignisvergleich.

Mit einer Prüfprogrammdatei werden alle Prüfungen formuliert, die über einen Datensatz ausgeführt werden sollen. Es werden keine den Datensatz übergreifenden Prüfungen ausgeführt.
Wenn eine Prüfprogrammdatei zu umfangreich wird, können Sie mehrere Prüfprogrammdateien anlegen und diese z.B. bezogen auf bestimmte Dokumentarten zur Prüfung verwenden. Im allgemeinen werden Sie aber mit einer Prüfprogrammdatei auskommen, wenn Sie im MIDOS-Datenbankeditor mit Eingabemasken für Stammdaten / Textkonserven arbeiten.
Zweck:
Sie programmieren mit den Befehlen der Funktion alle Prüfungen, die nicht bereits in äusseren Funktionen des Datenbankeditors enthalten sind, wie z.B. Rechtschreibprüfung, Prüfung an umfangreicheren Wertelisten bzw. Wortlisten, Schablonen, für die entsprechende Funktionen vorliegen.

#### weitere Informationen:

ñ PRUEFE, Prüfanweisungen 1; ñ PRUEFE, Prüfanweisungen 2; ñ PRUEFE, Prüfbeispiele; ñ Registerkarte Prüfungen/Thesaurus

ï ñ ò Information 304

### PRUEFE, Prüfanweisungen 1

#### Abfragen auf Feldnamen, direkte Nachricht ausgeben

    if exist(<fn>) then msg(<fehlermeldung>)

Wenn das Feld <fn> existiert, dann wird die Fehlermeldung <fehlermeldung> in das Protokoll ausgegeben.
Wie Sie eine Fehlermeldung zusammensetzen wird unter MSG erläutert.

    if not exist((<fn>) then msg(<fehlermeldung>)

Wenn das Feld <fn> nicht existiert, dann wird die Fehlermeldung <fehlermeldung> in das Protokoll ausgegeben.

#### Abfragen auf Feldwerte, direkte Nachricht ausgeben

    if exist(<fn>,<zeichenkette>) then msg(<fehlermeldung>)

Wenn die Zeichenkette <zeichenkette> im Feld <fn> existiert, dann wird die Fehlermeldung <fehlermeldung> in das Protokoll ausgegeben.

    if not exist(<fn>,<zeichenkette>) then msg(<fehlermeldung>)

Wenn die Zeichenkette <zeichenkette> im Feld <fn> nicht oder das Feld nicht existiert, dann wird die Fehlermeldung <fehlermeldung> in das Protokoll ausgegeben.

#### Abfragen mit Sprungbefehl

Bei Sprungbefehlen wird ein GOTO MARKE anstelle des THEN verwendet. Die MARKE muss im Programm weiter hinten als Sprungziel tatsächlich existieren, sonst wird das Prüfprogramm abgebrochen.

    if exist(<fn>) goto <marke>

Wenn das Feld <fn> existiert, wird zur Marke <marke> gesprungen, sonst wird mit der folgenden Anweisung fortgesetzt.

    if not exist(<fn>,<zeichenkette>) goto <marke>

Wenn das Feld <fn> nicht existiert, wird zur Marke <marke> gesprungen, sonst wird mit der folgenden Anweisung fortgesetzt.

    if exist(<fn>,<zeichenkette>) goto <marke>

Wenn die Zeichenkette <zeichenkette> im Feld <fn> existiert, wird zur Marke <marke> gesprungen, sonst wird mit der folgenden Anweisung fortgesetzt.

    if not exist(<fn>,<zeichenkette>) goto <marke>

Wenn die Zeichenkette <zeichenkette> im Feld <fn> nicht existiert, wird zur Marke <marke> gesprungen, sonst wird mit der folgenden Anweisung fortgesetzt.

#### Sprungmarken

    :marke

Marken stehen als Sprungziel mit Doppelpunkt am Zeilenanfang.

#### Zeichensatzzuweisungen

Um die Zeichen in Feldern oder Feldaussagen zu prüfen, haben Sie die Möglichkeit Klassen von Zeichen in Zeichensatzzuweisungen zu definieren. Sie können theoretisch 255 Zeichensätze festlegen, werden aber in der Praxis vielleicht mit 10 Zeichensätzen auskommen.
Einem Bezeichner kann eine Klasse/Menge von Zeichen zugewiesen werden.
z.B.

    a=(0..9)

Der Bezeichner a umfasst die Zeichen 0 bis 9.

    b=(A..Za..z. ,/;-)

Der Bezeichner b repräsentiert nun ein eingeschränktes Sortiment an Zeichen.
Die Bezeichner werden in Zeichensatzprüfungen benutzt.

#### Zeichensatzprüfungen

    ExistCharPos

Mit ExistCharPos erfolgt die Prüfung auf einen bestimmten Zeichensatz an einer bestimmten Position im Feldwert.

    if ExistCharPos(<fn>,ab) goto <marke>

An Position 1 des Feldwertes des Feldes <fn> soll ein Zeichen des Zeichensatzes a stehen. An Position 2 des Feldwertes sollen nur Zeichen des Zeichensatzes b stehen, um zu <marke> zu springen, andernfalls wird mit der nächsten Anweisung fortgesetzt.
Der Wert 1A erfüllt die Bedingung, der Wert A1 erfüllt die Bedingung nicht.

    ExistCharposAussage

Die Funktion ExistCharposAussage prüft auf einen bestimmten Zeichensatz an einer bestimmten Aussagenposition. Jede Aussage wird einzeln geprüft.

    if ExistCharposAussage(<fn>,ab) goto <marke>

An jeder 1. Position jeder Aussage des Feldes <fn> sollen Zeichen aus dem Zeichensatz a stehen. An Position 2 jeder Aussage sollen nur Zeichen des Zeichensatzes b stehen, um zu <marke> zu springen, andernfalls wird mit der nächsten Anweisung fortgesetzt.
Die Werte

    1A; 1B; 1.C; 2;D; 3F

erfüllen die Bedingung.
F3 erfüllt die Bedingung nicht.
Liegt ein Wert ausserhalb der Bedingung, ist die gesamte Bedingug nicht erfüllt. Die Nummer der falschen Aussage wird in der Variablen ERRORAUSSAGE gespeichert.

    ExistCharSet

ExistCharSet prüft auf gültigen Zeichensatz in einem Feld ohne Postitionsangabe.

    if ExistCharSet(<fn<,ab) goto <marke>

Wenn nur Zeichen der Zeichensätze a und b im Feld <fn< enthalten sind, wird zur <marke> gesprungen, andernfalls wird mit der nächsten Anweisung fortgesetzt.

    ExistCharsetAussage

ExistCharsetAussage prüft auf gültigen Zeichensatz in den einzelnen Aussagen eines Feld ohne Postitionsangabe. Das Aussagentrennzeichen ist als nicht im Zeichensatz.

    if ExistCharsetAussage(<fn<,ab) goto <marke>

Nur wenn alle Aussagen ausschliesslich Zeichen der Zeichensätze a und b im Feld <fn< enthalten sind, wird zur <marke> gesprungen, andernfalls wird mit der nächsten Anweisung fortgesetzt.
Die Werte

    1A; 1B; 1.C; 2;D; 3F

erfüllen die Bedingung. Auch F3 erfüllt die Bedingung.
Liegt ein Wert ausserhalb der Bedingung, ist die gesamte Bedingung nicht erfüllt. Die Nummer der falschen Aussage wird in der Variablen ERRORAUSSAGE gespeichert.
Die oben genannten Prüfbefehle können auch enden auf:

    ...THEN MSG(<fehlernachricht<)

#### weitere Informationen:

ñ PRUEFE, Prüfe Datenbankdateien; ñ PRUEFE, Prüfanweisungen 2; ñ PRUEFE, Prüfbeispiele

ï ñ ò Information 305

### PRUEFE, Prüfanweisungen 2

#### Prüfung auf zulässige Feldlängen

    if Length(<fn>)<<zahl> goto <marke>

    if Length(<fn>)><zahl> then msg(<nachricht>)

#### Prüfung auf zulässige Aussagenlängen

    if LengthAussage(<fn>)<<zahl> goto <marke>

    if LengthAussage(<fn>)><zahl> then msg(<nachricht>)

Die Nummern der fehlerhaften Aussagen stehen in der Variablen ERRORAUSSAGE

#### Prüfung auf Aussagenanzahl

    if MaxAussagen(<fn>)><zahl> then msg(<nachricht>)

    if MaxAussagen(<fn>)<<zahl> goto <marke>

#### Ereigniszähler COUNT

Der Ereigniszähler COUNT zählt Ereignisse in Datensätzen die in Form von Zeichenketten vorliegen und abgefragt werden können.
COUNT kann auf kleiner, gleich und ungleich im Direktvergleich abgefragt werden.
Beispiel:
`
if COUNT( <b>) <>COUNT( </b>) then goto m1
if COUNT( <h2>) <>COUNT( </h2>) then goto m2
if COUNT( <h3>) <>COUNT( </h3>) then goto m3
`
Wenn die Zähler für <b> und </b>ungleich sind, wird zur Marke m1 gesprungen. Dort wird einen Nachricht erzeugt, die die Werte für den COUNT über die Variable COUNT(...) ausgeben könnte.

#### Programmende

    EXIT

EXIT beendet das Programm. Sie können Prüfprogramme schreiben, bei denen Sie bereits beim ersten gefundenen Fehler zum Ende springen. Einer einheitlichen Sprungmarke für alle Prüfungen folgt dann ein EXIT.
Sie können aber auch je Datensatz alle Prüfungen aller Felder programmieren und erst, wenn alle Fehler protokolliert sind, zum EXIT springen.

#### Auskommentieren

    REM

REM am Zeilenanfang wirk als Kommentaranfang. Ebenso ein Semikolon am Zeilenanfang.

#### Nachrichten ausgeben

Es gibt zwei Formen der Ausgabe von Nachrichten. Im MIDOS-Datenbankeditor wird die Nachricht nur gemeldet und der fehlerhafte Datensatz geladen oder der aktuelle Datensatz wird mit Strg+A direkt geprüft.
In der Stapelverarbeitung wird die Fehlernachricht in die Protkolldatei MWUPDATE.PRT geschrieben.
Für die Formulierung von Nachrichten stehen Variable, Zeichenketten und Feldbezugnahmen zur Verfügung.

    msg(<variable>,<zeichenkette>,...)

    writeln(<variable>,<zeichenkette>,...)

#### Variablen in Nachrichten

    LFDNUM

Gibt die laufende Satznummer aus.

    DATE

Gibt das aktuelle Tagesdatum aus.

    TIME

Gibt die aktuelle Uhrzeit aus.

    <fn>:<ab>:<anzahl>

Der Feldinhalt des Feldes <fn> wird ab der Position <ab> in der Länge von <anzahl> Zeichen bereitgestellt. Ist <anzahl> ausgelassen, wird der Feldwert in der Länge <ab> bereitgestellt.
Beispiel:

    ISSN:1:14
    ISSN:14

Das Feld ISSN wird von Position 1 bis 14 angezeigt.

    LENGTH(<fn>)

Die Feldlänge des Feldes <fn> wird bereitgestellt.

    MAXAUSSAGEN(<fn>)

Die maximale Aussagenzahl des Feldes <fn> wird bereitgestellt.

    ERRORAUSSAGE

Die Nummern aller fehlerhaften Feldaussagen (falsche Längen, falsche Zeichen) werden bereitgestellt.

    COUNT(<feldname>,<zeichenkette>)

Enthält das Zählergebnis der Zählung des Vorhandenseins der Zeichenkette <zeichenkette> im Feld <feldname>. Der COUNT(x,y) gibt den Zählwert zum Feld zurück.

#### weitere Informationen:

ñ PRUEFE, Prüfanweisungen 1; ñ PRUEFE, Prüfe Datenbankdateien; ñ PRUEFE, Prüfbeispiele

ï ñ ò Information 306

### PRUEFE, Prüfbeispiele

#### Beispiel 1: Prüfen der ISSN

Die ISSN besteht aus 4 Ziffern, einem Bindestrich, 3 Ziffern und einer Prüfziffer, die auch auf X lauten kann, weil sie Modulo 10 errechnet wird.

    REM Zeichensätze:
    a=(0..9)
    b=(0..9X)
    c=(-)
    REM Prüfen:
    if ExistCharpos(ISSN,aaaacaaab) goto weiterpruefen
    msg(Fehler,ISSN:1:9,LFDNUM,DATE)
    REM ISSN wird 9stellig ausgegeben, die laufende Datensatznummer sowie das Datum werden ausgegeben.
    exit
    REM Ende, wenn ISSN falsch.
    :weiterpruefen

#### Beispiel 2: Zählen und Informieren über unpaarige Textauszeichnungen

`
REM Ereignisse zählen
if COUNT( <b>) <>COUNT( </b>) then goto m1
if COUNT( <h2>) <>COUNT( </h2>) then goto m2
if COUNT( <h3>) <>COUNT( </h3>) then goto m3
if COUNT( <h4>) <>COUNT( </h4>) then goto m4
if COUNT( <h5>) <>COUNT( </h5>) then goto m5
if COUNT( <h6>) <>COUNT( </h6>) then goto m6
exit
REM Nachrichten ausgeben
:m1
msg(Satz LFDNUM Anzahl <b> </b> ungleich:)
msg( FELD AB: COUNT(AB, <b>) / COUNT(AB, </b>))
msg( FELD TI: COUNT(TI, <b>) / COUNT(TI, </b>))
msg( FELD TE: COUNT(TE, <b>) / COUNT(TE, </b>))
msg( FELD TD: COUNT(TD, <b>) / COUNT(TD, </b>))
msg( FELD TX: COUNT(TX, <b>) / COUNT(TX, </b>))
msg( FELD FP: COUNT(FP, <b>) / COUNT(FP, </b>))
msg( FELD PP: COUNT(PP, <b>) / COUNT(PP, </b>))
exit
:m2
msg(Satz LFDNUM Anzahl <h2> </h2> ungleich:)
msg( FELD AB: COUNT(AB, <h2>) / COUNT(AB, </h2>))
msg( FELD TI: COUNT(TI, <h2>) / COUNT(TI, </h2>))
msg( FELD TE: COUNT(TE, <h2>) / COUNT(TE, </h2>))
msg( FELD TD: COUNT(TD, <h2>) / COUNT(TD, </h2>))
msg( FELD TX: COUNT(TX, <h2>) / COUNT(TX, </h2>))
msg( FELD FP: COUNT(FP, <h2>) / COUNT(FP, </h2>))
msg( FELD PP: COUNT(PP, <h2>) / COUNT(PP, </h2>))
exit
:m3
msg(Satz LFDNUM Anzahl <h3> </h3> ungleich:)
msg( FELD AB: COUNT(AB, <h3>) / COUNT(AB, </h3>))
msg( FELD TI: COUNT(TI, <h3>) / COUNT(TI, </h3>))
msg( FELD TE: COUNT(TE, <h3>) / COUNT(TE, </h3>))
msg( FELD TD: COUNT(TD, <h3>) / COUNT(TD, </h3>))
msg( FELD TX: COUNT(TX, <h3>) / COUNT(TX, </h3>))
msg( FELD FP: COUNT(FP, <h3>) / COUNT(FP, </h3>))
msg( FELD PP: COUNT(PP, <h3>) / COUNT(PP, </h3>))
exit
:m4
msg(Satz LFDNUM Anzahl <h4> </h4> ungleich:)
msg( FELD AB: COUNT(AB, <h4>) / COUNT(AB, </h4>))
msg( FELD TI: COUNT(TI, <h4>) / COUNT(TI, </h4>))
msg( FELD TE: COUNT(TE, <h4>) / COUNT(TE, </h4>))
msg( FELD TD: COUNT(TD, <h4>) / COUNT(TD, </h4>))
msg( FELD TX: COUNT(TX, <h4>) / COUNT(TX, </h4>))
msg( FELD FP: COUNT(FP, <h4>) / COUNT(FP, </h4>))
msg( FELD PP: COUNT(PP, <h4>) / COUNT(PP, </h4>))
exit
:m5
msg(Satz LFDNUM Anzahl <h5> </h5> ungleich:)
msg( FELD AB: COUNT(AB, <h5>) / COUNT(AB, </h5>))
msg( FELD TI: COUNT(TI, <h5>) / COUNT(TI, </h5>))
msg( FELD TE: COUNT(TE, <h5>) / COUNT(TE, </h5>))
msg( FELD TD: COUNT(TD, <h5>) / COUNT(TD, </h5>))
msg( FELD TX: COUNT(TX, <h5>) / COUNT(TX, </h5>))
msg( FELD FP: COUNT(FP, <h5>) / COUNT(FP, </h5>))
msg( FELD PP: COUNT(PP, <h5>) / COUNT(PP, </h5>))
exit
:m6
msg(Satz LFDNUM Anzahl <h6> </h6> ungleich:)
msg( FELD AB: COUNT(AB, <h6>) / COUNT(AB, </h6>))
msg( FELD TI: COUNT(TI, <h6>) / COUNT(TI, </h6>))
msg( FELD TE: COUNT(TE, <h6>) / COUNT(TE, </h6>))
msg( FELD TD: COUNT(TD, <h6>) / COUNT(TD, </h6>))
msg( FELD TX: COUNT(TX, <h6>) / COUNT(TX, </h6>))
msg( FELD FP: COUNT(FP, <h6>) / COUNT(FP, </h6>))
msg( FELD PP: COUNT(PP, <h6>) / COUNT(PP, </h6>))
`
Das Prüfprogramm kann u.a. mit Strg+A im Datenbankeditor im aktuellen Feld gestartet werden.

#### Beispiel 3: Umlautprüfung

    REM Zeichensatz zuweisen
    d=ÄÖÜäöüß
    REM Zeichensatz prüfen
    if ExistCharset(TEXT,d) then msg(Umlaute TEXT Dokument LFDNUM)
    exit
    REM Es wird nur geprüft, ob es im Feld TEXT
    REM überhaupt Umlaute gibt.

Eine solche einfache Prüfung kann benutzt werden, z.B. um herauszufinden, ob mit SUBLIST komprimiert werden kann, siehe MIDOSCOMP.

#### weitere Informationen:

ñ PRUEFE, Prüfanweisungen 1; ñ PRUEFE, Prüfanweisungen 2; ñ PRUEFE, Prüfe Datenbankdateien

ï ñ ò Information 307

### READAUSTAUSCH, Lese Austauschformat

Das Programm liest Dateien im delimited-Format ein und überführt sie in eine MIDOS-Datenstruktur. Die Umsetzung in Felder erfolgt entweder über einen vorhandenen Kopfsatz der Datei im Austauschformat oder über eine Feldzuordnungstabelle aus einer Felddatei oder über eine Feldliste.
Werden keine Felder oder sonstigen Parameter genannt, versucht das Programm die Datenstruktur selbst zu erkennen und verwendet dann die Feldnamen Fn bis Fnnn (n=[0..9]).
P1:Quelldatei im delimited-Format
P2:MIDOS-Zieldatei
P3:Readaustauschparameter

#### weitere Informationen:

ñ READAUSTAUSCH, Readaustauschparameter; ñ WRITEAUSTAUSCH, Erzeuge Austauschformat; ñ Allgemeine Funktionsparameter für Datei importieren

ï ñ ò Information 308

### READAUSTAUSCH, Readaustauschparameter

Sie können folgende Parameter setzen:

#### Feldliste

    FELD:<fn1>;<fn2><fn3>...

Die Felder der Quelldatei werden in der Reihenfolge von 1 bis n den Feldern der Feldliste zugeordnet.
Beispiel:

    A;B;C;D;E  oder
    NAME;STRASSE;ORT

Der Eingabebereich für die Feldliste ist begrenzt. Wenn sehr viele Felder u.U. mit langen Feldnamen erzeugt werden sollen, dann kann es sein, dass der Platz für die Aufzählung der zu erzeugenden Felder nicht ausreicht. Verwenden Sie dann den Parameter FELDDATEI.

#### Felddatei

    FELDDATEI:<dateiname>

Angegeben wird eine Textdatei, in der zeilenweise die Zielfeldnamen stehen, zu denen die Feldwerte der Quelldatei in der gleichen Reihenfolge zugeordnet werden.
Beispiel:
Die delimited-Formatdatei enthält den Datensatzaufbau wie folgt und hat keinen Kopfsatz:

    "Auer";"Franz";"Auenweg 5";"63725 Auenstedt"

Felddatei:

    NAME
    VORNAME
    STASSE
    ORT

Mit Kopfsatz könnte eine Datei wie folgt aussehen:

    "NAME";"VORNAME";"STRASSE";"ORT"
    "Auer";"Franz";"Auenweg 5";"63725 Auenstedt"
    "Aller";"Max";"Allerweg 15";"60606 Allerstadt"

Wenn die Feldnamen im Kopfsatz nicht MIDOS-konform sind, sollten Sie den Kopfsatz ggf. abschneiden oder die Feldnamen ändern. Dazu benutzen Sie den Fileeditor. Sind Ihnen die Namen im Kopfsatz recht, dann brauchen Sie weder FELD noch FELDDATEI angeben.

#### Delimiterzeichen

    EZ:x

x = Einschließungszeichen, im allgemeinen ", ASCII-dezimal 34, häufig auch ASCII 39, Apostroph benutzt.

    TZ:y

y = Trennzeichen der Feldwerte, Feldtrenner, im allgemeinen Komma oder Semikolon. Wenn Komma als Feldtrenner verwendet wird, muss im allgemeinen mit Einschliessungszeichen gearbeitet werden, da sonst Zahlen mit Kommastellen zu Fehlern im Format führen.

    SZ:abc

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

    noEZ

Die Einschliessungszeichenprüfung entfällt. Das darf nur angegeben werden, wenn Sie sicher sind, dass Einschliessungszeichen nicht unpaarig sein können oder wenn keine Einschliessungszeichen benutzt werden.
Beachten Sie zu den Delimiterzeichen unsere Hinweise zu den Exportkonvertern anderer Datenbanksysteme unter Datei importieren.

#### Kopfzeile, Leerfelder, Numerierung

    nohead

Gibt an, dass die Datei keinen Kopfsatz hat. Eine Feldliste FELD oder - bei zu vielen Feldern - eine FELDDATEI, sind anzugeben.

    LEERFELDER

Leere Felder werden in den MIDOS-Datensatz übernommen. Sie müssen beachten, dass leere Felder als vorhandene Felder gelten. Das kann Auswirkungen auf Ausgabebeschreibungen und auf Datensatzprüfungen haben.

    LFDNUM:<fn>,<abnum>

Es wird ein künstliches Feld <fn>mit laufender Satznummer erzeugt. Die Zählung beginnt im 1. Satz mit <abnum>
Die Funktion ist auch Grundlage der Funktion Datei importieren.
Inhaltliche Anpassungen an Ihre Wünsche können nach der Umformung mit dem Feldmanipulator ausgeführt werden.

#### weitere Informationen:

ñ Datei importieren ñ READAUSTAUSCH, Lese Austauschformat

ï ñ ò Information 309

### REL, Relationales Format einlesen

Das Programm liest Datensätze aus festgeblockten Datenformaten mit und ohne Satzendekennung und es liest Datensätze aus irregulären variablen Datenformaten mit Satzendekennung oder fester Zeilenzahl mit Zeilen fester Länge (z.B. Lochkartenformat, das gibt es wirklich noch, manchmal als C72-Format bezeichnet, z.B. bei STAIRS und BRS-SEARCH).
dBase-Datenbankdateien im internen Datenbankformat werden einschliesslich der MEMO-Felddaten automatisch erkannt. Voraussetzung ist, die DBF-Datei und die DBT-Datei stehen zusammen im aktuellen Verzeichnis.
Die Umsetzung der Datenstruktur erfolgt für dBase-Dateien auf der Basis des dBase-Kopfsatzes.
Für sonstige festgeblockte Formate muss die Feldzuordnung über eine Formatdatei erfolgen.
Als sonstige relationale Formate werden unterstützt:

- Datensätze fester Länge mit Satzendezeichen. Die Feldextraktion erfolgt auf Grund der Position und der Längenangabe. Das Datensatzende wird auf der Basis des Satzendezeichens gesetzt. Das Satzende muss nicht unbedingt #13#10 (CRLF) sein, allerdings muss es feste Länge haben und immer an gleicher Position im Satz stehen.
- Datensätze fester Länge ohne Satzendezeichen. Solche Datensätze sind u.a. zu finden als Ausgabeform für einzelne Relationen von relationalen Datenbanksystemen, als Programm- oder Datentabellen unter TSO (Time Sharing Operating) von IBM, in COBOL-orientierten Grossrechner-Anwendungen, im festgeblockten Magnetbandformat von IBM und beinahe in allen kommerziellen Anwendungen im Bereich der Betriebsführung und des Controlling.
- Datensätze mit festen Feldpositionen am Anfang des Datensatzes und variabler Gesamtlänge je Datensatz. Es wird eine eindeutige Satzendezeichenfolge vorausgesetzt.
- Datensätze mit einer festen Zeilenzahl pro Datensatz und fester oder variabler Länge innerhalb der Zeilenzahl. Solche irreguläre Datenstrukturen sind vor allem in älteren Softwarelösungen in Anwendung. Eine Sonderform des Zeilenformates ist eine zeilenweise organisierte Textdatei, die mit der Funktion Datei importieren gelesen werden sollte, wenn ein Abgriff von einzelnen Feldern via Position und Länge zunächst nicht möglich scheint.

Die Steuerung des REL-Konverters erfolgt über Parameter und eine Formatdatei.
P1:Quelldatei
P2:Zieldatei
P3:Formatdatei REL-Steuerparameter
Wenn eine dBase-Datenbankdatei ausgewählt wird, entfallen alle Parameter. Diese Dateien werden vollautomatisch ausgewertet.
Zweck:
Mit einem REL-Konverter können alle exportierten Formate relationaler Datenbanksysteme erschlossen werden, die nicht im delimited-Format vorliegen.
Einige Datenbanksystem konvertieren jede Relation in eine gesonderte Tabelle, die jeweils aus Key-Wert und Feld-Wert bestehen. Jede Tabelle muss zu einer MIDOS-Datei umgeformt werden. In allen Dateien muss das Key-Feld den gleichen Namen erhalten. Mit der Funktion MISCHDAT / MISCHDAT2 / MISCHDAT3 fügen Sie die einzelnen Dateien via Key-Feld und Key-Wert nacheinander zusammen. In allen Teilen muss das Key-Feld gleichen Namen haben.
Wenn bei der Anwendung der Funktion Probleme auftreten, wird im allgemeinen ein korruptes Format vorliegen oder Sie haben falsche Längen angegeben. Prüfen Sie zuerst Ihre Angaben. Lässt sich das Problem nicht beheben, wenn Sie sich an uns. Wir helfen gern.

#### weitere Informationen:

ñ REL, Formatdatei

ï ñ ò Information 310

### REL, Formatdatei

Die Formatdatei muss folgenden Aufbau haben:

#### 1. Zeile Grundformatdefinition

    REL ZL:xx ZZ:yy SL:zzz K:ttt

Definiert die spezifischen Formateigenschaften.

    REL

Kennung für relationales Format.

    SL:zzz

Datensatzlänge als Bytezahl/Datensatz incl. #13#10 (CRLF) oder

    SL:variabel

Es liegt ein Satz pro Zeile mit variabler Länge vor. Es muss davon ausgegangen werden, dass zumindest am Datensatzanfang Elemente mit fester Länge enthalten sind, sonst ist ein Abgriff der Datensätze über Position und Länge ziemlich hoffnunfslos.

    ZL:xx

Zeilenlänge incl. #13#10 (CRLF).

    ZZ:yy

Zeilenzahl pro Datensatz.
Achtung: SL steht alternativ zu ZL und/oder ZZ.

    K:ttt

Kopflänge (Standard K:0, keine Kopfzeile/kein Kopfsatz, kein nicht auszuwertender 1. Satz)

#### 2. Zeile und weitere Zeilen

Die Zeilen enthalten Feldanalyseanweisungen, mit denen bestimmt wird, ab welcher Position oder Zeile im Datensatz in welcher Länge ein Feld gebildet werden soll. Sie bestimmen den Inhalt des erzeugten Feldes selbst. Sie müssen dabei den Intensionen des Lieferers der Daten nicht unbedingt folgen.
Bei zeilenweiser Verarbeitung gilt:

    Zy,x,llt;zeichenkette>

y = Zeilennummer,
x = Spalte in der Zeile,
l = Byteanzahl, die zu entnehmen ist,
<zeichenkette> = Zeichenkette, die vor dem zu entnehmenden Wert anzuordnen ist, auch mit ^, #nn #13#10 angebbar bzw. allen anderen ASCII-Dezimalwerten.
Bei satzweiser Verarbeitung gilt:

    Pz,l

z = Byteposition ab Satzanfang,
l = Byteanzahl, die zu entnehmen ist.
Beispiel:

    P1,6=#13#10LFDNUM:
    P7,37=#13#10FIRMA:
    P38,79=#13#10NAME:
    P80,112=#13#10STRASSE:

#### Weiter Steuerparameter

    LEERFELDER

Leere Felder werden in den MIDOS-Datensatz übernommen. Sie müssen beachten, dass leere Felder als vorhandene Felder gelten. Das kann Auswirkungen auf Ausgabebeschreibungen und auf Datensatz-Prüfungen haben.

    LFDNUM:<fn>,<abnum>

Es wird ein künstliches Feld <fn>mit laufender Satznummer erzeugt. Die Zählung beginnt im 1. Satz mit <abnum>.

#### weitere Informationen:

ñ REL, Relationales Format einlesen

ï ñ ò Information 311

### REN, Datei umbenennen

Das Programm benennt Dateien um.
P1:Dateiname (alt)
P2:Dateiname (neu)
P3:NOERROR (kein Abbruch bei Fehler)
Hinweis:
Wildcardzeichen sind aus Sicherheitsgründen nicht zugelassen.

#### weitere Informationen:

ñ COPY, Datei kopieren

ï ñ ò Information 312

### REM, Kommentieren

Ein mit REM markierter (auskommentierter) Jobschritt wird übergangen.
Zweck:
Sie können das auch zum inneren Kommentieren von Jobabläufen benutzen. Wenn Sie Informationen zum Jobablauf auf dem Desktop sehen wollen, benutzen Sie das Programmpaar INFO und DELINFO.

#### weitere Informationen:

ñ INFO, Informationsfenster erzeugen

ï ñ ò Information 313

### SATZINDEX, Satzindex erzeugen

Das Programm erzeugt einen Satznummernindex über eine MIDOS-Datenbankdatei. Sie enthält die Byteposition des Beginns jedes Datensatzes. Sie dient der Beschleunigung der Suche in grossen Datenbeständen. Erforderlich ist die Satznummernindexdatei, wenn Indexdateien in der Funktion INDEX oder FASTINDEX mit dem Parameter NUMMER angelegt wurden.
In der Datei MWWTX.INI muss der Parameter SATZINDEX:xyzname.SIX nachgetragen werden. xyzname ist der Name der Indexdatei xyzname.WTX.
P1:MIDOS-Quelldatei
P2:Satznummernindexdatei ( .SIX)
P3:---
Hinweis:
Ein Satznummernindex kann auch erzeugt werden, wenn in der Funktion Datenbank im Speicherformat, ein Sprung zur Satznummer ausgeführt werden soll. Siehe auch MIDOS-Dateimanager.
Der Satznummernindex muss nach Datensatzkorrekturen jeweils erneuert werden.
Der Satznummernindex sollte auch bei CD-ROM-Ausgaben Ihrer Datenbank zur Steigerung der Performance der Suche erzeugt werden.

#### weitere Informationen:

ñ Datei ñ Datei anzeigen ... F2

ï ñ ò Information 314

### SORT, Sortieren von Datensätzen

Das Programm sortiert Datensätze in

- MIDOS-Datenbankdateien bezüglich des Inhalts ausgewählter Sortierfelder um oder
- es sortiert zeilenweise organisierte Textdateien.

Die Datensätze können also MIDOS-Struktur oder Textstruktur haben.
Textdateien werden zeilenweise sortiert.
P1:MIDOS-Quelldatei oder Textdatei
P2:MIDOS-Zieldatei oder Textdatei
P3:Sortierparameter
Hinweis:
Sie können Textdateien, die mit INDEXTOTEXT und TREFFER erzeugt wurden, nach Häufigkeit sortieren.
Sortierbare Datensätze: 108 Byte pro Datensatz werden benötigt. Die Sortierung erfolgt über Zeiger im Hauptspeicher. Erst wenn alle Zeiger richtig stehen, wird ausgegeben. 100000 Datensätze erfordern 10800000 Byte. 200000 Datensätze erfordern 21600000 Byte usw.
Achtung:
Die Funktion sortiert grosse Dateinen, auch wenn nicht genügend Platz zur Verfügung steht. Allerdings wird dann die Auslagerungsdatei von Windows mit benutzt, was zu langen Sortierzeiten führt. Ggf. können Sie umfangreiche Datenbanken in sortierbare Teile unterteilen und anschliessen wieder zusammenfügen.
Sie finden die Sortierung auch im Grundmenü von MIDOS2000 durch Klick auf die Kopfzeile der Kurzanzeige.
Sie finden Umnumerieren ohne Sortierung auch unter MAKENUM.
Die Funktionen DOPPEL und DOPPEL2 sortieren die MIDOS-Zieldatei nach dem Key-Feldwert um.
Die Funktionen MIDOSRECH und WTXRECH sortieren Ergebnisdateien in der Reihenfolge der Treffer, entweder nach den Suchkriterien der sequentiellen Suche oder den Treffern über den Index. Da der Index alphabetisch sortiert ist, werden die Treffer in alphabetischer Folge der Suchworte vorliegen.

#### weitere Informationen:

ñ SORT, Sortierparameter

ï ñ ò Information 315

### SORT, Sortierparameter

Folgende Sortierparameter können gesetzt werden:

    SORTFELD:F1,F11,F12,...;F2,F21,F22...;F3,F31,F32...;...

    F1...F5      hierarchische Sortierung
    F11...F32... Ersatzsortierfelder

Die Trennung der hierarchischen Felder erfolgt mit Semikolon. Die Trennung der Ersatzfelder erfolgt mit Komma.
Grenzen
max. 5 hierarchische Felder
max. 4 Ersatzfelder
Sortierbereichslänge: 100 Zeichen
Numerische Sortierung

    §F1;§F2...;§F5

Die Sortierwerte werden rechtsbündig in den Sortierbereich eingeordnet, wenn vor dem Feldnamen ein Paragraph-Zeichen steht.

    GENAU

Der Sortierbereich wird auf 200 Zeichen vergrössert. Es können in Abhängigkeit vom Hauptspeicher evtl. weniger Datensätze sortiert werden.

    TEXT

Die Datei unter P1: und P2: sind zeilenweise organisierte Texttateien. Sie sollen also zeilenweise Sortiert werden. Eine mit INDEXTOTEXT erzeugte Wortliste im Textformat könnte damit sortiert werden.

    §TEXT

Sortiert eine Textdatei numerisch, rechtsbündige Einordnung der Zeilen in den Sortierbereich.

    MIDOSTRENNER

Filter für MIDOS-Sonderzeichen z.B. Sortierbeginn =&, wird dann ausgewertet, wenn Parameter gesetzt ist.

    OHNE UMLAUTE

Umlaute werden für die Sortierung aufgelöst, wenn der Parameter gesetzt ist, sonst werden sie nach dem Bytewert sortiert.

    LFDNUM:<fn>,<abnum>

Es wird ein künstliches Feld <fn>mit laufender Satznummer erzeugt. Die Zählung beginnt im 1. Satz mit <abnum>.

#### weitere Informationen:

ñ Sortierung; ñ Bibliografie ñ SORT, Sortieren von Datensätzen; ñ Sortierung, Bibliografie

ï ñ ò Information 316

### SORTAUSSAGEN, Sortiere Feldaussagen

Das Programm sortiert die Feldaussagen eines Feldes einer MIDOS-Datenbankdatei und entfernt doppelte Feldaussagen aus dem sortierten Feld.
Es werden max. 250 Feldaussagen zu max. 250 Zeichen sortiert.
Umlaute werden immer aufgelöst sortiert.
P1:MIDOS-Quelldatei
P2:MIDOS-Zieldatei
P3:Sortierparameter
Hinweis:
Die Funktion wird mit Strg+S auch im MIDOS-Datenbankeditor für das Sortieren von Feldaussagen benutzt. Sie wirkt auch in der Funktion AutoSchlagwort, in DOPPELAUSSAGEN und DOPPELAUSSAGEN2.

#### weitere Informationen:

ñ SORTAUSSAGEN, Sortierparameter; ñ SORTAUSSAGEN2, Sortiere Feldaussagen 2

ï ñ ò Information 317

### SORTAUSSAGEN, Sortierparameter

Es können folgende Sortierparameter gesetzt werden:

    SORTFELD:<fn>

<fn> bezeichnet den Feldnamen des zu sortierenden Feldes.

    TRENNER:<austrz>

<austrz> erlaubt die Zuweisung eines Zeichens, das beim Ausgeben des Feldes den ursprünglichen Aussagentrenner ersetzt.

#### weitere Informationen:

ñ SORTAUSSAGEN, Sortiere Feldaussagen; ñ SORTAUSSAGEN2, Sortiere Feldaussagen 2; ñ SORTAUSSAGEN2, Sortierparameter 2

ï ñ ò Information 318

### SORTAUSSAGEN2, Sortiere Feldaussagen 2

Das Programm sortiert die Feldaussagen eines Feldes einer MIDOS-Datenbankdatei und entfernt doppelte Feldaussagen aus dem sortierten Feld.
Es werden max. 1000 Feldaussagen zu max. 60 Zeichen sortiert.
Umlaute werden immer aufgelöst sortiert.
P1:MIDOS-Quelldatei
P2:MIDOS-Zieldatei
P3:Sortierparameter

#### weitere Informationen:

ñ SORTAUSSAGEN2, Sortierparameter 2; ñ SORTAUSSAGEN, Sortiere Feldaussagen

ï ñ ò Information 319

### SORTAUSSAGEN2, Sortierparameter 2

Folgende Sortierparameter können gesetzt werden:

    SORTFELD:<fn>

<fn> bezeichnet den Feldnamen des zu sortierenden Feldes.

    TRENNER:<austrz>

<austrz> erlaubt die Zuweisung eines Zeichens, das beim Ausgeben des Feldes den ursprünglichen Aussagentrenner ersetzt.

#### weitere Informationen:

ñ SORTAUSSAGEN2, Sortiere Feldaussagen 2; ñ SORTAUSSAGEN, Sortiere Feldaussagen; ñ SORTAUSSAGEN, Sortierparameter

ï ñ ò Information 320

### SPLITT, Splitten von Datenbankdateien

Das Programm splittet MIDOS-Datenbankdateien in kleinere Dateien nach dem Umfang in Byte oder nach der Datensatzanzahl.
Wird nach dem Umfang gesplittet, wird an dem letzten ganzen Dokument gesplittet, das vor der Umfangsangabe abgeschlossen ist.
Die Zieldatei ist ohne Erweiterung anzugeben, weil eine automatisch gebildete Zählnummer angefügt wird. Die Zählnummer wird bei mehr als 999 Splittdateien im Dateinamen beginnend mit der letzten Position weitergeführt.
Die Datei xyzname.dbm wird xyzname.001 bis xyzname.999 gezählt, dananch wird mit xyznam0.001 fortgesetzt.
P1:MIDOS-Quelldatei
P1:MIDOS-Zieldatei
P3:Splittparameter
Hinweis:
Die Funktion kann auch direkt auf Disketten splitten, wenn die Splittgrösse kleiner als das Diskettenvolumen gewählt wird, z.B. 1400000 Byte oder wenn Sie sicher sind, dass z.B. 200 Datensätze immer auf eine Diskette passen. Ggf. werden auf eine Diskette mehrere Dateien geschrieben, bevor die Diskette voll ist.
Beachten Sie, dass das Splitten hier MIDOS-Format voraussetzt.
Im Menüpunkt Datei splitten der Funktion Datei kopieren des MIDOS-Dateimanagers können Sie dagegen jede Art von Datei splitten, z.B. auch Archivdateien in gepackten Formaten.

#### weitere Informationen:

ñ Datei ñ SPLITT, Splittparameter; ñ Datei kopieren ... F6

ï ñ ò Information 321

### SPLITT, Splittparameter

Die Funktion hat folgende Splittparameter:

    UMFANG:<bytezahl>

<bytezahl> splittet in der Nähe der angegebenen Bytezahl am ganzen Datensatz.

    SATZ:<satzzahl>

<satzzahl> splittet, wenn Satzzahl erreicht ist.

#### weitere Informationen:

ñ Datei kopieren ... F6; ñ SPLITT, Splitten von Datenbankdateien

ï ñ ò Information 322

### WAITWIN, Warte auf Programmende

Das Programm hält die Jobverarbeitung solange an, bis ein bereits gestartetes Windows-Programm beendet wird (eigentlich: ...sich im Taskmanager abmeldet...).
P1:Programmname (ohne .EXE)
P2:---
P3:---
Zweck:
Damit können Frühstarts von Programmen unter Windows 95 vermieden werden, für deren Start die Voraussetzungen noch nicht gegeben sind, wie z.B. Dateien noch nicht erzeugt sind.
MIDOS-Programme werden durch die Jobfolge in einer zwangläufigen Reihenfolge abgearbeitet. Für Fremdprogramme können Sie das aber nie voraussagen. Deshalb stellen Sie WAITWIN ggf. hinter WINEXEC in den Job.
Beispiel:

    Programm Parameter 1
    WINEXEC  WINWORD KLAULIST.DOC
    WAITWIN  WINWORD
    WINEXEC  COPY KLAULIST.DOC MEINE.DOC

Das Programm MS-DOS-Kommando COPY startet erst, wenn WINWORD beendet wurde. Die COPY-Anweisung steht zusammen mit den Dateinamen im Parameter 1 des Jobschrittes. Wenn Sie das COPY aus MIDOS-Update im Programmnamen verwenden, braucht kein WAITWIN angegeben werden.
Beispiel:

    Programm Parameter 1           Parameter 2
    WINEXEC  WINWORD KLAULIST.DOC
    COPY     KLAULIST.DOC          MEINE.DOC

#### weitere Informationen:

ñ Job einrichten; ñ Job starten ñ WINEXEC, Windows-Programm ausführen; ñ DOSEXEC, MS-DOS-Programm ausführen

ï ñ ò Information 323

### WINEXEC, Windows-Programm ausführen

Das Programm führt Windows-Programme aus.
P1:Programmdateiname
P2:wie P1
P3:wie P1
Der Programmdateiname kann mit oder ohne .EXE angegeben werden. Batch-Dateien sind auch abarbeitbar. Hinter dem Programmaufruf können die Umgebungsvariablen übergeben werden.
Hinweis:
Es können mehrere Programmaufrufe je Parameter mit Semikolon getrennt angegeben werden. In diesem Fall können Sie die Reihenfolge der Programmstarts aber nicht beeinflussen, wenn die Programme nicht selbst eine Ablaufsteuerung enthalten.
Unter Windows-NT sind auch die residenten Windows-NT-Kommandos verfügbar. Also z.B. ruft WINEXEC DIR das Window-NT-DIR-Kommando auf.
Wenn DOSEXEC angegeben wäre, würde dagegen die virtuelle DOS-Maschine gestartet und das residente DOS-Kommando DIR aufgerufen.
Zweck:
Die folgenden Beispiele zeigen ein paar Tricks für WINEXEC.
Beispiele:

    Programm Parameter 1
    WINEXEC  MWUPDATE DOPPL.MJB

Gestartet wird innerhalb eines Jobs ein weiterer Job. Diese Schachtelung ist nur in einer Ebene möglich. Der gerufene Job sollte mit CLOSE enden. Im gerufenen Job kann DOSEXEC oder WINEXEC stehen. Jedoch sollte nicht noch einmal MWUPDATE als auszuführendes Programm angegeben werden.

    Programm Parameter 1
    WINEXEC  MWLIST DOPPL.MJB
    ANZEIGE  DOPPL.MJB

Listet den Job DOPPL.MJB auf. Das ist gleich dem Aufruf ANZEIGE DOPPL.MJB.

    Programm Parameter 1
    WINEXEC  MWEDIT1 UMFORM.TAB

Ruft den MIDOS-Dateieditor auf und lädt die Datei UMFORM.TAB. Die könnte nun editiert werden und nach dem Schliessen des Editors wird die Verarbeitung fortgesetzt. Wenn nach dem Jobschritt mit WINEXEC ein Jobschritt mit einem MIDOS-Update-Progamm folgt, startet dieser wirklich erst, wenn der Editor beendet wird. Wenn DOSEXEC oder WINEXEC folgt, dann können Sie nur mit WINWAIT sichern, das kein Programm vorzeitig startet.

#### weitere Informationen:

ñ DOSEXEC, MS-DOS-Programm ausführen; ñ WAITWIN, Warte auf Programmende

ï ñ ò Information 324

### WORTPRUEFUNG, Prüfung mit Wortliste

Das Programm prüft Felder in MIDOS-Datensätzen über eine feldbezogene Prüfliste (Prüfindex) auf gültige Feldwerte.
Zur anschliessenden Korrektur wird für den Zeichenkettenmanipulator die Datei AUTOKORR.MAN erzeugt, die Ersatzwörter anbietet.
Die Ersatzwörter werden nach einem Ähnlichkeitsalgorithmus auf der Basis der Wortlänge und der Fehleranzahl im Wort ermittelt (Maß der grafischen Zeichenkettenähnlichkeit).
P1:MIDOS-Quelldatei
P2:Prüfliste ( .WTX)
P3:Prüfparameter
Hinweis:
Die AUTOKORR-Datei muss in jedem Fall durchgesehen werden und an den Positionen, die mit ??? markiert sind, muss ein korrekter Wert angegeben werden. Die angelegt Datei heist AUTOKORR.MAN.
Ein ähnliches Verfahren wird in der Funktion Suchliste verwendet, um ähnlicheSuchwörter zu ermitteln.

#### weitere Informationen:

ñ WORTPRÜEFUNG, Prüfparameter