ï ñ ò Information 350

### Bedingungen für Kopieranweisungen

Als Bedingung ist eine max. 40 Zeichen lange Zeichenkette <zk> mit Operator einzugeben. Die Bedingung steuert die Ausführung der Kopieranweisungen:

    =<zk>

- Kopiert nur, wenn <zk> in der Kopier-Zeichenkette enthalten ist.

    <><zk>

- Kopiert nur, wenn <zk> nicht in der Kopier-Zeichenkette enthalten ist.

    <<zk>

- Kopiert nur, wenn die Kopier-Zeichenkette vor <zk> im Feld steht. 1)

    ><zk>

- Kopiert nur, wenn die Kopier-Zeichenkette hinter <zk> im Feld steht. 1)

    VON<zk>

- kopiert nur, wenn <zk> in der Kopier-Zeichenkette enthalten ist, kopiert wird ab 1. Zeichen nach <zk> bis Aussagenende. 2)

    BIS<zk>

- kopiert nur, wenn <zk> in der Kopier-Zeichenkette enthalten ist, kopiert wird ab 1. Aussagenzeichen bis ein Zeichen vor <zk>. 2)

1) nur für copysubstring
2) nur für copyaussage
Die Parameter der Kommandos sind durch Kommas zu trennen. Ein <zk>-Parameter darf max. 40 Zeichen lang sein und ist in Hochkomma 'einzuschliessen.
Steuerzeichen sind als ASCII-Code mit # oder @ einzugeben.

    #13#10 = ^ = CRLF = Zeilenwechsel
    #94    = ^ (als Zeichen, nicht al CRLF)
    #39    = Apostroph (')
    #35    = Doppelkreuz (#)
    #64    = kommerzielles A, auch at oder @

#### weitere Informationen:

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

ï ñ ò Information 351

### Steuerung des EXEC-Prozedurablaufs

#### Bedingte Sprunganweisung

    IF EXIST(<feldname>,[<suchwort>]) GOTO <marke>

- Bedingte Programmverzweigung: Wenn ein <suchwort> angegeben ist, wird es im Feld <feldname> gesucht, sonst wird nur die Existenz des angegebenen Feldes überprüft.
- Ist EXIST=true, dann wird mit der ersten Anweisung nach der Marke <marke> fortgefahren - sonst wird als nächste Anweisung die nach dieser IF-Anweisung stehende abgearbeitet.
- Die Marke darf nur nach dieser Anweisung stehen, sonst wird Abarbeitung der EXEC-Prozedur abgebrochen.
- Existiert die Marke nicht, wird die EXEC-Prozedur abgebrochen.

    IF NOT EXIST(<feldname>,[<suchwort>]) GOTO <marke>

- Wie oben, es wird jedoch die Nichtexistenz des Feldes bzw. des <suchwortes> im Feld geprüft.

#### Unbedingte Sprunganweisung

    GOTO <marke>

- Unbedingte Verzweigung: Das Programm wird an der Stelle fortgesetzt, die mit der Marke <marke> gekennzeichnet ist.
- Wird die Marke nicht gefunden oder ist die Marke vor der GOTO-Anweisung, wird die EXEC-Prozedur abgebrochen.

    EXIT

- Beendet die Abarbeitung einer EXEC-Prozedur, ohne daß das wirkliche Ende des Programmes erreicht sein muß.

#### weitere Informationen:

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

ï ñ ò Information 352

### Zwischenfeld-Befehle

Alle bisherigen Anweisungen transportieren direkt Daten von einem Eingabefeld eines Datensatzes der Quelldatei oder eine Konstante zu einem Ausgabefeld in die Ausgabedatei oder auf den Bildschirm. Die folgenden Anweisungen dagegen arbeiten über ein Zwischenfeld ZF.
Die Arbeitsweise ist in etwa folgende:

1. Ein oder mehrere Felder werden in das Zwischenfeld geladen, ggf. unter Bedingungen.
2. Die Daten werden im Zwischenfeld analysiert und
3. mit Zeichenkettenverarbeitungskommandos bearbeitet und dann
4. in das Ausgabefeld geschrieben.

Die Zwischenfeldbearbeitung wird mit der speziellen Anweisung ZFBEGIN eingeleitet und mit ZFENDE beendet. Zwischen diesen Anweisungen sind nur die folgenden Anweisungen zugelassen.

#### Beginn/Ende Zwischenfeldbearbeitung

    ZFBEGIN([<mode>])

- Initialisiert das Zwischenfeld <ZF>.
- Wenn mode>0, dann wird der Inhalt des <ZF> der letzten EXEC-Prozedur übernommen.
- Damit ist der EXEC-Prozedur-Aufruf gemeint, der in der Transformationstabelle als letzter vor der mit mode>0 definierten EXEC-Prozedur steht.
- Die Reihenfolge der Quellfeld-Zielfeld-Zuweisung bestimmt die Reihenfolge der Verarbeitung und der Feldausgabe.
- Die Reihenfolge der EXEC-Prozedur-Definitionen ist dagegen nicht von Bedeutung.

Beispiel:

    REM          Der EXEC-Prozedur-Aufruf
    REM          zu EXEC1 steht vor EXEC2
    EXEC1 EN
    AB
    EXEC2
    nwende

    exec1:
    zfbegin
    ...
    zfcc(^)
    zfende
    ...

    exec2:       In EXEC2 steht der Inhalt bereit,
    zfbegin(1)   der in EXEC1 zum Zeitpunkt von ZFENDE
    ...          bearbeitet war.
    zfcc(^)
    zfende

Aber:

    EXEC2 EN     In EXEC2 steht der Inhalt von
    VFU          EXEC1 nicht zur Verfügung,
    AB           weil EXEC1 hinter EXEC2 aufgerufen wird.
    EXEC1
    nwende

    exec1:
    zfbegin
    ...
    zfcc(^)
    zfende

    exec2:
    zfbegin(1)
    ...
    zfcc(^)
    zfende

    ZFENDE

- Schreibt die Daten des Zwischenfeldes in das Ausgabefeld.
- Wenn ZFENDE mit einem Sprung übergangen wird, dann wird der Inhalt der EXEC-Prozedur nicht ausgegeben.

#### weitere Informationen:

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

ï ñ ò Information 353

### Anzeigen interner Variablen

    SHOWVARS

- Zeigt die globalen Variablen VAR1...VAR9 an.
- Nur im Testmodus hält die Ausgabe an, Fortsetzung mit Enter.
- Liegt SHOWVARS in einer Schleife, werden die Variablen auch in der Schleife angezeigt.

    SHOWZF

- Zeigt das Zwischenfeld an.
- Nur im Testmodus hält die Ausgabe an, Fortsetzung mit Enter.

#### weitere Informationen:

ñ Feldmanipulation, Transformationstabelle; ñ Feldmanipulation, allgemeine Programmsyntax; ñ Feldmanipulation, Datensatz-Syntax; ñ Feldmanipulation, Allgemeines; ñ Zwischenfeld-Befehle; ñ Löschen von Teilzeichenketten

ï ñ ò Information 354

### Kopieren in das Zwischenfeld

#### Kopieren von Feldern

    ZFCOPY(<feldname>)
    {ZFCO(<feldname>)}

- Kopiert das Feld <feldname> in das Zwischenfeld.
- Liegen mehrer Anweisung hintereinander, wird das Zwischenfeld kumuliert.

#### Kopieren von Zeilen

    ZFCOPYZEILE(<nummer>,[<trenner>])
    {ZFCO)

- Kopiert die Zeile Nummer <nummer> aus dem Quelldatensatz, die durch den Trenner <trenner> abgetrennt sind.
- Optional sind als Trenner die Zeilenwechselzeichen #13#10 (CRLF) eingestellt.
- Liegen mehrer Anweisung hintereinander, wird das Zwischenfeld kumuliert.
- Verwendung bei Dateien mit fester Zahl von Zeilen pro Dokument.

    ZFCOPYZEILE(1,; )

Kopiert die 1. Zeile bis zum Zeichen; im Satz.

#### Kopieren von Aussagen

    ZFCOPYAUSSAGE(<feldname>,<von>,<bis>,<trennzeichen>)
    {ZFCA(...)

- Kopiert die Feldaussage mit der Position <von> bis zur Feldaussage mit der Position <bis> des Feldes <feldname> in das Zwischenfeld.
- <von>,<bis> sind die Aussagennummern.
- Liegen mehrer Anweisung hintereinander, wird das Zwischenfeld kumuliert.
- <trennzeichen> werden zwischen die Aussagen gesetzt, sobald mehr als eine Aussage im Zwischenfeld landet.

#### Kopieren von Konstanten

    ZFCOPYCONST(<zeichenkette>)
    {ZFCC(...)}

- Kopiert die Zeichenkette <zeichenkette> in das Zwischenfeld.
- Die Länge der Zeichenkette kann max. 30 Zeichen betragen. Längere Zeichenketten sind aus mehreren ZFCOPYCONST-Anweisungen zusammenzusetzen.
- ZFCC fügt immer an das Ende des Zwischenfeldes an (Position var9+1).

#### weitere Informationen:

ñ Feldmanipulation, Transformationstabelle; ñ Feldmanipulation, allgemeine Programmsyntax; ñ Feldmanipulation, Datensatz-Syntax; ñ Feldmanipulation, Allgemeines; ñ Zwischenfeld-Befehle; ñ Zwischenfeldanfang und Ende säubern; ñ Substitution von Zeichenketten; ñ Substitution von Codes; ñ Einfügen einer Zeichenkette; ñ Löschen von Teilzeichenketten

ï ñ ò Information 355

### Substitution von Zeichenketten

    ZFSUBST(<zeichenkette1>,<zeichenkette2>,[<von>],[<bis>])
    {ZFSU(...)}

- Ersetzt im Zwischenfeld die Zeichenkette <zeichenkette1> durch <zeichenkette2>
- <von>, <bis> sind optional und geben eine Anfangs- und Endeposition an, an der die Ersetzung wirken soll.

Beispiel:

    ZFSU(ANWENDUNG,Abwendung)
    zfsu(01.12.98,19981201,1,8)
    zfsu(Anfang,Ende,var1,var9)

var1 Position von Anfang,
var9 Position von Ende
var1 muss hier gleich var9-5 sein, um das Wort "Anfang" am Zwischenfeldende in das Wort "Ende" umzuformen.

#### weitere Informationen:

ñ Feldmanipulation, Transformationstabelle; ñ Feldmanipulation, allgemeine Programmsyntax; ñ Feldmanipulation, Datensatz-Syntax; ñ Feldmanipulation, Allgemeines; ñ Zwischenfeld-Befehle; ñ Substitution von Codes; ñ Einfügen einer Zeichenkette; ñ Löschen von Teilzeichenketten

ï ñ ò Information 356

### Substitution von Codes

    ZFCODE(<zeichenkette1>,<zeichenkette2>,[<von>],[<bis>])

- Tauscht im Zwischenfeld die Zeichen der Zeichenkette <zeichenkette1> durch die Zeichen der Zeichenkette <zeichenkette2> aus, die an der gleichen Position in beiden Zeichenketten stehen.
- <von>, <bis> - sind optional, geben die Anfangs- und Endeposition an, innerhalb derer die Umkodierung wirken soll.
- Längere Umkodierungstabellen sind aufzuteilen, da <zeichenkette1> max. 30 Zeichen enthalten kann.

Beispiel:

    zfcode(A,a,1,1)

Aus jedem A wird ein a, wenn es auf Pos. 1 des Zwischenfeldes steht.

    zfcode(ABCDEFGHIJKLMNOPQRSTUVWXYZ#124,abcdefghijklmnopqrstuvwxyz$,2,var9)

Von Position 2 des Zwischenfeldes bis zum Zwischenfeldende (siehe var9) sollen die Zeichen ausgetauscht werden.

    zfcode(#142#132#153#148#154#129#225,#196#228#214#246#220#252#223)

Im Beispiel werden deutsche ASCII-Umlaute zu deutschen ANSI-Umlauten.
Merke: Ein Vergleichswert wird im ANSI-Code verglichen.

#### weitere Informationen:

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

ï ñ ò Information 357

### Numerische Variable

    VAR1... VAR8=y

- Die Verwendung von 8 globalen Variablen z.B. zur Bestimmung der Position von von Zeichen oder Zeichenketten in Feldwerten ist möglich.
- Ebenso können die numerischen Funktionen zum Rechnen benutzt werden.
- In den Funktionen ZFPOS oder ZFPOS1 wird das deutlich.
- Auch zur Ermittlung der Aussagenanzahl in einem Feld werden sie benutzt.
- Der inhalt einer numerischen Variablen kann zum Feldwert umgeformt werden.

    VAR9

- Enthält nach jedem Kommando die aktuelle Zwischenfeldlänge;
- Kann nur lesend verwendet werden.
- VAR9 wird bei jedem ZF-Kommando neu gesetzt, die das Zwischenfeld verändert.

Mit ZFCC('VAR9') wird der Wert von VAR9 in das Zwischenfeld als Zahl eingetragen.

    DATE   DATUM
    DATE2  DATUM2
    DATE3  DATUM3
    DATE4  DATUM4

- Die Variablen stellten das Systemdatum in verschiedenen Formen bereit.
- Die Formen sind vom Eintrag SYSTEMDATUM und SPRACHFASSUNG des Betriebssystems abhängig.
- Es kann sein, dass Datumsangaben nachbearbeitet werden müssen.

Aufgerufen werden die Datumsformen z.B. mit ZFCC('DATUM2').
Beispiele:

    VAR1=VAR1+1

    VAR2=VAR9-VAR1

    if VAR1<VAR9 goto marke1

    ZFCC('VAR1')

Der Inhalt von VAR1 wird als ganze Zahl ins Zwischenfeld gestellt. Die Zahlenkonvertierung erfolgt automatisch.

    ZFCC('DATE3')

Ältere Windos-Versionen liefern das Datum falsch zurück. Im Zwischenfeld kann das Datum bearbeitet werden.
Beachten Sie, dass Apostroph gesetzt werden müssen.

#### weitere Informationen:

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

ï ñ ò Information 358

### Position einer Zeichenkette ermitteln

    VARx=ZFPOS(<zeichenkette>,[<von>][,<bis>])

- Das Zwischenfeld wird nach <zeichenkette> durchsucht.
- Als Ergebnis wird die Position der <zeichenkette> (linkes Zeichen) in VARx (x=1..8) gespeichert.
- Null als Ergebnis bedeutet, die Zeichenkette ist nicht im Zwischenfeld enthalten.
- <von>, <bis> sind optional, fehlt die Angabe, wird als Standard Zwischenfeldanfang Position 1 und Zwischenfeldende (VAR9) angenommen.

    VARx=ZFPOS1(<zeichenkette>,[<von>][,<bis>])

- Das Zwischenfeld wird nach den einzelnen Zeichen von <zeichenkette> durchsucht.
- Die Position des ersten Auftreten eines dieser Zeichen wird in VARx (x= 1..8) gespeichert.
- Ist das Ergebnis 0, bedeutet das, keines der Zeichen ist im Zwischenfeld enthalten.
- <von>, <bis> sind optional, fehlt die Angabe, wird als Standard Zwischenfeldanfang Position 1 und Zwischenfeldende (VAR9) angenommen.

Beispiel:

    var1=zfpos1(0123456789,30,var9)

Ermittelt die Position der ersten Ziffer im Zwischenfeld, die nach der Position 29 von links steht.

    var1=zfpos1(';-,.;:?!()&$%"=+#39')

Ermittelt die Position des ersten Sonderzeichens im Zwischenfeld, beachte: #39. Das Apostroph, Leerzeichen und runde Klammern müssen immer in Apostroph gesetzt werden oder mit ihrem Bytewert dargestellt werden.

#### weitere Informationen:

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

ï ñ ò Information 359

### Löschen von Teilzeichenketten

    ZFDELETE(<von>,<bis>)
    {ZFDEL(...)}

- Löscht das Zwischenfeld vom Zeichen <von> bis zum Zeichen <bis> einschließlich dieser Zeichen; es wird also die Position des letzten zu löschenden Zeichens angegeben.

Beispiele:

    zfdelete(var1,var9)

Löscht von der Position VAR1 bis zum Zwischenfeldende, da VAR9 die Länge des Zwischenfeldes enthält. VAR1 muss grösser Null und kleiner oder gleich VAR9 sein.

    if var2<13 goto marke1
    zfdelete(13,var2)
    :marke1

Löscht von Position 13 bis zur Position VAR2. VAR2 muss geprüft werden, ob sie grösser oder gleich der Anfangsposition für das Löschen ist, 13, da sonst ein Fehler auftritt.

    zfdelete(13,255)

Löscht von Position 13 bis 255. Ist das Zwischenfeld kürzer, wird der Fehler ignoriert.

    ZFERASE(<von>,<anzahl>)
     {ZFERA}

- Löscht im Zwischenfeld ab dem Zeichen auf Position <von> in der Länge, die durch <anzahl> Zeichen bestimmt wird.

Sie können auch mit ZFSUBST löschen.
Beispiele:

    ZFSUBST('LOESCHE DIESE ZEICHENKETTE',)

Der zweite Parameter wird leer gelassen.

    zferase(var1,var3)

Löscht von Position VAR1 in der Länge von VAR3. VAR3 darf nicht Null sein. VAR1 muss kleiner als VAR9 sein. Ist die angegeben Länge grösser als das Zwischenfeld, wird der Fehler abgefangen.

#### weitere Informationen:

ñ Zwischenfeld-Befehle; ñ Zwischenfeldanfang und Ende säubern; ñ Kopieren einer Konstanten; ñ Kopieren einer Teilzeichenkette; ñ Kopieren eines Feldes; ñ Kopieren in das Zwischenfeld; ñ Kopieren von Feldaussagen; ñ Feldmanipulation, Transformationstabelle; ñ Feldmanipulation, allgemeine Programmsyntax; ñ Feldmanipulation, Datensatz-Syntax; ñ Feldmanipulation, Allgemeines

ï ñ ò Information 360

### Zwischenfeldanfang und Ende säubern

    ZFTRIMM(<anfzeichenex>,<endezeichenex>)

- Beseitigt die im ersten Parameter <anfzeichenex> aufgeführten Zeichen am Anfand des Zwischenfeldes bis ein Zeichen ungleich einem der zu löschenden Zeichen gefunden wird.
- Beseitigt die in <endezeichenex> aufgeführten Zeichen beginnend ab der Position VAR9 bis beim Rückwärtsgehen im Zwischenfeld ein Zeichen ungleich einem zu löschenden gefunden wird.

Beispiele:

    zftrimm(0123456789,0123456789)

Beseitigt alle Ziffern vorn und hinten im Zwischenfeld.

    zftrimm(#32,#32#124)

Beseitigt Leerzeichen vorn und hinten und Aussagentrenner nur hinten.

#### weitere Informationen:

ñ Feldmanipulation, Transformationstabelle; ñ Feldmanipulation, allgemeine Programmsyntax; ñ Feldmanipulation, Datensatz-Syntax; ñ Feldmanipulation, Allgemeines; ñ Kopieren einer Konstanten; ñ Kopieren einer Teilzeichenkette; ñ Kopieren eines Feldes; ñ Kopieren in das Zwischenfeld; ñ Kopieren von Feldaussagen; ñ Substitution von Codes; ñ Substitution von Zeichenketten; ñ Einfügen einer Zeichenkette

ï ñ ò Information 361

### Einfügen einer Zeichenkette

    ZFINS(<zeichenkette>,<ab>)

- Fügt die Zeichenkette <zeichenkette> ab der Position <ab> in das Zwischenfeld ein.
- <ab> darf nicht Null sein und darf nicht ausgelassen werden.

#### weitere Informationen:

ñ Feldmanipulation, Transformationstabelle; ñ Feldmanipulation, allgemeine Programmsyntax; ñ Feldmanipulation, Datensatz-Syntax; ñ Feldmanipulation, Allgemeines; ñ Kopieren einer Konstanten; ñ Kopieren einer Teilzeichenkette; ñ Kopieren eines Feldes; ñ Kopieren in das Zwischenfeld; ñ Kopieren von Feldaussagen; ñ Substitution von Codes; ñ Substitution von Zeichenketten

ï ñ ò Information 362

### Programmverzweigung mit Variablenwerten

    IF VARx=y GOTO

Bedingte Programmverzweigung in Abhängigkeit vom Wert y der Variablen VARx (x:1..9)

    IF VARx>y GOTO

    IF VARx
    <y GOTO

    IF VARx=y GOTO

    IF VARx
    <=y GOTO

    IF VARx>=y GOTO

    IF VARx
    <>y GOTO

<> steht für ungleich

#### weitere Informationen:

ñ Bedingungen für Kopieranweisungen; ñ Feldmanipulation, allgemeine Programmsyntax; ñ Feldmanipulation, Allgemeines; ñ Feldmanipulation, Datensatz-Syntax; ñ Feldmanipulation, Transformationstabelle; ñ Kopieren einer Konstanten; ñ Kopieren einer Teilzeichenkette; ñ Kopieren eines Feldes; ñ Kopieren in das Zwischenfeld; ñ Kopieren von Feldaussagen; ñ Substitution von Codes; ñ Substitution von Zeichenketten; ñ Zwischenfeld-Befehle

ï ñ ò Information 363

### Programmschleifen

    REPEAT <anweisungen> UNTIL

- Die zwischen REPEAT und UNTIL stehenden Anweisungen werden beliebig oft (bis zu 1000 mal) wiederholt.
- Über IF <bedingung> GOTO MARKE ist ein Abbruch möglich.
- Die Marke muß sich außerhalb (hinter) der Schleife befinden.
- Der Abbruch bei 1000 ist eine Sicherheitmaßnahme gegen unbeabsichtigte, ununterbrechbare Programmschleifen, die durch falsche Endebedingungen entstehen können.
- Sollten Sie den Inhalt eines Feldes mit mehr als 1000 Zeichen via REPEAT zeichenweise umdrehen wollen, dann wird Ihnen das nicht gelingen, weil die REPEAT-Schleife mehr als 1000 Durchläufe benötigt.

Beispiel:

    ZFBEGIN      zählt nur die Variable bis zehn als Abbruchbeispiel
    VAR1=0
    REPEAT
    VAR1=VAR1+1
    IF VAR1>10 GOTO M1
    UNTIL
    :M1
    ZFENDE

#### weitere Informationen:

ñ Feldmanipulation, allgemeine Programmsyntax; ñ Feldmanipulation, Allgemeines; ñ Feldmanipulation, Datensatz-Syntax; ñ Feldmanipulation, Transformationstabelle; ñ Kopieren einer Konstanten; ñ Kopieren einer Teilzeichenkette; ñ Kopieren eines Feldes; ñ Kopieren in das Zwischenfeld; ñ Kopieren von Feldaussagen; ñ Substitution von Codes; ñ Substitution von Zeichenketten

ï ñ ò Information 364

### Ein komplexeres Beispiel

Die Vornamen von Autoren sollen auf ihre Initialen gekürzt werden. Der Spezialfall der Doppel-Vornamen wird aus Platzgründen nicht gesondert behandelt.
Das Quellfeld habe folgenden Inhalt:

    AU:Müller, Manfred|Meyer, Wolfgang|Schulze, Hans-Peter von

    exec88:
    zfbegin
    if not exist(31) goto f2  Fehlt Feld 31, Sprung hinter ZFENDE
    zfco(31)                  Kopiere Feld 31
    zfcc(; )                   Anfügen an Feld für Endebedingungen
    repeat                    Schleifenbeginn
    var1=zfpos1(', ')         Ausgangsvariable einstellen
    var2=var1+3               Position nach ', '
    var4=var1+1               Position Leerzeichen
    var3=zfpos(; )             Position;
    var5=var3-1               Position vor;
    if var5=0 goto f1         diverse Vergleiche
    if var1<3 goto x1
    if var3<4 goto x1
    if var5<3 goto m1
    zfdel(var2,var5)
    if var3>var9 goto x1      Abbruchbedingung
    :m1
    zfsu(', ',XX,var1,var4)   Umsetzen wegen Anfangsbedingung
    zfsu(; ,$,var3,var3)       Zeichentausch
    showvars                  Variable im Testmodus anzeigen
    showzf                    Zwischenfeld im Testmodus anzeigen
    until
    :x1
    zfsu(XX,'-')
    zfsu(.,-)
    zfsu(',',-)
    zfsu(#32,-)
    zfsu(')',-)
    zfsu('(',-)
    zfsu(#39,)
    zfsu(--,-)
    zfsu(-; ,; )
    zfins(AU:,1)
    zfcc(^)
    zfsu(; ,$)
    zfsu(-$,$)
    zfsu($,'; ')
    zfsu(;^,^)
    zfsu(;,'; ')
    showzf
    zfende
    exit
    :f2
    cc(AU:anonym)
    cc(^)
    :f1

Ergebnis sollte in etwa so aussehen:

    AU:Müller-M; Meyer-W; Schulze-H

#### weitere Informationen:

ñ Feldmanipulation, allgemeine Programmsyntax; ñ Feldmanipulation, Allgemeines; ñ Feldmanipulation, Datensatz-Syntax; ñ Feldmanipulation, Transformationstabelle; ñ Kopieren einer Konstanten; ñ Kopieren einer Teilzeichenkette; ñ Kopieren eines Feldes; ñ Kopieren in das Zwischenfeld; ñ Kopieren von Feldaussagen; ñ Substitution von Codes; ñ Substitution von Zeichenketten

ï ñ ò Information 365

### MEMO-Feld-Operationen

Ein MEMO-Feld ist ein zusätzlicher Pufferspeicher, der über die Verarbeitung eines Dokumentes hinaus mit Daten gefüllt werden kann. Er wird vom Programmierer auf Grund von Bedingungen gezielt gefüllt und entladen. Die maximale Länge ist 65000 Zeichen.
Mit den im flogenden beschriebenen Funktionen wird möglich:

1. Text (Aussagen) in das Zwischenfeld kopieren,
2. das Zwischenfeld bearbeiten mit den Zwischenfeldkommandos,
3. das Zwischenfeld in das MEMO (Memory-Feld) kopieren und ggf. kumulieren,
4. das Zwischenfeld zu löschen und dann
5. neuen Text in das Zwischenfeld zu laden, zu bearbeiten usw...
6. irgendwann das angesammelte MEMO-Feld in das Zwischenfeld zurück zu kopieren
7. und das ganze mit ZFENDE auszugeben.

    ZFADDMEMO

- Kopiert das Zwischenfeld ZF vollständig in das MEMO-Feld;
- Wenn das MEMO-Feld bereits Werte enthält, wird der Inhalt des Zwischenfeldes kumulierend angefügt.

    ZFCLEAR

- Löscht das Zwischenfeld ZF vollständig.
- VAR9 wird auf 0 gesetzt.

    ZFRESTOREMEMO

- Kopiert den Inhalt des MEMO-Feldes in das Zwischenfeld.
- Das Zwischenfeld wird dabei vollständig überschrieben.
- Es sollte aber dennoch mit ZFCLEAR vor dem Rückspeichern gelöscht werden.
- Der MEMO-Inhalt wird nur gespeichert, wenn vor ZFENDE dieser Befehl steht.

    ZFMEMOCLEAR

- Löscht MEMO vollständig.
- Der MEMO-Inhalt wird nur mit diesem Befehl gelöscht, bleibt also auch datensatzübergreifend erhalten, solange der Befehl ZFMEMOCLEAR nicht ausgeführt wird.
- Wenn EXEC-Prozeduren im Fehlerfall verlassen werden, ohne das MEMO-Feld zu löschen, wird das MEMO-Feld ggf. über mehrere Datensätze hinweg gefüllt.

Wenn mit einem MEMO-Feld gearbeitet wird, kann es sinnvoll sein, dieses am Anfang der EXEC-Prozedur zu löschen. MEMO-Felder bleiben bestehen und werden kumulativ gefüllt, bis sie explizit gelöscht werden.

#### weitere Informationen:

ñ Feldmanipulation, allgemeine Programmsyntax; ñ Feldmanipulation, Allgemeines; ñ Feldmanipulation, Datensatz-Syntax; ñ Feldmanipulation, Transformationstabelle; ñ Kopieren einer Konstanten; ñ Kopieren einer Teilzeichenkette; ñ Kopieren eines Feldes; ñ Kopieren in das Zwischenfeld; ñ Kopieren von Feldaussagen; ñ Substitution von Codes; ñ Substitution von Zeichenketten; ñ Zwischenfeld-Befehle; ñ Zwischenfeldanfang und Ende säubern

ï ñ ò Information 366

### Aussagenanzahl ermitteln

    VARx=MAXAUSSAGEN(<feldname>)

- Ermittelt die Aussagenanzahl für das genannte Feld (0 (Null) wenn Feld nicht existiert.)

    VARx=MAXZFAUSSAGEN(ZF)

- ermittelt die Aussagenanzahl für das Zwischenfeld
- Aussagentrenner ist Standard; (#124).

Beispiel:
Alle Deskriptoren des Feldes DESKR, die eine REGISTERKENNUNG # haben, sollen nicht ausgegeben werden.

    DESKR:Heisluftballon; #Wetterballon; #Luftdruckmessung; Drift

    exec12:
    zfbegin
    if not exist(DESKR) goto f1
    zfmemoclear
    var1=zfmaxaussagen(DESKR)
    var2=0
    repeat
    zfclear
    var2=var2+1
    if var2>var1 goto raus
    zfcopyaussage(DESKR,var2,var2,; )
    var3=zfpos1(#35,1,1)
    if var3=1 goto schleife
    zfcc(; )
    zfaddmemo
    :schleife
    until
    :raus
    zfclear
    zfrestorememo
    zfmemoclear
    zftrimm(; #32,; #32)
    zfsu(; ,#32#124##32)
    if var9<1 goto f2
    zfins(DESKR:,1)
    zfcc(^)
    zfende
    exit
    :f2
    cc('DESKR:FEHLER=ALLE DESKR MIT REGISTERKENNUNG')
    cc(^)
    exit
    :f1

    Ergebnis:

    DESKR:Heisluftballon; Drift

#### weitere Informationen:

ñ Feldmanipulation, allgemeine Programmsyntax; ñ Feldmanipulation, Allgemeines; ñ Feldmanipulation, Datensatz-Syntax; ñ Feldmanipulation, Transformationstabelle; ñ Kopieren einer Konstanten; ñ Kopieren einer Teilzeichenkette; ñ Kopieren eines Feldes; ñ Kopieren in das Zwischenfeld; ñ Kopieren von Feldaussagen; ñ MEMO-Feld-Operationen; ñ Substitution von Codes; ñ Substitution von Zeichenketten; ñ Zwischenfeld-Befehle; ñ Zwischenfeldanfang und Ende säubern

ï ñ ò Information 367

### XML-Format umsetzen/erzeugen

#### XML-Format umsetzen

Die Umformung eines XML-Dokumentes in einen MIDOS-Datensatz ist immer dann möglich, wenn das gelieferte XML-Format auf reguläre Weise erzeugt wurde.
Liegt die Formatbeschreibung der XML-Datei in Form einer DTD (document type description) vor, analysieren Sie die Hierarchie und Reihenfolge der XML-Markups (XML-Tags), danach die Attribute und die Zeichenentitäten in der DTD.
Liegt lediglich die XML-Datei vor, dann analysieren Sie die XML-Tags, ihre Hierarchie und ihre Wiederholbarkeit auf der Grundlage der Datei. Die Zeichenentitäten müssen Sie aus einer Statistik ermitteln (Zeichen: & und #).
Aus der Analyse leiten Sie die Regeln für eine Zeichenkettenmanipulation ab, mit der Sie zunächst die physische Struktur der XML-Datei in ein MIDOS-Datenbankformat umformen.
Die inhaltliche Umsetzung von XML-Dateien erfolgt im allgemeinen durch das Zusammenwirken von Zeichenkettenmanipulation und Feldmanipulation. Nachdem Sie das MIDOS-Datenbankformat erzeugt haben, müssen Sie aus den gelieferten Inhaltskomponenten Datensätze erzeugen, die für Ihre Datenbank gültigen Wertevorrat und gültige Inhalte haben.
XML zeichnet sich dadurch aus, dass semantische Strukturen/Elemente eines Texte mit Markups (Markierungen) in Form von XML-Tags markiert werden. Normalerweise kann immer eine Beziehung zwischen diesen XML-Tags und einem MIDOS-Datenfeld hergestellt werden.
XML-Markups müssen immer ein Ende-Tag haben, mit Ausnahme von sogenannten leeren Tags. Die XML-Dokumente besitzen immer ein Wurzeltag, jedes Dokument besitzt ein Start-Tag und ein Ende-Tag.
Jedes sinnvolle Dokument besitzt mindestens noch ein über seinen Inhalt definiertes Tag. Ein Markup kann durch Attribute modifiziert werden.
Beispiel:

    Wurzel-Tag:
    <!XML ... >
    Start-Tag:
    <RECORD ... >
    Ende-Tag:
    </RECORD ... >
    Inhalt:
    <TITEL language="GER">

    </TITEL ... >

    <AUTOR ... >

    </AUTOR ... >

    <STICHWORT thesaurus="EnvProt" language=GER>

    </STICHWORT ... >
    Leeres Tag:
    <DATUM datum="2000-30-10" format="ISO"/>

Es ist einzusehen, dass zumindest die Markups für AUTOR und STICHWORT multipel sein können. Ausserdem könnte im Markup für STICHWORT eine Modifizierung stattfinden, bei der das Attribut thesaurus oder language oder beide den Wert ändern, aber das Markup immer noch STICHWORT genannt wird. Andererseits ist XML auch ohne Attribute denkbar, weil die Anzahl der verschiedenen Markups praktisch beliebig gross sein kann.
Man könnte auch STICHWORTENGLISCH als Markup wählen oder den Thesaurusnamen im Markup unterbringen.
Hinweis:
In MIDOS2000 gibt es das XML-Markup <code> und </code> für den Fall, dass Sie in einem Datensatz HTML-Elemente, XML-Element oder SGML-Element erklären müssen, diese aber nicht vom HTML-Browser ausgewertet werden sollen. Sie müssen die Befehlserklärung in diese Markups einschliessen.
Die Markups müssen im Falle einer tieferen hierarchischen Gliederung sauber in sich geschachtelt sein. Alle gleichnamigen Markups der innersten Ebene müssen ggf. in einem MIDOS-Feldnamen zusammengefasst werden.
In der Zeichenkettenmanipulation geben Sie den Namen das Dokumentendetags als Satzendean, z.B.

    Satzende:
    </RECORD ... >

Hat das Markup für das Dokumentende Attribute, müssen diese alle bekannt sein, denn Sie müssen diese Attribute in einem speziellen Vorablauf der Zeichenkettenmanipulation in Felder umwandeln. Diese Felder müssen vor dem Satzende-Markup stehen, da sie nach dem Satzende nicht mehr manipuliert werden können. Üblicherweise sind solche Fälle selten.
Der allgemeine weitere Inhalt der Zeichenkettenmanipulation sollte sein:

1. Umformen der Zeichenentitäten in ISO-Latin-1 oder ASCII,
2. Umformen aller Attribute aller Markups in Felder oder in Feldaussagen ggf. mit Markierungen,
3. Umformen der Markups in Feldnamen,
4. Zusammenfassung gleichnamiger Markups eines XML-Dokuments in einem Feld zu mehreren Feldaussagen oder in mehreren, z.B. durchnumerierten Feldern,
5. Auflösung der Hierarchie von der innersten zur äusseren Ebene,
6. Reaktion auf bestimmte Attribute,
7. Elemente einer Textgestaltung, ausser denen, die der Aufprägung einer semantischen Textstruktur dienen, dürfen eigentlich nicht in einem XML-Dokument vorkommen. Da es aber Menschen geben wird, die eine Begriffsdefinition im Text nicht mit einem XML-Tag für Definition, z.B. <DEFINITION lng=GER> und </DEFINITION> kennzeichen, was richtig wäre, sondern mit einer anderen Schriftauszeichnung, z.B. für KURSIV/FETT, was grundfalsch ist, sollten Sie sich nicht darauf verlassen. Suchen Sie ggf. nach Textauszeichnungen und setzen Sie diese ggf. in eigene innere Marken um, die Sie später weiterverarbeiten können.
8. Entfernen aller nicht notwendigen Elemente, egal ob Markup oder Attribut. Sie brauchen z.B. das Sprachattribut nicht, wenn Sie ohnehin nur alle Dokumente in deutscher Sprache übernehmen. Wenn Sie ohnehin in Deutsch und Englisch suchen, brauchen Sie ggf. auch die anderen Attribute nicht usw..
9. Umsetzung des Satzendes in das MIDOS-Satzende.

Sie müssen das Ergebnis mit der Datenbankanalyse prüfen und ggf. Markups und Attribute, die Ihnen nicht bekannt gemacht wurden, nachträglich umformen.
Wenn alle Markups in Felder und ggf. die Attribute von Markups auch zu Feldern gemacht wurden, dann kann mit der Feldmanipulation fortgesetzt werden. Die Attribute können im allgemeinen als Anweisungen für die Behandlung von Daten aufgefasst werden. Diese Behandlungsanweisungen setzen Sie in der Feldmanipulation in die Tat um.
Das Zwischenformat könnte z.B. folgende Form erhalten haben:

    TITEL:language=GER; feldwert des titels ...
    AUTOR: ...; autor1; ... autor2; ...
    STICHWORT:thesaurus=EnvProt; language=GER; stichwort1
    ; thesaurus=ChemInd; language=ENG; stichwort2 ...
    DATUM:datum=2000-30-10; format=ISO
    &&&

Es liegt ein gültiges MIDOS-Datensatzformat vor, dass mit Programmen der Feldmanipulation weiter verarbeitet wird.
Es wäre möglich, auf dem Niveau die Umsetzung zu beenden und die Datenbank aufzubauen. Alle Zeichenketten inclusive der, die aus Attributen erzeugt wurden, sind suchbar, in den Index aufnehmbar und ausgebbar.
Grafische Elemente werden in XML ebenfalls mit Markups ausgezeichnet. Da MIDOS2000 sowohl an beliebiger Stelle im Text als auch in Spezialfeldern Grafik-Referenzen zulässt, gibt es keine andere Behandlung von Markups für Grafik als für Text. Es kann allerdings sein, dass Attribute auf HTML-Standard zurückgesetzt werden müssen, um die Grafk mit dem internen HTML-Browser anzeigen zu können.
Wenn Ihnen das alles zu kompliziert erscheint, geben Sie die Lösung bei uns in Auftrag.

#### XML-Format umsetzen

Das XML-Format kann auf verschiedenen Wegen erzeugt werden:

1. mit Hilfe von Ausgabebeschreibungen, die eine entsprechende Aufbereitung unter Anwendung des <code>-Markups vornehmen,
2. in der Anwendung der ausschliesslichen Feldmanipulation,
3. in Umkehrung des Verfahrens zur Umsetzung des XML-Formates durch die Kombination von Feldmanipulation für die inhaltorientierte, semantisch geprägte Erzeugung von Markups und die anschliessende physische Erzeugung der XML-Strukur mit dem Zeichenkettenmanipulator, z.B. um die notwendigen Zeichenumschriften im Text zu erzeugen.

Eine wichtige Voraussetzung müssen Sie schaffen:
Ihre MIDOS-Datenbank muss in der Lage sein, den Ansprüchen

- an die Hierarchie,
- die Reihenfolge der Markups,
- die Wiederholbarkeit,
- die obligatorische oder fakultative Anwesenheit im XML-Dokument,

die Sie selbst für das XML-Dokument definieren, auch gerecht zu werden.
Das XML-Wurzel-Tag und die DTD (nicht unbedingt erforderlich, aber zur Verständigung recht sinnvoll) erzeugen Sie als gesonderte Dateien. Für die Ableitung der DTD stellt die Datenbeschreibung oder die Ausgabebeschreibung die Basis dar. Sie editieren diese Dateien unter Verwendung der Standard-XML-Komponenten, die Sie aus dem Internet aktuell herunterladen müssen.
Sie können uns auch damit beauftragen, es für Sie zu tun.
Da Sie ein XML-Format nicht aus Spass erzeugen, müssen Sie sich ggf, nach den Wünschen des Empfängers/Anwenders Ihrer XML-Dateien richten, was die Namen der Markups und der Attribute betrifft. Sie finden den jeweils aktuellen Stand der international abgestimmten Markups im Internet bei den entsprechenden XML-Gremien.
Wenn Sie die XML-Datei im UNICODE benötigen, reden Sie mit uns.

#### weitere Informationen:

ñ SGML-Format umsetzen/erzeugen

ï ñ ò Information 368

### SGML-Format umsetzen/erzeugen

#### SGML-Format umsetzen

Die Umformung eines SGML-Dokumentes in einen MIDOS-Datensatz ist immer dann möglich, wenn das gelieferte SGML-Format auf reguläre Weise erzeugt wurde.
Liegt die Formatbeschreibung in Form einer DTD (document type description) vor, analysieren Sie die Hierarchie und Reihenfolge der SGML-Markup's (SGML-Tags), danach die Attribute und die Zeichenentitäten in der DTD des Dokuments.
Da in SGML kein strenge Regeln für das Ende-Tag eines Markups existieren, sondern die Pflicht zum Setzen oder nicht Setzen des Ende-Tags in der DTD explizit geregelt werden muss, können Sie eine SGML-Datei ohne DTD nur schwer übersetzen.
Liegt lediglich die SGML-Datei vor, dann analysieren Sie die SGML-Tags, ihre Hierarchie und ihre Wiederholbarkeit auf der Grundlage der Datei. Versuchen Sie insbesondere, die Hierarchie zu ermitteln, um herauszufinden, welche Ende-Tags fehlen dürfen. Sie müssen damit rechnen, dass Sie nicht nur inhaltsgeprägte Markups finden werden, sondern jede Menge reine gestalterische Markups und Attribute. Sie müssen diese Unterscheiden.
Inhaltsgeprägte Markups werden Sie zu Feldern umformen, gestalterische Markups sollten Sie zu Markierung umformen, die Sie solange im Text mitführen, bis Sie sicher sind, dass Sie die Markierung auch entfernen können, ohne Schaden anzurichten, oder bis Sie wissen, dass Sie aus der Markierung ein Feld machen müssen, mit dem Sie ggf. Aufbereitungsprozesse steuern können/müssen.
Aus der Analyse leiten Sie die Regeln für eine Zeichenkettenmanipulation ab, mit der Sie zunächst die physische Struktur der SGML-Datei in ein MIDOS-Datenbankformat umformen.
Die inhaltliche Umsetzung von SGML-Dateien erfolgt im allgemeinen durch das Zusammenwirken von Zeichenkettenmanipulation und Feldmanipulation. Nachdem Sie das MIDOS-Datenbankformat erzeugt haben, müssen Sie aus den gelieferten Inhaltskomponenten Datensätze erzeugen, die für Ihre Datenbank gültigen Wertevorrat und gültige Inhalte haben.
SGML zeichnet sich eigentlich dadurch aus, dass semantische Strukturen/Elemente eines Texte mit Markup's (Markierungen) in Form von SGML-Tags markiert werden. Normalerweise kann immer eine Beziehung zwischen diesen SGML-Tags und einem MIDOS-Datenfeld hergestellt werden. Aber durch die Entwicklung in die HTML-Richtung wurde diese Strenge verwaschen und Sie werden auch nicht inhaltlich determinierte Strukturen finden.
SGML-Markup's müssen nicht immer ein Ende-Tag haben. Leere Tags mit implizierter Ende-Markierung gibt es in SGML nicht. Die SGML-Dokumente besitzen immer ein Tag für die obere Hierarchiestufe, müssen aber kein paarige Ende-Tag zu dieser Hierarchiestufe haben.
Ein Dokument muss ausser dem äussersten Hierarchietag kein weiteres Tag haben. Ein Markup kann durch Attribute modifiziert werden, die ausschliesslich aus der DTD vollständig ausgelesen werden können. Dazu können auch exteren Quellen für eine DTD existieren.
Beispiel:

    <!SGML ... >
    <RECORD ... >datensatz oder beliebiger text

    <TITEL language="GER">text des titels

    <UNTERTITEL>text des untertitels
          fehlende Ende-Tags gibt es in XML nicht.
          dafür gibt es leere tags

    </TITEL ... >

    <AUTOR attr="maennlich">

    <NAME>name1

    <VORNAME>vorname1

    <AUTOR attr="weiblich">

    <NAME>name2

    <VORNAME>vorname2

    <STICHWORT thesaurus="EnvProt" language="GER">
             stichwort1

    </STICHWORT ... >

    <DATUM datum="2000-30-10" format="ISO">
             30.10.2000 weil es in SGML keine
             leeren tags gibt

    </DATUM
    </RECORD ... >

Es ist zu sehen, dass die Markups für AUTOR, UNTERTITEL, NAME und VORNAME keine Ende-Tags haben. Das jeweils folgende Markup bestimmt über die Reihenfolge und Wiederholbarkeitsregel in der DTD, ob eine Wiederholung folgt, einen untere Hierarchiestufe begonnen wird oder ob zu einer höheren Ebene zurückgekehrt wird. Es ist einzusehen, das ohne DTD der Analyseprozess solcher Dateien äusserst langwierig ist.
Ausserdem könnte im Markup für STICHWORT eine Modifizierung stattfinden, bei der das Attribut thesaurus oder language oder beide den Wert ändern, aber das Markup immer noch STICHWORT genannt wird. Andererseits ist SGML kaum ohne Attribute denkbar, weil die Anzahl der verschiedenen Markups praktisch nicht beliebig gross sein sollte. Dennoch könnte man auch STICHWORTENGLISCH als Markup wählen oder den Thesaurusnamen im Markup unterbringen.
Hinweis:
In MIDOS2000 gibt es das XML-Markup <code> und </code> für den Fall, dass Sie in einem Datensatz HTML-Elemente, XML-Elemente oder SGML-Elemente erklären müssen, diese aber nicht vom HTML-Browser ausgewertet werden sollen. Sie müssen die Befehlserklärung in diese Markups einschliessen.
Die SGML-Markups müssen im Falle einer tieferen hierarchischen Gliederung von innen nach aussen aufgelöst werden. Alle gleichnamigen Markups der innersten Ebene müssen ggf. in einem MIDOS-Feldnamen zusammengefasst werden, der aus dem Markup der höheren Ebene abgeleitet wird, wobei manchmal eine Markierung im Feld anzubringen ist, um den Zustand des Originals festzuhalten.
In der Zeichenkettenmanipulation geben Sie den Namen das Dokumentendetags als Satzendean, wenn jedes Dokument mit dem Dokumentendetag endet, Finden Sie bereits im ersten Dokument kein Dokumentende-Markup, dann müssen Sie das Dokumentanfangs-Markup als Satzende angeben. Es ist innerhalb einer SGML-Dokumentensammlung zur gleichen DTD nicht regulär, wenn das Ende-Tag fehlt, obwohl es als obligatorisch definiert ist. Sie müssen ggf. das Ende oder den Anfang als Endezeichenkette angeben, z.B.

    Satzende:
    <RECORD ... >

    Satzende:
    </RECORD ... >

Hat das Markup für das Dokumentende oder den Dokumentanfang Attribute, müssen diese alle bekannt sein, denn Sie müssen diese Attribute in einem speziellen Vorablauf der Zeichenkettenmanipulation in Felder umwandeln. Diese Felder müssen vor dem Satzende-Markup oder nach dem Satzanfangs-Markup stehen, da sie nach dem Satzende und vor dem Satzanfang nicht mehr in Bezug auf das gleiche Dokument manipuliert werden können.
Der allgemeine weitere Inhalt der Zeichenkettenmanipulation sollte sein:

1. Umformen der Zeichenentitäten in ISO-Latin-1 oder ASCII,
2. Umformen aller Attribute aller Markups in Felder oder in Feldaussagen und Markierungen,
3. Umformen der Markups in Feldnamen,
4. Zusammenfassung gleichnamiger Markups eines XML-Dokuments in einem Feld zu mehreren Feldaussagen oder in mehreren, z.B. durchnumerierten Feldern,
5. Auflösung der Hierarchie von der innersten zur äusseren Ebene,
6. Reaktion auf bestimmte Attribute,
7. Elemente einer Textgestaltung, ausser denen, die der Aufprägung einer semantischen Textstruktur dienen, dürfen eigentlich nicht in einem SGML-Dokument vorkommen. Da es aber Menschen geben wird, die eine Begriffsdefinition im Text nicht mit einem SGML-Tag für Definition, z.B. <DEFINITION lng=GER> und </DEFINITION> kennzeichen, was richtig wäre, sondern mit einer anderen Schriftauszeichnung, z.B. für KURSIV/FETT, was grundfalsch ist, sollten Sie sich nicht darauf verlassen.
8. Suchen Sie ggf. nach Textauszeichnungen und setzen Sie diese ggf. in eigene innere Markups um, die Sie später weiterverarbeiten können.
9. Entfernen aller nicht notwendigen Elemente, egal ob Markup oder Attribut. Sie brauchen z.B. das Sprachattribut nicht, wenn Sie ohnehin nur alle Dokumente in deutscher Sprache übernehmen. Wenn Sie ohnehin in Deutsch und Englisch suchen, brauchen Sie ggf. auch die anderen Attribute nicht usw..
10. Umsetzung des Satzendes in das MIDOS-Satzende.

Sie müssen das Ergebnis mit der Datenbankanalyse prüfen und ggf. Markups und Attribute, die Ihnen nicht bekannt gemacht wurden nachträglich umformen.
Wenn alle Markups in Felder und ggf. die Attribute von MArkups auch zu Feldern gemacht wurden, dann kann mit der Feldmanipulation fortgesetzt werden. Die Attribute können im allgemeinen als Anweisungen für die Behandlung von Daten aufgefasst werden. Diese Behandlungsanweisungen setzen Sie in der Feldmanipulation in die Tat um.
Das Zwischenformat soll z.B. folgende Form erhalten haben:

    RECORD:datensatz oder beliebiger text
    TITEL:language=GER; text des titels
    UNTERTITEL:text des untertitels
    AUTOR:attr=m; NM:name1; VN:vorname1; attr=w NM:name2; VN:vorname2
    STICHWORT:th=EnvProt; language=GER; stichwort1
    DATUM:2000-30-10; 30.10.2000
    &&&

Es liegt ein gültiges MIDOS-Datensatzformat vor, das mit Programmen der Feldmanipulation weiter verarbeitet wird. In der Zeichenkettenmanipulation wurden bereits einige übertriebene Attribute gekürzt.
Es wäre möglich, auf dem Niveau die Umsetzung zu beenden und die Datenbank aufzubauen. Alle Zeichenketten inclusive der, die aus Attributen erzeugt wurden, sind suchbar, in den Index aufnehmbar und ausgebbar.
Grafische Elemente werden in SGML ebenfalls mit Markups ausgezeichnet. Da MIDOS2000 sowohl an beliebiger Stelle im Text als auch in Spezialfeldern Grafik-Referenzen zulässt, gibt es keine andere Behandlung von Markups für Grafik als für Text. Es kann allerdings sein, dass Attribute auf HTML-Standard zurückgesetzt werden müssen, um die Grafk mit dem internen HTML-Browser anzeigen zu können.
Wenn Ihnen das alles zu kompliziert erscheint, geben Sie die Lösung bei uns in Auftrag.

#### SGML-Format erzeugen

Das SGML-Format kann auf verschiedenen Wegen erzeugt werden:

1. mit Hilfe von Ausgabebeschreibungen, die eine entsprechende Aufbereitung unter Anwendung des <code>-Markups vornehmen,
2. in der Anwendung der ausschliesslichen Feldmanipulation,
3. in Umkehrung des Verfahrens zur Umsetzung des SGML-Formates durch die Kombination von Feldmanipulation für die inhaltorientierte, semantisch geprägte Erzeugung von Markups und die anschliessende physische Erzeugung der SGML-Strukur mit dem Zeichenkettenmanipulator, z.B. um die notwendigen Zeichenumschriften im Text zu erzeugen.

Eine wichtige Voraussetzung müssen Sie schaffen:
Ihre MIDOS-Datenbank muss in der Lage sein, den Ansprüchen

- an die Hierarchie,
- die Reihenfolge der Markups,
- die Wiederholbarkeit,
- die obligatorische oder fakultative Anwesenheit im SGML-Dokument,

die Sie selbst für das SGML-Dokument definieren, auch gerecht zu werden.
Die DTD (unbedingt erforderlich, weil zur Verständigung notwendig) erzeugen Sie als gesonderte Dateien. Für die Ableitung der DTD stellt die Datenbeschreibung oder die Ausgabebeschreibung die Basis dar. Sie editieren diese Dateien unter Verwendung der Standard-SGML-Komponenten, die Sie aus dem Internet aktuell herunterladen müssen.
Sie können uns auch damit beauftragen, es für Sie zu tun.
Da Sie ein SGML-Format nicht aus Spass erzeugen, müssen Sie sich ggf, nach den Wünschen des Empfängers/Anwenders Ihrer SGML-Dateien richten, was die Namen der Markups und der Attribute betrifft. Sie finden den jeweils aktuellen Stand der international abgestimmten Markups im Internet bei den entsprechenden SGML-Gremien.
Wenn Sie die SGML-Datei im UNICODE benötigen, reden Sie mit uns.

#### weitere Informationen:

ñ XML-Format umsetzen/erzeugen

ï ñ ò Information 369

### MIDOS-Datenbankeditor

Der MIDOS-Datenbankeditor ist eine Komponente von MIDOS2000, mit der Sie eingebettet und kontrolliert vom MIDOS-Datenbankmanager arbeiten können oder die Sie als selbständiges Programm benutzen können.
Mit dem MIDOS-Datenbankeditor

- können Sie Datensätze erfassen,Datensätzen ändern und Datensätze löschen,
- Sie können selektierte und für Sie nützliche Datensätze übernehmen aus fremden Dateien,
- Auch Datensatzteile und einzelne Felder können Sie via Zwischenablage in den aktuellen Datensatz übernehmen.
- Sie können eine Reihe von Hilfsmitteln für die Datenerfassung eingeben und bearbeiten (so etwas wie Stammdatenpflege).
- Sie können einen Thesaurus zum Indexieren ankoppeln oder
- mit einer Synonymdatei und einer Deskriptorenliste versuchen, Schlagworte automatisch/halbautomatisch zu vergeben.
- Sie führen im Erfassungsprozess diejenigen Prüfungen auf Datenkonsistenz, Plausibilität und formaldokumentarische sowie sprachliche Korrektheit aus, die Sie für die Erfüllung Ihrer Aufgabenstellung bezüglich Ihrer Datenbank für notwendig und richtig halten. Angeboten werden in diesem Zusammenhang: die Prüfung an einer Werteliste Prüfliste bzw. an einem Thesaurus unter Beachtung der Synonymrelation, Orthografieprüfung, eine programmierbare Datensatzprüfung mit einer Reihe von detailierten Prüffunktionen, wie z.B. Zeichenprüfung, Benutzung von Textbausteinen zur Fehlerreduzierung oder die Benutzung von vorgefertigten Schablonen (Masken) mit optimierten und damit fehlervermeidenden Erfassungsmaskenvorgaben.

Ausserdem können Sie das Erfassungsmenü hinsichtliche der Feldgrössen dynamisch während der Erfassung anpassen und verschiedene Einstellungen über Optionenvornehmen, z.B. die Schrift.
Eine a; lgemeine Hilfe, nämlich die, die Sie gerade lesen, führt Sie durch die Funktionen der Erfassung.
Eine weitere Hilfefunktion können/sollten Sie selbst erarbeiten: Das ist die feldbezogene Hilfe in der Sie sich und den am Erfassungprozess Beteiligten Regeln vorgeben, deren Einhaltung bei der Eingabe in die Felder der Datenbeschreibung eine ordnungsgemäße, dem Ziel der Informationsbereitstellung dienende Datenerfassung garantieren.

#### weitere Informationen:

ñ Hilfe; ñ Programmaufruf, Starten; ñ Bearbeiten; ñ Funktionen; ñ Optionen; ñ Beenden

ï ñ ò Information 370

### Programmaufruf, Starten

Sie können den Editor als externes Programm durch die in Windows übliche Startfunktion aufrufen mit Start/Ausführen/MWEDI.EXE oder durch Doppelklick im MIDOS-Dateimanager auf eine Datei mit einer Endung wie .DBM, .MDS, .NWD oder .DAT.
Wenn Sie den Editor als internes Programm aus dem kompakten Grundmenü des MIDOS-Datenbankmanagers starten wollen, dann können Sie den Mauszeiger auf den Anfang der Datenbankdatei stellen, auf irgendeinen Datensatz beliebiger Nummer, auf einen markieren oder in einer Trefferliste relevanten Datensatz.
Sie bewegen dazu den Mauszeiger mit Klick auf den Scrollbutton (vorwärts oder rückwärts scrollen) des Scrollfeldes an die gewünschte Stelle der Datenbankdatei.
Im MIDOS-Grundmenü sind ausserdem die Funktionen Löschen von Datensätzen,Neuerfassung von Datensätzen und Starten der Erfassung mit Datensatz ändern über die Funktion Datensätze bearbeiten benutzbar. Innerhalb des Editors stehen diese Funktionen ebenfalls zur Verfügung.
Im folgenden werden nur die Funktionen innerhalb des Editors beschrieben. Das Notwendige zum Zusammenwirken zwischen dem Grundmenü des MIDOS-Datenbankmanagers und den Funktionen des MIDOS-Datenbankeditors finden Sie unter der Grundfunktion Datenbank bearbeiten.
Beachten Sie, dass die Datenbeschreibung Einfluss auf die Datenerfassung hat und das eine Reihe von Funktionen angeboten werden, die sehr hilfreich sein können, wenn sie sorgfältig vorbereitet und konsequent angewendet werden.
Zu den Grundverfahren der Information und Dokumentation, des Archivwesens und des Bibliothekswesens gehören:

- das Klassifizieren oder Systematisieren (hierzu gehört ein fachorientiertes sytematisches Verzeichnis von Klassifizierungsnotationen, ggf. eine geografische Systematik oder eine Produktklassifikation ein Branchenverzeichnis usw. Als Beispiele für Klassifikationen seien hier die ICS (Internationale Klassifikation für Standards), die IPC (Internationale Patentklassifikation), die INSPEC-Klassifikation, die CPV-Klassifikation und die Fachordnung Technik des FIZ Technik e.V. genannt.
- das Verschlagworten mit oder ohne Schlagwortverzeichnis und/oder das Indexieren mit einem Thesaurus, der mehr oder weniger ausgefeilte begriffliche Relationen, zumindest aber Synonymbeziehungen enthalten sollte. Als Beispiele für Thesauri seine hier angeführt der Thesaurus Wirtschaft, der Thesaurus Technik und der INSPEC-Thesaurus.
- des Abstrahieren oder Referieren nach unterschiedlichen methodischen Ansätzen. Dabei muss aus der veröffentlichten Literatur das Buch "The Art of Abstracting" hervorgehoben werden.

Der MIDOS-Datenbankeditor unterstützt diese allgemein anerkannten Verfahren der Information und Dokumentation.
Es kann nicht Aufgabe dieser Dokumentation sein, Ihnen das Wissen über diese Grundverfahren der Informationsbe- und Verarbeitung wissenschaftlicher Literatur beizubringen. Wenn Sie mehr über diese Verfahren wissen wollen, dann fordern Sie bei uns entsprechende Literatur an oder lassen Sie uns eine Lehrveranstaltung für Sie organisieren.

#### weitere Informationen:

ñ Hilfe; ñ Bearbeiten; ñ Funktionen; ñ Optionen; ñ Beenden

ï ñ ò Information 371

### Bearbeiten

Die Funktion Bearbeiten im Datenbankeditor stellt die folgenende Funktionalität bereit:

- Rückgängig ... F11 machen einer Aktion, die Sie im aktuellen Feld ausgeführt haben, wodurch der Zustand des Feldes vor Ihrer Aktion wieder hergestellt wird. Wenn Sie z.B. das Feld gelöscht haben, wird der Inhalt durch betätigen der F11-Taste rekonstruiert. Die Funktion kann keine Änderungen in Feldern rückgängig machen, die aus vorherigen Erfassungssitzungen stammen. Wäre dies erforderlich, muss auf die Datensicherungen (.BAK-Datei oder SAVE-Verzeichnis) oder das Archiv zurückgegriffen werden.
- Übernehmen letzter Eintrag ... F12 des aktuellen Feldes aus einem beliebigen anderen Datensatz in den aktuellen Datensatz. Auf diese Weise können Sie relativ schnell gleiche Werte in Datensätze übertragen. Mit der Funktion wird ein ggf. vorhandene Wert im aktuellen Feld des aktuellen Datensatzes überschrieben.

Wenn Sie beispielsweise die Aufgabe haben, einen älteren Datenbestand zu bereinigen, wobei die Annahme getroffen wird, das z.B. der Firmenname ATCO-MONTO GmbH, Dresden, D in allen Dokumenten gleich geschrieben werden soll, dann können Sie das wie folgt ausführen: Sie suchen eine signifikante Zeichenkette z.B. ATC oder MONT im Feld FIRMA und tragen beim 1. Treffer den richtigen Namen ein. Dann suchen Sie weiter und bei jedem weiteren Treffer übernehmen Sie den Wert mit der F12-Taste. Sie müssen natürlich sicher sein, dass es sich tatsächlich bei dem Treffer um die Firma handelt. Sie können diese Einfügung auch über die Zwischenablage durchführen. In diesem Fall können Sie zwischen Einfügen aus der Zwischenablage, ohne vorheriges Löschen des Feldinhalts und der F12-Taste, mit Löschen des aktuellen Inhalts, hin- und her wechseln.
Die Zwischenablage-Funktionen können mit markierten Zeichenketten, ganzen Feldern oder ganzen Datensätzen umgehen. Die Funktionen sind auch auf Menü-Button zum Schnellzugriff vorgesehen bzw. liegen auf den üblichen Windows-Tastenkombinationen. Im einzelnen stehen zur Verfügung:

- markierte Zeichenkette Ausschneiden und in die Zwischenablage stellen (auch Tastenkombination `UMSCHALT+ENTF`) sowie aus dem Feld entfernen,
- markierte Zeichenkette Kopieren in die Zwischenablage stellen (auch Tastenkombination `STRG+C`),
- Zeichenkette aus der Zwischenablage Einfügen und in der Zwischenablage stehen lassen (auch Tastenkombination `UMSCHALT+EINFG`).

Die maximale Länge einer Zeichenkette zum Einfügen, Kopieren und Ausschneiden kann z.Zt. 32000 Zeichen betragen.
Sie können

- den Inhalt des akt. Feld in Ablage kopieren, wobei der Originalwert im Faktuellen Feld verbleibt,
  den Inhalt der Ablage in akt. Feld übernehmen, wobei dei Ablage unverändert bleibt.

Die maximale Länge eines Feldes zum Einfügen, Kopieren und Ausschneiden kann z.Zt. 32000 Zeichen betragen. Die Feldlänge von 32000 Zeichen steht nur zur Verfügung, wenn Sie die Option Feldlängen ignorieren eingeschaltet haben, sonst gilt die Länge aus der Datenbeschreibung.
Bisweilen kann es sinnvoll sein, ganze Datensätze über die Zwischenablage zu übertragen. Dafür stehen die Funktionen zur Verfügung:

- Satz in Ablage übertragen und
- den Inhalt der Ablage in den Satz übertragen.

Bei dem Datenaustausch von Sätzen über die Zwischenablage spielt die Datenstruktur eine Rolle. So werden z.B. Feldnamen mit in die Zwischenablage gestellt.
Bei der Übernahme von Datensätzen aus der Zwischenablage wird vorausgesetzt, dass ein gültiges MIDOS-Datensatzformat vorliegt. Es müssen Felder existieren, jeder Feldwert muss eine Zeichenkette ohne dazwischen stehende CRLF sein, die Feldnamen müssen denen der Datenbeschreibung entsprechen, jedes Feldende muss durch ein CRLF markiert sein und der Eintrag in der Zwischenablage muss mit &&& abgeschlossen sein.
Bei der Übernahme aus der Zwischenablage erfolgt ggf. eine automatische Zeichensatzkonvertierung ASCII-ANSI, wenn die aktuelle Datenbank im ANSI-Code definiert ist.
Felder, die in dem Datensatz in der Zwischenablage stehen, aber in der Datenbeschreibung nicht bekannt sind, werden nicht übertragen.
Markierte Zeichenketten löschen Sie mit der `Entf-Taste.`
Desweiteren können Sie über Schnell-Button oder das Menü

- das akt. Feld löschen
- alle Felder löschen des aktuellen Datensatzes, die in der Erfassungsmaske aktiv sind, durch die MASKEN-Datei abgedeckte Felder werden nicht gelöscht.
- den aktuellen Datensatz löschen, wobei diese Löschung vor dem Abspeichern nochmal rückgängig gemacht werden kann.

Wenn Sie Löschfunktionen benutzen, vergewissern Sie sich gründlich, ob die Löschung wirklich ausführen wollen.
Beachten Sie den Unterschied zwischen alle Felder löschen und Datensatz löschen.
Normalerweise starten der Datenbankeditor im Änderungsmodus bei einem von Ihnen gewählten Datensatz. Sie können in den Modus Neuerfassung wechseln. Dabei stehen einige Lösch- und Markierungsfunktionen und der Scrollbalken nicht zur Verfügung, aber z.B. wird die Funktion automatische Numerierungaktiv, wenn diese über Optionen ausgewählt wurde.
Aus der Neuerfassung wechseln sie mit Beenden oder ESC-Taste zurück zum Änderungsmodus.
Mit Nächsten gelangen Sie zur Eingabe eines weiteren neuen Dokuments. Beachten Sie, dass der Modus Neuerfassung mit keiner andern Funktion verlassen werden kann, als mit Beenden. Zweimal ESC-Taste beendet die Erfassung ohne Änderungen abzuspeichern.
Ausserdem steht die Funktion Satz einfügen zur Verfügung mit der Sie im Änderungsmodus ein neues Dokument an einer von Ihnen gewünschen laufenden Satznummer einfügen können. Beim Satz einfügen ist die automatische Numerierung ausgeschalten, so dass die Datenbankdatei ggf. in einem gesonderten Durchlauf neu durchnumeriert werden muss.
Als weitere wichtige Funktionen sind verfügbar:

- Schablonen (Masken), mit einem einfachen Schabloneneditor,
- Einfügen von Fremddateien, mit einem leistungsfähigen Anpassungshandling,
- Dateipfad einfügen,Strg+P
- Grafikpfad einfügen,Strg+G
- Feld sortieren,Strg+S
- Feldaussagen im Feld zeilenweise anzeigen,
- Feld tabellarisch Bearbeiten,Strg+T und
- Feld im HTML-Browser anzeigen.

#### weitere Informationen:

ñ Funktionen; ñ Optionen; ñ Programmaufruf, Starten; ñ Hilfe; ñ Beenden ñ Dateipfad einfügen; ñ Einfügen von Fremddateien; ñ Feld zeilenweise; ñ Feldaussagen sortieren; ñ Grafik-Pfad einfügen; ñ Schablonen (Masken)

ï ñ ò Information 372

### Schablonen (Masken)

Bei vielen Datenbankanwendungen ist es möglich, immer wiederkehrende Angaben oder Angaben, die über einen mehr oder weniger langen Zeitraum konstant sind, als Stammdaten zu hinterlegen, und sie automatisch in Datensätze einzufügen. Bei bibliografischen Daten sind solche Angaben z.B. Zeitschriftentitel oder Serientitel, ggf. auch Konferenztitel, wenn die Konferenz Seriencharakter trägt.
Es ist ausserdem zu erwarten, dass das Eingabeschema in Abhängigkeit von dem zu beschreibenden Objekt/Dokument bzw. der Objektklasse/Dokumentenart differenzierte Datenfeld-Zusammenstellungen im konkreten Erfassungsmenü erfordert um die Erfassung zu vereinfachen. Beispielsweise wäre ein Datenfeld NORMNUMMER bei der Erfassung eines PATENTDOKUMENTS eher störend.
Die daraus erwachsenden Anforderungen können im Datenbankeditor durch die Erarbeitung, Benutzung und Pflege von Erfassungsmasken unter der Funktion Schablone (Maske) durch den Anwender erfüllt werden.
In einer Schablone bestimmen Sie, wie die Erfassungsmaske für eine definierte Klasse von Objekten aussehen soll, indem Sie folgende Festlegungen treffen:

- Sie vergeben einen verständlichen Schablonennamen, der die Klasse von Objekten kennzeichnet oder der etwas darüber aussagt, was mit der Schablone gemacht werden soll, z.B. Patent-Deutsche-Offenlegungsschriften,
  Journal-of-appl-phys oder
  Bibliogr-Daten-Korrigieren oder auch
  AutoSchlagwort.
- Unter diesem Namen können nun Optimierungen einer ggf. komplexen Erfassungsmaske vorgenommen werden, die aus der Datenstruktur ermittelt wurde und die zu sehen ist, wenn unter aktuelle Schablone keine steht.

Wenn Sie die Funktion Schablone (Maske) erstmals aufrufen, betätigen Sie Neue Schablone. Die Tabelle zeigt Ihnen den Feldnamen/die Feldbezeichnung der Datenbeschreibung an und informiert Sie über den Datentyp. Sie können je Feld folgende Festlegungen treffen:

- Soll es eine Feldvorbelegung mit einem konstanten Wert haben, dann geben Sie diesen konstanten Wert in der Textspalte ein.
- Soll es eine Feldvorbelegung mit einem konstanten Wert haben und darüberhinaus noch variable Angaben im Feld untergebracht werden, dan geben Sie die konstanten Werte ein. Die Position, an der eine Handeingabe zugelassen sein soll, markieren Sie mit dem Einfügesymbol, Zeichen @.
- Es können mehrere Einfügesymbole im Feld stehen. Während der Datenerfassung wird der Editor am ersten Einfügesymbol stehen bleiben, bis eine Eingabe getätigt wurde, dann wird mit der `Enter-Taste` zum nächsten Einfügesymbol im gleichen Feld gesprungen. Der konstante Text kann insgesamt 255 Zeichen Länge haben.
- In der Spalte Hide (versteckt) können Sie ankreuzen, dass das Feld nicht in der Erfassungsmaske erscheinen soll. Ankreuzen können Sie mit der Leertaste oder jeder anderen Taste.
- In der Spalte RO (read only ... nur lesen) machen Sie ein Kreuz, wenn das Feld während der Erfassung nicht geändert werden darf, weil z.B. eine Feldvorbelegung ohne Einfügesymbol übernommen wird.
- In der Spalte Pflicht machen Sie ein Kreuz, wenn das Feld unbedingt im Erfassungsprozess einen Wert erhalten muss.
- In der Spalte Zeilen geben Sie eine optimale Anzahl von Zeilen vor, die für das Feld in der Erfassungsmaske bereitgestellt werden soll. Die Zeilenzahl ist während der Erfassung über die Schnell-Button dynamisch änderbar.
- Die Zeilenzahl kann von 0 bis 255 gewählt werden. Empfehlenswert sind max. 24 Zeilen, was in etwa einem Bildschirm entspricht. Die Standardangabe wird aus der Datenbeschreibung ermittelt. Achtung: Wieviele Zeichen Sie in den Zeilen unterbringen, hängt von der Schrift ab.
- Bei der Erfassung werden die Zeilen dynamisch nach oben gerollt, um längere Angaben, z.B. Volltext, wie Zeitschriftenartikel, Buchkapitel oder Abschnitte dieser Hilfe-Dokumentation unter zu bringen.
- Egal wieviel Zeilen: In ein Feld werden nur soviele Zeichen eingetragen, wie durch die Feldlänge in der Datenbeschreibung definiert sind.

Folgende Kombinationen sind nicht sinnvoll:
HIDE und Feldvorbelegung,
RO und Feldvorbelegung mit Einfügesymbol und Pflichtfeld,
HIDE und Pflichtfeld.
Es erfolgt auch bei der Schablonen-Eingabe eine Kontrolle auf zulässige Längen und Datentypen.
Wenn Sie die erste Schablone für die praktische Datenerfassung entwickelt haben, z.B. weil Sie mit einer Zeitschrift beginnen wollen, zu dokumentieren, dann Speichern Sie die Schablone ab und Schliessen den Schabloneneditor.
Sie sind dann wieder im Datenbankeditor und können jetzt die soeben definierte Schablone über den Namen durch markieren und Doppelklick oder über den OK-Button auswählen. Überprüfen Sie nun in der Praxis durch echte Eingaben, ob alles richtig aus der Schablone übernommen wird, alle Felder verfügbar sind, die zu dem zu erfassenden Objekt gehören und ob alle unnötigen Felder tatsächlich ausgeblendet sind.
Wenn Angaben nicht stimmig sind, rufen Sie die Schablone über die Funktion Schablone (Maske) erneut auf und tragen Sie die Änderungen ein. Vor dem Abspeichern der Änderung erhalten Sie eine Warnung.
Die Schablonenpflege umfasst auch deien Funktion zum Löschen einer Schablone.
Wenn Sie in die Funktion Schablone (Maske) wechseln, dann ist die aktuelle Schablone auch die, die zu Änderung angezeigt wird. Sie können über das Schablonennamefeld im Menü auch eine andere Schablone zur Änderung auswählen oder eine neue erstellen.
Wenn Sie die Schablonendatei, der Name ist MWMASKEN, an Dritte weitergeben, aber verhindern wollen, dass die Schablonen unzulässigerweise verändert werden, dann schalten Sie Schablone/Optionen nicht änderbar ein. Sie müssen die Datei MWEDI.INI (im Datenbankverzeichnis) dann ebenfalls weitergeben.
Sichern Sie, dass eine zentrale Pflege der Schablonendatei erfolgt.
Was Sie tun müssen, wenn mehrere Datenerfassungsplätze in einem Netz zusammenarbeiten wird in einem gesonderten Abschnitt behandelt.
Mehr über Schablonen können Sie vielleicht auch der Beispiel-Datei MWMASKEN entnehmen.
Aus älteren MIDOS-Versionen stammende Dateien vom Typ MISCHABN können in Dateien vom Typ MWMASKEN konvertiert werden. Diese Konvertierung erfolgt mit dem Sonderprogramm MIDOS3.0-Schablonendatei konvertieren, dass in MIDOS97 enthalten ist und auf Wunsch bereitgestellt wird (via E-Mail über progris@progris.de anfordern).

#### weitere Informationen:

ñ Funktionen; ñ Optionen; ñ Programmaufruf, Starten; ñ Hilfe; ñ Beenden ñ Dateipfad einfügen; ñ Einfügen von Fremddateien; ñ Feld zeilenweise; ñ Feldaussagen sortieren; ñ Grafik-Pfad einfügen

ï ñ ò Information 373

### Einfügen von Fremddateien

Mit der Funktion Fremddatei einfügen ... Strg+F können Datensätze, Felder oder markierte Ausschnitte aus Feldern aus einer anderen MIDOS-Datei übernommen werden. Sie können auch Text aus eine Textdatei übernehmen.
Vor der tatsächlichen Übernahme ist es möglich eine Anpassung der Datenstruktur der MIDOS-Datei an die aktuelle Datenbeschreibung vorzunehmen, die im wesentlichen mit den Mitteln der Zeichenkettenmanipulation beschrieben wird.
Die Anpassungsregeln können in einer Datei abgespeichert werden und sind damit später wiederverwendbar.
Eine Anpassung kann auch für Textdateien vorgenommen werden, wenn es in der Textdatei ausreichende Markierungen gibt, an der eine Zeichenkettenmanipulatione ansetzen kann, um ein MIDOS-Format zu erzeugen.
Sie können für die Anpassung auch einen Stapelverarbeitungsprozess mit MIDOS-Update vorbereiten. Dies wird ggf. bei schwierigeren Anpassungen erforderlich sein, wenn z.B. Inhalte von Feldern mit Translate zu übersetzen wären.
In der Anpassungstabelle tragen Sie auf der linken Seite eine zu suchende Zeichenkette ein, auf der rechten Seite tragen Sie die dafür zu erzeugende Zeichenkette ein.
z.B.:

### Überschrift

Alte Zeichenkette | Neue Zeichenkette | Was passiert?
--- | --- | ---
??? | &&& | Datensatzende ändern
#13#10AUTHOR: | #13#10VERF: | Name des Autorenfeldes ändern
#13#10TITLE: | #13#10TITEL: | Name das Titelfeldes ändern
VERF==; | ; | Aus Semikolon im Feld VERF wird der Aussagentrenner Senkrechtstrich

Anpassungen können auch für Feldwerte erfolgen. Dabei müssen Sie sich aber gut in dem Inhalt der Fremddatei auskennen. Wenn die Fremddatei eine MIDOS-Datei ist, dann melden Sie diese als Datenbank an und analysieren Sie die Datenbank mit den Funktionen Datenbankanalyse und Suchliste. Arbeiten Sie danach die Anpassungsregeln aus oder benutzen Sie gleich die gesamte Datenbank so, wie sie ist.
Gemeinsame Ausgabeleistungen mit einheitlichem Aussehen können allerdings Sie nur garantieren, wenn die Anpassung durchgeführt wurde und auch gelungen ist.
Über die Funktion Fremddatei wählen Sie die Datei aus, aus der Datensätze übernommen werden sollen. Als Hilfe stehen die Button Datei holen und Felder holen bereit.
Die Felder für die Herstellung einer Wortliste werden entweder der Datenbeschreibung entnommen oder wenn diese nicht vorhanden ist, automatisch ermittelt. Sie wählen ein oder mehrere Indexfelder für die Wortliste aus und legen ggf. noch Index mit Einzelwortauflösung fest.
Dann folgt die Erstellung oder die Aktualisierung des Indexes mit Index aktualisieren. Für die Datei mit den zu übernehmenden Datensätzen bilden Sie einen Index Wortliste, um schnell durch die Datei manövrieren zu können.
Wenn Sie z.B. nur Datensätze zu einem bestimmten Zeitschriftentitel suchen und übernehmen wollen, würden Sie einen Index über das Feld ZEITSCHRIFT herstellen. Dann wählen Sie die zu übernehmenden Dokumente über den Indexeintrag (konktreter Zeitschriftentitel) aus.
Mit Suchen/Anzeigen wird Ihnen der erste Treffer oder mehrere Treffer angezeigt. Sie sehen die Treffer als Text im Speicherformat und in einer einzeiligen Zeichenkettendarstellung. Nun können Sie wählen:

- Sie markieren eine Textpassage im angezeigten Speicherformat und klicken bei Übernehmen auf mark. Text. Der markierte Text wird in das aktuelle Feld des aktuellen Datensatzes übertragen (also dahin, wo vor dem Aufruf der Funktion Fremddatei einfügen der Cursor stand.
- Wählen Sie Datensatz wird der Datensatz übertragen. Wenn Sie ganze Datensätze übertragen sollten Sie auf Neuerfassung stehen oder mit Datensatz einfügen platz geschaffen haben.
- Wenn Sie zur Ablage wählen, dann wird die Übertragung nicht direkt ausgeführt, sondern der Datensatz, die Markierung oder z.B. das Feld erst in die Ablage geschafft. Von dort müssen Sie es dann einfügen.

Wenn Sie im Modus Neuerfassung sind, können Sie die Datensätze nacheinander in der einzeiligen Anzeige markieren und dann im ganzen übertragen.
Sie sehen die Dokumente im Speicherformat, nachdem Ihre Anpassungs-Anweisungen ausgeführt wurden. Sollten Ihnen Fehler auffallen, müssen Sie diese erst in der Anpassungstabelle beheben.
Felder die in dem zu übernehmenden Datensatz enthalten sind, aber nicht in der Datenbeschreibung der aktuellen Datenbank, werden nicht übertragen.
Liegt eine einigermaßen strukturierte Textdatei vor, in der Sie z.B. Anfang und/oder Ende eines Datensatzes erkennen können und innerhalb derer einige Feldanfänge oder Feldenden erkennbar sind, dann ist es sinnvoll, eine grobe MIDOS-Datensatzstruktur mit MIDOS-Update zu erzeugen und dann die Übernahme anzupassen.
Die Hantierung bei der Übernahme von Texten aus Textdateien erfolgt analog zu der, die mit MIDOS-Dateien vorrzunehmen wäre.

#### weitere Informationen:

ñ Funktionen; ñ Optionen; ñ Programmaufruf, Starten; ñ Hilfe; ñ Beenden ñ Dateipfad einfügen; ñ Feld zeilenweise; ñ Feldaussagen sortieren; ñ Grafik-Pfad einfügen; ñ Schablonen (Masken)

ï ñ ò Information 374

### Dateipfad einfügen

Mit der Funktion Dateipfad einfügen ... Strg+P fügen Sie in Ihr Datenfeld einen absoluten Verweis auf eine Datei ein, z.B. C:\MDS2000\MDOK\ALLDOK.HTM .
Wenn die referenzierte Datei über die Dateiverbindung im MIDOS-Dateimanager oder im MS Windows-Explorer mit einer Software hergestellt wurde, dann wird in der Vollanzeige diese Referenz als Hyperlink dargestellt. Mit Doppelklick wird dann die betreffende Software gestartet und die referenzierte Datei geöffnet.
Ist die referenzierte Datei vom Typ Ausführbare Datei (EXE, BAT) dann können wir nicht garantieren, was passiert.
Eine PDF-Datei wird z.B. angezeigt, indem der Acrobat Reader gestartet wird, z.B. C:\MDS2000\MDOK\PDF\A5TEST1.PDF .
Weitere Dateitypen könnten z.B. .DOC oder .TXT sein. Die Ausführung der Links ist bei den HTML-Ausgabeformen möglich.

#### weitere Informationen:

ñ Funktionen; ñ Optionen; ñ Programmaufruf, Starten; ñ Hilfe; ñ Beenden ñ Einfügen von Fremddateien; ñ Feld zeilenweise; ñ Feldaussagen sortieren; ñ Grafik-Pfad einfügen; ñ Schablonen (Masken)