Um die Daten der ADIS-Datei zu verschlüsseln bzw. zu entschlüsseln, muß sowohl der Sender als auch der Empfänger der ADIS-Datei die gleiche Version des Data Dictionaries (ADED) benutzen. Das Data Dictionary enthält die genaue Definition der übermittelten Merkmale. Jedes Merkmal ist durch eine 8-stellige Nummer eindeutig kodiert.
Die folgenden Zeichen werden im folgenden verwendet, um eine bessere Beschreibung der ADIS-Syntax zu geben:
<...> enthält die Beschreibung eines Feldes;
[...] wählbare (nicht obligatorische) Teile sind in eckigen Klammern aufgeführt;
(...) Teile zwischen Klammern können einige Male wiederholt auftreten, mindestens einmal.
Die Mindestzeilenlänge, die ein Programm unterstützen muß, ist 256 Zeichen, einschließlich <CR><LF>.
Die Maximalzeilenlänge in einer ADIS-Datei ist nicht spezifiziert, sollte aber durch die Nachrichtengruppe, die die Syntax verwendet, abgestimmt sein.
Die folgenden Zeichen besitzen eine vordefinierter
Bedeutung. Sie können nicht frei verwendet werden.
Zeichen | Name | DEC | HEX | Funktion |
M | CR | 13 | 0D | Wagenrücklauf |
J | LF | 10 | 0A | Zeilenvorschub |
I | vertikaler Balken | 124 | 7C | Fehlercode für unbekannte DDI-Nummern |
? | Fragezeichen | 63 | 3F | Nullwert (nicht initialisierte Felder) |
ANMERKUNG: ASCII definiert die Zeichen 0 bis 31 und 127 als Steuerzeichen (oder nicht druckbare Zeichen). Die gezeigten Befehlsfolgen können verwendet werden, um diese Werte mit den meisten Systemkeyboards einzugeben.
Abgesehen von diesen belegten Zeichen können alle Zeichen mit ASCII-Werten von 32 bis 255 (ausgenommen 127) verwendet werden.
ANMERKUNG:
In einigen Fällen können ASCII-Werte
über 127 Probleme verursachen, weil sie vom Land abhängig sind.
Zeilentyp | Bezeichnung |
D | Definition |
V | Value |
E | End of logical file |
C | Comment |
S | Search |
R | Request |
F | File |
I | Include |
O | Output |
T | Terminate |
Z | Physical end of file |
Andere Zeilentypen sind herstellerspezifisch und müssen zwischen sendenden und empfangenden Teilnehmer abgestimmt sein. Wenn der Zeilentyp unbekannt ist, wird die Zeile ignoriert.
Die ADIS-Eigenschaften können schrittweise verwendet werden. Daher sind die Zeilentypen in vier verschiedene Klassen eingeteilt:
Klasse A: Verwendung der Zeilentypen D, V, C, E und Z;
Klasse B: Klasse A plus zusätzlich Verwendung von F-, I- und T-Zeilen;
Klasse C: Klasse A plus zusätzlich Verwendung von R- und O-Zeilen;
Klasse D: Klasse A plus zusätzlich Verwendung von S-, R- und O-Zeilen.
Klasse A ist obligatorisch für die Verwendung von ADIS. Die Klassen B, C und D sind erlaubte Erweiterungen.
Das heißt nicht, daß, wenn z.B. Klasse C unterstützt wird, automatisch Klasse B unterstützt wird. Beim Synchronisieren (Initialisieren) müssen Sender und Empfänger sich gegenseitig mitteilen, in welcher Klasse sie kommunizieren können. Dies kann z.B. auf Papier erfolgen, aber ebenso automatisch durch Verwendung einer DDI-Nummer in der ADIS-Datei für die Einteilung des Zeilentyps.
D = "Definition"- Zeile
In einer D-Zeile wird der Inhalt der nachfolgenden V-Zeilen
angegeben. Einer D-Zeile müssen immer eine oder mehrere V-Zeilen folgen.Wenn
keine Daten verfügbar sind, müssen alle Felder (ab der Position
9) der gesamten V-Zeile mit "?" gefüllt werden. Die D-Zeile soll nach
folgendem Schema aufgebaut sein: D<Status><Entity-Nr.>(<DDI-Nr.><Feldlänge>
<Dezimalstellen>) <CR><LF>
V = "Value" - Zeile
Die V-Zeile enthält die Werte der Datenelemente,
die in der letzten D-Zeile aufgeführt sind. Die V-Zeile soll nach
folgendem Schema aufgebaut sein:
V<Status><Entity-Nr.>(<Wert>)<CR>>LF>
E = "End of logical file" - Zeile
Die E-Zeile markiert das logische Ende einer ADIS-Datei.
In einer Datei können mehrere E-Zeilen vorkommen. Der E-Zeile folgt
immer eine DH- und VH-Zeile oder eine Z-Zeile. Das physische Ende eines
Files wird durch eine Z-Zeile angegeben. Die letzte E-Zeile vor der Z-Zeile
ist nicht erforderlich. Die E-Zeile hat immer den gleichen Aufbau: EN<CR><LF>
C = "Comment" - Zeile
Die C-Zeile kann an beliebiger Stelle in den ADIS-File
eingefügt werden, und sie kann beliebigen Text enthalten. Die C-Zeile
soll nach folgendem Schema aufgebaut sein:
C<Status><beliebiger Text><CR><LF>
S = "Search" - Zeile
In einer S-Zeile können eine oder mehrere Bedingungen
spezifiziert sein. Siehe auch Abschnitt Abfragen.
R = "Request" - Zeile
Eine R-Zeile beinhaltet die Data Dictionary-Nummern
von Attributen, die angefragt werden. Siehe auch Abschnitt Abfragen
F = "File" - Zeile
Eine F-Zeile gibt den vollständigen Namen einer
Bibliographie-Datei an (Pfadname und Dateiname). Diese Zeile vermeidet
die Datei selbst einzuschließen. Die F-Zeile hat folgenden Aufbau:
F<Status><Pfad + Dateiname><CR><LF>
I = "Include" - Zeile
Eine I-Zeile beinhaltet den Pfadname und den Dateiname
einer auf der I-Zeilen-Position einzufügenden Datei. Die Einfügezeile
soll die ADIS-Anforderungen erfüllen, als ob sie Teil der übergeordneten
Datei wären. Dies impliziert, daß die Kombination von übergeordneter
Datei und der Einfügedatei den ADIS-Anforderungen entspricht. Die
I-Zeile hat folgenden Aufbau:
I<Status><Pfad + Dateiname><CR><LF>
ANMERKUNG: Die Option des Einfügens ist ein Weg, um Dateien physikalisch zu trennen, die logisch eine einzige sind. Die eingefügte Datei kann einen Header enthalten, wenn die Kombination mit der übergeordneten Datei die ADIS-Anforderungen erfüllt.
O = "Output" - Zeile
Eine O-Zeile beinhaltet den Pfadnamen und den Dateinamen
einer Datei, zu der Daten geschrieben werden müssen. Die O-Zeile hat
folgenden Aufbau:
O<Status><Pfad + Dateiname><CR><LF>
T = "Terminate" - Zeile
Eine T-Zeile kennzeichnet das Ende einer Informationshaupteinheit
in einer ADIS-Datei. Eine T-Zeile kann verwendet werden, um unterschiedliche
Blöcke innerhalb einer Datei zu unterscheiden. Nach einer T-Zeile
kann keine DH + VH-Zeile (siehe auch E-Zeile) folgen. Eine T-Zeile ist
immer gleich:
TN<CR><LF>
Z = "Physical end of file" - Zeile
Das physische Ende einer Datei wird mit einer Z-Zeile
markiert. Falls irgendwelche Daten nach der Z-Zeile stehen, werden sie
ignoriert. Die Z-Zeile hat immer den gleichen Aufbau:
ZN<CR><LF>
Statuszeichen | Bezeichnung |
H | Header - Daten |
N | Normal - Daten |
S | Synchronisation - Daten |
F | Faulty - Daten |
D | Deletion - Daten |
H = "Header" - Daten
Jede ADIS-Datei muß einen Header haben. Dies impliziert,
daß eine ADIS-Datei mit einer DH-Zeile beginnt, gefolgt von einer
VH-Zeile. Lediglich Kommentar-Zeilen (ungeachtet ihrer Statuszeichen) können
dem Header vorangehen. Wenn der Header ausgelassen wird, ist die ganze
Datei unzulässig.
Es ist obligatorisch, die Header-Daten (direkt nach der Event-Nummer) mit dem Namen des Data Dictionaries, der beim Erstellen der Datei verwendet wurde, zu beginnen. Es können mehrere Data Dictionaries verwendet werden. Um die erhaltene ADIS-Datei zu lesen muß der Empfänger wissen, welches Data Dictionary zur Erkennung der DDI-Nummern verwendet werden muß.
Es wird empfohlen, daß der Header ebenfalls wenigstens die folgenden Informationen (vom Sender) enthält:
Empfänger: Name des Empfängers der ADIS-Datei;
DDI-Listenversion: Version der DDI-Liste, die beim Erstellen der Datei verwendet wurde;
Produktname: Name des Softwareprogrammes, das beim Erstellen der Datei verwendet wurde;
Softwareversion: Programmversion, die beim Erstellen der Datei verwendet wurde;
Erstellungsdatum: Datum der Erstellung der Datei;
Erstellungszeit: Zeit der Erstellung der Datei.
N = "Normal" - Daten
Normale Daten werden bereitgestellt, um den Datenbestand
des Empfängers zu aktualisieren.
S = "Synchronisation" - Daten
Synchronisationsdaten werden versandt, um
Daten in der Datenbasis der sendenden und empfangenden Partei zu vergleichen, um zu bestimmen, welche korrekt zwischen den Nachrichtengruppen ist.
D = "Deletion" - Daten
Wenn eine ADIS-Datei versandt wurde, die falsche Informationen
enthält, kann der Übermittler die Zeile, die den Fehler enthält,
in eine andere ADIS-Datei kopieren mit einem in "D" geänderten Statuszeichen
und kann diese Datei ebenfalls versenden. Eine Zeile mit einem D-Status
soll vollständig gelöscht werden. Die Verwendung des D-Status
ist wählbar. Wenn der D-Status nicht unterstützt wird, soll er
durch eine F-Zeile beantwortet werden.
Zeilentyp |
|
|||||
|
|
|
|
|
||
|
|
|
|
|
||
|
Definition |
|
|
|
|
|
|
Wert |
|
|
|
|
|
|
Ende |
|
|
|
|
|
|
Kommentar |
|
|
|
|
|
|
Suche |
|
|
|
|
|
|
Anfrage |
|
|
|
|
|
|
Abschluß |
|
|
|
|
|
|
Datei |
|
|
|
|
|
|
Einfügen |
|
|
|
|
|
|
Ausgabe |
|
|
|
|
|
|
Physikalisches Ende |
|
|
|
|
|
1) Eine S-Zeile
erfordert eine R-Zeile, aber eine R-Zeile benötigt keine S-Zeile.
2) Eine S- oder R-Zeile mit einem F-Status ist keine Abfrage, aber eine Antwort vom Empfänger zum ursprünglichen Sender, daß die Abfrage nicht bearbeitet werden kann. Schlüssel:
|
Länge einer Ereignisnummer
Eine Ereignisnummer ist ein numerischer
Wert und hat eine festgelegte Länge von 6 Stellen.
Verknüpfen von V-Zeilen mit
D-Zeilen
Die Ereignisnummer einer D-Zeile soll
die selbe sein wie die Ereignisnummern der zugehörigen folgenden V-Zeilen.
Wenn sich die Ereignisnummer einer V-Zeile von der Ereignisnummer der vorangehenden
D-Zeile unterscheidet, dann ist die V-Zeile unzulässig.
Ereignisnummern in S- und R-Zeilen
Die Ereignisnummer einer R-Zeile soll
die selbe sein wie die Ereignisnummern der zugehörigen vorangehenden
S-Zeilen (falls es vorangehende S-Zeilen gibt). Wenn sich die Ereignisnummern
einer R- und S-Zeile voneinander unterscheiden, ist die Anfrage nicht möglich.
Die empfangende Partei kann die Ereignisnummer einer R-Zeile in ihrer Antwort
verwenden.
Eine S-Zeile kann nur Bedingungen enthalten, die sich auf Schlüsseldaten beziehen, die sich auf den Ereignisschlüssel beziehen. DDI-Nummern der S-Zeile sollen sich auf Schlüsseldaten beziehen.
ANMERKUNG: Die Umsetzung von Abfrage-Bearbeitungsprogrammen, die mit ADIS-Dateien bearbeitet werden, ist nicht obligatorisch. Da Suchbedingungen im höchsten Maße von Schlüsseldaten abhängig sind (bekannt im Data Dictionary), kann die Antwort auf eine Abfrage umsetzungsabhängig sein.
Eine Abfrage hat folgende Syntax:
[(S<Status><Ereignis-Nr.>(<DDI-Nr.><Feldlänge><Auflösung><Niedrigster Wert><Höchster Wert>)<Max. Anzahl von Aufzeichnungen><CR><LF>)]
R<Status><Ereignis-Nr.>(<DDI-Nr.><Feldlänge><Auflösung>)<CR><LF>
Es ist nicht zulässig, S/R-Zeilen zwischen die dazugehörigen D- und V-Zeilen zu setzen. Die S-Zeilen (wenn vorhanden) folgen immer sofort der R-Zeile. Lediglich C-Zeilen können, ungeachtet ihres Status, in einer Gruppe von Abfrage-Zeilen plaziert werden. Es wird empfohlen, Abfragen von D- und V-Zeilen durch Verwendung einer T-Zeile oder durch Setzen der Abfragen in separate Dateien zu trennen. Wenn eine Abfrage eine unzulässige S- oder R-Zeile enthält, ist die ganze Abfrage unzulässig.
Suchbedingungen einer Abfrage:
[(S<Status><Ereignis-Nr.>(<DDI-Nr.><Feldlänge><Auflösung><Niedrigster Wert><Höchster Wert>)<Max. Anzahl von Aufzeichnungen><CR><LF>)]
Bedenken Sie, daß eine S-Zeile mehrere Suchbedingungen enthalten kann. Diese Bedingungen sind unbedingt mit dem logischen AND-Operator verbunden. Wenn eine Abfrage mehr als eine S-Zeile enthält, sind die Bedingungen in dieser S-Zeile ebenfalls unbedingt mit einem logischen AND-Operator verbunden. Jede Suchbedingung enthält einen unteren Wert und einen oberen Wert, d.h., daß eine Suche für einen Bereich getätigt werden kann:
Unterer_Wert<=Wert_im_Feld_mit_DDI-Nr.<=Oberer_Wert
Das Format von <niedrigster Wert> und <höchster Wert> soll das selbe sein wie das für <Feldlänge> und <Auflösung>. Die Feldlänge für <Max. Anzahl von Aufzeichnungen> ist festgelegt auf 6 Zeichen (ausgefüllt mit Zwischenräumen, wenn die Felder keinen Wert haben). <Max. Anzahl von Aufzeichnungen> spezifiziert die maximale Anzahl von Aufzeichnungen, die als Antwort auf die in einer S-Zeile plazierten Bedingungen abgegeben werden können. Wenn <Max. Anzahl von Aufzeichnungen> keinen Wert hat, gibt es keine Einschränkung der maximalen Anzahl von Aufzeichnungen, die für die vorhergehende(n) Bedingung(en) abgegeben werden können.
Um die ersten n Aufzeichnungen zu suchen, werden die <niedrigster Wert> Felder vollständig mit Fragezeichen ("?") und die <höchster Wert> Felder haben keinen Wert: sie sind vollständig mit Zwischenräumen gefüllt.
S<Status><Ereignis-Nr.>(<DDI-Nr.><Feldlänge><Auflösung><(?)><(_)>)<Max. Anzahl von Aufzeichnungen><CR><LF>
in der "maximale Anzahl von Aufzeichnungen" den Wert n hat.
Um die letzten m Aufzeichnungen zu suchen, haben die <niedrigster Wert> Felder keinen Wert, sie sind vollständig mit Zwischenräumen ausgefüllt und die <höchster Wert> Felder sind vollständig mit Fragezeichen ausgefüllt ("?").
S<Status><Ereignis-Nr.>(<DDI-Nr.><Feldlänge><Auflösung><(_)><(?)>)<Max. Anzahl von Aufzeichnungen><CR><LF>
in der "maximale Anzahl von Aufzeichnungen" den Wert m hat.
Wenn eine S-Zeile gemischte Grenzen enthält (für eine DDI-Nummer ist das ? im "niedrigster Wert"-Feld gesetzt, für andere ist das ? im "höchster Wert"-Feld gesetzt), ist die S-Zeile unzulässig. Wenn die Abfrage keine S-Zeilen enthält, gibt es keine Suchbedingungen, was bedeutet, daß die Abfrage eine Anfrage für alle in der R-Zeile genannten Daten ist.
R-Zeile einer Abfrage:
Die R-Zeile definiert die Attribute, für die Daten angefragt werden.
R<Status><Ereignis-Nr.>(<DDI-Nr.><Feldlänge><Auflösung>)<CR><LF>
<DDI-Nr.><Feldlänge><Auflösung>
Der Empfänger soll mindestens das Format des entsprechenden Data Dictionaries unterstützen. Es ist nicht obligatorisch, daß der Empfänger das nicht genormte Format unterstützt (unterschiedliche Feldlänge und/oder Auflösung). Die Verwendung einer Feldlänge und Auflösung für ein Feld in der ADIS-Datei, die dem Format in dem Data Dictionary gleich sind, wird empfohlen. Es ist zulässig, eine Feldlänge oder Auflösung für ein Feld in dieser ADIS-Datei zu verwenden, die sich vom Format in dem Data Dictionary unterscheidet (von der Nachrichtengruppe abgestimmt); es wird empfohlen, die Verwendung von Feldlängen und/oder Auflösungen in dieser Weise niedrig zu halten.
Die Feldlänge definiert die Länge eines Datenfeldes. Die Feldlänge kann verwendet werden, um eine DDI-Nummer zu überspringen, wenn sie im Data Dictionary nicht erkannt wird. Dies kann vorkommen, wenn der Sender und der Empfänger nicht die selbe Data Dictionary-Version verwenden. Sie hat eine festgelegte Länge von 2 Stellen. Die Feldlänge ist eine Nummer im Bereich zwischen 1 und 99.
Die Auflösung definiert die Anzahl
von Dezimalstellen eines numerischen Wertes. Sie hat eine festgelegte Länge
von einer Stelle. Die Auflösung ist eine Nummer im Bereich zwischen
0 und 9. Alphanumerische Werte haben eine Auflösung von 0.
Dies kann z.B. sein
8 Zeichen hexadezimale Identifier-Nummer;
8 Zeichen alphanumerischer Code.
Datenfelder ausfüllen
Werte von numerischen Feldern haben
vorangestellte Leerzeichen, um die Felder auszufüllen, wenn das Feld
weniger Zeichen enthält als die spezifizierte Feldlänge. In speziellen
Situationen können nach Vereinbarung vorangestellte Nullen verwendet
werden.
Nullwerte
Felder, die keinerlei Wert enthalten
(nicht initialisierte Felder), sollen vollständig mit Fragezeichen
gefüllt werden ("?", dezimal ASCII 63).
Dezimalzeichen
Dezimalzeichen (Punkt, Komma) sind
nicht in den Wertfeldern der ADIS-Datei dargestellt.
CCYYMMDD
Zeitfelder haben voreingestellt ein sechsstelliges Format:
HHMMSS
Daten und Zeit haben immer vorangestellte Nullen (anstelle von vorangestellten Zwischenräumen).
000000<=Zeit<=235959
(Mitternacht: 000000, Mittag: 120000)
Siehe ISO 8601.
ANMERKUNG: Dieser Weg, die Kontrollsummen zu verwenden, hat eine andere OSI-Ebene als z.B. die Kontrollsummen, die vom Protokoll auf den niedrigeren OSI-Ebenen versendet werden.
Die Position einer Kontrollsumme in einer V-Zeile hängt vollständig von der Position der DDI-Nummer für die Kontrollsumme in der entsprechenden D-Zeile ab.
Die Berechnungsmethode der Kontrollsumme ist auch in dem Data Dictionary beschrieben, in dem die DDI-Nummer der "Kontrollsumme" gespeichert ist.
BEISPIEL:
Der Modulo-10-Check wird plaziert.
Jedes Zeichen vor der Kontrollsumme wird in die Berechnung der Kontrollsumme
mit einbezogen. Wenn die Kontrollsumme auf der Position n+1 plaziert ist,
wird wie folgt berechnet:
{} MOD 10
In dieser Berechnung stellt "ASC"
die Konvertierung des Zeichens in sein dezimales ASCII-Äquivalent
dar.
Dieses Diagramm soll von links nach rechts gelesen werden, außer, wenn dies anderweitig spezifiziert ist. Es gibt keine Regel für die senkrechte Richtung, ausgenommen für die Fälle, bei denen ein "oder" verwendet wird. Im oberen Teil der Abbildung sind die möglichen D- und V-Zeilen gezeigt.