IMS DB - podstawy Cobol

Zawieramy wywołania DL / I wewnątrz aplikacji COBOL w celu komunikacji z bazą danych IMS. Korzystamy z następujących instrukcji DL / I w programie COBOL, aby uzyskać dostęp do bazy danych -

  • Oświadczenie wejścia
  • Oświadczenie Gobacka
  • Instrukcja Call

Oświadczenie wejścia

Służy do przekazania sterowania z DL / I do programu COBOL. Oto składnia instrukcji wejścia -

ENTRY 'DLITCBL' USING pcb-name1
                     [pcb-name2]

Powyższe stwierdzenie jest zakodowane w Procedure Divisionprogramu COBOL. Przejdźmy do szczegółów wyciągu wejściowego w programie COBOL -

  • Moduł inicjalizacji wsadowej uruchamia program aplikacji i jest wykonywany pod jego kontrolą.

  • DL / I ładuje wymagane bloki i moduły sterujące oraz program aplikacji, a sterowanie jest przekazywane do programu aplikacji.

  • DLITCBL oznacza DL/I to COBOL. Instrukcja wejścia służy do definiowania punktu wejścia w programie.

  • Gdy wywołujemy podprogram w języku COBOL, podawany jest również jego adres. Podobnie, gdy DL / I przekazuje sterowanie do programu aplikacji, dostarcza również adres każdej płytki drukowanej zdefiniowanej w PSB programu.

  • Wszystkie płytki drukowane używane w aplikacji muszą być zdefiniowane wewnątrz Linkage Section programu COBOL, ponieważ PCB znajduje się poza programem użytkowym.

  • Definicja PCB w sekcji Linkage nosi nazwę PCB Mask.

  • Relację między maskami PCB a rzeczywistymi PCB w magazynie tworzy się poprzez wyszczególnienie PCB w oświadczeniu wejściowym. Kolejność umieszczania w instrukcji wpisu powinna być taka sama, jak w PSBGEN.

Oświadczenie Gobacka

Służy do przekazania sterowania z powrotem do programu sterującego IMS. Poniżej znajduje się składnia instrukcji Goback -

GOBACK

Poniżej wymienione są podstawowe punkty, na które należy zwrócić uwagę na temat oświadczenia Goback -

  • GOBACK jest zakodowany na końcu aplikacji. Zwraca sterowanie do DL / I z programu.

  • Nie powinniśmy używać funkcji STOP RUN, ponieważ zwraca sterowanie do systemu operacyjnego. Jeśli użyjemy STOP RUN, DL / I nigdy nie ma szansy wykonać swoich funkcji kończących. Dlatego w aplikacjach DL / I używa się instrukcji Goback.

  • Przed wydaniem instrukcji Goback wszystkie zbiory danych inne niż DL / I używane w aplikacji COBOL muszą zostać zamknięte, w przeciwnym razie program zakończy się nieprawidłowo.

Instrukcja Call

Instrukcja Call służy do żądania usług DL / I, takich jak wykonywanie określonych operacji w bazie danych IMS. Oto składnia instrukcji call -

CALL 'CBLTDLI' USING DLI Function Code
                        PCB Mask
                        Segment I/O Area
                        [Segment Search Arguments]

Powyższa składnia przedstawia parametry, których można użyć w instrukcji call. Omówimy każdy z nich w poniższej tabeli -

S.No. Parametr i opis
1

DLI Function Code

Identyfikuje funkcję DL / I do wykonania. Ten argument to nazwa czterech pól znakowych, które opisują operację we / wy.

2

PCB Mask

Definicja PCB w sekcji Linkage nosi nazwę maski PCB. Są używane w instrukcji wejścia. Nie są wymagane żadne instrukcje SELECT, ASSIGN, OPEN ani CLOSE.

3

Segment I/O Area

Nazwa obszaru roboczego wejścia / wyjścia. Jest to obszar programu użytkowego, w którym DL / I umieszcza żądany segment.

4

Segment Search Arguments

Są to parametry opcjonalne w zależności od typu wywołania. Służą do wyszukiwania segmentów danych w bazie danych IMS.

Poniżej podano punkty, na które należy zwrócić uwagę na temat instrukcji Call -

  • CBLTDLI oznacza COBOL to DL/I. Jest to nazwa modułu interfejsu, który jest edytowany za pomocą łącza z modułem obiektowym programu.

  • Po każdym wywołaniu DL / I, DLI zapisuje kod statusu na PCB. Program może użyć tego kodu, aby określić, czy wywołanie zakończyło się powodzeniem, czy niepowodzeniem.

Przykład

Aby lepiej zrozumieć język COBOL, możesz zapoznać się z naszym samouczkiem dotyczącym języka COBOL  tutaj . Poniższy przykład przedstawia strukturę programu w języku COBOL, który korzysta z bazy danych IMS i wywołań DL / I. W kolejnych rozdziałach szczegółowo omówimy każdy z parametrów zastosowanych w przykładzie.

IDENTIFICATION DIVISION.
PROGRAM-ID. TEST1.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 DLI-FUNCTIONS.
   05 DLI-GU        PIC X(4)    VALUE 'GU  '.
   05 DLI-GHU       PIC X(4)    VALUE 'GHU '.
   05 DLI-GN        PIC X(4)    VALUE 'GN  '.
   05 DLI-GHN       PIC X(4)    VALUE 'GHN '.
   05 DLI-GNP       PIC X(4)    VALUE 'GNP '.
   05 DLI-GHNP      PIC X(4)    VALUE 'GHNP'.
   05 DLI-ISRT      PIC X(4)    VALUE 'ISRT'.
   05 DLI-DLET      PIC X(4)    VALUE 'DLET'.
   05 DLI-REPL      PIC X(4)    VALUE 'REPL'.
   05 DLI-CHKP      PIC X(4)    VALUE 'CHKP'.
   05 DLI-XRST      PIC X(4)    VALUE 'XRST'.
   05 DLI-PCB       PIC X(4)    VALUE 'PCB '.
01  SEGMENT-I-O-AREA        PIC X(150).
LINKAGE SECTION.
01  STUDENT-PCB-MASK.
   05 STD-DBD-NAME              PIC X(8).
   05 STD-SEGMENT-LEVEL         PIC XX.
   05 STD-STATUS-CODE           PIC XX.
   05 STD-PROC-OPTIONS          PIC X(4).
   05 FILLER                    PIC S9(5) COMP.
   05 STD-SEGMENT-NAME          PIC X(8).
   05 STD-KEY-LENGTH            PIC S9(5) COMP.
   05 STD-NUMB-SENS-SEGS        PIC S9(5) COMP.
   05 STD-KEY                   PIC X(11).
PROCEDURE DIVISION.
ENTRY 'DLITCBL' USING STUDENT-PCB-MASK.
A000-READ-PARA.
110-GET-INVENTORY-SEGMENT.
   CALL ‘CBLTDLI’ USING DLI-GN
                  STUDENT-PCB-MASK
                  SEGMENT-I-O-AREA.
GOBACK.