CICS - szybki przewodnik

CICS to system DB / DC używany w aplikacjach online. CICS został opracowany, ponieważ wsadowy system operacyjny może wykonywać tylko programy wsadowe. Programy CICS można pisać w językach COBOL, C, C ++, Java itp. Obecnie użytkownicy potrzebują informacji w ciągu kilku sekund iw czasie rzeczywistym. Aby zapewnić tak szybką usługę, potrzebujemy systemu, który może przetwarzać informacje online. CICS umożliwia użytkownikom komunikowanie się z systemem zaplecza w celu uzyskania żądanych informacji. Przykłady programów online obejmują system bankowości internetowej, rezerwację lotów itp. Poniższy rysunek przedstawia komponenty CICS i ich wzajemne powiązania -

Funkcje CICS

Główne funkcje wykonywane przez CICS w aplikacji są następujące:

  • CICS zarządza żądaniami od jednoczesnych użytkowników w aplikacji.

  • Chociaż wielu użytkowników pracuje nad systemem CICS, ale daje to użytkownikowi wrażenie, że jest tylko jednym użytkownikiem.

  • CICS zapewnia dostęp do plików danych w celu ich odczytu lub aktualizacji w aplikacji.

Funkcje CICS

Funkcje CICS są następujące -

  • CICS jest systemem operacyjnym samym w sobie, ponieważ zarządza własną pamięcią masową procesora, ma własnego menedżera zadań, który obsługuje wykonywanie wielu programów i udostępnia własne funkcje zarządzania plikami.

  • CICS zapewnia środowisko online w wsadowym systemie operacyjnym. Przesłane zlecenia są wykonywane natychmiast.

  • CICS to uogólniony interfejs przetwarzania transakcji.

  • Możliwe jest jednoczesne posiadanie dwóch lub więcej regionów CICS, ponieważ CICS działa jako zadanie wsadowe w systemie operacyjnym na zapleczu.

Sam CICS działa jako system operacyjny. Jego zadaniem jest zapewnienie środowiska do wykonywania aplikacji online. CICS działa w jednym regionie, partycji lub przestrzeni adresowej. CICS obsługuje planowanie programów działających w jego ramach. CICS działa jako zadanie wsadowe i możemy je przeglądać w buforze, wydając komendę PREFIX CICS *. Istnieje pięć głównych usług świadczonych przez CICS. Wszystkie te usługi razem wykonują zadanie.

Środowisko CICS

Oto usługi, które będziemy szczegółowo omawiać krok po kroku -

  • Usługi systemowe
  • Usługi transmisji danych
  • Usługi przetwarzania danych
  • Usługi programowania aplikacji
  • Usługi monitorowania
  • Usługi systemowe

CICS utrzymuje funkcje kontrolne do zarządzania alokacją lub cofaniem alokacji zasobów w systemie, które są następujące:

  • Task Control- Kontrola zadań zapewnia funkcje planowania zadań i wielozadaniowości. Dba o stan wszystkich zadań CICS. Kontrola zadań przydziela czas procesora między współbieżnymi zadaniami CICS. To się nazywamultitasking. CICS stara się nadać priorytet czasowi odpowiedzi na najważniejsze zadanie.

  • Program Control- Kontrola programów zarządza ładowaniem i zwalnianiem programów użytkowych. Zaraz po rozpoczęciu zadania konieczne staje się powiązanie go z odpowiednim programem użytkowym. Chociaż wiele zadań może wymagać użycia tego samego programu użytkowego, CICS ładuje tylko jedną kopię kodu do pamięci. Każde zadanie niezależnie przechodzi przez ten kod, więc wielu użytkowników może uruchamiać transakcje, które jednocześnie używają tej samej fizycznej kopii programu aplikacji.

  • Storage Control- Kontrola pamięci zarządza pozyskiwaniem i zwalnianiem pamięci głównej. Kontrola pamięci masowej pozyskuje, kontroluje i zwalnia pamięć dynamiczną. Pamięć dynamiczna jest używana dla obszarów wejścia / wyjścia, programów itp.

  • Interval Control - Interval Control oferuje usługi timera.

Usługi transmisji danych

Interfejs usług transmisji danych z telekomunikacyjnymi metodami dostępu, takimi jak BTAM, VTAM i TCAM, do obsługi żądań przesyłania danych z programów aplikacji.

  • CICS zwalnia programy aplikacyjne z ciężaru zajmowania się problemami sprzętowymi terminali dzięki zastosowaniu Basic Mapping Support (BMS).

  • CICS zapewnia obsługę wielu regionów (MRO), przez którą może się komunikować więcej niż jeden region CICS w tym samym systemie.

  • CICS zapewnia komunikację międzysystemową (ISC), za pośrednictwem której region CICS w systemie może komunikować się z regionem CICS w innym systemie.

Usługi przetwarzania danych

Interfejs usług obsługi danych z metodami dostępu do danych, takimi jak BDAM, VSAM itp.

  • CICS ułatwia obsługę żądań obsługi danych z programów użytkowych. CICS udostępnia programistom aplikacji zestaw komend do obsługi zbioru danych i dostępu do bazy danych oraz powiązanych operacji.

  • Usługi Data Handling Services łączą się z metodami dostępu do baz danych, takimi jak IMS / DB, DB2, itp. Oraz ułatwiają obsługę żądań baz danych z programów aplikacyjnych.

  • CICS ułatwia zarządzanie integralnością danych poprzez kontrolę jednoczesnych aktualizacji rekordów, ochronę danych jako zadanie ABEND oraz ochronę danych w przypadku awarii systemu.

Usługi programowania aplikacji

Interfejs usług programowania aplikacji z programami użytkowymi. Usługi programowania aplikacji CICS zapewniają takie funkcje, jak tłumaczenie na poziomie poleceń, CEDF (narzędzie do debugowania) i CECI (narzędzie do interpretowania poleceń). Bardziej szczegółowo omówimy w nadchodzących modułach.

Usługi monitorowania

Usługi monitorowania monitorują różne zdarzenia w przestrzeni adresowej CICS. Zawiera szereg informacji statystycznych, które można wykorzystać do dostrojenia systemu.

Musimy znać podstawowe terminy używane w CICS, aby lepiej zrozumieć, jak to działa. Aplikacje używają CICS do komunikacji ze zdalnymi i lokalnymi terminalami i podsystemami.

Terminal IBM 3270

System wyświetlania informacji 3270 to rodzina terminali wyświetlaczy i drukarek. Do połączenia z komputerem mainframe za pośrednictwem kontrolerów IBM używano terminali 3270. Obecnie dostępne jest oprogramowanie emulujące 3270, co oznacza, że ​​nawet zwykłe komputery PC mogą być używane jako terminale 3270. Terminale 3270 są głupie i same nie przetwarzają. Całe przetwarzanie musi być wykonane przez aplikację. Terminale IBM składają się z następujących komponentów -

Monitor CRT

Monitor CRT wyświetla dane wyjściowe lub pola wejściowe programu użytkowego. Zrzut ekranu monitora CRT 3278 pokazano poniżej. Ma następujące cechy -

  • Jest w stanie wyświetlić 1920 znaków.

  • Każda z tych pozycji 1920 znaków jest indywidualnie adresowana.

  • Aplikacja COBOL może wysyłać dane do wszystkich pozycji na ekranie.

  • Charakterystyki wyświetlania, takie jak intensywność, chronione, niechronione pole można ustawić za pomocą BMS, o czym będziemy szczegółowo omawiać w kolejnych modułach.

Klawiatura

Klawisze klawiatury IBM są podzielone na następujące dwie kategorie -

  • Non-AID Keys- Wszystkie inne klawisze alfabetu, cyfry, znaki interpunkcyjne itp. Nie są klawiszami pomocnymi. Gdy użytkownik wpisze tekst lub liczby, używając klawiszy innych niż pomocnicze, CICS nie będzie nawet wiedział, czy użytkownik coś wpisuje, czy nie.

  • AID Keys- Klucze AID są znane jako klucze identyfikujące uwagę. CICS może wykrywać tylko klucze AID. Po wpisaniu wszystkich danych wejściowych, tylko gdy użytkownik naciśnie jeden z klawiszy AID, CICS przejmuje kontrolę. Klawisze AID: ENTER, PF1 do PF24, PA1 do PA3, CLEAR. Klucze AID są dalej podzielone na dwie kategorie -

    • PF Keys- Klawisze PF są znane jako klawisze funkcyjne. Klucze PF umożliwiają przesyłanie danych z terminala do CICS. Klawisze PF to ENTER i PF1 do PF24.

    • PA Keys- Klucze PA są znane jako klucze dostępu do programu. Klucze PA nie pozwalają na przesyłanie danych między terminalem a CICS. Klawisze PA to PA1 do PA3 i CLEAR.

    Transakcja

    Program CICS jest wywoływany za pośrednictwem transakcji. Transakcja CICS to zbiór logicznie powiązanych programów w aplikacji. Całość można podzielić logicznie na kilka transakcji.

    • Identyfikatory transakcji o długości od 1 do 4 znaków służą do identyfikacji transakcji, które użytkownik chce wykonać.

    • Programista łączy jeden program z identyfikatorem transakcji, który jest używany do wywoływania wszystkich programów użytkowych dla tej konkretnej transakcji.

    Zadanie

    Zadanie to jednostka pracy specyficzna dla użytkownika.

    • Użytkownicy wywołują aplikację przy użyciu jednego z identyfikatorów transakcji. CICS wyszukuje identyfikator transakcji, aby dowiedzieć się, który program należy wywołać jako pierwszy w celu wykonania żądanej pracy. Tworzy zadanie do wykonania pracy i przekazuje kontrolę do wspomnianego programu.

    • Transakcję można zakończyć za pomocą kilku zadań.

    • Zadanie może odbierać i wysyłać dane do terminala, który je uruchomił. Potrafi czytać i zapisywać pliki, a także może rozpoczynać inne zadania.

    Zadanie a transakcja

    Różnica między transakcją a zadaniem polega na tym, że kilku użytkowników może wywołać transakcję, ale każdy użytkownik inicjuje własne zadanie.

    LUW

    LUW oznacza logiczną jednostkę pracy. LUW stwierdza, że ​​dana praca powinna być wykonana w całości lub wcale. Zadanie może zawierać kilka logicznych jednostek pracy w CICS. Więcej na ten temat omówimy w kolejnych modułach.

    Podanie

    Aplikacja to szereg logicznie pogrupowanych programów tworzących kilka transakcji, które są używane do wykonania określonego zadania dla użytkownika końcowego.

    Pięć opisanych wcześniej komponentów systemu CICS to wygodne grupowanie programów systemu CICS, z których każdy wykonuje swoje własne, wyspecjalizowane funkcje. Rdzeń CICS, znany jako CICS Nucleus, składa się z dostarczonych przez IBM programów sterujących CICS i tabel sterujących.

    Programy sterujące

    Jądro CICS jest konstruowane przez programy sterujące i odpowiadające im tabele sterujące. Zapewnia wyjątkowe korzyści. Dzięki temu system CICS jest wysoce elastyczny, a tym samym łatwy w utrzymaniu. Poniżej przedstawiono ważne programy sterujące CICS -

    TCP

    Protokół TCP jest znany jako program sterujący terminalem.

    • TCP jest używany do odbierania wiadomości z terminala.

    • Utrzymuje wymagania sprzętowe dotyczące komunikacji.

    • Żąda od CICS zainicjowania zadań.

    KCP

    KCP jest znany jako program kontroli zadań.

    • KCP służy do jednoczesnej kontroli wykonywania zadań i związanych z nimi właściwości.

    • Obsługuje wszystkie zagadnienia związane z wielozadaniowością.

    PCP

    PCP jest znany jako Program sterujący programem.

    • PCP służy do lokalizowania i ładowania programów do wykonania.

    • Przekazuje kontrolę między programami i na końcu zwraca ją z powrotem do CICS.

    FCP

    FCP jest znany jako program kontroli plików.

    • FCP służy do dostarczania aplikacjom usług takich jak odczyt, wstawianie, aktualizowanie lub usuwanie rekordów w pliku.

    • Zachowuje wyłączną kontrolę nad rekordami w celu zachowania integralności danych podczas aktualizacji rekordów.

    SCP

    SCP jest znany jako program kontroli pamięci. Służy do kontrolowania przydzielania i zwalniania pamięci w regionie CICS.

    Tabele kontrolne

    CICS składa się z dostarczonych przez IBM programów sterujących CICS i tabel. Tabele te należy odpowiednio zaktualizować o informacje o aplikacji, aby umożliwić pomyślne wykonywanie aplikacji CICS. Poniżej znajdują się ważne tabele kontrolne -

    TCT

    TCT jest znany jako tablica kontrolna terminala.

    • Kiedy logujemy się do terminala CICS, w tabeli TCT dokonywany jest wpis.

    • TCT zawiera identyfikatory terminali, które są podłączone do bieżącego regionu CICS.

    • Program sterujący terminalem wraz z tablicą sterującą terminala rozpoznają dane przychodzące z terminala.

    PCT

    PCT jest znane jako tabela sterowania programem.

    • Zawiera identyfikatory transakcji (TRANSID) i odpowiadające im nazwy programów lub identyfikatory programów.

    • TRANSID jest unikalny w tabeli PCT.

    PPT

    PPT jest znany jako Tabela programów przetwarzania. PPT zawiera nazwę programu lub nazwę zestawu map, licznik użycia zadań, język, rozmiar, adres pamięci głównej, adres biblioteki ładowania itp.

    • Nazwa programu lub zestawu map jest unikalna w tabeli PPT.

    • CICS odbiera transakcję, a odpowiednia nazwa programu jest przypisywana do transakcji z PCT. Sprawdza, czy program jest załadowany, czy nie. Jeśli jest załadowany, to licznik wykorzystania zadań jest zwiększany o 1. Jeśli program nie jest załadowany, program jest najpierw ładowany, a licznik wykorzystania zadań jest ustawiony na 1. Pobiera adres biblioteki ładowania z tabeli PPT.

    FCT

    FCT jest znany jako tabela kontroli plików.

    • Zawiera nazwy plików, typ pliku, długość rekordu itp.

    • Wszystkie pliki używane w programie CICS muszą być zadeklarowane w FCT i są otwierane i zamykane przez sam CICS.

    Transakcja

    Gdy identyfikator transakcji TP02 jest wprowadzany na terminalu CICS, najpierw sprawdza, czy istnieje program powiązany z tym identyfikatorem transakcji w tabeli PCT. Jeśli znajdzie taki, sprawdza w tabeli PPT, gdzie znajduje się Program, aby go wykonać.

    Jeśli program jest już dostępny w pamięci, rozpoczyna wykonywanie tego konkretnego programu; jeśli nie, ładuje program do pamięci z pamięci dodatkowej, a następnie rozpoczyna jego wykonywanie.

    Cykl życia transakcji

    Cykl życia transakcji składa się z następujących kroków -

    Krok 1

    Operator terminala inicjuje transakcję wpisując od 1 do 4 znaków id transakcji i naciskając klawisz ENTER.

    Krok 2

    TCP okresowo sprawdza wszystkie terminale pod kątem danych wejściowych. Po odebraniu wiadomości wykonuje następujące czynności -

    • Nakazuje SCP utworzenie TIOA.

    • Umieszcza wiadomość w TIOA.

    • Przekazuje kontrolę do KCP.

    Krok 3

    KCP przejmuje kontrolę od TCP i wykonuje następujące czynności -

    • Sprawdza identyfikator transakcji i zabezpieczenia.

    • Nakazuje punktowi SCP utworzenie obszaru kontroli zadań.

    • Przypisuje priorytet do zadania na podstawie priorytetu terminala (ustawionego w TCT), priorytetu operatora (ustawionego w SNT) i priorytetu transakcji (ustawionego w PCT).

    • Dodaje zadanie do kolejki programów oczekujących.

    • Wysyła oczekujące programy w kolejności priorytetu.

    • Przekazuje kontrolę do PCP.

    Krok 4

    PCP przejmuje kontrolę od KCP i wykonuje następujące czynności -

    • Lokalizuje program i w razie potrzeby ładuje go.

    • Przenosi sterowanie do programu aplikacji.

    Krok 5

    Program aplikacji przejmuje kontrolę z PCP i wykonuje następujące czynności -

    • Żąda od TCP umieszczenia wiadomości w obszarze WORKING STORAGE programu.

    • Prosi FCP o pobranie rekordów z plików.

    Krok 6

    FCP przejmuje kontrolę z aplikacji i wykonuje następujące czynności -

    • Żąda obszaru roboczego plików z punktu SCP.

    • Informuje KCP, że to zadanie może poczekać do zakończenia operacji we / wy.

    Krok 7

    KCP wykonuje następujące czynności -

    • Wysyła następne zadanie w kolejce.

    • Po zakończeniu operacji we / wy ponownie wywołuje stare zadanie.

    • Przekazuje kontrolę do FCP.

    Krok 8

    FCP zwraca sterowanie do programu aplikacji.

    Krok 9

    Aplikacja wykonuje następujące czynności -

    • Przetwarza dane pliku.

    • Żąda od TCP wysłania komunikatu we / wy.

    • Zwraca kontrolę do PCP.

    Krok 10

    PCP zwraca kontrolę z powrotem do KCP, żądając zakończenia zadania.

    Krok 11

    KCP instruuje SCP, aby zwolnił całą pamięć przydzieloną do zadania (z wyjątkiem TIOA).

    Krok 12

    TCP wykonuje następujące czynności -

    • Wysyła dane wyjściowe do terminala.

    • Prosi SCP o zwolnienie TIOA.

    Transakcje CICS są używane do wykonywania wielu operacji w regionie CICS. Będziemy szczegółowo omawiać ważne transakcje CICS dostarczone przez IBM.

    CESN

    CESN jest znany jako CICS Execute Sign On.

    • CESN służy do logowania się do regionu CICS.

    • Aby zalogować się do CICS, musimy podać identyfikator użytkownika i hasło podane przez administratora CICS. Poniższy zrzut ekranu pokazuje, jak wygląda ekran logowania -

    CEDA

    CEDA jest znany jako CICS Execute Definition and Administration. Jest używany przez administratorów systemu CICS do definiowania pozycji tabeli CICS i innych czynności administracyjnych.

    CEMT

    CEMT jest znany jako CICS Execute Master Terminal. Służy do sprawdzania i aktualizowania statusu środowisk CICS, a także do innych operacji systemowych.

    • Za pomocą polecenia CEMT możemy zarządzać transakcjami, zadaniami, plikami, programami itp.

    • Aby uzyskać wszystkie możliwe opcje, wpisz CEMT i naciśnij ENTER. Wyświetli wszystkie opcje.

    • CEMT jest zasadniczo używany do ładowania nowego programu do CICS lub do ładowania nowej kopii programu do CICS po zmianie programu lub zestawu map.

    Przykład

    Można nadpisać stan wyświetlanego pliku, aby go zmienić. Poniższy przykład pokazuje, jak zamknąć plik -

    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 jest znane jako CICS Execute Command Interpreter. Wiele poleceń CICS można wykonać za pomocą CECI.

    • CECI służy do sprawdzania składni polecenia. Wykonuje polecenie tylko wtedy, gdy składnia jest poprawna.

    • Wpisz opcję CECI na pustym ekranie CICS po zalogowaniu. Wyświetla listę dostępnych opcji.

    Przykład

    Poniższy przykład pokazuje, jak wysłać zmapowane dane wyjściowe do terminala. O MAPS będziemy rozmawiać w kolejnych modułach.

    CECI SEND MAP (map-name) MAPSET (mapset-name) ERASE

    CEDF

    CEDF jest znany jako CICS Execute Debug Facility. Służy do debugowania programu krok po kroku, co pomaga w wyszukiwaniu błędów.

    Wpisz CEDF i naciśnij enter w regionie CICS. Terminal jest w trybie EDF zostanie wyświetlony komunikat. Teraz wpisz identyfikator transakcji i naciśnij klawisz Enter. Po zainicjowaniu, z każdym klawiszem enter, wykonywana jest linia. Przed wykonaniem jakiejkolwiek komendy CICS pokazuje ekran, na którym możemy zmodyfikować wartości przed przejściem dalej.

    CMAC

    CMAC jest znany jako CICS Messages for Abend Codes. Służy do znalezienia wyjaśnienia i powodów dla kodów CICS Abend Codes.

    Przykład

    Poniższy przykład pokazuje, jak sprawdzić szczegóły kodu Abend -

    CMAC abend-code

    CESF

    CESF jest znany jako CICS Execute Sign Off. Służy do wylogowywania się z regionu CICS.

    Przykład

    Poniższy przykład pokazuje, jak wylogować się z regionu CICS -

    CESF LOGOFF

    CEBR

    CEBR jest znany jako CICS Wykonaj Tymczasowe przeglądanie pamięci. Służy do wyświetlania zawartości kolejki pamięci tymczasowej lub TSQ.

    CEBR jest używany podczas debugowania, aby sprawdzić, czy elementy kolejki są poprawnie zapisywane i pobierane. Więcej o TSQ omówimy w kolejnych modułach.

    Przykład

    Poniższy przykład pokazuje, jak wywołać polecenie CEBR -

    CEBR queue-id

    Koncepcje CICS

    Każdą komendę można było wykonać, wykonując serię makr CICS. Omówimy kilka podstawowych funkcji, które pomogą nam lepiej zrozumieć pojęcia -

    Wielozadaniowość

    Ta funkcja systemu operacyjnego umożliwia jednoczesne wykonywanie więcej niż jednego zadania. Zadanie może polegać na współużytkowaniu tego samego programu lub korzystaniu z różnych programów. CICS planuje zadanie we własnym regionie.

    Wielowątkowość

    Ta funkcja systemu operacyjnego umożliwia wykonywanie więcej niż jednego zadania w tym samym programie. Aby wielowątkowość była możliwa, program użytkowy powinien mieć rozszerzeniere-entrant program w systemie operacyjnym lub quasi-reentrant w ramach CICS.

    Ponowne wejście

    Program ponownego wejścia to taki, który nie zmienia się i może ponownie wejść do siebie i kontynuować przetwarzanie po przerwie w systemie operacyjnym.

    Quasi-reentrancy

    Program quasi-reentrant to program ponownego wejścia w środowisku CICS. CICS zapewnia ponowne wejście, uzyskując unikalną powierzchnię magazynową dla każdego zadania. Pomiędzy komendami CICS, CICS ma wyłączne prawo do używania zasobów procesora i może wykonywać inne komendy CICS związane z innymi zadaniami.

    Czasami wielu użytkowników korzysta jednocześnie z tego samego programu; to jest to co nazywamymulti-threading. Na przykład załóżmy, że 50 użytkowników korzysta z programu A. Tutaj CICS zapewni 50 pamięci roboczych dla tego programu, ale jeden podział procedur. Ta technika jest znana jakoquasi-reentrancy.

    Programy CICS są napisane w języku COBOL na komputerach mainframe. Będziemy dyskutować o napisaniu prostego programu w języku COBOL-CICS, jego kompilacji, a następnie wykonaniu.

    Program CICS

    Napiszemy prosty program w języku COBOL-CICS, który wyświetli komunikat na ekranie wyjściowym CICS. Ten program ma na celu zademonstrowanie czynności wymaganych do wykonania programu COBOL-CICS. Poniżej przedstawiono kroki, aby zakodować prosty program -

    Krok 1

    Zaloguj się do komputerów typu mainframe i otwórz sesję TSO.

    Krok 2

    Utwórz nowy PDS, w którym będziemy kodować nasz program.

    Krok 3

    Utwórz nowego członka wewnątrz PDS i zakoduj następujący program -

    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.

    Krok 4

    Po zakodowaniu programu musimy go skompilować. Możemy skompilować program za pomocą następującego JCL -

    //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)                                          
    //

    Krok 5

    Otwórz sesję CICS.

    Krok 6

    Teraz zainstalujemy program za pomocą następującego polecenia -

    CEMT SET PROG(HELLO) NEW.

    Krok 7

    Uruchom program, używając powiązanego identyfikatora transakcji. Identyfikator transakcji jest nadawany przez Administratora. Pokaże następujące dane wyjściowe -

    Kompilacja programu

    Poniższy schemat blokowy przedstawia etapy kompilacji programu w języku COBOL-CICS -

    Tłumacz

    Funkcją translatora jest sprawdzanie błędów składniowych w komendach CICS. Przekłada je na równoważne instrukcje w języku COBOL.

    Kompilator

    Funkcją kompilatora jest rozszerzenie zeszytów języka COBOL. Kompiluje kod po sprawdzeniu kodu źródłowego pod kątem błędów składniowych.

    Edytor powiązań

    Funkcja Linkage Editor polega na łączeniu różnych modułów obiektów w celu utworzenia pojedynczego modułu ładowania.

    BMS jest znany jako podstawowa obsługa mapowania. Aplikacja składa się ze sformatowanych ekranów, które działają jako pomost między terminalem a programami CICS. Do komunikacji między terminalem a programami CICS używamy usług wejścia / wyjścia terminala CICS. Używamy BMS do tworzenia projektów ekranów z odpowiednimi pozycjami i atrybutami. Oto funkcje BMS -

    • BMS działa jako interfejs między terminalem a programami CICS.

    • Projekt i format ekranu są niezależne od logiki aplikacji.

    • BMS sprawia, że ​​aplikacja jest niezależna od sprzętu.

    Sformatowany ekran

    Ekran pokazany poniżej jest ekranem menu i może być zaprojektowany przy użyciu BMS. Jego kluczowe punkty są następujące -

    • Ekran może mieć tytuł, datę i wszelkie inne informacje, które mają zostać wyświetlone.

    • Opcje 1, 2 i 3 to pola bez nazw, które są tytułami ekranu.

    • W polu Selection musimy podać dane wejściowe. Dane wejściowe są następnie przesyłane do programu CICS w celu dalszego przetwarzania.

    • U dołu ekranu wyświetlane są klawisze czynności.

    • Wszystkie pola i sam ekran są zdefiniowane za pomocą makr BMS. Kiedy cała mapa jest już zdefiniowana, możemy użyć JCL do jej złożenia.

    Podstawowe pojęcia BMS

    Poniżej znajdują się podstawowe terminy, których będziemy używać w nadchodzących modułach -

    Mapa

    Mapa to format pojedynczego ekranu, który można zaprojektować za pomocą makr BMS. Może mieć nazwy zawierające od 1 do 7 znaków.

    Mapset

    Mapset to zbiór map połączonych ze sobą w celu utworzenia modułu ładowania. Powinien mieć wpis PPT. Może mieć nazwy od 1 do 7 znaków.

    Makra BMS

    Mapa BMS to program napisany w języku asemblera do zarządzania ekranami. Trzy makra używane do definiowania ekranu to DFHMSD, DFHMDI i DFHMDF.

    DFHMSD

    Makro DFHMSD generuje definicję zestawu map. Jest to identyfikator makra, który pokazuje, że rozpoczynamy zbiór map. Nazwa zestawu map jest nazwą modułu ładującego i musi istnieć wpis w tabeli PPT. Poniższa tabela przedstawia listę parametrów, które można zastosować w DFHMSD -

    Sr.No Parametr i opis
    1

    TYPE

    TYPE służy do definiowania typu mapy. Jeśli TYPE =
    MAP - mapa fizyczna jest tworzona
    DSECT - tworzona jest mapa symboliczna
    && SYSPARM - fizyczna i symboliczna, obie są tworzone.
    FINAL - Aby wskazać koniec kodowania zestawu map .

    2

    MODE

    TRYB służy do wskazywania operacji wejścia / wyjścia. IF MODE =
    IN - Tylko dla mapy wejściowej
    OUT - Tylko dla mapy wyjściowej
    INOUT Zarówno dla mapy wejściowej, jak i wyjściowej

    3

    LANG

    LANG = ASM / COBOL / PL1
    Decyduje o języku struktury DSECT do skopiowania do programu użytkowego.

    4

    STORAGE

    Jeśli STORAGE =
    AUTO - Aby uzyskać oddzielny symboliczny obszar mapy dla każdego
    zestawu map BASE - Aby mieć tę samą bazę do przechowywania map symbolicznych z więcej niż jednego zestawu map

    5

    CTRL

    CRTL służy do definiowania żądań sterowania urządzeniami. Jeśli CTRL =
    FREEKB - Aby odblokować klawiaturę
    FRSET - Aby zresetować MDT do stanu zerowego
    ALARM - Aby ustawić alarm w czasie wyświetlania ekranu
    DRUKUJ - Aby wskazać zestaw map do wysłania do drukarki.

    6

    TERM

    TERM = typ zapewnia niezależność urządzenia, wymagana, jeśli używany jest terminal inny niż 3270.

    7

    TIOAPFX

    TIOAPFX = TAK / NIE
    TAK - Aby zarezerwować miejsce na prefiks (12 bajtów) dla poleceń BMS w celu prawidłowego dostępu do TIOA. Wymagane na poziomie komend CICS.

    Przykład

    Poniższy przykład pokazuje, jak zakodować definicję zestawu map -

    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

    Makro DFHMDI generuje definicje map. Pokazuje, że zaczynamy nową mapę. Po nazwie mapy następuje makro DFHMDI. Nazwa mapy służy do wysyłania i odbierania map. Poniższa tabela przedstawia parametry, których używamy wewnątrz makra DFHMDI -

    Sr.No Parametr i opis
    1

    SIZE

    SIZE = (linia, kolumna)
    Ten parametr podaje rozmiar mapy. BMS pozwala nam zbudować ekran przy użyciu kilku map, a ten parametr staje się ważny, gdy używamy więcej niż jednej mapy w jednym zestawie map.

    2

    LINE

    Wskazuje numer początkowej linii mapy.

    3

    COLUMN

    Wskazuje początkowy numer kolumny mapy.

    4

    JUSTIFY

    Służy do określenia całej mapy lub pól mapy do wyrównania do lewej lub prawej strony.

    5

    CTRL

    CRTL służy do definiowania żądań sterowania urządzeniami. Jeśli CTRL =
    FREEKB - Aby odblokować klawiaturę
    FRSET - Aby zresetować MDT do stanu zerowego
    ALARM - Aby ustawić alarm w czasie wyświetlania ekranu
    DRUKUJ - Aby wskazać mapę do wysłania do drukarki

    6

    TIOAPFX

    TIOAPFX = TAK / NIE

    TAK - Aby zarezerwować miejsce na prefiks (12 bajtów) dla poleceń BMS, aby uzyskać prawidłowy dostęp do TIOA. Wymagane na poziomie komend CICS.

    Przykład

    Poniższy przykład pokazuje, jak zakodować definicję mapy -

    MAPSTD DFHMDI SIZE = (20,80), X
       LINE = 01, X
       COLUMN = 01, X
       CTRL = (FREEKB,FRSET)

    DFHMDF

    Makro DFHMDF służy do definiowania nazw pól. Podana jest nazwa pola, względem którego jest kodowane makro DFHMDF. Ta nazwa pola jest używana wewnątrz programu. Nie zapisujemy nazwy pola względem pola stałego, którego nie chcemy używać w programie. W poniższej tabeli przedstawiono listę parametrów, których można używać w makrze DFHMDF -

    Sr.No Parametr i opis
    1

    POS

    To jest pozycja na ekranie, w której powinno pojawić się pole. Pole zaczyna się od bajtu atrybutu, więc jeśli kodujesz POS = (1,1), bajt atrybutu dla tego pola znajduje się w wierszu 1 w kolumnie 1, a rzeczywiste dane zaczynają się w kolumnie 2.

    2

    LENGTH

    To jest długość pola, nie licząc bajtu atrybutu.

    3

    INITIAL

    To są dane znakowe dla pola wyjściowego. Używamy tego do określania etykiet i tytułów na ekranie i utrzymywania ich niezależnie od programu. Na przykład dla pierwszego pola na ekranie menu zakodujemy: INITIAL = 'MENU'.

    4

    JUSTIFY

    Służy do określenia całej mapy lub pól mapy do wyrównania do lewej lub prawej strony.

    5

    ATTRB

    ATTRB = (ASKIP / PROT / UNPROT, NUM, BRT / NORM / DRK, IC, FSET) Opisuje atrybuty pola.

    ASKIP - Autoskip. W tym polu nie można wprowadzić danych. Kursor przeskakuje do następnego pola.

    PROT - pole chronione. W tym polu nie można wprowadzać danych. Wprowadzenie danych spowoduje stan blokady wejścia.

    UNPROT - pole niezabezpieczone. Dane można wprowadzić i jest to używane we wszystkich polach wejściowych.

    NUM - pole numeryczne. Dozwolone są tylko cyfry (od 0 do 9) i znaki specjalne („.” I „-”).

    BRT - Jasne wyświetlanie pola (podświetlenie).

    NORM - normalne wyświetlanie.

    DRK - ciemny wyświetlacz.

    IC - wstaw kursor. Kursor zostanie umieszczony w tym polu. W przypadku, gdy IC zostanie określony więcej niż jeden raz, kursor zostanie umieszczony w ostatnim polu.

    FSET - zestaw pól. MDT jest tak ustawione, że dane pola mają być wysyłane z terminala do komputera hosta niezależnie od tego, czy pole jest faktycznie modyfikowane przez użytkownika.

    6

    PICIN

    PICIN dotyczy pola danych, które jest używane jako dane wejściowe, np. PICIN = 9 (8).

    7

    PICOUT

    PICIN dotyczy pola danych, które jest używane jako dane wyjściowe, np. PICOUT = Z (8).

    Przykład

    Poniższy przykład pokazuje, jak zakodować definicję pola -

    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 odbiera dane wprowadzone przez użytkownika, a następnie formatuje je w symboliczny obszar mapy. Aplikacja ma dostęp tylko do danych znajdujących się na mapie symbolicznej. Aplikacja przetwarza dane, a dane wyjściowe są wysyłane do mapy symbolicznej. BMS połączy dane wyjściowe danych symbolicznych z mapą fizyczną.

    Mapa fizyczna

    Mapa fizyczna to moduł ładowania w bibliotece ładowania, który zawiera informacje o sposobie wyświetlania mapy.

    • Zawiera szczegółowe informacje o atrybutach wszystkich pól na mapie i ich pozycjach.

    • Zawiera format wyświetlania mapy dla danego terminala.

    • Jest kodowany za pomocą makr BMS. Jest montowany oddzielnie i edytowany jako odsyłacz do biblioteki CICS.

    Mapa symboliczna

    Mapa symboliczna to kopia książki w bibliotece. Książka Copy jest używana przez aplikację CICS do wysyłania i odbierania danych z terminala.

    • Zawiera wszystkie zmienne dane, które są kopiowane do sekcji WORKINGSTORAGE programu.

    • Zawiera wszystkie nazwane pola. Programista aplikacji używa tych pól do odczytywania i zapisywania danych na mapie.

    Skipper i Stopper Field

    W przypadku niechronionego nazwanego pola w mapie, jeśli określiliśmy długość 10, oznacza to, że pole nazwy może przyjmować wartości, których długość nie może przekraczać 10. Ale kiedy wyświetlasz tę mapę za pomocą CICS i zaczynasz wprowadzać wartości dla tego pola na na ekranie możemy wprowadzić więcej niż 10 znaków, czyli do końca ekranu i możemy wpisać nawet w następnej linii. Aby temu zapobiec, używamy pola Skipper lub pola stopper. Pole Skipper byłoby zwykle polem bez nazwy o długości 1, określonym po nazwanym polu.

    Skipper Field

    Jeśli umieścimy pole skippera po nazwanym niezabezpieczonym polu, to podczas wpisywania wartości, po osiągnięciu określonej długości, kursor automatycznie przesunie się do następnego niezabezpieczonego pola. Poniższy przykład pokazuje, jak dodać pole skippera -

    NUMBER  DFHMDF POS = (01,01), X
       LENGTH = 5, X
       ATTRB = (UNPROT,IC)
          DFHMDF POS = (01,07), X
          LENGTH = 1, X
          ATTRB = (ASKIP)

    Pole korka

    Jeżeli po nazwanym niezabezpieczonym polu umieścimy pole stopera, to przy wpisywaniu wartości, po osiągnięciu określonej długości, kursor zatrzyma się. Poniższy przykład pokazuje, jak dodać pole korekcyjne -

    NUMBER  DFHMDF POS = (01,01), X
       LENGTH = 5, X
    	ATTRB = (UNPROT,IC)
    	   DFHMDF POS = (01,07), X
          LENGTH = 1, X
          ATTRB = (PROT)

    Bajt atrybutu

    Bajt atrybutu dowolnego pola przechowuje informacje o fizycznych właściwościach pola. Poniższy diagram i tabela wyjaśniają znaczenie każdego bitu.

    Pozycja bitu Opis Ustawienia bitów
    0 i 1   Określone przez zawartość bitów od 2 do 7
    2 i 3 Ochrona i zmiana 00 - niezabezpieczone alfanumeryczne
    01 - niezabezpieczone numeryczne
    10 - chronione zatrzymanie
    11 - chronione pomiń
    4 i 5 Intensywność 00 - normalny
    01 - normalny
    10 - jasny
    11 - brak obrazu (ciemny)
    6   Zawsze musi wynosić zero
    7 Zmodyfikowany znacznik danych 0 - Pole nie zostało zmodyfikowane
    1 - Pole zostało zmodyfikowane

    Zmodyfikowany znacznik danych

    Zmodyfikowany znacznik danych (MDT) to ostatni bit w bajcie atrybutu.

    • MDT to flaga przechowująca pojedynczy bit. Określa, czy wartość ma zostać przesłana do systemu, czy nie.

    • Jego domyślną wartością jest 1, gdy wartość pola zostanie zmieniona.

    • Jeśli MDT ma wartość 0, nie można przesyłać danych; a jeśli MDT wynosi 1, dane mogą być przesyłane.

    Wyślij mapę

    Polecenie send map zapisuje sformatowane dane wyjściowe do terminala. Służy do przesłania mapy do terminala z aplikacji. Poniższy segment kodu pokazuje, jak wysłać mapę do terminala -

    EXEC CICS SEND 
       MAP('map-name')
       MAPSET('mapset-name')
       [FROM(data-area)]
       [LENGTH(data_value)]
       [DATAONLY]
       [MAPONLY]
       [CURSOR]
       [ERASE/ERASEAUP]
       [FREEKB] 
       [FRSET]
    END-EXEC

    W poniższej tabeli wymieniono parametry używane w poleceniu wysyłania mapy wraz z ich znaczeniem.

    Sr.No Parametr i opis
    1

    Map-name

    Jest to nazwa mapy, którą chcemy wysłać. Jest to obowiązkowe.

    2

    Mapset-name

    Jest to nazwa zestawu map zawierającego nazwę mapy. Nazwa zestawu map jest potrzebna, chyba że jest taka sama jak nazwa mapy.

    3

    FROM

    Jest używany, jeśli zdecydowaliśmy się użyć innej nazwy DSECT, musimy użyć opcji FROM (dsect-name) wraz z poleceniem SEND MAP.

    4

    MAPONLY

    Oznacza to, że żadne dane z Twojego programu nie mają być scalane z mapą, a przesyłane są tylko informacje z mapy.

    5

    DATAONLY

    Jest to logiczne przeciwieństwo MAPONLY. Używamy go do modyfikowania zmiennych danych w już utworzonym ekranie. Na ekran przesyłane są tylko dane z Twojego programu. Stałe w mapie nie są wysyłane.

    6

    ERASE

    Powoduje to wymazanie całego ekranu przed wyświetleniem tego, co wysyłamy.

    7

    ERASEUP

    Powoduje, że usuwane są tylko niezabezpieczone pola.

    8

    FRSET

    Reset flagi wyłącza zmodyfikowany znacznik danych w bajcie atrybutu dla wszystkich pól na ekranie, zanim to, co wysyłasz, zostanie tam umieszczone.

    9

    CURSOR

    Można go używać do umieszczania kursora na ekranie terminala. Kursor można ustawić, przesuwając -1 do L części pola, a następnie wysyłając mapę.

    10

    ALARM

    Powoduje włączenie alarmu dźwiękowego.

    11

    FREEKB.

    Klawiatura jest odblokowana, jeśli określimy FREEKB w mapie lub w poleceniu SEND.

    12

    PRINT

    Umożliwia wydrukowanie polecenia SEND na drukarce.

    13

    FORMFEED

    Powoduje to, że drukarka przywraca papier do początku następnej strony przed wydrukowaniem wydruku.

    Otrzymaj mapę

    Kiedy chcemy otrzymać dane wejściowe z terminala, używamy polecenia RECEIVE MAP. Parametry MAP i MAPSET mają dokładnie takie samo znaczenie jak dla polecenia SEND MAP. Poniższy segment kodu pokazuje, jak otrzymać mapę -

    EXEC CICS RECEIVE 
       MAP('map-name')
       MAPSET('mapset-name')
       [INTO(data-area)]
       [FROM(data-area)]
       [LENGTH(data_value)]
    END-EXEC

    Wykonanie zestawu map

    Poniższe kroki są niezbędne do opracowania i wykonania zestawu map -

    • Step 1 - Otwórz sesję OSP.

    • Step 2 - Utwórz nowy PDS.

    • Step 3 - Zakoduj zestaw map w nowym elemencie zgodnie z wymaganiami.

    • Step 4 - Złóż zestaw map za pomocą JCL dostarczonego przez administratora CICS.

    • Step 5 - Otwórz sesję CICS.

    • Step 6 - Zainstaluj program za pomocą polecenia -

      PROG ZBIORU CEMT (nazwa zbioru map) NOWOŚĆ

    • Step 7 - Wpisz następujące polecenie, aby wysłać mapę do terminala -

      CECI SEND MAP (nazwa-mapy) MAPSET (nazwa-zestawu-mapy) ERASE FREEKB

    Każdy program aplikacji wymagałby interfejsu do interakcji z CICS. EIB (Execute Interface Block) działa jako interfejs umożliwiający aplikacjom komunikację z CICS. EBI zawiera informacje wymagane podczas realizacji programu.

    Ograniczone czasowniki w języku COBOL

    Podczas kodowania programu CICS nie możemy używać poleceń, które zwracają sterowanie bezpośrednio do MVS. Jeśli zakodujemy te czasowniki w języku COBOL, nie spowoduje to żadnego błędu kompilacji, ale możemy uzyskać nieprzewidywalne wyniki. Poniżej znajdują się czasowniki w języku COBOL, których nie należy używać w programie CICS -

    • Instrukcje we / wy plików, takie jak otwieranie, odczytywanie, zapisywanie, ponowne zapisywanie, zamykanie, usuwanie i uruchamianie. Wszystkie operacje we / wy plików w CICS są obsługiwane przez moduł kontroli plików i mają one własny zestaw instrukcji, takich jak READ, WRITE, REWRITE i DELETE, które będziemy omawiać w kolejnych modułach.

    • Sekcja plików i podział środowiska nie są wymagane.

    • Nie można używać instrukcji COBOL, które wywołują funkcje systemu operacyjnego, takie jak Accept, Date / Time.

    • Nie używaj DISPLAY, MERGE, STOP RUN i GO BACK.

    Wykonaj blok interfejsu

    Execute Interface Block (EIB) to blok sterujący, który jest ładowany automatycznie przez CICS dla każdego programu.

    • EBI jest unikalny dla zadania i istnieje na czas trwania zadania. Zawiera zestaw informacji związanych z systemem, odpowiadających zadaniu.

    • Zawiera informacje o identyfikatorze transakcji, godzinie, dacie itp., Które są używane przez CICS podczas wykonywania aplikacji.

    • Każdy program wykonywany w ramach zadania ma dostęp do tego samego EBI.

    • Dane w EIB w czasie wykonywania można przeglądać wykonując program w trybie CEDF.

    Pola EBI

    Poniższa tabela zawiera listę pól, które są obecne w EBI -

    Pole EBI Klauzula PIC Opis
    EIBAID X (1) Wciśnięty klawisz pomocy
    EIBCALEN S9 (4) KOMP Zawiera długość DFHCOMMAREA
    EIBDATE S9 (7) COMP-3 Zawiera aktualną datę systemową
    EIBRCODE X (6) Zawiera kod zwrotu ostatniej transakcji
    EIBTASKN S9 (7) COMP-3 Zawiera numer zadania
    EIBTIME S9 (7) COMP-3 Zawiera aktualny czas systemowy
    EIBTRMID X (4) Identyfikator terminala
    EIBTRNID X (4) Identyfikator transakcji

    Klasyfikacja programów CICS

    Programy CICS są podzielone na następujące trzy kategorie, które omówimy kolejno -

    • Programy bez konwersacji
    • Programy konwersacyjne
    • Programy pseudo-konwersacyjne - omówimy w następnym module

    Programy bez konwersacji

    Podczas wykonywania programów bez konwersacji nie jest wymagana żadna interwencja człowieka. Wszystkie niezbędne dane wejściowe są dostarczane po uruchomieniu programu.

    • Są podobne do programów wsadowych działających w trybie wsadowym. Dlatego w CICS rzadko są rozwijane.

    • Można powiedzieć, że są używane tylko do wyświetlania sekwencji ekranów w regularnych odstępach czasu.

    Przykład

    Poniższy przykład przedstawia program bez konwersacji, który po prostu wyświetli „HELLO WORLD” na terminalu CICS jako wyjście -

    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.

    Program konwersacyjny

    Wysłanie wiadomości do terminala i otrzymanie odpowiedzi od użytkownika to tzw conversation. Aplikacja internetowa realizuje konwersację między użytkownikiem a aplikacją za pomocą pary poleceń WYŚLIJ i ODBIERZ. Kluczowe punkty programu konwersacyjnego są następujące:

    • System wysyła wiadomość na ekran i czeka na odpowiedź użytkownika.

    • Czas potrzebny na udzielenie odpowiedzi przez użytkownika jest określany jako Think Time. Ten czas jest dość długi, co jest główną wadą programów konwersacyjnych.

    • Użytkownik wprowadza niezbędne dane i naciska przycisk AID.

    • Aplikacja przetwarza dane wejściowe użytkownika i wysyła dane wyjściowe.

    • Program jest ładowany do pamięci głównej na początku i zachowywany do zakończenia zadania.

    Przykład

    Poniższy przykład przedstawia program do konwersji, który pobiera dane wejściowe od użytkownika, a następnie po prostu wyświetla te same dane wejściowe na terminalu CICS, co dane wyjściowe -

    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.

Do tej pory zajmowaliśmy się programami bez konwersji i konwersji. Programy konwersji mają poważną wadę, ponieważ ichthink timejest znacznie wysoka. Aby rozwiązać ten problem, pojawiło się programowanie pseudo-konwersji. Teraz omówimy więcej programów do pseudo-konwersji.

Program pseudo-konwersji

Poniżej znajduje się sekwencja zdarzeń, które mają miejsce w programie pseudokonwersji -

  • Step 1 - System wysyła wiadomość na ekran i kończy transakcję, określając transakcję, która ma zostać rozpoczęta po otrzymaniu danych wejściowych użytkownika.

  • Step 2- System przydziela zasoby używane przez tę transakcję do innych transakcji wykonywanych w systemie. Możemy więc wykorzystać zasoby w programie pseudokonwersji, dopóki użytkownik nie poda danych wejściowych.

  • Step 3- System odpytuje wejście terminala w regularnych odstępach czasu. Po odebraniu danych wejściowych jest przetwarzane i wyświetlane są dane wyjściowe.

  • Step 4 - Aplikacja jest ładowana do pamięci głównej w razie potrzeby i zwalniana, gdy nie jest używana.

Techniki pseudo konwersji

Ważną kwestią, na którą należy zwrócić uwagę w pseudo-konwersacji, jest przekazywanie danych między każdym zadaniem. Omówimy techniki przekazywania danych.

COMMAREA

COMMAREA jest znana jako obszar komunikacji. COMMAREA służy do przekazywania danych między zadaniami. Poniższy przykład pokazuje, jak przekazać COMMAREA, gdzie WSCOMMAREA i WS-COMMAREA-LENGTH są zadeklarowane w sekcji składowania roboczego -

EXEC CICS RETURN
   TRANSID ('transaction-id')
   COMMAREA (WS-COMMAREA)
   LENGTH  (WS-COMMAREA-LENGTH)
END-EXEC.

DFHCOMMAREA

DFHCOMMAREA to specjalny obszar pamięci, który CICS zapewnia do każdego zadania.

  • Służy do przekazywania danych z jednego programu do innego programu. Programy mogą istnieć w tej samej transakcji lub też w różnych transakcjach.

  • Jest to zadeklarowane w sekcji Powiązania programu na poziomie 01.

  • Powinien mieć tę samą klauzulę dotyczącą obrazu, co WS-COMMAREA.

  • Dane można przenieść z powrotem z DFHCOMMAREA do WS-COMMAREA za pomocą instrukcji MOVE.

MOVE DFHCOMMAREA TO WS-COMMAREA.

Przykład

Po wysłaniu mapy zadanie kończy się i czeka na odpowiedź użytkownika. Na tym etapie dane muszą zostać zapisane, ponieważ mimo zakończenia zadania transakcja nie. Gdy transakcja ma zostać wznowiona, wymagałoby to wcześniejszego statusu zadania. Użytkownik wprowadza dane wejściowe. Teraz musi to zostać odebrane przez polecenie RECEIVE MAP, a następnie zatwierdzone. Poniższy przykład pokazuje, jak zadeklarować COMMAREA i DFHCOMMAREA -

WORKING-STORAGE SECTION.
01 WS-COMMAREA.
   05 WS-DATA PIC X(10).
   
LINKAGE SECTION.
01 DFHCOMMAREA.
   05 LK-DATA PIC X(10).

Pseudo kod

Poniżej podano logikę pseudokodu, którego używamy w pseudo programowaniu -

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

Przykład

Poniższy przykład przedstawia program pseudokonwersji -

******************************************************************
* 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.

Zalety pseudo konwersji

Oto zalety pseudokonwersji -

  • Zasoby są najlepiej wykorzystywane. Zasoby są zwalniane, gdy tylko program zostanie tymczasowo zawieszony.

  • Wygląda na to, że jest w trybie konwersacyjnym.

  • Ma lepszy czas odpowiedzi.

Instrukcje zwrotne

Poniżej przedstawiono dwa typy instrukcji powrotu, które są używane w programie CICS -

Return-1

Gdy zostanie wydana następująca bezwarunkowa instrukcja zwrotu, zadanie i transakcja (program) zostają zakończone.

EXEC CICS RETURN 
END-EXEC.

Return-2

Po wydaniu następującego warunkowego powrotu, tj. Powrotu z instrukcją TRANSID, sterowanie wraca do CICS z następnym transidem do wykonania. Następna transakcja rozpoczyna się, gdy użytkownik naciśnie klawisz AID.

EXEC CICS RETURN
   TRANSID ('trans-id')
   [COMMAREA(WS-COMMAREA)]
END-EXEC.

Jak omówiliśmy we wcześniejszych modułach, klucze AID są znane jako klucze identyfikujące uwagę. CICS może wykrywać tylko klucze AID. Po wpisaniu wszystkich danych wejściowych, tylko gdy użytkownik naciśnie jeden z klawiszy AID, CICS przejmuje kontrolę. Klawisze AID obejmują ENTER, PF1 do PF24, PA1 do PA3 i CLEAR.

Sprawdzanie kluczy AID

Klawisz wciśnięty przez użytkownika jest sprawdzany za pomocą EIBAID.

  • EIBAID ma długość jednego bajtu i zawiera rzeczywistą wartość identyfikatora uwagi używaną w strumieniu wejściowym 3270.

  • CICS dostarcza nam wstępnie zakodowany zestaw zmiennych, które mogą być używane w aplikacji, pisząc następującą instrukcję -

    COPY DFHAID

DFHAID

DFHAID to zeszyt, który jest używany w programach użytkowych w celu włączenia wstępnie zakodowanego zestawu zmiennych CICS. Następująca treść znajduje się w zeszycie DFHAID -

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 '<'.

Przykład

Poniższy przykład pokazuje, jak używać zeszytu DFHAID w programie użytkowym -

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.

Pozycjonowanie kursorem

Istnieją dwa sposoby zastąpienia pozycji określonej w definicji mapy.

  • Jednym ze sposobów jest określenie pozycji ekranu względem numeru wiersza i kolumny w opcji CURSOR w poleceniu wysyłania mapy.

  • Innym sposobem jest przesunięcie -1 do symbolicznej zmiennej mapy z przyrostkiem L. Następnie wyślij mapę z opcją CURSOR w SEND MAP.

Przykład

Poniższy przykład pokazuje, jak zastąpić pozycję kursora w polu NAZWA -

MOVE -1 TO NAMEL
   EXEC CICS SEND 
      MAP ('map-name')
      MAPSET ('name-field')
      ERASE
      FREEKB
      CURSOR
   END-EXEC.

Dynamiczne modyfikowanie atrybutów

Wysyłając mapę, jeśli chcemy mieć inne atrybuty dla pola innego niż określone w mapie, możemy to zmienić, ustawiając to pole w programie. Poniżej znajduje się wyjaśnienie dotyczące zastępowania atrybutów pola -

  • Aby przesłonić atrybuty pola, musimy uwzględnić DFHATTR w programie użytkowym. Jest dostarczany przez CICS.

  • Wymagany atrybut można wybrać z listy i przenieść do zmiennej pola symbolicznego z przyrostkiem „A”.

DFHATTR zawiera następujące treści -

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 "'".

CICS umożliwia nam dostęp do danych w plikach na wiele sposobów. Większość dostępów do plików jest przypadkowa w systemie online, ponieważ transakcje do przetworzenia nie są grupowane i sortowane w żadnej kolejności. Dlatego CICS obsługuje zwykłe metody dostępu bezpośredniego - VSAM i DAM (Metoda bezpośredniego dostępu). Umożliwia nam również dostęp do danych za pomocą menedżerów baz danych.

Losowy dostęp

Poniżej znajdują się polecenia używane do losowego przetwarzania -

Sr.No Polecenia i opis
1 CZYTAĆ

Polecenie READ odczytuje dane z pliku przy użyciu klucza podstawowego.

2 PISAĆ

Polecenie Write służy do dodawania nowych rekordów do pliku.

3 PRZEPISAĆ

Polecenie REWRITE służy do modyfikowania rekordu, który jest już obecny w pliku.

4 USUNĄĆ

Polecenie DELETE służy do usuwania rekordu znajdującego się w pliku.

Dostęp sekwencyjny

Poniżej znajdują się polecenia, które są używane do sekwencyjnego przetwarzania -

Sr.No Polecenia i opis
1 STARTBR

STARTBR jest znane jako rozpoczęcie przeglądania.

2 READNEXT / READPREV

Kiedy wydajemy polecenie STARTBR, nie udostępnia on rekordów.

3 RESETBR

Polecenie RESETBR pozwala nam zresetować nasz punkt początkowy w środku przeglądania.

4 ENDBR

Gdy skończymy odczytywać plik po kolei, przerywamy przeglądanie za pomocą polecenia ENDBR.

Istnieje wiele typów plików abendsoraz błędy, które można napotkać podczas korzystania z aplikacji CICS. Błędy mogą wynikać zarówno z problemów sprzętowych, jak i oprogramowania. Będziemy omawiać błędy i obsługę błędów w tym module.

Błędy CICS

Poniżej przedstawiono błędy CICS, które mogą wystąpić podczas wykonywania aplikacji CICS -

  • Niektóre oczekiwane błędy CICS pojawiają się, gdy warunki w systemie CICS nie są normalne. Na przykład, jeśli czytamy konkretny rekord i rekord nie zostanie znaleziony, otrzymujemy błąd „Nie znaleziono”.Mapfailjest podobnym błędem. Błędy w tej kategorii są obsługiwane przez jawną logikę w programie.

  • Błędy logiczne powstają z pewnych powodów, takich jak dzielenie przez zero, niedozwolony znak w polu numerycznym lub błąd identyfikatora transakcji.

  • Błędy związane ze sprzętem lub innymi stanami systemu są poza kontrolą aplikacji. Na przykład, uzyskanie błędu wejścia / wyjścia podczas uzyskiwania dostępu do pliku.

Polecenia obsługi błędów

CICS zapewnia kilka mechanizmów identyfikowania błędów i obsługi ich w naszych programach. Poniżej znajdują się polecenia używane do obsługi oczekiwanych błędów CICS -

Sr.No Obsługa poleceń i opis
1 Stan uchwytu

Warunek uchwytu służy do przenoszenia kontroli nad programem do akapitu lub etykiety procedury.

2 Handle Abend

Jeśli program nie działa z jakichś powodów, takich jak błąd wejścia-wyjścia, można to zrobić za pomocą komendy Handle Abend CICS.

3 Przerwij

Polecenie Abend służy do celowego zakończenia zadania.

4 Ignoruj ​​warunek

Warunek ignorowania jest używany, gdy nie chcemy, aby żadne działanie nie było podejmowane, jeśli wystąpi określone przerwanie lub błąd, o którym mowa w warunku ignorowania.

5 Nohandle

Dla dowolnej komendy CICS można określić wartość Nohandle.

Program sterujący programem CICS (PCP) zarządza przepływem programów użytkowych. Wszystkie aplikacje muszą mieć wpis w tabeli programów przetwarzania. Poniżej znajdują się polecenia, które są używane do usług kontroli programu -

  • XCTL
  • Link
  • Load
  • Release
  • Return

Programowe poziomy logiczne

Aplikacje uruchamiane w CICS mają różne poziomy logiczne. Pierwszy program, który bezpośrednio otrzymuje sterowanie, znajduje się na najwyższym poziomie logicznym, tj. Poziomie 1. Program połączony jest na następnym poziomie logicznym z programu łączącego. Programy XCTL działają na tym samym poziomie. Będzie jasne, kiedy przejdziemy przez Link i XCTL, w dalszej części tego modułu. Poniższy obraz przedstawia poziomy logiczne -

XCTL

Podstawowe wyjaśnienie XCTL jest następujące -

  • Polecenie XCTL służy do przekazywania kontroli z jednego programu do drugiego na tym samym poziomie.

  • Nie oczekuje powrotu kontroli.

  • Działa podobnie do instrukcji GO TO.

  • Program XCTL może być pseudokonwersacją.

Przykład

Poniższy przykład pokazuje, jak użyć polecenia XCTL do przekazania kontroli do innego programu -

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.

To polecenie przekazuje sterowanie do przekazania do programu „PROG2” ze 100 bajtami danych. COMMAREA jest parametrem opcjonalnym i jest nazwą obszaru zawierającego dane do przekazania lub obszaru, do którego mają zostać zwrócone wyniki.

Połączyć

Polecenie Link służy do przeniesienia sterowania do innego programu na niższym poziomie. Oczekuje powrotu kontroli. Połączony program nie może prowadzić pseudo-konwersacji.

Przykład

Poniższy przykład pokazuje, jak użyć polecenia Link, aby przekazać kontrolę do innego programu -

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.

Załaduj

Polecenie Load służy do ładowania programu lub tabeli. Poniżej znajduje się składnia polecenia Load -

EXEC CICS LOAD
   PROGRAM ('name')
END-EXEC.

Wydanie

Polecenie Release służy do zwalniania programu lub tabeli. Poniżej znajduje się składnia polecenia Release -

EXEC CICS RELEASE
   PROGRAM ('name')
END-EXEC.

Powrót

Polecenie Return służy do powrotu sterowania do następnego wyższego poziomu logicznego. Poniżej znajduje się składnia polecenia Return -

EXEC CICS RETURN
   PROGRAM ('name')
   COMMAREA (data-value)
   LENGTH (data-value)
END-EXEC.

Operacje sterowania interwałami

Istnieją dwa rodzaje operacji kontroli interwałowej -

ASKTIME

ASKTIME służy do żądania aktualnego czasu i daty lub znacznika czasu. Następnie przenosimy tę wartość do roboczej zmiennej pamięci wewnątrz programu. Poniżej znajduje się składnia polecenia ASKTIME -

EXEC CICS ASKTIME
   [ABSTIME(WS-TIMESTAMP)]
END-EXEC.

FORMATTIME

FORMATTIME formatuje znacznik czasu do wymaganego formatu na podstawie opcji, którymi może być RRRRD, RRMMDD lub RRDDMM dla daty. DATESEP wskazuje separator dla DATE, podobnie jak zmienna TIMESEP dla TIME. Poniżej znajduje się składnia polecenia 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.

W programie CICS dostępne są różne notatniki do zapisywania danych lub przesyłania danych między transakcjami. Istnieje pięć obszarów przechowywania udostępnianych przez CICS, które będziemy omawiać w tym module.

COMMAREA

COMMAREA zachowuje się jak notatnik, którego można używać do przekazywania danych z jednego programu do innego programu, w ramach tej samej transakcji lub z różnych transakcji. Powinien być zdefiniowany w SEKCJI POŁĄCZENIA przy użyciu nazwy DFHCOMMAREA.

Wspólny obszar roboczy

Każda transakcja w regionie CICS może uzyskać dostęp do wspólnego obszaru roboczego, a zatem jej format i użycie musi być uzgodnione we wszystkich transakcjach w systemie, które zdecydują się na jej użycie. W całym regionie CICS istnieje tylko jeden CWA.

Obszar roboczy transakcji

Obszar roboczy transakcji służy do przekazywania danych między aplikacjami, które są wykonywane w ramach tej samej transakcji. TWA istnieje tylko na czas trwania transakcji. Jego rozmiar jest zdefiniowany w tabeli sterującej programem.

Tymczasowa kolejka magazynowa

Temporary Storage Queue (TSQ) to funkcja udostępniana przez program Temporary Storage Control Program (TSP).

  • TSQ to kolejka rekordów, które mogą być tworzone, odczytywane i usuwane przez różne zadania lub programy w tym samym regionie CICS.

  • Identyfikator kolejki służy do identyfikacji TSQ.

  • Rekord w TSQ jest identyfikowany przez względną pozycję znaną jako numer pozycji.

  • Rekordy w TSQ pozostają dostępne do momentu jawnego usunięcia całego TSQ.

  • Zapisy w TSQ można odczytywać sekwencyjnie lub bezpośrednio.

  • TSQ mogą być zapisywane w pamięci głównej lub pamięci dyskowej w DASD.

WRITEQ TS

To polecenie służy do dodawania elementów do istniejącego TSQ. Za pomocą tego polecenia możemy również utworzyć nowy TSQ. Poniżej znajduje się składnia polecenia WRITEQ TS -

Składnia

EXEC CICS WRITEQ TS
   QUEUE ('queue-name')
   FROM (queue-record)
   [LENGTH (queue-record-length)]
   [ITEM (item-number)]
   [REWRITE]
   [MAIN /AUXILIARY]
END-EXEC.

Poniżej przedstawiono szczegóły parametrów używanych w poleceniu WRITEQ TS -

  • KOLEJKA jest identyfikowana przez nazwę, która jest podana w tym parametrze.

  • Opcje FROM i LENGTH służą do określenia rekordu, który ma zostać zapisany w kolejce, oraz jego długości.

  • Jeśli określono opcję ITEM, CICS przypisuje numer pozycji do rekordu w kolejce i ustawia obszar danych dostarczony w tej opcji na numer pozycji. Jeśli rekord rozpoczyna nową kolejkę, przypisany numer pozycji to 1, a kolejne numery pozycji następują po kolei.

  • Opcja REWRITE służy do aktualizacji rekordu znajdującego się już w kolejce.

  • Opcja MAIN / AUXILIARY służy do przechowywania rekordów w pamięci głównej lub pomocniczej. Wartość domyślna to POMOCNICZE.

READQ TS

To polecenie służy do odczytu kolejki tymczasowego przechowywania. Poniżej znajduje się składnia READQ TS -

Składnia

EXEC CICS READQ TS
   QUEUE ('queue-name')
   INTO (queue-record)
   [LENGTH (queue-record-length)]
   [ITEM (item-number)]
   [NEXT]
END-EXEC.

DELETEQ TS

To polecenie służy do usuwania kolejki tymczasowego przechowywania. Poniżej znajduje się składnia DELETEQ TS -

Składnia

EXEC CICS DELETEQ TS
   QUEUE ('queue-name')
END-EXEC.

Przejściowa kolejka danych

Kolejka danych przejściowych ma charakter przejściowy, ponieważ można ją szybko utworzyć i usunąć. Pozwala tylko na dostęp sekwencyjny.

  • Zawartość kolejki można odczytać tylko raz, ponieważ zostanie ona zniszczona po wykonaniu odczytu, stąd nazwa Transient.

  • Nie można go zaktualizować.

  • Wymaga wpisu w DCT.

WRITEQ TD

To polecenie służy do zapisywania kolejek danych przejściowych i są one zawsze zapisywane do pliku. Poniżej znajduje się składnia polecenia WRITEQ TD -

Składnia

EXEC CICS WRITEQ TD
   QUEUE ('queue-name')
   FROM (queue-record)
   [LENGTH (queue-record-length)]
END-EXEC.

READQ TD

To polecenie jest używane do odczytu kolejki danych przejściowych. Poniżej znajduje się składnia READQ TD -

Składnia

EXEC CICS READQ TD
   QUEUE ('queue-name')
   INTO (queue-record)
   [LENGTH (queue-record-length)]
END-EXEC.

DELETEQ TD

To polecenie służy do usuwania kolejki danych przejściowych. Poniżej znajduje się składnia DELETEQ TD -

Składnia

EXEC CICS DELETEQ TD
   QUEUE ('queue-name')
END-EXEC.

Wzajemna komunikacja między dwoma lub więcej systemami jest znana jako intercommunication.

Korzyści z komunikacji wewnętrznej

Najważniejsze korzyści z komunikacji wewnętrznej są następujące:

  • Nie musimy replikować danych we wszystkich systemach.

  • Użytkownicy nie muszą mieć połączeń z wieloma systemami, aby uzyskać dostęp do przechowywanych w nich danych.

  • Poprawia wydajność aplikacji.

Podstawowe terminologie

Należy posiadać znajomość podstawowych terminologii stosowanych w systemie CICS. Poniżej przedstawiono podstawowe terminy -

System lokalny

System lokalny to system, który inicjuje żądanie komunikacji wewnętrznej.

Zasób lokalny

Zasób lokalny to zasób znajdujący się w systemie lokalnym.

System zdalny

System zdalny to system, który jest inicjowany w wyniku żądania komunikacji wewnętrznej.

Zasoby zdalne

Zasób zdalny to zasób znajdujący się w systemie zdalnym.

MVS Sysplex

MVS Sysplex to konfiguracja wielu systemów operacyjnych MVS. Działają jako pojedynczy system, współdzieląc funkcje i programy.

CICSPlex

CICSPlex jest powszechnie opisywany jako zbiór połączonych ze sobą regionów CICS, które przetwarzają obciążenie klienta. CICSPlex to zestaw połączonych ze sobą regionów CICS, które są właścicielami terminali, aplikacji, zasobów itp.

Metody komunikacji wewnętrznej

Istnieją dwa sposoby komunikacji CICS z innymi systemami -

  • MRO - Praca w wielu regionach jest używana, gdy dwa regiony CICS w tym samym MVSPLEX muszą się ze sobą komunikować.

  • ISC - Komunikacja międzysystemowa jest używana, gdy region CICS na serwerze LOCAL musi komunikować się z regionem CICS na serwerze REMOTE.

Podczas pracy z CICS możesz napotkać błędy. Poniżej znajdują się typowe kody błędów wraz z ich opisami, które pomogą Ci rozwiązać problemy -

Sr.No Kod i opis
1

ASRA

Wyjątek kontroli programu

2

AEI0

Błąd identyfikatora programu

3

AEI9

Warunek błędu mapy

4

AEIO

Duplikat klucza

5

AEIN

Duplikat rekordu

6

AEID

Osiągnięto koniec pliku

7

AEIS

Plik nie jest otwarty

8

AEIP

Nieprawidłowy warunek żądania

9

AEY7

Brak uprawnień do korzystania z zasobu

10

APCT

Nie znaleziono programu

11

AFCA

Nie znaleziono zbioru danych

12

AKCT

Błąd przekroczenia czasu

13

ABM0

Nie znaleziono określonej mapy

14

AICA

Program w nieskończonej pętli

15

AAOW

Wewnętrzny błąd logiczny