Your Browser is not longer supported

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

{{viewport.spaceProperty.prod}}

Hinweise zum Testen von Programmen mit benutzerdefinierten Typen

AID V3.1A unterstützt die TYPEDEF-Klausel sowie typbezogene Zeiger in COBOL2000.

Ein Dereferenzierungs-Operator und ein Adress-Operator ergänzen nun die bisher gängigen AID-Operatoren (siehe Handbuch „AID“ [8]).

Der Dereferenzierungs-Operator dient dem Zugriff auf das durch einen Zeiger adressierte Datum. Er wird durch einen Stern dargestellt und kann mit der COBOL-Qualifikation (IN, OF) und der COBOL-Subskribierung kombiniert werden.

Der Adressoperator liefert die Adresse eines Datums zur Versorgung eines Zeigers oder zur weiteren Verwendung in Low Level AID. Hierfür unterstützt AID die COBOL-Syntax ADDRESS OF.

  • Zugriff auf Datennamen

    Für die Datennamen der TYPEDEF-Klausel gibt es innerhalb der AID-Kommandos keine Verwendung.

    • Die Eingabe einfacher, qualifizierter und indizierter Symbole erfolgt in AID genauso wie in COBOL. Das bedeutet, dass insbesondere Teilqualifizierungen erlaubt sind, solange sie eindeutig sind. Aus Gründen der Performance ist es für Programme mit sehr vielen Gruppen (Strukturen) empfehlenswert, ein Eingabesymbol vollständig zu qualifizieren. Dadurch wird der Suchprozess beschleunigt und der Eindeutigkeitstest kann entfallen. Für Symbole mit einer dereferenzierten Komponente (z.B. %D NAME IN *ADDRESS-START) wird stets die vollständige Qualifizierung vorausgesetzt. Zudem sind Indexangaben stets exakt anzugeben.

    • Für komplexe Datenzugriffe, die durch Zusammensetzung von Qualifizierung, Subskribierung und Dereferenzierung entstehen, gelten folgende Regeln:

      • Die Abarbeitung erfolgt stets von rechts nach links. Der am weitesten rechts liegende Operator wird zuerst abgearbeitet.

      • Ist ein Operand mit einem Operator geklammert, so hat der geklammerte Operator Vorrang in der Abarbeitung von rechts nach links.

  • Adress-Selektor

    Genau wie in COBOL ist das Schlüsselwort des Adress-Selektors ADDRESS OF. Es ist reserviert und gilt nicht bei der Einstellung %AID SYMCHARS=NOSTD.

  • Zuweisungen und Vergleiche

    • Zuweisungen und Vergleiche von Variablen mit der gleichen TYPEDEF-Klausel ohne STRONG-Angabe können analog zu Gruppen nur auf Low Level Ebene, d.h. durch explizite Konvertierung der Gruppen in hexadezimalen Strings, durchgeführt werden.

    • Bei Zuweisungen und Vergleichen von Variablen mit der gleichen TYPEDEF-Klausel mit der STRONG-Angabe kann auf die explizite Konvertierung in hexadezimalen Strings in der AID-Kommando-Eingabe verzichtet werden. AID prüft, ob Quelle und Ziel die gleiche1 TYPEDEF-Klausel mit der STRONG-Angabe besitzen und führt dann die Zuweisung oder den Vergleich aus. Bei der Ausführung wird jedoch intern die String-Konvertierung auf die Variable als Ganzes und nicht auf die einzelnen Komponenten durchgeführt.

    • Bei Zuweisungen und Vergleichen von typbezogenen Zeigern wird überprüft, ob die Zeiger den gleichen Referenztyp haben. Wenn der Referenztyp eine Gruppe (Struktur) mit der TYPEDEF-Klausel ist, ist zudem die STRONG-Angabe in der Deklaration des Typs notwendig. Wird dem Zeiger eine Adresse über den Adress-Selektor zugewiesen oder wird ein Zeiger mit einem Adress-Selektor verglichen, so findet die analoge Typüberprüfung zwischen Referenztyp des Zeigers und dem Argumenttyp des Adress-Selektors statt.

Beispiel 7-2

01 PT-TYP TYPEDEF USAGE POINTER TO PERSON.
01 PERSON TYPEDEF STRONG.
   02 NAME PIC X(30).
   02 VORNAME PIC X(30).
01 VERWEIS TYPE PT-TYP.
01 PERS1 TYPE PERSON.
01 PERS2 TYPE PERSON.

Mögliche Eingabe in AID:

%SET ADDRESS OF PERS1 INTO VERWEIS.
%D *VERWEIS        
%D NAME IN *VERWEIS                               (1)
%D ADDRESS OF PERS1                               (2)
%SET PERS1 INTO PERS2                             (3)

(1) Zeigt den Inhalt des Datenfeldes, auf welches VERWEIS verweist als Gruppe vom Typ PERSON bzw. das elementare Feld NAME in dieser Gruppe.

(2) Gibt sedezimal die Adresse von PERS1 zur weiteren Nutzung in Low Level AID aus.

(3) Entspricht in COBOL: MOVE PERS1 TO PERS2.


Beachten Sie: Äquivalente Typen behandelt AID nicht als „gleiche“ Typen (siehe Handbuch „COBOL2000-Sprachbeschreibung“ [1]).