
- IMS DB 基礎教程
- IMS DB - 首頁
- IMS DB - 概述
- IMS DB - 結構
- IMS DB - DL/I 術語
- IMS DB - DL/I 處理
- IMS DB - 控制塊
- IMS DB - 程式設計
- IMS DB - Cobol 基礎
- IMS DB - DL/I 函式
- IMS DB - PCB 掩碼
- IMS DB - SSA
- IMS DB - 資料檢索
- IMS DB - 資料操作
- IMS DB - 二級索引
- IMS DB - 邏輯資料庫
- IMS DB - 恢復
- IMS DB 有用資源
- IMS DB - 問答
- IMS DB - 快速指南
- IMS DB - 有用資源
IMS DB - 控制塊
IMS 控制塊定義了 IMS 資料庫的結構以及程式對其的訪問方式。下圖顯示了 IMS 控制塊的結構。

DL/I 使用以下三種類型的控制塊:
- 資料庫描述符 (DBD)
- 程式規範塊 (PSB)
- 訪問控制塊 (ACB)
資料庫描述符 (DBD)
需要注意的幾點:
DBD 描述了所有段定義後資料庫的完整物理結構。
在安裝 DL/I 資料庫時,必須建立一個 DBD,因為它需要訪問 IMS 資料庫。
應用程式可以使用 DBD 的不同檢視。它們被稱為應用程式資料結構,並在程式規範塊中指定。
資料庫管理員透過編碼DBDGEN控制語句來建立 DBD。
DBDGEN
DBDGEN 是資料庫描述符生成器。建立控制塊是資料庫管理員的職責。所有載入模組都儲存在 IMS 庫中。組合語言宏語句用於建立控制塊。下面是一個示例程式碼,展示瞭如何使用 DBDGEN 控制語句建立 DBD:
PRINT NOGEN DBD NAME=LIBRARY,ACCESS=HIDAM DATASET DD1=LIB,DEVICE=3380 SEGM NAME=LIBSEG,PARENT=0,BYTES=10 FIELD NAME=(LIBRARY,SEQ,U),BYTES=10,START=1,TYPE=C SEGM NAME=BOOKSEG,PARENT=LIBSEG,BYTES=5 FIELD NAME=(BOOKS,SEQ,U),BYTES=10,START=1,TYPE=C SEGM NAME=MAGSEG,PARENT=LIBSEG,BYTES=9 FIELD NAME=(MAGZINES,SEQ),BYTES=8,START=1,TYPE=C DBDGEN FINISH END
讓我們瞭解上面 DBDGEN 中使用的術語:
當您在JCL中執行上述控制語句時,它會建立一個物理結構,其中 LIBRARY 是根段,BOOKS 和 MAGZINES 是其子段。
第一個 DBD 宏語句標識資料庫。在這裡,我們需要提到 DL/I 用於訪問此資料庫的 NAME 和 ACCESS。
第二個 DATASET 宏語句標識包含資料庫的檔案。
段型別使用 SEGM 宏語句定義。我們需要指定該段的 PARENT。如果它是根段,則指定 PARENT=0。
下表顯示了 FIELD 宏語句中使用的引數:
序號 | 引數和描述 |
---|---|
1 | 名稱 欄位的名稱,通常為 1 到 8 個字元 |
2 | 位元組 欄位的長度 |
3 | 開始 欄位在段中的位置 |
4 | 型別 欄位的資料型別 |
5 | 型別 C 字元資料型別 |
6 | 型別 P 打包十進位制資料型別 |
7 | 型別 Z 區域十進位制資料型別 |
8 | 型別 X 十六進位制資料型別 |
9 | 型別 H 半字二進位制資料型別 |
10 | 型別 F 全字二進位制資料型別 |
程式規範塊 (PSB)
PSB 的基本原理如下:
資料庫具有由 DBD 定義的單個物理結構,但處理它的應用程式程式可以具有資料庫的不同檢視。這些檢視稱為應用程式資料結構,並在 PSB 中定義。
一個程式在一次執行中不能使用多個 PSB。
應用程式程式有自己的 PSB,並且具有類似資料庫處理需求的應用程式程式共享一個 PSB 也很常見。
PSB 由一個或多個稱為程式通訊塊 (PCB) 的控制塊組成。PSB 為應用程式程式將訪問的每個 DL/I 資料庫包含一個 PCB。我們將在以後的模組中詳細討論 PCB。
必須執行 PSBGEN 以建立程式的 PSB。
PSBGEN
PSBGEN 稱為程式規範塊生成器。以下示例使用 PSBGEN 建立 PSB:
PRINT NOGEN PCB TYPE=DB,DBDNAME=LIBRARY,KEYLEN=10,PROCOPT=LS SENSEG NAME=LIBSEG SENSEG NAME=BOOKSEG,PARENT=LIBSEG SENSEG NAME=MAGSEG,PARENT=LIBSEG PSBGEN PSBNAME=LIBPSB,LANG=COBOL END
讓我們瞭解上面 DBDGEN 中使用的術語:
第一個宏語句是程式通訊塊 (PCB),它描述了資料庫型別、名稱、鍵長度和處理選項。
PCB 宏上的 DBDNAME 引數指定 DBD 的名稱。KEYLEN 指定最長連線鍵的長度。程式可以在資料庫中處理。PROCOPT 引數指定程式的處理選項。例如,LS 表示僅載入操作。
SENSEG 稱為段級敏感性。它定義了程式對資料庫部分的訪問許可權,並在段級進行識別。程式可以訪問其敏感的所有段內的所有欄位。程式也可以具有欄位級敏感性。在這裡,我們定義一個段名稱和該段的父名稱。
最後一個宏語句是 PCBGEN。PSBGEN 是最後一個語句,表示沒有更多語句需要處理。PSBNAME 定義賦予輸出 PSB 模組的名稱。LANG 引數指定編寫應用程式程式的語言,例如 COBOL。
訪問控制塊 (ACB)
以下是關於訪問控制塊需要注意的幾點:
應用程式程式的訪問控制塊將資料庫描述符和程式規範塊組合成可執行形式。
ACBGEN 稱為訪問控制塊生成器。它用於生成 ACB。
對於聯機程式,我們需要預先構建 ACB。因此,在執行應用程式程式之前執行 ACBGEN 實用程式。
對於批處理程式,也可以在執行時生成 ACB。