Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

Typisierte Puffer

&pagelevel(3)&pagelevel

XATMI-Anwendungen tauschen Nachrichten mit Hilfe von „typisierten Datenpuffern“ aus. Dadurch werden die über das Netz gehenden Daten korrekt an die Anwendung übergeben, d.h. gemäß der über den Puffernamen identifizierten Datenstruktur mit ihren Datentypen.

Dies hat den Vorteil, dass die Anwendungen keine Maschinenabhängigkeiten berücksichtigen müssen wie z.B. Big Endian/Little Endian Darstellungen, ASCII-/EBCDIC-Konvertierungen oder Ausrichtungen auf Wortgrenzen. Damit können Datentypen wie int, long, float usw. als solche übertragen werden.
Eine eventuell notwendige Kodierung/Dekodierung durch die Anwendungsprogramme entfällt, da dies von XATMI übernommen wird (gemäß den Regeln der XATMI U-ASE Definition).

Ein Datenpuffer-Objekt besteht aus vier Komponenten:

  • Typ: Definiert die Klasse des Puffers. Es gibt drei Typen (siehe unten).

  • Subtyp: Definiert das Objekt des Typs, d.h. die eigentliche Datenstruktur.

  • Längenangabe

  • Dateninhalt

Ein solcher Datenpuffer wird während der Laufzeit erzeugt und kann dann über seinen Variablen-Namen (=Subtyp-Name) angesprochen werden. Der Subtyp definiert die Struktur, der Typ legt die Wertemenge der erlaubten elementaren Datentypen fest. In C-Programmen werden solche Puffer dynamisch mit tpallcoc() erzeugt, man spricht dann von „typisierten Puffern“. In Cobol-Programmen sind diese Puffer statisch festgelegt, man spricht von „typisierten Records“.

Typen

Mit dem Typ eines Datenpuffers wird festgelegt, welche elementaren Datentypen der verwendeten Programmiersprache erlaubt sind. Dadurch wird ein gemeinsames Datenverständnis in einem heterogenen Client-Server-Verbund ermöglicht.

Bei XATMI sind drei Typen definiert:

X_OCTET

Untypisierter Datenstrom von Bytes („Userbuffer“). Dieser Typ besitzt keine Subtypen. Es wird keine Konvertierung vorgenommen.

X_COMMON

Alle von C und COBOL gemeinsam verwendbaren Datentypen. Die Konvertierung wird von XATMI vorgenommen.

X_C_TYPE

Alle elementaren C-Datentypen mit Ausnahme von Zeigern. Die Konvertierung wird von XATMI vorgenommen.

Subtypen

Subtypen haben einen bis zu 16 Zeichen langen Namen, unter dem sie im Anwendungsprogramm angesprochen werden. Jedem Subtyp ist eine Datenstruktur (C-Structure oder COBOL-Record) zugeordnet, die die Syntax des Subtyps bestimmt, siehe Abschnitt „Typisierte Puffer erstellen“.
Die Datenstrukturen dürfen nicht geschachtelt werden.

In der Local Configuration wird die Struktur eines Subtyps durch einen Syntaxstring repräsentiert, in dem jeder elementare Datentyp (Basistyp) durch einen Code gekennzeichnet ist, der im Bedarfsfall die Angabe von Feldlängen (<m> und <n>) enthält.

Die folgende Tabelle gibt einen Überblick über die elementaren Datentypen (Basistypen), deren Codes und den Zeichenvorrat der String-Typen:

Code 1

Bedeutung

ASN.1-Typ

X_C_TYPE

X_COMMON

s

short integer

INTEGER

short

S9(4) COMP-5

S<n>

short integer array

SEQUENCE OF INTEGER

short[n]

S9(4) COMP-5 ...

i

integer

INTEGER

integer

--2

I<n>

integer array

SEQUENCE OF INTEGER

integer[n]

--

l

long integer

INTEGER

long

S9(9) COMP-5

L<n>

long integer array

SEQUENCE OF INTEGER

long[n]

S9(9) COMP-5 ...

f

float

REAL

float

--

F<n>

float array

SEQUENCE OF REAL

float[n]

--

d

double

REAL

double

--

D<n>

double array

SEQUENCE OF REAL

double[n]

--

c

character

OCTET STRING

char

PIC X

t

character

T.61-String

char

PIC X

C<n>

character array: Alle Werte von 0 bis 255 (dezimal)

OCTET STRING

char[n]

PIC X(n)

C!<n>

character array, durch Null ('\0') terminiert

OCTET STRING

char[n]

--

C<m>:<n>

character matrix3

SEQUENCE OF OCTET STRING

char[m][n]

--

C!<m>:<n>

character matrix, durch Null ('\0') terminiert

SEQUENCE OF OCTET STRING

char[m][n]

--

T<n>

Die abdruckbaren Zeichen A-Z, a-z und 0-9 plus4 eine Reihe von Sonderzeichen und Steuerzeichen, siehe Abschnitt „Zeichensätze“

T.61-String

t61str[n]

PIC X(n)

T!<n>

character array, durch Null ('\0') terminiert

T.61-String

t61str[n]

--

T<m>:<n>

character matrix

SEQUENCE OF T.61-String

t61str[m][n]

--

T!<m>:<n>

character matrix, durch Null ('\0') terminiert

SEQUENCE OF T.61-String

t61str[m][n]

--

1Dient in der Local Configuration zur Beschreibung der Datenstrukturen

2-- : in X_COMMON nicht vorhanden

3eine character matrix ist ein zweidimensionales character array

4gemäß CCITT Recommodation T.61 bzw. ISO 6937

Die Zuordnung zwischen Datenstrukturen, Subtypen und gewünschten Services wird in der Local Configuration festgelegt, siehe Abschnitt „Local Configuration File erzeugen“.

Zeichensatz-Konvertierung bei X_C_TYPE und X_COMMON

Die Datenpuffer werden im ASCII-Zeichensatz über das Netz geschickt.

Ein Partner kann jedoch eine andere Zeichensatzcodierung als ASCII verwenden, wie z.B. eine BS2000-Anwendung, die EBCDIC verwendet. In diesem Fall konvertiert die XATMI-Bibliothek bei allen eingehenden und abgehenden Daten den ASN.1-Typ T.61-String. (Ausnahme: OCTET STRINGs werden nicht konvertiert.)

Daher darf für das Trägersystem keine automatische Konvertierung generiert werden: Für das Trägersystem UPIC muss daher in der upicfile das entsprechende Kennzeichen generiert werden:

  • Für Unix-, Linux- und Windows-Systeme (stand-alone-Anwendung) ist das SD oder ND.

  • Für BS2000-Systeme (stand-alone-Anwendung) ist das HD.

  • Für Knoten-Anwendungen einer UTM-Cluster-Anwendung ist das CD.