Namenskonventionen und vordefinierte COBOL-Variablen

Namenskonventionen für Operationen, Zustände und Datenobjekte

Die Namensgebungskonventionen für die im Bausteinrahmen deklarierten Operationen und Zustände sowie für alle Datenobjekte (Parameter-, globale und lokale Objekte) sind:

  1. für Zustände: TC-STATE-<Zustandsname> [OF ME | OF <Modulname>]
  2. für Operationen: TC-OPERATION-<Operationsname> [OF ME | OF <Modulname>]
    (veraltet auch: TC-EVENT-<Ereignisname> [OF ME | OF <Modulname>])
  3. für Datenobjekte: <Objektname>-<Feldname>

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

Bedingungsnamen für Ergebnisabfragen

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

Informationen über den zuletzt ausgeführten Modulaufruf

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

Informationen über zuletzt ausgeführte Objektoperationen

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.

Weitere Felder mit abfragbaren Informationen

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.

Referenzen auf Felder in TAA-Objekten

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:

  • Existiert das Objekt?
  • Existiert das Feld innerhalb des Objekts?
  • Wurde die erforderliche Anzahl Indices übergeben?

a) Ab TAA Version 8.00
cobref:cob:namefield · Zuletzt geändert: 19.03.2019 14:06

Copyright © 1992-2024 TeamWiSE Gesellschaft für Softwaretechnik mbH         Adressen |  Kontakt |  AGB |  Datenschutzerklärung |  Impressum