Die Namensgebungskonventionen für die im Bausteinrahmen deklarierten Operationen und Zustände sowie für alle Datenobjekte (Parameter-, globale und lokale Objekte) sind:
Die Angabe „OF ME“ oder „OF <Modulname>“ kann entfallen, wenn kein weiteres Modul aufgerufen wird, welches dieselbe Operation bzw. denselben Zustand kennt.
Sonderfall: Wenn der Modulname identisch ist mit seinem Kurznamen, der u.a. für die ProgID verwendet wird, ist die Referenz „OF <Modulname>“ nicht möglich.
Das Bereitstellen und Sichern der Objektinhalte geschieht automatisch entsprechend ihrer Rolle.
Beispiel:
IF TC-OPERATION-MACHEN OF ME SET TC-STATE-ENDE TO TRUE * Parameterobjekt KVERTRG mit Feld KFZ-PLZ. MOVE 41352 TO KVERTRG-KFZ-PLZ END-IF
Die TAA-Infrastruktur stellt in COBOL-Programmen folgende Variablen zur Verfügung, über die Sie das Ergebnis von EXEC-TAA-Anweisungen abfragen können:
OM-RC-OK | Ergebnis von Anweisung, die TAA-Datenobjekte betrifft, ist OK (z.B. EXEC TAA GET …). |
OM-RC-NOTOK | Ergebnis von Anweisung, die TAA-Datenobjekte betrifft, ist nicht OK. |
OM-EC-EOL | Anweisung, die TAA-Listenobjekte betrifft, liefert das Ergebnis „Ende der Liste“. Bei LEsen des letzten Satzes einer Liste ist das Ergebnis noch OM-RC-OK, erst bei Zugriff hinter den letzten Satz wird OM-RC-EOL gesetzt; die Position in dem Listenobjekt ist dann undefiniert, es ist kein gültiger Satz mehr ausgewählt. |
IM-RC-OK | Ergebnis von Anweisungen, die nicht TAA-Datenobjekte betreffen |
IM-RC-NOT-OK | Ergebnis von Anweisungen, die nicht TAA-Datenobjekte betreffen |
IM-RC-NOT-FOUND | z.Zt. nur benutzt für GETINFO ASSOCIATION |
Übersicht über die von den OM-Operationen gelieferten Returncodes
Um es der Anwendung zu vereinfachen, zentrale Routinen für Anwendungsspezifische Fehlerbehandlung zur Verfügung zu stellen, stellt der Generator nach einem (erfolgreichen oder versuchten) Modulaufruf (CALL oder START) folgende Informationen zur Verfügung [a]:
Name des aufgerufenen Moduls | TC-LASTCALL-MODULE |
zurückgelieferter Zustand | TC-LASTCALL-STATE |
ausgelöste Operation | TC-LASTCALL-OPERATION |
Diese Felder können z.B. als Argumente für von der Anwendung gesetzte Conditions genutzt werden.
Es sollte aber nicht der Inhalt der Felder direkt in IF oder anderen Bedingungsabfragen referenziert werden, da dabei die Groß/Kleinschreibung zu Problemen führen könnte. Statt dessen können für die Abfrage folgende Bedingungsnamen verwendet werden:
Modulname | TC-<modulname> [OF TC-LASTCALL-MODULE] |
Operation | TC-LASTCALL-OP-<operation> |
Zustand | TC-LASTCALL-STATE-<state> |
Für den Modulnamen ist eine eindeutigere Prafixierung (wie bei Operation und Zustand) nicht möglich, da sonst die max. Länge von Cobolnamen überschritten werden könnte.
Beispiel: Condition setzen, wenn BEITRAG-BERECHNEN mit Operation NEUBERECHNEN aufgerufen wurde und Zustand FEHLER geliefert wurde:
IF TC-BEITRAG-BERECHNEN OF TC-LASTCALL-MODULE AND TC-LASTCALL-OP-NEUBERECHNEN AND TC-LASTCALL-STATE-FEHLER EXEC TAA SET SEVERE ..... END-EXEC END-IF
Um es der Anwendung zu vereinfachen, zentrale Routinen für Anwendungsspezifische Fehlerbehandlung zur Verfügung zu stellen, stellt der Generator nach einer Objektoperation zusätzlich zu dem oben beschriebenen Returncode folgende Informationen zur Verfügung [a]:
Name des Objekts | TC-LASTOM-OBJECT |
ausgeführte Operation (3-stellig) | TC-LASTOM-OPERATION |
Diese Felder können z.B. als Argumente für von der Anwendung gesetzte Conditions genutzt werden.
Es sollte aber nicht der Inhalt der Felder direkt in IF oder anderen Bedingungsabfragen referenziert werden, da dabei die Groß/Kleinschreibung zu Problemen führen könnten. Außerdem wird die Operation durch 3-stellige Kürzel statt des Operationsnamens angegeben.
Statt dessen können für die Abfrage folgende Bedingungsnamen verwendet werden:
Objektname | TC-LASTOM-OBJECT-<name> |
Operation | TC-LASTOM-OP-<operation> |
Beispiel: Condition setzen, wenn Lesezugriff auf Objekte PLISTE nicht das erwartete Ergebnis lieferte:
IF TC-LASTOM-OBJECT-PLISTE AND TC-LASTOM-OP-GET EXEC TAA SET SEVERE ..... END-EXEC END-IF
Bei Objektoperationen, die zwei Objekte betreffen (z.B. ADDLIST, COPY) ist jeweils nur ein Objekt angegeben, i.d.R. das Quellobjekt.
Es ist wichtig, zu beachten, dass die Informationen nur unmittelbar nach einer Objektoperation aktuell sind. Da auch für bestimmte andere EXEC-TAA-Anweisungen (z.B. Modulaufruf) vom Generator Objektoperationen erzeugt werden, verändern sich diese Felder auch dabei.
TC-IM-STAGE | falls verfügbar, stellt die Infrastruktur dort die Bezeichnung der Entwicklungsstufe ein, z.B. „ALPROD“. Die Information ist nur direkt nach dem REGISTER abfragbar, für spätere Verwendung muss sie in eine selbst definierte COBOL-Variable kopiert werden. |
TC-IM-ENVIRONMENT | falls verfügbar, stellt die Infrastruktur dort eine Angabe zur Laufzeitumgebung ein, z.B. „BATCH“ oder „ONLINE“. Die Information ist nur direkt nach dem REGISTER abfragbar, für spätere Verwendung muss sie in eine selbst definierte COBOL-Variable kopiert werden. |
TC-APP-VERSION | falls verfügbar, stellt die Infrastruktur dort die Versionnummer der aktuellen Anwendung ein.Die Information ist nur direkt nach dem REGISTER abfragbar, für spätere Verwendung muss sie in eine selbst definierte COBOL-Variable kopiert werden. |
TC-DOMAIN | falls verfügbar, stellt die Infrastruktur dort die Domäne des aktuellen Benutzers ein. Die Information ist nur direkt nach dem REGISTER abfragbar, für spätere Verwendung muss sie in eine selbst definierte COBOL-Variable kopiert werden. |
TC-USERID | falls verfügbar, stellt die Infrastruktur dort die UserID des aktuellen Benutzers ein. Die Information ist nur direkt nach dem REGISTER abfragbar, für spätere Verwendung muss sie in eine selbst definierte COBOL-Variable kopiert werden. |
In einigen Anweisungen unterstützt der COBOL-Preprozessor folgende Syntax, um auf ein Feld zuzugreifen, das Bestandteil eines TAA-Objekts ist:
<Objektname>.<Feldname> [(Index1 [, Index2 [, Index3]])]
Dabei ist als <Objektname> der Name des Objekts anzugeben. Eine Positionierung im Listenobjekt ist hier nicht möglich, diese muss falls notwendig vor der Referenz über eine GET-Anweisung erfolgen.
<Feldname> ist der Namen des Feldes in dem Objekt. Der Feldname ist ggf. gefolgt durch die Anzahl Indices, die für dieses Feld erforderlich ist (max. 3).
Bei der Angabe der Indices dürfen nur numerische Literale oder Namen von COBOL-Variablen verwendet werden. Es ist nicht möglich, als index eine weitere TAA-Objektfeld-Referenz (also eine Feldreferenz in dem hier beschriebenen Format) anzugeben.
Der TAA-Preprozessor überprüft bei der Generierung die Gültigkeit der TAA-Objektfeld-Referenz: