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 -
GOBACKPoniż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.