IMS DB - Nozioni di base su Cobol

Includiamo chiamate DL / I all'interno del programma applicativo COBOL per comunicare con il database IMS. Usiamo le seguenti istruzioni DL / I nel programma COBOL per accedere al database:

  • Estratto conto
  • Dichiarazione Goback
  • Dichiarazione di chiamata

Estratto conto

Serve per passare il controllo dal DL / I al programma COBOL. Ecco la sintassi dell'istruzione di ingresso:

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

La dichiarazione di cui sopra è codificata in Procedure Divisiondi un programma COBOL. Entriamo nei dettagli della dichiarazione di entrata nel programma COBOL -

  • Il modulo di inizializzazione batch attiva il programma applicativo e viene eseguito sotto il suo controllo.

  • Il DL / I carica i blocchi di controllo e i moduli richiesti e il programma applicativo, e il controllo viene dato al programma applicativo.

  • DLITCBL sta per DL/I to COBOL. L'istruzione di ingresso viene utilizzata per definire il punto di ingresso nel programma.

  • Quando chiamiamo un sottoprogramma in COBOL, viene fornito anche il suo indirizzo. Allo stesso modo, quando il DL / I dà il controllo al programma applicativo, fornisce anche l'indirizzo di ogni PCB definito nel PSB del programma.

  • Tutti i PCB utilizzati nel programma applicativo devono essere definiti all'interno del file Linkage Section del programma COBOL perché PCB risiede al di fuori del programma applicativo.

  • La definizione PCB all'interno della sezione Linkage è chiamata come PCB Mask.

  • La relazione tra le maschere PCB e le PCB effettive in memoria viene creata elencando le PCB nella dichiarazione di entrata. La sequenza di elencazione nella dichiarazione di entrata dovrebbe essere la stessa che appare nel PSBGEN.

Dichiarazione Goback

Viene utilizzato per restituire il controllo al programma di controllo IMS. Di seguito è riportata la sintassi dell'istruzione Goback:

GOBACK

Di seguito sono elencati i punti fondamentali da notare sulla dichiarazione Goback:

  • GOBACK è codificato alla fine del programma applicativo. Restituisce il controllo a DL / I dal programma.

  • Non dovremmo usare STOP RUN poiché restituisce il controllo al sistema operativo. Se usiamo STOP RUN, il DL / I non ha mai la possibilità di eseguire le sue funzioni di terminazione. Ecco perché, nei programmi applicativi DL / I, viene utilizzata l'istruzione Goback.

  • Prima di emettere un'istruzione Goback, tutti i dataset non DL / I utilizzati nel programma applicativo COBOL devono essere chiusi, altrimenti il ​​programma terminerà in modo anomalo.

Dichiarazione di chiamata

L'istruzione Call viene utilizzata per richiedere servizi DL / I come l'esecuzione di determinate operazioni sul database IMS. Ecco la sintassi dell'istruzione call:

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

La sintassi sopra mostra i parametri che puoi usare con l'istruzione call. Discuteremo ciascuno di essi nella tabella seguente:

S.No. Parametro e descrizione
1

DLI Function Code

Identifica la funzione DL / I da eseguire. Questo argomento è il nome dei quattro campi di caratteri che descrivono l'operazione di I / O.

2

PCB Mask

La definizione PCB all'interno della sezione Linkage è chiamata PCB Mask. Sono utilizzati nella dichiarazione di entrata. Non sono richieste istruzioni SELECT, ASSIGN, OPEN o CLOSE.

3

Segment I/O Area

Nome di un'area di lavoro di input / output. Questa è un'area del programma applicativo in cui il DL / I inserisce un segmento richiesto.

4

Segment Search Arguments

Questi sono parametri opzionali a seconda del tipo di chiamata emessa. Vengono utilizzati per cercare segmenti di dati all'interno del database IMS.

Di seguito sono riportati i punti da notare sulla dichiarazione di invito:

  • CBLTDLI sta per COBOL to DL/I. È il nome di un modulo di interfaccia che viene modificato tramite collegamento con il modulo oggetto del programma.

  • Dopo ogni chiamata DL / I, il DLI memorizza un codice di stato nel PCB. Il programma può utilizzare questo codice per determinare se la chiamata è riuscita o meno.

Esempio

Per una maggiore comprensione di COBOL, puoi seguire il nostro tutorial COBOL  qui . L'esempio seguente mostra la struttura di un programma COBOL che utilizza il database IMS e le chiamate DL / I. Discuteremo in dettaglio ciascuno dei parametri utilizzati nell'esempio nei prossimi capitoli.

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.