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 Ausgabekarte

    3

    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 haben

    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 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 Karte

    6

    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 Überspringen
    4 & 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ändert

    Geä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