CICS - Kurzanleitung
CICS ist ein DB / DC-System, das in Online-Anwendungen verwendet wird. CICS wurde entwickelt, weil das Batch-Betriebssystem nur Batch-Programme ausführen kann. CICS-Programme können in COBOL, C, C ++, Java usw. geschrieben werden. Heutzutage möchten Benutzer Informationen innerhalb von Sekunden und in Echtzeit. Um einen so schnellen Service bieten zu können, benötigen wir ein System, das Informationen online verarbeiten kann. Mit CICS können Benutzer mit dem Back-End-System kommunizieren, um die gewünschten Informationen zu erhalten. Beispiele für Online-Programme sind Online-Banking-System, Flugreservierung usw. Das folgende Bild zeigt die Komponenten von CICS und wie sie miteinander zusammenhängen -
Funktionen von CICS
Die Hauptfunktionen, die CICS in einer Anwendung ausführt, sind folgende:
CICS verwaltet Anforderungen von gleichzeitigen Benutzern in einer Anwendung.
Zwar arbeiten mehrere Benutzer am CICS-System, aber es gibt dem Benutzer das Gefühl, dass er nur der einzelne Benutzer ist.
CICS ermöglicht den Zugriff auf Datendateien zum Lesen oder Aktualisieren in einer Anwendung.
Funktionen von CICS
Die Funktionen von CICS sind wie folgt:
CICS ist ein Betriebssystem für sich, da es seinen eigenen Prozessorspeicher verwaltet, über einen eigenen Task-Manager verfügt, der die Ausführung mehrerer Programme verwaltet und eigene Dateiverwaltungsfunktionen bereitstellt.
CICS bietet eine Online-Umgebung im Batch-Betriebssystem. Übermittelte Aufträge werden sofort ausgeführt.
CICS ist eine verallgemeinerte Transaktionsverarbeitungsschnittstelle.
Es ist möglich, zwei oder mehr CICS-Regionen gleichzeitig zu haben, da CICS im Backend-End als Betriebssystem im Betriebssystem ausgeführt wird.
CICS selbst fungiert als Betriebssystem. Seine Aufgabe ist es, eine Umgebung für die Online-Ausführung von Anwendungsprogrammen bereitzustellen. CICS wird in einer Region oder Partition oder einem Adressraum ausgeführt. CICS übernimmt die Planung für Programme, die darunter ausgeführt werden. CICS wird als Stapeljob ausgeführt und kann im Spool angezeigt werden, indem der Befehl PREFIX CICS * ausgegeben wird. Es gibt fünf Hauptdienste, die von CICS bereitgestellt werden. Alle diese Dienste zusammen führen eine Aufgabe aus.
CICS-Umgebung
Im Folgenden sind die Dienstleistungen aufgeführt, die wir Schritt für Schritt ausführlich besprechen werden -
- Systemdienste
- Datenkommunikationsdienste
- Datenverarbeitungsdienste
- Anwendungsprogrammierungsdienste
- Überwachungsdienste
- Systemdienste
CICS verwaltet Steuerfunktionen zum Verwalten der Zuweisung oder Aufhebung der Zuweisung von Ressourcen innerhalb des Systems, die wie folgt lauten:
Task Control- Die Aufgabensteuerung bietet Funktionen für die Aufgabenplanung und Multitasking. Es kümmert sich um den Status aller CICS-Aufgaben. Die Aufgabensteuerung teilt die Prozessorzeit auf gleichzeitige CICS-Aufgaben auf. Das nennt manmultitasking. CICS versucht, die Antwortzeit auf die wichtigste Aufgabe zu priorisieren.
Program Control- Die Programmsteuerung verwaltet das Laden und Freigeben von Anwendungsprogrammen. Sobald eine Aufgabe beginnt, muss die Aufgabe dem entsprechenden Anwendungsprogramm zugeordnet werden. Obwohl für viele Aufgaben möglicherweise dasselbe Anwendungsprogramm verwendet werden muss, lädt CICS nur eine Kopie des Codes in den Speicher. Jede Aufgabe durchläuft diesen Code unabhängig voneinander, sodass viele Benutzer Transaktionen ausführen können, die gleichzeitig dieselbe physische Kopie eines Anwendungsprogramms verwenden.
Storage Control- Storage Control verwaltet die Erfassung und Freigabe des Hauptspeichers. Die Speichersteuerung erfasst, steuert und gibt dynamischen Speicher frei. Der dynamische Speicher wird für Eingabe- / Ausgabebereiche, Programme usw. verwendet.
Interval Control - Interval Control bietet Timer-Dienste.
Datenkommunikationsdienste
Datenkommunikationsdienste sind mit Telekommunikationszugriffsmethoden wie BTAM, VTAM und TCAM verbunden, um Datenkommunikationsanforderungen von Anwendungsprogrammen zu verarbeiten.
CICS befreit Anwendungsprogramme durch die Verwendung von Basic Mapping Support (BMS) von der Last der Behandlung von Terminalhardwareproblemen.
CICS bietet Multi Region Operation (MRO), über die mehr als eine CICS-Region im selben System kommunizieren kann.
CICS bietet ISC (Inter System Communication), über die eine CICS-Region in einem System mit der CICS-Region auf einem anderen System kommunizieren kann.
Datenverarbeitungsdienste
Data Handling Services-Schnittstelle mit Datenzugriffsmethoden wie BDAM, VSAM usw.
CICS erleichtert die Bearbeitung von Datenverarbeitungsanforderungen von Anwendungsprogrammen. CICS bietet Anwendungsprogrammierern eine Reihe von Befehlen für den Umgang mit Datensatz- und Datenbankzugriff und damit verbundenen Vorgängen.
Data Handling Services sind mit Datenbankzugriffsmethoden wie IMS / DB, DB2 usw. verbunden und erleichtern die Bearbeitung von Datenbankanforderungen von Anwendungsprogrammen.
CICS erleichtert die Verwaltung der Datenintegrität durch Kontrolle gleichzeitiger Datensatzaktualisierungen, Schutz von Daten als Task-ABENDs und Schutz von Daten bei Systemausfällen.
Anwendungsprogrammierungsdienste
Application Programming Services-Schnittstelle mit Anwendungsprogrammen. Die Anwendungsprogrammierdienste von CICS bieten Funktionen wie Übersetzung auf Befehlsebene, CEDF (Debug-Funktion) und CECI (Befehlsinterpreter-Funktion). Wir werden in den kommenden Modulen ausführlicher darauf eingehen.
Überwachungsdienste
Monitoring Services überwachen verschiedene Ereignisse im CICS-Adressraum. Es enthält eine Reihe statistischer Informationen, die zur Systemoptimierung verwendet werden können.
Wir müssen die in CICS verwendeten Grundbegriffe kennen, um besser verstehen zu können, wie es funktioniert. Anwendungsprogramme verwenden CICS für die Kommunikation mit Remote- und lokalen Terminals und Subsystemen.
IBM 3270 Terminal
Das 3270 Information Display System ist eine Familie von Anzeige- und Druckerterminals. 3270 Terminals wurden verwendet, um über IBM Controller eine Verbindung zum Mainframe herzustellen. Heute ist eine 3270-Emulationssoftware verfügbar, sodass auch normale PCs als 3270-Terminals verwendet werden können. 3270-Terminals sind dumme Terminals und verarbeiten sie nicht selbst. Die gesamte Verarbeitung muss vom Anwendungsprogramm durchgeführt werden. IBM Terminals bestehen aus folgenden Komponenten:
CRT-Monitor
Der CRT-Monitor zeigt die Ausgabe- oder Eingabefelder des Anwendungsprogramms an. Ein Screenshot eines 3278-Modells eines CRT-Monitors ist unten dargestellt. Es hat die folgenden Eigenschaften -
Es kann 1920 Zeichen anzeigen.
Jede dieser 1920 Zeichenpositionen ist einzeln adressierbar.
Ein COBOL-Anwendungsprogramm kann Daten an alle Positionen auf dem Bildschirm senden.
Die Anzeigeeigenschaften wie Intensität, geschützt, nicht geschützt des Feldes können mit BMS eingestellt werden, auf die wir in den kommenden Modulen näher eingehen werden.
Tastatur
IBM Tastaturtasten sind in die folgenden zwei Kategorien unterteilt:
Non-AID Keys- Alle anderen Tasten für Alphabete, Ziffern, Satzzeichen usw. sind Non-Aid-Tasten. Wenn der Benutzer Text oder Zahlen mit Hilfe von Hilfsschlüsseln eingibt, weiß CICS nicht einmal, ob der Benutzer etwas eingibt oder nicht.
AID Keys- AID-Schlüssel werden als Attention Identifier Keys bezeichnet. CICS kann nur AID-Schlüssel erkennen. Nach Eingabe aller Eingaben übernimmt CICS nur dann die Kontrolle, wenn der Benutzer eine der AID-Tasten drückt. AID-Tasten: ENTER, PF1 bis PF24, PA1 bis PA3, CLEAR. AID-Schlüssel sind weiter in zwei Kategorien unterteilt -
PF Keys- PF-Tasten werden als Funktionstasten bezeichnet. PF-Schlüssel ermöglichen die Übertragung von Daten vom Terminal zum CICS. PF-Tasten sind ENTER und PF1 bis PF24.
PA Keys- PA-Tasten werden als Programmzugriffstasten bezeichnet. PA-Schlüssel erlauben keine Datenübertragung zwischen Terminal und CICS. PA-Tasten sind PA1 bis PA3 und CLEAR.
Transaktion
Ein CICS-Programm wird über eine Transaktion aufgerufen. Eine CICS-Transaktion ist eine Sammlung logisch verwandter Programme in einer Anwendung. Die gesamte Anwendung kann logisch in mehrere Transaktionen unterteilt werden.
Transaktionskennungen mit einer Länge von 1 bis 4 Zeichen werden verwendet, um die Transaktionen zu identifizieren, die die Benutzer ausführen möchten.
Ein Programmierer verknüpft ein Programm mit der Transaktionskennung, mit der alle Anwendungsprogramme für diese bestimmte Transaktion aufgerufen werden.
Aufgabe
Eine Aufgabe ist eine arbeitsspezifische Arbeitseinheit.
Benutzer rufen eine Anwendung mithilfe einer der Transaktionskennungen auf. CICS sucht nach der Transaktionskennung, um herauszufinden, welches Programm zuerst aufgerufen werden muss, um die angeforderte Arbeit auszuführen. Es erstellt eine Aufgabe, um die Arbeit zu erledigen, und überträgt die Kontrolle auf das erwähnte Programm.
Eine Transaktion kann durch mehrere Aufgaben abgeschlossen werden.
Eine Aufgabe kann Daten von dem Terminal empfangen und an das Terminal senden, von dem sie gestartet wurde. Es kann Dateien lesen und schreiben und auch andere Aufgaben starten.
Aufgabe vs. Transaktion
Der Unterschied zwischen einer Transaktion und einer Aufgabe besteht darin, dass mehrere Benutzer eine Transaktion aufrufen können, aber jeder Benutzer seine eigene Aufgabe initiiert.
LUW
LUW steht für Logical Unit of Work. Laut LUW sollte eine Arbeit vollständig oder gar nicht erledigt werden. Eine Aufgabe kann mehrere logische Arbeitseinheiten in CICS enthalten. Wir werden in den kommenden Modulen mehr darüber diskutieren.
Anwendung
Eine Anwendung besteht aus einer Reihe logisch gruppierter Programme, um mehrere Transaktionen zu bilden, mit denen eine bestimmte Aufgabe für den Endbenutzer ausgeführt wird.
Die fünf zuvor beschriebenen CICS-Systemkomponenten sind eine praktische Gruppierung von CICS-Systemprogrammen, von denen jedes seine eigenen speziellen Funktionen ausführt. Der Kern von CICS, der als CICS Nucleus bekannt ist und aus von IBM bereitgestellten CICS-Steuerungsprogrammen und Steuertabellen besteht.
Steuerprogramme
Der CICS-Kern wird durch die Steuerprogramme und die entsprechenden Steuertabellen aufgebaut. Es bietet einzigartige Vorteile. Es macht das CICS-System hochflexibel und damit wartungsfreundlich. Im Folgenden sind die wichtigen Steuerungsprogramme von CICS aufgeführt:
TCP
TCP wird als Terminal Control Program bezeichnet.
TCP wird zum Empfangen von Nachrichten vom Terminal verwendet.
Die Anforderungen an die Hardwarekommunikation werden beibehalten.
Es fordert CICS auf, die Aufgaben zu initiieren.
KCP
KCP ist als Task Control Program bekannt.
KCP wird verwendet, um gleichzeitig die Ausführung von Aufgaben und die zugehörigen Eigenschaften zu steuern.
Es behandelt alle Probleme im Zusammenhang mit Multitasking.
PCP
PCP ist als Programmsteuerungsprogramm bekannt.
PCP wird verwendet, um Programme zur Ausführung zu suchen und zu laden.
Es überträgt die Steuerung zwischen Programmen und gibt sie am Ende an das CICS zurück.
FCP
FCP ist als Dateisteuerungsprogramm bekannt.
FCP wird verwendet, um Anwendungsprogrammen Dienste wie das Lesen, Einfügen, Aktualisieren oder Löschen von Datensätzen in einer Datei bereitzustellen.
Es behält die ausschließliche Kontrolle über die Datensätze, um die Datenintegrität während der Datensatzaktualisierungen aufrechtzuerhalten.
SCP
SCP wird als Speichersteuerungsprogramm bezeichnet. Es wird verwendet, um die Zuweisung und Freigabe von Speicher innerhalb einer CICS-Region zu steuern.
Steuertabellen
CICS besteht aus von IBM bereitgestellten CICS-Steuerprogrammen und -Tabellen. Diese Tabellen müssen entsprechend mit den Anwendungsinformationen aktualisiert werden, damit CICS-Anwendungsprogramme erfolgreich ausgeführt werden können. Es folgen die wichtigen Steuertabellen -
TCT
TCT ist als Terminal Control Table bekannt.
Wenn wir uns bei einem CICS-Terminal anmelden, wird ein Eintrag in die TCT-Tabelle vorgenommen.
TCT enthält die Terminal-IDs, die mit der aktuellen CICS-Region verbunden sind.
Das Terminalsteuerungsprogramm erkennt zusammen mit der Terminalsteuertabelle die vom Terminal eingehenden Daten.
PCT
PCT wird als Programmsteuertabelle bezeichnet.
Es enthält die Transaktions-IDs (TRANSID) und die entsprechenden Programmnamen oder Programm-IDs.
TRANSID ist in der PCT-Tabelle eindeutig.
PPT
PPT wird als Verarbeitungsprogrammtabelle bezeichnet. PPT enthält Programmnamen oder Mapset-Namen, Task Use Counter, Sprache, Größe, Hauptspeicheradresse, Adresse der Ladebibliothek usw.
Der Programm- oder Mapset-Name ist in einer PPT-Tabelle eindeutig.
CICS empfängt die Transaktion und der Transaktion wird vom PCT ein entsprechender Programmname zugewiesen. Es wird geprüft, ob das Programm geladen ist oder nicht. Wenn es geladen wird, wird der Taskverwendungszähler um 1 erhöht. Wenn das Programm nicht geladen wird, wird zuerst das Programm geladen und der Taskverwendungszähler auf 1 gesetzt. Die Adresse der Ladebibliothek wird aus der PPT-Tabelle abgerufen.
FCT
FCT wird als Dateisteuertabelle bezeichnet.
Es enthält Dateinamen, Dateityp, Datensatzlänge usw.
Alle in einem CICS-Programm verwendeten Dateien müssen in FCT deklariert werden und werden von CICS selbst geöffnet und geschlossen.
Transaktion
Wenn eine Transaktionskennung TP02 in das CICS-Terminal eingegeben wird, prüft sie zunächst, ob dieser Transaktionskennung in der PCT-Tabelle ein Programm zugeordnet ist. Wenn es eines findet, sucht es in der PPT-Tabelle nach dem Speicherort des Programms, um es auszuführen.
Wenn das Programm bereits im Speicher verfügbar ist, beginnt es mit der Ausführung dieses bestimmten Programms. Wenn nicht, lädt es das Programm aus dem Sekundärspeicher in den Speicher und beginnt dann mit der Ausführung.
Transaktionslebenszyklus
Der Transaktionslebenszyklus umfasst die folgenden Schritte:
Schritt 1
Der Terminalbetreiber initiiert die Transaktion, indem er eine Transaktions-ID mit 1 bis 4 Zeichen eingibt und die EINGABETASTE drückt.
Schritt 2
Der TCP überprüft regelmäßig alle Terminals auf Eingabe. Wenn eine Nachricht empfangen wird, führt sie Folgendes aus:
Weist den SCP an, eine TIOA zu erstellen.
Platziert die Nachricht in der TIOA.
Übergibt die Steuerung an das KCP.
Schritt 3
Das KCP übernimmt die Kontrolle vom TCP und führt Folgendes aus:
Überprüft die Transaktions-ID und die Sicherheit.
Weist den SCP an, einen Aufgabensteuerungsbereich zu erstellen.
Weist der Aufgabe eine Priorität basierend auf der Terminalpriorität (in TCT festgelegt), der Bedienerpriorität (in SNT festgelegt) und der Transaktionspriorität (in PCT festgelegt) zu.
Fügt die Aufgabe der Warteschlange wartender Programme hinzu.
Versendet wartende Programme in der Reihenfolge ihrer Priorität.
Übergibt die Steuerung an den PCP.
Schritt 4
Der PCP übernimmt die Kontrolle vom KCP und führt folgende Schritte aus:
Findet das Programm und lädt es gegebenenfalls.
Überträgt die Steuerung an das Anwendungsprogramm.
Schritt 5
Das Anwendungsprogramm übernimmt die Kontrolle vom PCP und führt Folgendes aus:
Fordert den TCP auf, die Nachricht im Bereich WORKING STORAGE des Programms zu platzieren.
Fordert den FCP auf, Datensätze aus den Dateien abzurufen.
Schritt 6
Der FCP übernimmt die Kontrolle über das Anwendungsprogramm und führt folgende Schritte aus:
Fordert einen Dateiarbeitsbereich vom SCP an.
Informiert das KCP, dass diese Aufgabe warten kann, bis die E / A abgeschlossen ist.
Schritt 7
Das KCP macht Folgendes:
Versendet die nächste Aufgabe in der Warteschlange.
Versendet die alte Aufgabe erneut, wenn die E / A abgeschlossen ist.
Überträgt die Kontrolle an den FCP.
Schritt 8
Der FCP gibt die Kontrolle an das Anwendungsprogramm zurück.
Schritt 9
Das Anwendungsprogramm führt Folgendes aus:
Verarbeitet die Dateidaten.
Fordert TCP auf, eine E / A-Nachricht zu senden.
Gibt die Kontrolle an den PCP zurück.
Schritt 10
Der PCP gibt die Steuerung an den KCP zurück und fordert ihn auf, die Aufgabe zu beenden.
Schritt 11
Der KCP weist den SCP an, den gesamten der Aufgabe zugewiesenen Speicher freizugeben (außer TIOA).
Schritt 12
Das TCP führt Folgendes aus:
Sendet die Ausgabe an das Terminal.
Fordert den SCP auf, die TIOA freizugeben.
CICS-Transaktionen werden verwendet, um mehrere Vorgänge in der CICS-Region auszuführen. Wir werden die wichtigen CICS-Transaktionen von IBM im Detail diskutieren.
CESN
CESN wird als CICS Execute Sign On bezeichnet.
CESN wird verwendet, um sich bei der CICS-Region anzumelden.
Wir müssen die vom CICS-Administrator angegebene Benutzer-ID und das Kennwort angeben, um uns bei CICS anzumelden. Der folgende Screenshot zeigt, wie der Anmeldebildschirm aussieht -
CEDA
CEDA wird als CICS Execute Definition and Administration bezeichnet. Es wird von CICS-Systemadministratoren verwendet, um CICS-Tabelleneinträge und andere Verwaltungsaktivitäten zu definieren.
CEMT
CEMT wird als CICS Execute Master Terminal bezeichnet. Es wird verwendet, um den Status von CICS-Umgebungen abzufragen und zu aktualisieren sowie für andere Systemvorgänge.
Mit dem Befehl CEMT können wir Transaktionen, Aufgaben, Dateien, Programme usw. verwalten.
Um alle möglichen Optionen zu erhalten, geben Sie CEMT ein und drücken Sie die EINGABETASTE. Es werden alle Optionen angezeigt.
CEMT wird im Wesentlichen zum Laden eines neuen Programms in das CICS oder zum Laden einer neuen Kopie des Programms in das CICS verwendet, nachdem das Programm oder das Mapset geändert wurde.
Beispiel
Man kann den Status der angezeigten Datei überschreiben, um sie zu ändern. Das folgende Beispiel zeigt, wie eine Datei geschlossen wird -
CEMT ** Press ENTER & Following Screen is displayed ** STATUS: ENTER ONE OF THE FOLLOWING Inquire Perform Set ** Command to close a file ** CEMT SET FILE (file-name) CEMT I FILE (file-name)
CECI
CECI wird als CICS Execute Command Interpreter bezeichnet. Viele CICS-Befehle können mit CECI ausgeführt werden.
Mit CECI wird die Syntax des Befehls überprüft. Der Befehl wird nur ausgeführt, wenn die Syntax korrekt ist.
Geben Sie die CECI-Option nach dem Anmelden auf dem leeren CICS-Bildschirm ein. Sie erhalten eine Liste der verfügbaren Optionen.
Beispiel
Das folgende Beispiel zeigt, wie zugeordnete Ausgabedaten an das Terminal gesendet werden. Wir werden in den kommenden Modulen über MAPS diskutieren.
CECI SEND MAP (map-name) MAPSET (mapset-name) ERASE
CEDF
CEDF wird als CICS Execute Debug Facility bezeichnet. Es wird zum schrittweisen Debuggen des Programms verwendet, um Fehler zu finden.
Geben Sie CEDF ein und drücken Sie die Eingabetaste in der CICS-Region. Das Terminal befindet sich im EDF-Modus. Die Meldung wird angezeigt. Geben Sie nun die Transaktions-ID ein und drücken Sie die Eingabetaste. Nach der Initiierung wird mit jeder Eingabetaste eine Zeile ausgeführt. Bevor Sie einen CICS-Befehl ausführen, wird der Bildschirm angezeigt, in dem Sie die Werte ändern können, bevor Sie fortfahren.
CMAC
CMAC wird als CICS-Nachrichten für Abendcodes bezeichnet. Es wird verwendet, um die Erklärung und die Gründe für CICS Abend Codes zu finden.
Beispiel
Das folgende Beispiel zeigt, wie Sie Details für einen Abend-Code überprüfen -
CMAC abend-code
CESF
CESF wird als CICS Execute Sign Off bezeichnet. Es wird zum Abmelden von der CICS-Region verwendet.
Beispiel
Das folgende Beispiel zeigt, wie Sie sich von der CICS-Region abmelden.
CESF LOGOFF
CEBR
CEBR wird als CICS Execute Temporary Storage Browse bezeichnet. Es wird verwendet, um den Inhalt einer temporären Speicherwarteschlange oder TSQ anzuzeigen.
CEBR wird beim Debuggen verwendet, um zu überprüfen, ob die Elemente der Warteschlange ordnungsgemäß geschrieben und abgerufen werden. Wir werden in den kommenden Modulen mehr über TSQ diskutieren.
Beispiel
Das folgende Beispiel zeigt, wie der CEBR-Befehl aufgerufen wird.
CEBR queue-id
CICS-Konzepte
Jeder Befehl kann durch Ausführen einer Reihe von CICS-Makros erreicht werden. Wir werden einige grundlegende Funktionen diskutieren, die uns helfen, die Konzepte besser zu verstehen -
Multitasking
Mit dieser Funktion des Betriebssystems können mehrere Aufgaben gleichzeitig ausgeführt werden. Die Aufgabe kann darin bestehen, dasselbe Programm gemeinsam zu nutzen oder verschiedene Programme zu verwenden. Das CICS plant die Aufgabe in seiner eigenen Region.
Multithreading
Mit dieser Funktion des Betriebssystems können mehrere Aufgaben gleichzeitig ausgeführt werden, die dasselbe Programm gemeinsam nutzen. Damit Multithreading möglich ist, sollte ein Anwendungsprogramm a seinre-entrant program unter dem Betriebssystem oder a quasi-reentrant unter dem CICS.
Wiedereintritt
Ein wiedereintretendes Programm ist ein Programm, das sich nicht selbst ändert und nach einer Unterbrechung durch das Betriebssystem wieder in sich selbst eintreten und die Verarbeitung fortsetzen kann.
Quasi-Wiedereintritt
Ein Quasi-Wiedereintrittsprogramm ist ein Wiedereintrittsprogramm in einer CICS-Umgebung. CICS stellt den Wiedereintritt sicher, indem für jede Aufgabe ein eindeutiger Speicherbereich eingerichtet wird. Zwischen CICS-Befehlen hat der CICS das ausschließliche Recht, die CPU-Ressourcen zu verwenden, und kann andere CICS-Befehle anderer Aufgaben ausführen.
Es gibt Zeiten, in denen viele Benutzer gleichzeitig dasselbe Programm verwenden. Wir nennen esmulti-threading. Angenommen, 50 Benutzer verwenden ein Programm A. Hier stellt der CICS 50 Arbeitsspeicher für dieses Programm bereit, jedoch nur eine Prozedurabteilung. Und diese Technik ist bekannt alsquasi-reentrancy.
CICS-Programme werden in Mainframes in COBOL-Sprache geschrieben. Wir werden darüber diskutieren, ein einfaches COBOL-CICS-Programm zu schreiben, es zu kompilieren und dann auszuführen.
CICS-Programm
Wir werden ein einfaches COBOL-CICS-Programm schreiben, das eine Meldung auf dem CICS-Ausgabebildschirm anzeigt. Dieses Programm soll die Schritte zur Ausführung eines COBOL-CICS-Programms demonstrieren. Im Folgenden finden Sie die Schritte zum Codieren eines einfachen Programms:
Schritt 1
Melden Sie sich bei Mainframes an und öffnen Sie eine TSO-Sitzung.
Schritt 2
Erstellen Sie eine neue PDS, in der wir unser Programm codieren.
Schritt 3
Erstellen Sie ein neues Mitglied in der PDS und codieren Sie das folgende Programm:
IDENTIFICATION DIVISION. PROGRAM-ID. HELLO. DATA DIVISION. FILE SECTION. WORKING-STORAGE SECTION. 01 WS-MESSAGE PIC X(40). 01 WS-LENGTH PIC S9(4) COMP. PROCEDURE DIVISION. A000-MAIN-PARA. MOVE 'Hello World' TO WS-MESSAGE MOVE '+12' TO WS-LENGTH EXEC CICS SEND TEXT FROM (WS-MESSAGE) LENGHT(WS-LENGTH) END-EXEC EXEC CICS RETURN END-EXEC.
Schritt 4
Nachdem wir das Programm codiert haben, müssen wir es kompilieren. Wir können das Programm mit der folgenden JCL kompilieren -
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C //CICSCOB EXEC CICSCOB, //COPYLIB = ABC.XYZ.COPYLIB, //LOADLIB = ABC.XYZ.LOADLIB //LIB JCLLIB ORDER = CICSXXX.CICS.XXXPROC //CPLSTP EXEC DFHEITVL //TRN.SYSIN DD DSN = ABC.XYZ.PDS(HELLO),DISP = SHR //LKED.SYSIN DD * NAME HELLO(R) //
Schritt 5
Öffnen Sie eine CICS-Sitzung.
Schritt 6
Wir werden das Programm nun mit dem folgenden Befehl installieren:
CEMT SET PROG(HELLO) NEW.
Schritt 7
Führen Sie das Programm mit der zugehörigen Transaktions-ID aus. Die Transaktions-ID wird vom Administrator bereitgestellt. Es wird die folgende Ausgabe angezeigt -
Programmzusammenstellung
Das folgende Flussdiagramm zeigt die Schritte zum Kompilieren eines COBOL-CICS-Programms -
Übersetzer
Die Funktion eines Übersetzers besteht darin, in CICS-Befehlen nach Syntaxfehlern zu suchen. Es übersetzt sie in äquivalente COBOL-Anweisungen.
Compiler
Die Funktion eines Compilers besteht darin, die COBOL-Kopierbücher zu erweitern. Der Code wird kompiliert, nachdem der Quellcode auf Syntaxfehler überprüft wurde.
Verknüpfungseditor
Die Funktion eines Verknüpfungseditors besteht darin, verschiedene Objektmodule zu verknüpfen, um ein einzelnes Lademodul zu erstellen.
BMS wird als Basic Mapping Support bezeichnet. Eine Anwendung besteht aus formatierten Bildschirmen, die als Brücke zwischen dem Terminal und den CICS-Programmen fungieren. Für die Kommunikation zwischen dem Terminal und den CICS-Programmen verwenden wir CICS-Terminal-Eingabe- / Ausgabedienste. Wir verwenden BMS, um Bildschirmdesigns mit den richtigen Positionen und Attributen zu erstellen. Es folgen die Funktionen von BMS -
BMS fungiert als Schnittstelle zwischen dem Terminal und den CICS-Programmen.
Das Design und Format des Bildschirms unterscheidet sich von der Anwendungslogik.
BMS macht die Anwendungshardware unabhängig.
Formatierter Bildschirm
Der unten gezeigte Bildschirm ist ein Menübildschirm und kann mit BMS gestaltet werden. Die wichtigsten Punkte sind:
Der Bildschirm kann einen Titel, ein Datum und andere Informationen enthalten, die angezeigt werden sollen.
Die Optionen 1, 2 und 3 sind die unbenannten Felder, die die Titel des Bildschirms sind.
Im Feld Auswahl müssen wir die Eingabe bereitstellen. Diese Eingabe wird dann zur weiteren Verarbeitung an das CICS-Programm gesendet.
Am unteren Bildschirmrand werden Aktionstasten angezeigt.
Alle Felder und der Bildschirm selbst werden mit BMS-Makros definiert. Wenn die gesamte Karte definiert ist, können wir sie mit JCL zusammenstellen.
BMS-Grundbedingungen
Im Folgenden sind die Grundbegriffe aufgeführt, die wir in den kommenden Modulen verwenden werden:
Karte
Map ist ein Einzelbildschirmformat, das mithilfe von BMS-Makros erstellt werden kann. Es kann Namen mit 1 bis 7 Zeichen enthalten.
Mapset
Mapset ist eine Sammlung von Maps, die zu einem Lademodul verknüpft sind. Es sollte einen PPT-Eintrag haben. Es kann Namen von 1 bis 7 Zeichen haben.
BMS-Makros
BMS Map ist ein Programm, das in Assemblersprache geschrieben ist, um Bildschirme zu verwalten. Die drei Makros, die zum Definieren des Bildschirms verwendet werden, sind DFHMSD, DFHMDI und DFHMDF.
DFHMSD
Das DFHMSD-Makro generiert eine Mapset-Definition. Es ist eine Makro-ID, die zeigt, dass wir ein Mapset starten. Der Mapset-Name ist der Name des Lademoduls und ein Eintrag in der PPT-Tabelle muss vorhanden sein. Die folgende Tabelle zeigt die Liste der Parameter, die in DFHMSD verwendet werden können -
Sr.Nr. Parameter & Beschreibung 1 TYPE
TYPE wird verwendet, um den Kartentyp zu definieren. Wenn TYPE =
MAP - Physische Karte erstellt wird
DSECT - Symbolische Karte wird erstellt
&& SYSPARM - Physisch & Symbolisch, werden beide ENDGÜLTIG erstellt
- Um das Ende einer Kartensatzcodierung anzuzeigen.2 MODE
MODE wird verwendet, um Eingabe- / Ausgabeoperationen anzuzeigen. IF MODE =
IN - Nur für eine Eingabekarte
OUT - Nur für eine Ausgabekarte
INOUT Sowohl für die Eingabe- als auch für die Ausgabekarte3 LANG
LANG = ASM / COBOL / PL1
Legt die Sprache der DSECT-Struktur für das Kopieren in das Anwendungsprogramm fest.4 STORAGE
Wenn STORAGE =
AUTO - Um einen separaten symbolischen Kartenbereich für jedes Kartenset zu erhalten.
BASE - Um dieselbe Speicherbasis für die symbolischen Karten von mehr als einem Kartensatz zu haben5 CTRL
CRTL wird verwendet, um die Gerätesteuerungsanforderungen zu definieren. Wenn
STRG = FREEKB - Entsperren der Tastatur
FRSET - Zurücksetzen des MDT auf den Nullstatus
ALARM - Einstellen eines Alarms zur Bildschirmanzeigezeit
DRUCKEN - Anzeigen des an den Drucker zu sendenden Kartensatzes.6 TERM
TERM = Typ stellt die Geräteunabhängigkeit sicher, die erforderlich ist, wenn ein anderes als das 3270-Terminal verwendet wird.
7 TIOAPFX
TIOAPFX = YES / NO
YES - Zum Reservieren des Präfixbereichs (12 Byte) für BMS-Befehle, um ordnungsgemäß auf TIOA zuzugreifen. Erforderlich für die CICS-Befehlsebene.Beispiel
Das folgende Beispiel zeigt, wie eine Mapset-Definition codiert wird.
MPST01 DFHMSD TYPE = &SYSPARM, X CTRL = (FREEKB,FRSET), X LANG = COBOL, X STORAGE = AUTO, X TIOAPFX = YES, X MODE = INOUT, X TERM = 3270 DFHMSD TYPE = FINAL END
DFHMDI
Das DFHMDI-Makro generiert Kartendefinitionen. Es zeigt, dass wir eine neue Karte starten. Auf Mapname folgt das DFHMDI-Makro. Der Kartenname wird zum Senden oder Empfangen von Karten verwendet. Die folgende Tabelle zeigt die Parameter, die wir in einem DFHMDI-Makro verwenden -
Sr.Nr. Parameter & Beschreibung 1 SIZE
GRÖSSE = (Linie, Spalte)
Dieser Parameter gibt die Größe der Karte an. Mit BMS können wir einen Bildschirm mit mehreren Karten erstellen. Dieser Parameter wird wichtig, wenn wir mehr als eine Karte in einem einzelnen Kartensatz verwenden.2 LINE
Es zeigt die Startzeilennummer der Karte an.
3 COLUMN
Es gibt die Startspaltennummer der Karte an.
4 JUSTIFY
Es wird verwendet, um die gesamte Karte oder die Kartenfelder anzugeben, die links oder rechts ausgerichtet werden sollen.
5 CTRL
CRTL wird verwendet, um die Gerätesteuerungsanforderungen zu definieren. Wenn
STRG = FREEKB - Entsperren der Tastatur
FRSET - Zurücksetzen des MDT auf den Nullstatus
ALARM - Einstellen eines Alarms zur Bildschirmanzeigezeit
DRUCKEN - Anzeigen der an den Drucker zu sendenden Karte6 TIOAPFX
TIOAPFX = JA / NEIN
JA - Um den Präfixbereich (12 Byte) für BMS-Befehle zu reservieren, damit diese ordnungsgemäß auf TIOA zugreifen können. Erforderlich für die CICS-Befehlsebene.
Beispiel
Das folgende Beispiel zeigt, wie eine Kartendefinition codiert wird -
MAPSTD DFHMDI SIZE = (20,80), X LINE = 01, X COLUMN = 01, X CTRL = (FREEKB,FRSET)
DFHMDF
Das DFHMDF-Makro wird zum Definieren von Feldnamen verwendet. Der Feldname wird angegeben, für den das DFHMDF-Makro codiert ist. Dieser Feldname wird im Programm verwendet. Wir schreiben keinen Feldnamen gegen ein konstantes Feld, das wir nicht im Programm verwenden möchten. Die folgende Tabelle zeigt die Liste der Parameter, die in einem DFHMDF-Makro verwendet werden können.
Sr.Nr. Parameter & Beschreibung 1 POS
Dies ist die Position auf dem Bildschirm, an der das Feld angezeigt werden soll. Ein Feld beginnt mit seinem Attributbyte. Wenn Sie also POS = (1,1) codieren, befindet sich das Attributbyte für dieses Feld in Zeile 1 in Spalte 1, und die tatsächlichen Daten beginnen in Spalte 2.
2 LENGTH
Dies ist die Länge des Feldes ohne das Attributbyte.
3 INITIAL
Dies sind die Zeichendaten für ein Ausgabefeld. Wir verwenden dies, um Beschriftungen und Titel für den Bildschirm anzugeben und sie unabhängig vom Programm zu halten. Für das erste Feld im Menübildschirm codieren wir beispielsweise: INITIAL = 'MENU'.
4 JUSTIFY
Es wird verwendet, um die gesamte Karte oder die Kartenfelder anzugeben, die links oder rechts ausgerichtet werden sollen.
5 ATTRB
ATTRB = (ASKIP / PROT / UNPROT, NUM, BRT / NORM / DRK, IC, FSET) Beschreibt die Attribute des Feldes.
ASKIP - Autoskip. In dieses Feld können keine Daten eingegeben werden. Der Cursor springt zum nächsten Feld.
PROT - Geschütztes Feld. In dieses Feld können keine Daten eingegeben werden. Wenn Daten eingegeben werden, wird der Status der Eingabesperre ausgelöst.
UNPROT - Ungeschütztes Feld. Es können Daten eingegeben werden, die für alle Eingabefelder verwendet werden.
NUM - Numerisches Feld. Es sind nur Zahlen (0 bis 9) und Sonderzeichen ('.' Und '-') zulässig.
BRT - Helle Anzeige eines Feldes (Hervorhebung).
NORM - Normale Anzeige.
DRK - Dunkle Anzeige.
IC - Cursor einfügen. Der Cursor wird in diesem Feld positioniert. Wenn IC mehrmals angegeben wird, wird der Cursor in das letzte Feld gesetzt.
FSET - Feldsatz. MDT ist so eingestellt, dass die Felddaten vom Terminal an den Host-Computer gesendet werden, unabhängig davon, ob das Feld tatsächlich vom Benutzer geändert wird.
6 PICIN
PICIN gilt für das Datenfeld, das als Eingabe wie PICIN = 9 (8) verwendet wird.
7 PICOUT
PICIN gilt für das Datenfeld, das als Ausgabe wie PICOUT = Z (8) verwendet wird.
Beispiel
Das folgende Beispiel zeigt, wie eine Felddefinition codiert wird -
DFHMDF POS = (01,01), X LENGTH = 7, X INITIAL = ‘SCREEN1’, X ATTRB = (PROT,NORM) STDID DFHMDF POS = (01,70), X LENGTH = 08, X ATTRB = (PROT,NORM)
BMS empfängt die vom Benutzer eingegebenen Daten und formatiert sie dann in einen symbolischen Kartenbereich. Das Anwendungsprogramm hat nur Zugriff auf die Daten in der symbolischen Karte. Das Anwendungsprogramm verarbeitet die Daten und die Ausgabe wird an die symbolische Karte gesendet. BMS führt die Ausgabe der symbolischen Daten mit der physischen Karte zusammen.
Physikalische Karte
Physische Karte ist ein Lademodul in der Ladebibliothek, das Informationen darüber enthält, wie die Karte angezeigt werden soll.
Es enthält die Details zu den Attributen aller Felder in der Karte und deren Positionen.
Es enthält das Anzeigeformat der Karte für ein bestimmtes Terminal.
Es wird mit BMS-Makros codiert. Es wird separat zusammengestellt und in die CICS-Bibliothek eingebunden.
Symbolische Karte
Eine symbolische Karte ist ein Kopierbuch in der Bibliothek. Das Kopierbuch wird vom CICS-Anwendungsprogramm zum Senden und Empfangen von Daten vom Terminal verwendet.
Es enthält alle variablen Daten, die in den Abschnitt WORKINGSTORAGE des Programms kopiert werden.
Es hat alle benannten Felder. Der Anwendungsprogrammierer verwendet diese Felder zum Lesen und Schreiben von Daten in die Karte.
Skipper und Stopper Field
Wenn wir für ein ungeschütztes benanntes Feld in einer Karte eine Länge von 10 angegeben haben, bedeutet dies, dass das Namensfeld Werte annehmen kann, deren Länge 10 nicht überschreiten darf. Wenn Sie diese Karte jedoch mit CICS anzeigen und Werte für dieses Feld eingeben Auf dem Bildschirm können wir mehr als 10 Zeichen eingeben, dh bis zum Ende des Bildschirms, und wir können sogar in die nächste Zeile eingeben. Um dies zu verhindern, verwenden wir das Skipper- oder Stopperfeld. Ein Skipper-Feld ist im Allgemeinen ein unbenanntes Feld der Länge 1, das nach einem benannten Feld angegeben wird.
Skipper Field
Wenn wir ein Skipper-Feld nach dem benannten ungeschützten Feld platzieren, positioniert sich der Cursor bei Eingabe des Werts nach Erreichen der angegebenen Länge automatisch zum nächsten ungeschützten Feld. Das folgende Beispiel zeigt, wie Sie ein Skipper-Feld hinzufügen -
NUMBER DFHMDF POS = (01,01), X LENGTH = 5, X ATTRB = (UNPROT,IC) DFHMDF POS = (01,07), X LENGTH = 1, X ATTRB = (ASKIP)
Stopperfeld
Wenn wir nach dem benannten ungeschützten Feld ein Stopperfeld platzieren, stoppt der Cursor bei Eingabe des Werts nach Erreichen der angegebenen Länge seine Positionierung. Das folgende Beispiel zeigt, wie Sie ein Stopperfeld hinzufügen -
NUMBER DFHMDF POS = (01,01), X LENGTH = 5, X ATTRB = (UNPROT,IC) DFHMDF POS = (01,07), X LENGTH = 1, X ATTRB = (PROT)
Attribut Byte
Das Attributbyte eines Feldes speichert Informationen über die physikalischen Eigenschaften des Feldes. Das folgende Diagramm und die Tabelle erläutern die Bedeutung jedes Bits.
Bitposition Beschreibung Biteinstellungen 0 & 1 Bestimmt durch den Inhalt von Bit 2 bis 7 2 & 3 Schutz & Schicht 00 - Ungeschütztes Alphanumerisches
01 - Ungeschütztes Numerisches
10 - Geschützter Stopp
11 - Geschütztes Überspringen4 & 5 Intensität 00 - Normal
01 - Normal
10 - Hell
11 - Keine Anzeige (Dunkel)6 Muss immer Null sein 7 Geändertes Daten-Tag 0 - Feld wurde nicht geändert
1 - Feld wurde geändertGeändertes Daten-Tag
Modified Data Tag (MDT) ist das letzte Bit im Attributbyte.
MDT ist ein Flag, das ein einzelnes Bit enthält. Es gibt an, ob der Wert an das System übertragen werden soll oder nicht.
Der Standardwert ist 1, wenn der Feldwert geändert wird.
Wenn MDT 0 ist, können keine Daten übertragen werden. und wenn MDT 1 ist, können Daten übertragen werden.
Karte senden
Der Befehl send map schreibt formatierte Ausgaben in das Terminal. Es wird verwendet, um die Karte vom Anwendungsprogramm an das Terminal zu senden. Das folgende Codesegment zeigt, wie Sie eine Karte an das Terminal senden -
EXEC CICS SEND MAP('map-name') MAPSET('mapset-name') [FROM(data-area)] [LENGTH(data_value)] [DATAONLY] [MAPONLY] [CURSOR] [ERASE/ERASEAUP] [FREEKB] [FRSET] END-EXEC
In der folgenden Tabelle sind die in einem Befehl zum Senden einer Karte verwendeten Parameter zusammen mit ihrer Bedeutung aufgeführt.
Sr.Nr. Parameter & Beschreibung 1 Map-name
Es ist der Name der Karte, die wir senden möchten. Es zwingend erforderlich ist.
2 Mapset-name
Es ist der Name des Kartensatzes, der den Kartennamen enthält. Der Name des Kartensatzes wird benötigt, es sei denn, er entspricht dem Namen der Karte.
3 FROM
Wenn wir uns für die Verwendung eines anderen DSECT-Namens entschieden haben, müssen wir die Option FROM (dsect-name) zusammen mit dem Befehl SEND MAP verwenden.
4 MAPONLY
Dies bedeutet, dass keine Daten aus Ihrem Programm in die Karte eingefügt werden sollen und nur die Informationen in der Karte übertragen werden.
5 DATAONLY
Es ist das logische Gegenteil von MAPONLY. Wir verwenden es, um die variablen Daten in einer Anzeige zu ändern, die bereits erstellt wurde. Es werden nur die Daten Ihres Programms an den Bildschirm gesendet. Die Konstanten in der Karte werden nicht gesendet.
6 ERASE
Dadurch wird der gesamte Bildschirm gelöscht, bevor das, was wir senden, angezeigt wird.
7 ERASEUP
Es werden nur ungeschützte Felder gelöscht.
8 FRSET
Flag Reset deaktiviert das geänderte Daten-Tag im Attributbyte für alle Felder auf dem Bildschirm, bevor das, was Sie senden, dort abgelegt wird.
9 CURSOR
Es kann verwendet werden, um den Cursor auf dem Terminalbildschirm zu positionieren. Der Cursor kann gesetzt werden, indem -1 in den L-Teil des Feldes bewegt und dann die Karte gesendet wird.
10 ALARM
Dadurch ertönt der akustische Alarm.
11 FREEKB.
Die Tastatur wird entsperrt, wenn FREEKB entweder in der Karte oder im Befehl SEND angegeben wird.
12 PRINT
Damit kann die Ausgabe eines SEND-Befehls auf einem Drucker gedruckt werden.
13 FORMFEED
Der Drucker stellt das Papier oben auf der nächsten Seite wieder her, bevor die Ausgabe gedruckt wird.
Karte erhalten
Wenn wir Eingaben von einem Terminal empfangen möchten, verwenden wir den Befehl RECEIVE MAP. Die Parameter MAP und MAPSET haben genau die gleiche Bedeutung wie für den Befehl SEND MAP. Das folgende Codesegment zeigt, wie Sie eine Karte erhalten -
EXEC CICS RECEIVE MAP('map-name') MAPSET('mapset-name') [INTO(data-area)] [FROM(data-area)] [LENGTH(data_value)] END-EXEC
Mapset-Ausführung
Die folgenden Schritte sind erforderlich, um ein Mapset zu entwickeln und auszuführen:
Step 1 - Öffnen Sie eine TSO-Sitzung.
Step 2 - Erstellen Sie eine neue PDS.
Step 3 - Codieren Sie ein Mapset in einem neuen Mitglied entsprechend der Anforderung.
Step 4 - Stellen Sie das Mapset mit der vom CICS-Administrator bereitgestellten JCL zusammen.
Step 5 - Öffnen Sie eine CICS-Sitzung.
Step 6 - Installieren Sie das Programm mit dem Befehl -
CEMT SET PROG (Mapset-Name) NEU
Step 7 - Geben Sie den folgenden Befehl ein, um die Karte an das Terminal zu senden. -
CECI SEND MAP (Kartenname) MAPSET (Kartensatzname) ERASE FREEKB
Jedes Anwendungsprogramm würde eine Schnittstelle erfordern, um mit dem CICS zu interagieren. EIB (Execute Interface Block) fungiert als Schnittstelle, über die Anwendungsprogramme mit dem CICS kommunizieren können. Die EIB enthält die Informationen, die während der Ausführung eines Programms erforderlich sind.
Eingeschränkte COBOL-Verben
Beim Codieren eines CICS-Programms können wir keine Befehle verwenden, die das Steuerelement direkt an das MVS zurückgeben. Wenn wir diese COBOL-Verben codieren, wird kein Kompilierungsfehler ausgegeben, aber wir erhalten möglicherweise unvorhersehbare Ergebnisse. Im Folgenden sind die COBOL-Verben aufgeführt, die in einem CICS-Programm nicht verwendet werden sollten.
Datei-E / A-Anweisungen wie Öffnen, Lesen, Schreiben, Umschreiben, Schließen, Löschen und Starten. Alle Datei-E / A in CICS werden vom Dateisteuerungsmodul verwaltet und haben ihre eigenen Anweisungen wie READ, WRITE, REWRITE und DELETE, die wir in den kommenden Modulen diskutieren werden.
Die Abteilung für Dateibereich und Umgebung ist nicht erforderlich.
COBOL-Anweisungen, die Betriebssystemfunktionen wie Akzeptieren, Datum / Uhrzeit aufrufen, können nicht verwendet werden.
Verwenden Sie nicht DISPLAY, MERGE, STOP RUN und GO BACK.
Schnittstellenblock ausführen
Execute Interface Block (EIB) ist ein Steuerblock, der vom CICS für jedes Programm automatisch geladen wird.
Die EIB ist für eine Aufgabe eindeutig und für die Dauer der Aufgabe vorhanden. Es enthält eine Reihe von systembezogenen Informationen, die der Aufgabe entsprechen.
Es enthält Informationen zu Transaktionskennung, Uhrzeit, Datum usw., die vom CICS während der Ausführung eines Anwendungsprogramms verwendet werden.
Jedes Programm, das als Teil der Aufgabe ausgeführt wird, hat Zugriff auf dieselbe EIB.
Die Daten in der EIB zur Laufzeit können angezeigt werden, indem das Programm im CEDF-Modus ausgeführt wird.
EIB-Felder
Die folgende Tabelle enthält eine Liste der Felder, die in der EIB vorhanden sind -
EIB-Feld PIC-Klausel Beschreibung EIBAID X (1) Hilfetaste gedrückt EIBCALEN S9 (4) COMP Es enthält die Länge von DFHCOMMAREA EIBDATE S9 (7) COMP-3 Es enthält das aktuelle Systemdatum EIBRCODE X (6) Es enthält den Rückkehrcode der letzten Transaktion EIBTASKN S9 (7) COMP-3 Es enthält die Aufgabennummer EIBTIME S9 (7) COMP-3 Es enthält die aktuelle Systemzeit EIBTRMID X (4) Terminal-ID EIBTRNID X (4) Transaktionskennung Klassifizierung von CICS-Programmen
CICS-Programme werden in die folgenden drei Kategorien eingeteilt, die wir nacheinander diskutieren werden:
- Nicht-Konversationsprogramme
- Gesprächsprogramme
- Pseudokonversationsprogramme - Wir werden im nächsten Modul diskutieren
Nicht-Konversationsprogramme
Während der Ausführung von Nicht-Konversationsprogrammen ist kein menschliches Eingreifen erforderlich. Alle notwendigen Eingaben werden beim Starten des Programms bereitgestellt.
Sie ähneln Batch-Programmen, die im Batch-Modus ausgeführt werden. In CICS werden sie daher selten entwickelt.
Wir können sagen, dass sie nur zum Anzeigen einer Folge von Bildschirmen in regelmäßigen Zeitabständen verwendet werden.
Beispiel
Das folgende Beispiel zeigt ein nicht gesprächiges Programm, das einfach "HALLO WORLD" auf dem CICS-Terminal als Ausgabe anzeigt -
IDENTIFICATION DIVISION. PROGRAM-ID. HELLO. DATA DIVISION. WORKING-STORAGE SECTION. 01 WS-MESSAGE PIC X(30). PROCEDURE DIVISION. ******************************************************** * SENDING DATA TO SCREEN * ******************************************************** MOVE 'HELLO WORLD' TO WS-MESSAGE EXEC CICS SEND TEXT FROM (WS-MESSAGE) END-EXEC ******************************************************** * TASK TERMINATES WITHOUT ANY INTERACTION FROM THE USER* ******************************************************** EXEC CICS RETURN END-EXEC.
Gesprächsprogramm
Das Senden einer Nachricht an das Terminal und das Empfangen einer Antwort vom Benutzer wird als a bezeichnet conversation. Eine Online-Bewerbung erreicht eine Konversation zwischen dem Benutzer und dem Anwendungsprogramm durch ein Paar von SEND- und RECEIVE-Befehlen. Die wichtigsten Punkte eines Konversationsprogramms sind:
Das System sendet eine Nachricht an den Bildschirm und wartet auf die Antwort des Benutzers.
Die Zeit, die der Benutzer benötigt, um zu antworten, ist bekannt als Think Time. Diese Zeit ist beträchtlich hoch, was ein Hauptnachteil von Konversationsprogrammen ist.
Der Benutzer gibt die erforderlichen Eingaben ein und drückt eine AID-Taste.
Die Anwendung verarbeitet die Benutzereingaben und sendet die Ausgaben.
Das Programm wird zu Beginn in den Hauptspeicher geladen und bleibt bis zum Ende der Aufgabe erhalten.
Beispiel
Das folgende Beispiel zeigt ein Konvertierungsprogramm, das Eingaben vom Benutzer entgegennimmt und dann einfach dieselbe Eingabe auf dem CICS-Terminal wie die Ausgabe anzeigt.
IDENTIFICATION DIVISION. PROGRAM-ID. HELLO. DATA DIVISION. WORKING-STORAGE SECTION. 01 WS-MESSAGE PIC X(30) VALUE SPACES. PROCEDURE DIVISION. MOVE 'ENTER MESSAGE' TO WS-MESSAGE ******************************************************** * SENDING DATA FROM PROGRAM TO SCREEN * ******************************************************** EXEC CICS SEND TEXT FROM (WS-MESSAGE) END-EXEC ******************************************************** * GETTING INPUT FROM USER * ******************************************************** EXEC CICS RECEIVE INTO(WS-MESSAGE) END-EXEC EXEC CICS SEND TEXT FROM (WS-MESSAGE) END-EXEC ******************************************************** * COMMAND TO TERMINATE THE TRANSACTION * ******************************************************** EXEC CICS RETURN END-EXEC.
Ab sofort haben wir Nichtkonvertierungs- und Konvertierungsprogramme behandelt. Konvertierungsprogramme haben einen großen Nachteilthink timeist erheblich hoch. Um dieses Problem zu lösen, kam die Pseudokonvertierungsprogrammierung ins Spiel. Wir werden jetzt mehr über Pseudokonvertierungsprogramme diskutieren.
Pseudo-Konvertierungsprogramm
Es folgt die Abfolge von Ereignissen, die in einem Pseudokonvertierungsprogramm stattfinden -
Step 1 - Das System sendet eine Nachricht an den Bildschirm und beendet die Transaktion. Dabei wird die Transaktion angegeben, die gestartet werden soll, wenn die Benutzereingabe empfangen wird.
Step 2- Das System weist die von dieser Transaktion verwendeten Ressourcen anderen im System ausgeführten Transaktionen zu. So können wir die Ressourcen in einem Pseudokonvertierungsprogramm verwenden, bis der Benutzer die Eingabe gibt.
Step 3- Das System fragt den Terminal-Eingang in regelmäßigen Abständen ab. Wenn die Eingabe empfangen wird, wird sie verarbeitet und die Ausgabe wird angezeigt.
Step 4 - Das Anwendungsprogramm wird bei Bedarf in den Hauptspeicher geladen und bei Nichtgebrauch freigegeben.
Pseudokonvertierungstechniken
Der wichtige Punkt bei Pseudokonversationen ist die Datenübertragung zwischen den einzelnen Aufgaben. Wir werden über die Techniken zum Übergeben von Daten diskutieren.
COMMAREA
COMMAREA ist als Kommunikationsbereich bekannt. COMMAREA wird verwendet, um Daten zwischen Aufgaben zu übertragen. Das folgende Beispiel zeigt, wie COMMAREA übergeben wird, wobei WSCOMMAREA und WS-COMMAREA-LENGTH im Abschnitt Arbeitsspeicher deklariert sind.
EXEC CICS RETURN
TRANSID ('transaction-id')
COMMAREA (WS-COMMAREA)
LENGTH (WS-COMMAREA-LENGTH)
END-EXEC.
DFHCOMMAREA
DFHCOMMAREA ist ein spezieller Speicherbereich, der von CICS für jede Aufgabe bereitgestellt wird.
Es wird verwendet, um Daten von einem Programm an ein anderes Programm zu übergeben. Die Programme können in derselben Transaktion oder auch in einer anderen Transaktion vorhanden sein.
Es wird im Verknüpfungsabschnitt des Programms auf der Ebene 01 deklariert.
Es sollte dieselbe Bildklausel wie WS-COMMAREA haben.
Daten können mithilfe einer MOVE-Anweisung von DFHCOMMAREA nach WS-COMMAREA zurück verschoben werden.
MOVE DFHCOMMAREA TO WS-COMMAREA.
Beispiel
Nach dem Senden der Karte endet die Aufgabe und wartet auf die Benutzerantwort. Zu diesem Zeitpunkt müssen die Daten gespeichert werden, da die Transaktion zwar beendet wurde, die Transaktion jedoch nicht. Wenn diese Transaktion fortgesetzt werden soll, ist der vorherige Status der Aufgabe erforderlich. Der Benutzer gibt die Eingabe ein. Dies muss nun vom Befehl RECEIVE MAP empfangen und dann validiert werden. Das folgende Beispiel zeigt, wie COMMAREA und DFHCOMMAREA deklariert werden -
WORKING-STORAGE SECTION.
01 WS-COMMAREA.
05 WS-DATA PIC X(10).
LINKAGE SECTION.
01 DFHCOMMAREA.
05 LK-DATA PIC X(10).
Pseudocode
Nachstehend ist die Logik des Pseudocodes angegeben, die wir bei der Pseudoprogrammierung verwenden.
MOVE DFHCOMMAREA TO WS-COMMAREA
IF EIBCALEN = 0
STEP1: SEND MAP
STEP2: MOVE <internal-transaction-id1> to WS-COMMAREA
STEP3: ISSUE CONDITIONAL RETURN
ELSE
IF WS-COMMAREA = <internal-transaction-id1>
STEP4: RECEIVE MAP
STEP5: PROCESS DATA
STEP6: SEND OUTPUT MAP
STEP7: MOVE <internal-transaction-ID2> to WS-COMMAREA
STEP8: ISSUE CONDITIONAL RETURN
END-IF
END-IF
STEP9: REPEAT STEP3 TO STEP7 UNTIL EXIT
Beispiel
Das folgende Beispiel zeigt ein Pseudokonvertierungsprogramm -
******************************************************************
* PROGRAM TO DEMONSTRATE PSEUDO-CONVERSATION *
******************************************************************
IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 WS-MESSAGE PIC X(30).
01 WS-COMMAREA PIC X(10) VALUE SPACES.
LINKAGE SECTION.
01 DFHCOMMAREA PIC X(10).
PROCEDURE DIVISION.
MOVE DFHCOMMAREA TO WS-COMMAREA
IF WS-COMMAREA = SPACES
******************************************************************
* TRANSACTION GETTING EXECUTED FOR THE FIRST TIME *
******************************************************************
MOVE 'HELLO' TO WS-MESSAGE
EXEC CICS SEND TEXT
FROM (WS-MESSAGE)
END-EXEC
MOVE 'FIRST' TO WS-COMMAREA
******************************************************************
* TASK ENDS AS A RESULT OF RETURN. IF AID KEY PRESSED, NEXT *
* TRANSACTION SHOULD BE TP002. DATA PASSED FROM WS-COMMAREA TO *
* DFHCOMMAREA *
******************************************************************
EXEC CICS RETURN
TRANSID('TP002')
COMMAREA(WS-COMMAREA)
END-EXEC
******************************************************************
* IF COMMAREA IS NOT EMPTY , THEN TP002 HAS BEEN EXECUTED ONCE *
* ALREADY, USER INTERACTION IS FACILITATED BY RECEIVE *
******************************************************************
ELSE
EXEC CICS RECEIVE
INTO(WS-MESSAGE)
END-EXEC
EXEC CICS SEND TEXT
FROM (WS-MESSAGE)
END-EXEC
******************************************************************
* TASK ENDS AS A RESULT OF RETURN, NO NEXT TRANSACTION SPECIFIED *
* TO BE EXECUTED *
******************************************************************
EXEC CICS RETURN
END-EXEC
END-IF.
Vorteile der Pseudokonvertierung
Im Folgenden sind die Vorteile der Pseudokonvertierung aufgeführt:
Die Ressourcen werden am besten genutzt. Ressourcen werden freigegeben, sobald das Programm vorübergehend ausgesetzt wird.
Es sieht so aus, als ob es sich im Konversationsmodus befindet.
Es hat eine bessere Reaktionszeit.
Rückgabeanweisungen
Im Folgenden sind die beiden Arten von return-Anweisungen aufgeführt, die in CICS verwendet werden:
Return-1
Wenn die folgende bedingungslose Rückgabeanweisung ausgegeben wird, werden die Aufgabe und die Transaktion (Programm) beendet.
EXEC CICS RETURN
END-EXEC.
Return-2
Wenn die folgende bedingte Rückgabe ausgegeben wird, dh die Rückgabe mit der TRANSID-Anweisung, kehrt das Steuerelement mit der nächsten auszuführenden Transid zum CICS zurück. Die nächste Transaktion beginnt, wenn der Benutzer eine AID-Taste drückt.
EXEC CICS RETURN
TRANSID ('trans-id')
[COMMAREA(WS-COMMAREA)]
END-EXEC.
Wie bereits in früheren Modulen erläutert, werden AID-Schlüssel als Attention Identifier Keys bezeichnet. CICS kann nur AID-Schlüssel erkennen. Nach Eingabe aller Eingaben übernimmt der CICS nur dann die Kontrolle, wenn der Benutzer eine der AID-Tasten drückt. Zu den AID-Tasten gehören ENTER, PF1 bis PF24, PA1 bis PA3 und CLEAR.
Überprüfen der AID-Schlüssel
Die vom Benutzer gedrückte Taste wird mit EIBAID überprüft.
EIBAID ist ein Byte lang und enthält den tatsächlichen Aufmerksamkeitskennungswert, der im 3270-Eingabestream verwendet wird.
CICS stellt uns einen vorcodierten Satz von Variablen zur Verfügung, die im Anwendungsprogramm verwendet werden können, indem die folgende Anweisung geschrieben wird:
DFHAID KOPIEREN
DFHAID
DFHAID ist ein Copybook, das in Anwendungsprogrammen verwendet wird, um vorcodierte CICS-Variablensätze einzuschließen. Der folgende Inhalt ist im DFHAID-Heft enthalten -
01 DFHAID.
02 DFHNULL PIC X VALUE IS ' '.
02 DFHENTER PIC X VALUE IS ''''.
02 DFHCLEAR PIC X VALUE IS '_'.
02 DFHCLRP PIC X VALUE IS '¦'.
02 DFHPEN PIC X VALUE IS '='.
02 DFHOPID PIC X VALUE IS 'W'.
02 DFHMSRE PIC X VALUE IS 'X'.
02 DFHSTRF PIC X VALUE IS 'h'.
02 DFHTRIG PIC X VALUE IS '"'.
02 DFHPA1 PIC X VALUE IS '%'.
02 DFHPA2 PIC X VALUE IS '>'.
02 DFHPA3 PIC X VALUE IS ','.
02 DFHPF1 PIC X VALUE IS '1'.
02 DFHPF2 PIC X VALUE IS '2'.
02 DFHPF3 PIC X VALUE IS '3'.
02 DFHPF4 PIC X VALUE IS '4'.
02 DFHPF5 PIC X VALUE IS '5'.
02 DFHPF6 PIC X VALUE IS '6'.
02 DFHPF7 PIC X VALUE IS '7'.
02 DFHPF8 PIC X VALUE IS '8'.
02 DFHPF9 PIC X VALUE IS '9'.
02 DFHPF10 PIC X VALUE IS ':'.
02 DFHPF11 PIC X VALUE IS '#'.
02 DFHPF12 PIC X VALUE IS '@'.
02 DFHPF13 PIC X VALUE IS 'A'.
02 DFHPF14 PIC X VALUE IS 'B'.
02 DFHPF15 PIC X VALUE IS 'C'.
02 DFHPF16 PIC X VALUE IS 'D'.
02 DFHPF17 PIC X VALUE IS 'E'.
02 DFHPF18 PIC X VALUE IS 'F'.
02 DFHPF19 PIC X VALUE IS 'G'.
02 DFHPF20 PIC X VALUE IS 'H'.
02 DFHPF21 PIC X VALUE IS 'I'.
02 DFHPF22 PIC X VALUE IS '¢'.
02 DFHPF23 PIC X VALUE IS '.'.
02 DFHPF24 PIC X VALUE IS '<'.
Beispiel
Das folgende Beispiel zeigt, wie das DFHAID-Copybook in einem Anwendungsprogramm verwendet wird.
IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.
DATA DIVISION.
WORKING-STORAGE SECTION.
COPY DFHAID.
PROCEDURE DIVISION.
A000-AIDKEY-PARA.
EVALUATE EIBAID
WHEN DFHAID
PERFORM A000-PROCES-PARA
WHEN DFHPF1
PERFORM A001-HELP-PARA
WHEN DFHPF3
PERFORM A001-EXIT-PARA
END-EVALUATE.
Cursorpositionierung
Es gibt zwei Möglichkeiten, die in der Kartendefinition angegebene Position zu überschreiben.
Eine Möglichkeit besteht darin, die Bildschirmposition relativ zur Zeilen- und Spaltennummer in der Option CURSOR im Befehl send map anzugeben.
Eine andere Möglichkeit besteht darin, -1 in die symbolische Kartenvariable mit dem Suffix L zu verschieben. Senden Sie dann die Karte mit der Option CURSOR in der SEND MAP.
Beispiel
Das folgende Beispiel zeigt, wie Sie die Cursorposition für das Feld NAME überschreiben.
MOVE -1 TO NAMEL
EXEC CICS SEND
MAP ('map-name')
MAPSET ('name-field')
ERASE
FREEKB
CURSOR
END-EXEC.
Attribute dynamisch ändern
Wenn wir beim Senden einer Karte andere Attribute für ein anderes als das in der Karte angegebene Feld haben möchten, können wir dies überschreiben, indem wir das Feld im Programm festlegen. Im Folgenden finden Sie eine Erklärung zum Überschreiben von Attributen eines Felds:
Um die Attribute eines Feldes zu überschreiben, müssen wir DFHATTR in das Anwendungsprogramm aufnehmen. Es wird von CICS bereitgestellt.
Das erforderliche Attribut kann aus der Liste ausgewählt und in die symbolische Feldvariable mit dem Suffix 'A' verschoben werden.
DFHATTR enthält den folgenden Inhalt:
01 CICS-ATTRIBUTES.
05 ATTR-UXN PIC X(01) VALUE SPACE.
05 ATTR-UXMN PIC X(01) VALUE 'A'.
05 ATTR-UXNL PIC X(01) VALUE 'D'.
05 ATTR-UXMNL PIC X(01) VALUE 'E'.
05 ATTR-UXBL PIC X(01) VALUE 'H'.
05 ATTR-UXMBL PIC X(01) VALUE 'I'.
05 ATTR-UXD PIC X(01) VALUE '<'.
05 ATTR-UXMD PIC X(01) VALUE '('.
05 ATTR-U9N PIC X(01) VALUE '&'.
05 ATTR-U9MN PIC X(01) VALUE 'J'.
05 ATTR-U9NL PIC X(01) VALUE 'M'.
05 ATTR-U9MNL PIC X(01) VALUE 'N'.
05 ATTR-U9BL PIC X(01) VALUE 'Q'.
05 ATTR-U9MBL PIC X(01) VALUE 'R'.
05 ATTR-U9D PIC X(01) VALUE '*'.
05 ATTR-U9MD PIC X(01) VALUE ')'.
05 ATTR-PXN PIC X(01) VALUE '-'.
05 ATTR-PXMN PIC X(01) VALUE '/'.
05 ATTR-PXNL PIC X(01) VALUE 'U'.
05 ATTR-PXMNL PIC X(01) VALUE 'V'.
05 ATTR-PXBL PIC X(01) VALUE 'Y'.
05 ATTR-PXMBL PIC X(01) VALUE 'Z'.
05 ATTR-PXD PIC X(01) VALUE '%'.
05 ATTR-PSN PIC X(01) VALUE '0'.
05 ATTR-PSMN PIC X(01) VALUE '1'.
05 ATTR-PSNL PIC X(01) VALUE '4'.
05 ATTR-PSMNL PIC X(01) VALUE '5'.
05 ATTR-PSBL PIC X(01) VALUE '8'.
05 ATTR-PSMBL PIC X(01) VALUE '9'.
05 ATTR-PSD PIC X(01) VALUE '@'.
05 ATTR-PSMD PIC X(01) VALUE "'".
Mit CICS können wir auf viele Arten auf Dateidaten zugreifen. Die meisten Dateizugriffe sind im Online-System zufällig, da die zu verarbeitenden Transaktionen nicht gestapelt und in eine Reihenfolge sortiert werden. Daher unterstützt CICS die üblichen Direktzugriffsmethoden - VSAM und DAM (Direct Access Method). Außerdem können wir mit Datenbankmanagern auf Daten zugreifen.
Direktzugriff
Es folgen die Befehle, die für die zufällige Verarbeitung verwendet werden:
Sr.Nr. | Befehle & Beschreibung |
---|---|
1 | LESEN Der Befehl READ liest Daten aus einer Datei mit dem Primärschlüssel. |
2 | SCHREIBEN Der Schreibbefehl wird verwendet, um einer Datei neue Datensätze hinzuzufügen. |
3 | UMSCHREIBEN Mit dem Befehl REWRITE wird ein Datensatz geändert, der bereits in einer Datei vorhanden ist. |
4 | LÖSCHEN Mit dem Befehl DELETE wird ein Datensatz gelöscht, der in einer Datei vorhanden ist. |
Sequentieller Zugriff
Es folgen die Befehle, die für die sequentielle Verarbeitung verwendet werden:
Sr.Nr. | Befehle & Beschreibung |
---|---|
1 | STARTBR STARTBR wird als Start Browse bezeichnet. |
2 | READNEXT / READPREV Wenn wir einen STARTBR-Befehl ausgeben, werden die Datensätze nicht verfügbar. |
3 | RESETBR Mit dem Befehl RESETBR können wir unseren Startpunkt mitten im Durchsuchen zurücksetzen. |
4 | ENDBR Wenn wir eine Datei nacheinander gelesen haben, beenden wir das Durchsuchen mit dem Befehl ENDBR. |
Es gibt viele Arten von abendsund Fehler, die bei der Verwendung einer CICS-Anwendung auftreten können. Fehler können aufgrund von Hardware- oder Softwareproblemen auftreten. Wir werden in diesem Modul über Fehler und Fehlerbehandlung diskutieren.
CICS-Fehler
Im Folgenden sind die CICS-Fehler aufgeführt, die bei der Ausführung von CICS-Anwendungen auftreten können:
Einige erwartete CICS-Fehler treten auf, wenn die Bedingungen im CICS-System nicht normal sind. Wenn wir beispielsweise einen bestimmten Datensatz lesen und der Datensatz nicht gefunden wird, wird der Fehler "Nicht gefunden" angezeigt.Mapfailist ein ähnlicher Fehler. Fehler in dieser Kategorie werden durch explizite Logik im Programm behandelt.
Logische Fehler treten aus bestimmten Gründen auf, z. B. durch Division durch Null, unzulässiges Zeichen im numerischen Feld oder Transaktions-ID-Fehler.
Fehler, die sich auf Hardware oder andere Systembedingungen beziehen, liegen außerhalb der Kontrolle eines Anwendungsprogramms. Beispiel: Beim Zugriff auf eine Datei wird ein Eingabe- / Ausgabefehler angezeigt.
Fehlerbehandlungsbefehle
CICS bietet verschiedene Mechanismen, um die Fehler zu identifizieren und in unseren Programmen zu behandeln. Im Folgenden sind die Befehle aufgeführt, mit denen die erwarteten CICS-Fehler behandelt werden:
Sr.Nr. | Befehle und Beschreibung behandeln |
---|---|
1 | Griffbedingung Die Handle-Bedingung wird verwendet, um die Steuerung des Programms auf einen Absatz oder ein Prozeduretikett zu übertragen. |
2 | Handle Abend Wenn ein Programm aus bestimmten Gründen wie einem Eingabe- / Ausgabefehler abgebrochen wird, kann es mit dem Befehl Handle Abend CICS behandelt werden. |
3 | Abend Der Befehl Abend wird verwendet, um die Aufgabe absichtlich zu beenden. |
4 | Bedingung ignorieren Die Ignorierbedingung wird verwendet, wenn keine Aktion ausgeführt werden soll, wenn ein bestimmter Abbruch oder Fehler auftritt, der in der Ignorierbedingung erwähnt wird. |
5 | Nohandle Für jeden CICS-Befehl kann kein Handle angegeben werden. |
Das CICS Program Control Program (PCP) verwaltet den Ablauf von Anwendungsprogrammen. Alle Anwendungsprogramme müssen einen Eintrag in der Verarbeitungsprogrammtabelle haben. Im Folgenden sind die Befehle aufgeführt, die für Programmsteuerungsdienste verwendet werden:
- XCTL
- Link
- Load
- Release
- Return
Programm Logische Ebenen
Die Anwendungsprogramme, die unter CICS ausgeführt werden, haben verschiedene logische Ebenen. Das erste Programm, das die Steuerung direkt empfängt, befindet sich auf der höchsten logischen Ebene, dh auf Ebene 1. Das verknüpfte Programm befindet sich auf der nächsten logischen Ebene des Verknüpfungsprogramms. Die XCTL-Programme werden auf derselben Ebene ausgeführt. Es wird klar sein, wann wir später in diesem Modul Link und XCTL durchgehen werden. Das folgende Bild zeigt die logischen Ebenen -
XCTL
Die grundlegende Erklärung von XCTL lautet wie folgt:
Mit dem XCTL-Befehl wird die Steuerung auf derselben Ebene von einem Programm an ein anderes übergeben.
Es erwartet nicht die Kontrolle zurück.
Es ähnelt der GO TO-Anweisung.
Ein XCTL-Programm kann eine Pseudokonversation sein.
Beispiel
Das folgende Beispiel zeigt, wie Sie mit dem Befehl XCTL das Steuerelement an ein anderes Programm übergeben.
IDENTIFICATION DIVISION.
PROGRAM-ID. PROG1.
WORKING-STORAGE SECTION.
01 WS-COMMAREA PIC X(100).
PROCEDURE DIVISION.
EXEC CICS XCTL
PROGRAM ('PROG2')
COMMAREA (WS-COMMAREA)
LENGTH (100)
END-EXEC.
Dieser Befehl überträgt die zu übergebende Steuerung mit 100 Datenbytes an das Programm 'PROG2'. COMMAREA ist ein optionaler Parameter und der Name des Bereichs, der die zu übergebenden Daten enthält, oder der Bereich, an den die Ergebnisse zurückgegeben werden sollen.
Verknüpfung
Der Link-Befehl wird verwendet, um die Steuerung auf ein anderes Programm auf einer niedrigeren Ebene zu übertragen. Es erwartet die Kontrolle zurück. Ein verknüpftes Programm kann nicht pseudokonversativ sein.
Beispiel
Das folgende Beispiel zeigt, wie Sie mit dem Link-Befehl das Steuerelement an ein anderes Programm übergeben.
IDENTIFICATION DIVISION.
PROGRAM-ID. PROG1.
WORKING-STORAGE SECTION.
01 WS-COMMAREA PIC X(100).
PROCEDURE DIVISION.
EXEC CICS LINK
PROGRAM ('PROG2')
COMMAREA (WS-COMMAREA)
LENGTH (100)
END-EXEC.
Belastung
Der Befehl Laden wird zum Laden eines Programms oder einer Tabelle verwendet. Es folgt die Syntax des Befehls Laden -
EXEC CICS LOAD
PROGRAM ('name')
END-EXEC.
Freisetzung
Der Befehl Release wird verwendet, um ein Programm oder eine Tabelle freizugeben. Es folgt die Syntax des Befehls Release -
EXEC CICS RELEASE
PROGRAM ('name')
END-EXEC.
Rückkehr
Der Befehl return wird verwendet, um das Steuerelement auf die nächsthöhere logische Ebene zurückzusetzen. Es folgt die Syntax des Befehls Return -
EXEC CICS RETURN
PROGRAM ('name')
COMMAREA (data-value)
LENGTH (data-value)
END-EXEC.
Intervallsteuerungsoperationen
Es gibt folgende zwei Arten von Intervallsteuerungsoperationen:
ASKTIME
ASKTIME wird verwendet, um die aktuelle Uhrzeit und das Datum oder den Zeitstempel anzufordern. Wir verschieben diesen Wert dann in die funktionierende Speichervariable innerhalb des Programms. Es folgt die Syntax des ASKTIME-Befehls -
EXEC CICS ASKTIME
[ABSTIME(WS-TIMESTAMP)]
END-EXEC.
FORMATTIME
FORMATTIME formatiert den Zeitstempel basierend auf den Optionen, die für das Datum JJJTT, JJMMTT oder JJTTMM sein können, in das erforderliche Format. DATESEP gibt das Trennzeichen für DATE an, ebenso wie die Variable TIMESEP für TIME. Es folgt die Syntax des Befehls FORMATTIME -
EXEC CICS FORMATTIME
ABSTIME(WS-TIMESTAMP)
[YYDDD(WS-DATE)]
[YYMMDD(WS-DATE)]
[YYDDMM(WS-DATE)]
[DATESEP(WS-DATE-SEP)]
[TIME(WS-TIME)]
[TIMESEP(WS-TIME-SEP)]
END-EXEC.
In CICS stehen verschiedene Notizblöcke zum Speichern von Daten oder zum Übertragen von Daten zwischen Transaktionen zur Verfügung. Es gibt fünf Speicherbereiche, die von CICS bereitgestellt werden und die wir in diesem Modul diskutieren werden.
COMMAREA
Die COMMAREA verhält sich wie ein Notizblock, mit dem Daten von einem Programm an ein anderes Programm übergeben werden können, entweder innerhalb derselben Transaktion oder von verschiedenen Transaktionen. Es sollte im LINKAGE-ABSCHNITT unter Verwendung des DFHCOMMAREA-Namens definiert werden.
Gemeinsamer Arbeitsbereich
Jede Transaktion in der CICS-Region kann auf den gemeinsamen Arbeitsbereich zugreifen. Daher müssen Format und Verwendung von allen Transaktionen im System vereinbart werden, die sich für die Verwendung entscheiden. In der gesamten CICS-Region gibt es nur eine CWA.
Transaktionsarbeitsbereich
Der Transaktionsarbeitsbereich wird verwendet, um Daten zwischen den Anwendungsprogrammen zu übertragen, mit denen in derselben Transaktion ausgeführt wird. TWA existiert nur für die Dauer der Transaktion. Seine Größe ist in der Programmsteuertabelle definiert.
Temporäre Speicherwarteschlange
Temporary Storage Queue (TSQ) ist eine Funktion, die vom Temporary Storage Control Program (TSP) bereitgestellt wird.
Eine TSQ ist eine Warteschlange von Datensätzen, die von verschiedenen Aufgaben oder Programmen in derselben CICS-Region erstellt, gelesen und gelöscht werden können.
Eine Warteschlangenkennung wird verwendet, um TSQ zu identifizieren.
Ein Datensatz innerhalb einer TSQ wird durch die relative Position identifiziert, die als Artikelnummer bekannt ist.
Auf die Datensätze in TSQ bleibt zugegriffen, bis die gesamte TSQ explizit gelöscht wird.
Die Datensätze in TSQ können nacheinander oder direkt gelesen werden.
TSQs können in den Hauptspeicher oder den Hilfsspeicher im DASD geschrieben werden.
WRITEQ TS
Dieser Befehl wird verwendet, um Elemente zu einer vorhandenen TSQ hinzuzufügen. Mit diesem Befehl können wir auch eine neue TSQ erstellen. Es folgt die Syntax des Befehls WRITEQ TS -
Syntax
EXEC CICS WRITEQ TS
QUEUE ('queue-name')
FROM (queue-record)
[LENGTH (queue-record-length)]
[ITEM (item-number)]
[REWRITE]
[MAIN /AUXILIARY]
END-EXEC.
Im Folgenden sind die Details der Parameter aufgeführt, die im Befehl WRITEQ TS verwendet werden.
Die QUEUE wird durch den Namen identifiziert, der in diesem Parameter erwähnt wird.
Mit den Optionen FROM und LENGTH werden der Datensatz, der in die Warteschlange geschrieben werden soll, und seine Länge angegeben.
Wenn die Option ITEM angegeben ist, weist CICS dem Datensatz in der Warteschlange eine Artikelnummer zu und setzt den in dieser Option angegebenen Datenbereich auf die Artikelnummer. Wenn der Datensatz eine neue Warteschlange startet, ist die zugewiesene Artikelnummer 1 und die nachfolgenden Artikelnummern folgen nacheinander.
Mit der Option REWRITE wird ein Datensatz aktualisiert, der bereits in der Warteschlange vorhanden ist.
Die Option MAIN / AUXILIARY wird verwendet, um Datensätze im Haupt- oder Hilfsspeicher zu speichern. Die Standardeinstellung ist AUXILIARY.
READQ TS
Dieser Befehl wird zum Lesen der temporären Speicherwarteschlange verwendet. Es folgt die Syntax von READQ TS -
Syntax
EXEC CICS READQ TS
QUEUE ('queue-name')
INTO (queue-record)
[LENGTH (queue-record-length)]
[ITEM (item-number)]
[NEXT]
END-EXEC.
DELETEQ TS
Mit diesem Befehl wird die temporäre Speicherwarteschlange gelöscht. Es folgt die Syntax von DELETEQ TS -
Syntax
EXEC CICS DELETEQ TS
QUEUE ('queue-name')
END-EXEC.
Transient Data Queue
Die Warteschlange für vorübergehende Daten ist vorübergehender Natur, da sie schnell erstellt und gelöscht werden kann. Es erlaubt nur sequentiellen Zugriff.
Der Inhalt der Warteschlange kann nur einmal gelesen werden, da er nach einem Lesevorgang zerstört wird und daher der Name Transient.
Es kann nicht aktualisiert werden.
Es erfordert einen Eintrag in DCT.
WRITEQ TD
Mit diesem Befehl werden vorübergehende Datenwarteschlangen geschrieben, die immer in eine Datei geschrieben werden. Es folgt die Syntax des WRITEQ TD-Befehls -
Syntax
EXEC CICS WRITEQ TD
QUEUE ('queue-name')
FROM (queue-record)
[LENGTH (queue-record-length)]
END-EXEC.
READQ TD
Dieser Befehl wird zum Lesen der Warteschlange für vorübergehende Daten verwendet. Es folgt die Syntax von READQ TD -
Syntax
EXEC CICS READQ TD
QUEUE ('queue-name')
INTO (queue-record)
[LENGTH (queue-record-length)]
END-EXEC.
DELETEQ TD
Mit diesem Befehl wird die Warteschlange für vorübergehende Daten gelöscht. Es folgt die Syntax von DELETEQ TD -
Syntax
EXEC CICS DELETEQ TD
QUEUE ('queue-name')
END-EXEC.
Die gegenseitige Kommunikation zwischen zwei oder mehr Systemen ist bekannt als intercommunication.
Vorteile der Interkommunikation
Die wichtigsten Vorteile der Interkommunikation sind:
Wir müssen die Daten nicht auf allen Systemen replizieren.
Benutzer müssen keine Verbindungen zu mehreren Systemen halten, um auf die auf ihnen gespeicherten Daten zugreifen zu können.
Es verbessert die Leistung der Anwendung.
Grundlegende Terminologien
Man muss über Kenntnisse der im CICS-System verwendeten grundlegenden Terminologien verfügen. Es folgen die Grundbegriffe -
Lokales System
Ein lokales System ist ein System, das eine Anforderung zur Interkommunikation initiiert.
Lokale Ressource
Eine lokale Ressource ist eine Ressource, die auf dem lokalen System liegt.
Remote-System
Ein entferntes System ist ein System, das als Ergebnis einer Interkommunikationsanforderung initiiert wird.
Remote-Ressource
Eine Remote-Ressource ist eine Ressource, die auf dem Remote-System liegt.
MVS Sysplex
MVS Sysplex ist eine Konfiguration mehrerer MVS-Betriebssysteme. Sie arbeiten als ein einziges System, indem sie Funktionen und Programme gemeinsam nutzen.
CICSPlex
CICSPlex wird allgemein als eine Reihe miteinander verbundener CICS-Regionen beschrieben, die die Kundenarbeitslast verarbeiten. Ein CICSPlex ist eine Reihe miteinander verbundener CICS-Regionen, die Terminals, Anwendungen, Ressourcen usw. besitzen.
Interkommunikationsmethoden
Es gibt zwei Möglichkeiten, wie CICS mit anderen Systemen kommunizieren kann:
MRO - Der Betrieb mehrerer Regionen wird verwendet, wenn zwei CICS-Regionen innerhalb desselben MVSPLEX miteinander kommunizieren müssen.
ISC - Die systemübergreifende Kommunikation wird verwendet, wenn eine CICS-Region auf einem lokalen Server mit einer CICS-Region auf dem REMOTE-Server kommunizieren muss.
Während der Arbeit mit CICS können Abbrüche auftreten. Im Folgenden finden Sie die gängigen Abbruchcodes mit ihrer Beschreibung, mit deren Hilfe Sie die Probleme beheben können.
Sr.Nr. | Code & Beschreibung |
---|---|
1 | ASRA Programmprüfungsausnahme |
2 | AEI0 Programm-ID-Fehler |
3 | AEI9 Map Fail-Bedingung |
4 | AEIO Zweitschlüssel |
5 | AEIN Datensatz duplizieren |
6 | AEID Dateiende erreicht |
7 | AEIS Datei ist nicht geöffnet |
8 | AEIP Ungültige Anforderungsbedingung |
9 | AEY7 Nicht berechtigt, die Ressource zu verwenden |
10 | APCT Programm nicht gefunden |
11 | AFCA Datensatz nicht gefunden |
12 | AKCT Timeout-Fehler |
13 | ABM0 Angegebene Karte nicht gefunden |
14 | AICA Programm in Endlosschleife |
15 | AAOW Interner Logikfehler |