Customer Information Control System
Customer Information Control System (CICS) ist ein Transaktionsmonitor von IBM. Die Middleware dient dazu, OLTP-Applikationen zu implementieren. CICS-Kommandos werden dafür sehr häufig in Verbindung mit COBOL benutzt, wobei die Anweisungen in den Code der Programmiersprache eingefügt sind.
Customer Information Control System | |
---|---|
Basisdaten | |
Entwickler | IBM |
Erscheinungsjahr | 8. Juli 1969 |
Aktuelle Version | CICS Transaction Server V5.6 (12. Juni 2020) |
Betriebssystem | z/OS, z/VSE |
Programmiersprache | COBOL, PL/I, Assembler, Java |
Kategorie | Transaktionsmonitor, Middleware |
Lizenz | proprietär |
IBM CICS |
Aussprache
Je nach Land wird die Abkürzung CICS unterschiedlich ausgesprochen:
- In Deutschland meistens wie zicks: Ohne CICS läuft nix!.
- In den USA sind kicks und see eye see ess gebräuchlich.
- In Großbritannien eher wie kicks
Überblick
Als Transaktionsmonitor kann CICS Transaktionen verarbeiten mit vielen Benutzern und mit einer Vielzahl von Anwendungen. CICS lädt diese Programme, koordiniert deren Ausführung, handhabt die Datenübertragungen zwischen Programmen und Terminals und steuert den Zugriff auf Daten. Es fungiert als Schnittstelle zwischen den Anwendungsprogrammen und den Diensten des Betriebssystems. Wenn das Anwendungsprogramm auf ein Terminal oder ein Festplattengerät zugreifen möchte, kommuniziert es nicht direkt mit dem Gerät, sondern gibt stattdessen Befehle aus, um mit CICS zu kommunizieren. CICS kommuniziert dann mit einer Zugriffsmethode des Betriebssystems, welche anschließend mit dem Gerät kommuniziert. Ein typisches Einsatzfeld ist die Steuerung von Transaktionen bei Geldautomaten. Zwei oder mehrere CICS-Systeme können parallel laufen und werden als regions bezeichnet. Da jedes CICS-System dabei in seinem eigenen Adressraum läuft, stören Programme einander auf demselben Rechner nicht.
Bei der CICS-Applikationsentwicklung unterscheidet man:
- die Business Logic: Datenmanipulation und Berechnungen, welche die Transaktion erfordert (COBOL, PL/I, Assembler, Java)
- die Data Services: abrufen und aktualisieren von Daten (Db2, DL/I, VSAM, Oracle)
Es wird eine Makrosprache verwendet, wobei diese Sprache unabhängig von der Programmiersprache ist. Innerhalb beispielsweise eines COBOL-Programmes befinden sich die CICS-Anweisungen.
Der generelle Aufbau der CICS-Kommandos:
EXEC CICS FUNCTION OPTION (Argument) END-EXEC
FUNCTION: die CICS-Operation OPTION: die Optionen der Operation Argument: der Datenwert
MAPS ist eines der Kommunikations-Interfaces zwischen CICS und dem Benutzer.
Der Endbenutzer gibt beispielsweise Daten ein, welche dem Programm verfügbar gemacht werden, indem es eine map von CICS erhält.
EXEC CICS
RECEIVE MAPSET('LOSMATT') MAP('LOSATT') INTO(OUR-MAP)
END-EXEC.
CICS ist unter den /390-Großrechner-Betriebssystemen z/OS (MVS) und VSE sowie, in modifizierter Form als Encina-Erweiterung, unter AIX, HP-UX, Solaris sowie Windows Server[1] verfügbar. Im Gegensatz zu TSO, bei dem jeder Benutzer seinen eigenen Adressraum bekommt, laufen alle CICS-Benutzer im gleichen Adressraum des CICS-Systems.
Anwendungsentwicklung unter CICS
Es werden die traditionell auf Mainframes verbreiteten Programmiersprachen COBOL, C, C++, PL/I und Assembler unterstützt, seit einigen Jahren auch Java.
Die Anwendungs-API für nicht OO-Sprachen besteht aus EXEC CICS .....
-Kommandos, die von einem Präprozessor in die Gastsprache übersetzt werden. Java-Programmierern stehen entsprechende CICS-Klassen zur Verfügung.
Im Gegensatz zu IMS ist die Kodierung der EXEC CICS Blöcke in allen Standard-HOST-Sprachen (siehe oben) identisch. Ein EXEC CICS ASSIGN..... sieht in COBOL, C, C++, PL/I und Assembler identisch aus.
CICS-Programme interagieren mit einem Anwender oder einer anderen Anwendung. Dafür stehen dem Programmierer eine Vielzahl von Mechanismen und Funktionen zur Verfügung. Für klassische, bildschirmorientierte Anwendungen sind z. B. folgende Funktionen wichtig
- SEND MAP / RECEIVE MAP zum Anzeigen von Informationen und Abholen von Usereingaben
- RETURN TRANSID zum Beenden der CICS Task unter Vorgabe der Folgetransaktion nach erfolgter Benutzereingabe
- READ TS QUEUE / WRITE TS QUEUE zum Zwischenspeichern von Programmdaten während die CICS Task beendet ist und auf Eingaben wartet oder zur Kommunikation mit anderen Anwendungen.
Transaktionen im CICS
Eine CICS-Transaktion besteht aus einer oder mehreren Units of Work (UOW). Eine UOW ist das, was in der Literatur unter einer Transaktion verstanden und mit dem Begriff ACID (Atomicity, Consistency, Isolation und Durability) verbunden wird. Die veraltete Bezeichnung Logical Unit of Work (LUW) wird auch heute noch synonym für UOW verwendet.
Jede CICS-Transaktion läuft unter einem vordefinierten vierstelligen Transaktions-Code. Dieser Transaktions-Code legt unter anderem den Namen des Programms fest, welches mit dem Start der Transaktion die Ausführungskontrolle erhält.
Mit dem Start der Transaktion beginnt eine UOW, mit dem Kommando EXEC CICS SYNCPOINT
wird die laufende UOW beendet (committed) und eine neue UOW begonnen. Die Transaktion endet mit EXEC CICS RETURN
und beendet auch die aktuelle UOW mit SYNCPOINT
.
Eine CICS-Transaktion entsteht traditionell
- durch Eingabe eines Transaktionscodes an einem Terminal (bzw. in der Terminalemulation eines PCs)
- aus einer CICS-Anwendung heraus mit
START TRANSID()
oderRETURN TRANSID()
(insbesondere bei „pseudoconversational“ Transaktionen) - CICS-intern: z. B. Trigger auf TD-Queue.
- aus einem anderen CICS mit Transaction Routing oder Distributed Program Link (DPL).
CICS-Transaktionen können von Programmen auch von „außen“ gestartet werden:
EXCI
-Call aus z/OS (MVS, Multiple Virtual Storage), z. B. TSO (Time-Sharing Option) oder Stapelverarbeitung.- Im MVS von der Operator-Konsole bzw. von Software-Konsolen (z. B. TSO, Netview).
eci
-Call von nicht-MVS-Plattformen (Unix, Windows, OS/2)- Verwendung von Standardprotokollen:
Geschichte und Zukunft von CICS
Laut Bob Yelavich ist Ben Riggins der Vater von CICS.
Zahlreiche Mythen ranken sich um das Präfix der CICS-Meldungen DFH. Bob Yelavich weist darauf hin, dass diese Buchstabenkombination von IBM schlicht zugewiesen wurde und es sich um keine Abkürzung handelt (vgl. IMS und das Präfix DFS), manche Quellen hingegen behaupten, das erste CICS wäre ein Produkt eines lokalen Stromanbieters mit der Firmenabkürzung D.F.H. gewesen und sei später von IBM gekauft worden.
Die wahre Geschichte von CICS lässt sich heute nicht mehr klären, klar ist nur, dass CICS in den frühen 1970er Jahren aufgetaucht ist und ursprünglich nicht von IBM war.
In der DDR existierte Ende der 1980er Jahre ein Datenkommunikationssystem mit dem Namen DAKS, welches unter OS/ES-SVS, dem DDR-Clone des IBM-Betriebssystems OS/VS2, lief. Das Präfix der DAKS-Meldungen war DKS, die Semantik der Meldungen war identisch (z. B. Control is being given to DAKS). Die Staatsbank der DDR setzte es zur Realisierung seines Terminal-Systems ein. Auch darüber hinaus fand es Verbreitung in zahlreichen Betrieben der DDR, welche den EC 1055 M einsetzten. Allerdings verlor DAKS nach der Wende an Bedeutung, da nach der Währungs-, Wirtschafts- und Sozialunion die meisten Rechenzentren in der DDR ihre Soft- und Hardware auf westlichen Standard brachten.
CICS wird weltweit in zahlreichen großen Unternehmen eingesetzt. Da CICS laufend weiterentwickelt wird und die aktuellen Versionen sowohl gängige Programmiersprachen wie C/C++ und Java unterstützen, als auch entsprechende Schnittstellen zum Internet (CICS Web Support) und zu Webservices haben, kann man davon ausgehen, dass der Markt für CICS zumindest in den nächsten Jahren relativ stabil bleiben wird. Im Neukunden-Markt-Segment muss sich CICS künftig gegenüber einer immer größer werdenden Konkurrenz mit auf kostengünstigen Servern bzw. Hosts mit hoher Verfügbarkeit basierenden Systemen behaupten.
Literatur
- CICS Application Programming Guide
- Norbert Denne: CICS. Theorie und Praxis. 3. Auflage. DGD, 2002, ISBN 3929187078
- Thomas Kregeloh, Stefan Schönleber: CICS Eine praxisorientierte Einführung ISBN 3-528-05272-4
Weblinks
- IBM CICS (englisch)
Einzelnachweise
- TXSeries for Multiplatforms V7.1. IBM. Abgerufen am 4. September 2012.