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
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; }
***** 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.