資料語言介面
資料語言一號(Data Language/I, DL/I)是用於存取 IBM 的 IMS 資料庫及其資料通訊系統的語言系統。
它透過從多種語言呼叫一個名為 DFSLI000 的軟體存根來實現。此存根具有處理各種程式語言的進入點,例如,從 COBOL 程式呼叫 CBLTDLI。此存根會連結到呼叫程式,將請求傳遞給 IMS 系統,並傳回結果與狀態碼。
在任何全功能 IMS 資料庫中,可擷取的最小元素是區段。每個區段由欄位組成,其中一個欄位通常會是鍵值欄位。區段在資料庫中以階層方式排列,最高層級的區段類型為根區段。任何資料庫中允許存在 255 種不同的區段類型,最多可達 15 個層級。一筆資料庫紀錄由一個特定的根區段及其所有相依的子區段所組成,紀錄中的區段數量或資料庫中的紀錄數量沒有限制(除了儲存空間的實體限制外)。
任何資料庫的結構都會以 PCB(程式通訊區塊)的形式呈現給應用程式,而 PCB 會作為傳遞給存根的參數之一。其他類型的 PCB 則用於收發交易處理訊息、存取和寫入使用者的 VDU(視覺顯示單元)螢幕,以及列印報表等。
當存取資料庫區段時,應用程式也會使用 SSA(區段搜尋引數)作為參數,以指定其所需的一個或多個區段。SSA 通常會包含所需的區段類型以及任何鍵值欄位的內容。
對於除了 PL/I 以外的所有語言,呼叫中的第一個參數是功能碼,為一個四字元欄位,例如:「GU」(Get Unique,唯一取得)、「GN」(Get Next,下一筆取得)、「REPL」(Replace,取代)及「ISRT」(Insert,插入)。對於 PL/I,由於該語言不會在最後一個參數的位元 0 標記「1」,因此第一個參數必須是一個全字組(Fixed Bin(31)),其中包含後續參數的數量。
一個典型的 COBOL 程式呼叫可能如下:CALL “CBLTDLI” USING GU, Stores-Database-PCB, Stores-Segment-Area, Stores-Root-SSA。然後,程式會自動等待,直到請求的資料被擷取並放置到 Segment-Area 中。PCB 中包含的狀態碼會被更新,若一切順利則為空白,否則為某些資訊或錯誤碼。
一個典型的 PL/I 程式呼叫可能如下:CALL PLITDLI(FOUR, GU, Stores-Database-PCB, Stores-Segment-Area, Stores-Root-SSA);。
參考資料
外部連結
- Information Management Software for z/OS Solutions Information Center
- DL/I 資料庫基本概念
Category:資料結構化程式語言 資料語言一號