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.