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 erstellen

&pagelevel(4)&pagelevel

Typisierte Puffer werden definiert durch Datenstrukturen in Include-Dateien (bei C) bzw. COPY-Elementen (bei COBOL). Diese Include-Dateien bzw. COPY-Elemente müssen in den beteiligten Programmen eingefügt werden.

Der Datenaustausch zwischen den Programmen erfolgt auf Basis dieser Datenstrukturen, die daher sowohl dem Client als auch dem Server bekannt sein müssen. Dabei sind alle Datentypen erlaubt, die in der Tabelle auf "Typisierte Puffer" beschrieben sind.

Die Include- bzw. COBOL-COPY-Dateien, in denen die typisierten Puffer beschrieben sind, dienen als Eingabe für das Generierungsprogramm xatmigen, siehe Abschnitt „Das Tool xatmigen“. Für diese Dateien gelten folgende Regeln:

  • C- und COBOL-Datenstrukturen müssen in eigenen Dateien stehen. Eine Datei, die sowohl C-Includes als auch COBOL-COPY-Elemente enthält, ist als Eingabe nicht erlaubt.

  • Die Dateien dürfen nur aus den Definitionen der Datenstrukturen, Leerzeilen und Kommentaranweisungen bestehen.
    Include-Dateien (für C) dürfen auch Makroanweisungen enthalten, d.h. Anweisungen, die mit "#" beginnen.

  • Die Datenstrukturen-Definitionen müssen vollständig angegeben werden. Insbesondere müssen COBOL-Datensätze mit der Stufennummer "01" beginnen.

  • Die Datenstrukturen dürfen nicht verschachtelt sein.

  • Als Feldlängen sind nur absolute Werte und keine Makro-Konstanten erlaubt.

  • Es sind nur die Datentypen erlaubt, die in der Tabelle auf "Typisierte Puffer" beschrieben sind. Insbesondere sind bei C keine Zeiger-Typen zugelassen.

Mit Hilfe des Generierungstools xatmigen muss der Anwender ggf. die Character-Arrays auf die ASN.1-Stringtypen abbilden, da weder C noch COBOL diese Datentypen kennen, siehe Abschnitt „Das Tool xatmigen“.

Für C stehen XATMI-Aufrufe für die Speicherbelegung zur Verfügung (tpalloc() ...).

Im folgenden finden Sie je ein einfaches Beispiel für C und COBOL.

Beispiel

C-Include für typisierten Puffer
typedef struct {
        char   name[20];    /* Personenname */
        int    age;         /* Alter        */
        char sex;
        long shoesize;
} t_person;
struct t_city {
        char   name[32];    /* Staedtename */
        char   country;
        long   inhabitants;
        short  churches[20];
        long founded;
}
COBOL-COPY für Typed Record
***** Personal-Record
 01 PERSON-REC.
    05 NAME     PIC      X(20).
    05 AGE      PICTURE  S9(9) COMP-5.
    05 SEX      PIC      X.
    05 SHOESIZE PIC      S9(9) COMP-5.
***** City-Record
 01 CITY-REC.
    05 NAME        PIC   X(32).
    05 COUNTRY     PIC   X.
    05 INHABITANTS PIC   S9(9) COMP-5.
    05 CHURCHES    PIC   S9(4) COMP-5 OCCURS 20 TIMES.
    05 FOUNDED     PIC   S9(9) COMP-5.

Weitere Beispiele finden Sie in der X/Open-Spezifikation zu XATMI.