IMS DB - Truy xuất dữ liệu
Các phương pháp truy xuất dữ liệu khác nhau được sử dụng trong lệnh gọi IMS DL / I như sau:
- Gọi GU
- Gọi GN
- Sử dụng mã lệnh
- Nhiều chế biến
Chúng ta hãy xem xét cấu trúc cơ sở dữ liệu IMS sau đây để hiểu các lệnh gọi hàm truy xuất dữ liệu:
Gọi GU
Các nguyên tắc cơ bản của cuộc gọi GU như sau:
Cuộc gọi GU được gọi là cuộc gọi Nhận duy nhất. Nó được sử dụng để xử lý ngẫu nhiên.
Nếu một ứng dụng không cập nhật cơ sở dữ liệu thường xuyên hoặc nếu số lần cập nhật cơ sở dữ liệu ít hơn, thì chúng tôi sử dụng xử lý ngẫu nhiên.
Lệnh gọi GU được sử dụng để đặt con trỏ tại một vị trí cụ thể để truy xuất tuần tự tiếp theo.
Các cuộc gọi GU độc lập với vị trí con trỏ được thiết lập bởi các cuộc gọi trước đó.
Xử lý cuộc gọi GU dựa trên các trường khóa duy nhất được cung cấp trong câu lệnh gọi.
Nếu chúng tôi cung cấp trường khóa không phải là duy nhất, thì DL / I trả về lần xuất hiện phân đoạn đầu tiên của trường khóa.
CALL 'CBLTDLI' USING DLI-GU
PCB-NAME
IO-AREA
LIBRARY-SSA
BOOKS-SSA
ENGINEERING-SSA
IT-SSA
Ví dụ trên cho thấy chúng tôi thực hiện lệnh gọi GU bằng cách cung cấp một tập hợp đầy đủ các SSA đủ điều kiện. Nó bao gồm tất cả các trường khóa bắt đầu từ cấp cơ sở đến lần xuất hiện phân đoạn mà chúng ta muốn truy xuất.
Cân nhắc cuộc gọi GU
Nếu chúng tôi không cung cấp toàn bộ các SSA đủ điều kiện trong cuộc gọi, thì DL / I sẽ hoạt động theo cách sau:
Khi chúng tôi sử dụng SSA không đủ tiêu chuẩn trong lệnh gọi GU, DL / I truy cập lần xuất hiện phân đoạn đầu tiên trong cơ sở dữ liệu đáp ứng các tiêu chí bạn chỉ định.
Khi chúng tôi thực hiện một cuộc gọi GU mà không có bất kỳ SSA nào, DL / I trả về lần xuất hiện đầu tiên của phân đoạn gốc trong cơ sở dữ liệu.
Nếu một số SSA ở cấp độ trung gian không được đề cập trong lệnh gọi, thì DL / I sử dụng vị trí đã thiết lập hoặc giá trị mặc định của một SSA không đủ tiêu chuẩn cho phân đoạn.
Mã trạng thái
Bảng sau hiển thị các mã trạng thái liên quan sau cuộc gọi GU -
S. không | Mã Trạng thái & Mô tả |
---|---|
1 | Spaces Cuộc gọi thành công |
2 | GE DL / Tôi không thể tìm thấy phân đoạn đáp ứng các tiêu chí được chỉ định trong cuộc gọi |
Gọi GN
Các nguyên tắc cơ bản của cuộc gọi GN như sau:
Cuộc gọi GN được gọi là cuộc gọi Tiếp theo. Nó được sử dụng để xử lý tuần tự cơ bản.
Vị trí ban đầu của con trỏ trong cơ sở dữ liệu là trước phân đoạn gốc của bản ghi cơ sở dữ liệu đầu tiên.
Vị trí con trỏ cơ sở dữ liệu trước lần xuất hiện phân đoạn tiếp theo trong chuỗi, sau khi gọi GN thành công.
Cuộc gọi GN bắt đầu thông qua cơ sở dữ liệu từ vị trí được thiết lập bởi cuộc gọi trước đó.
Nếu một lệnh gọi GN không đủ tiêu chuẩn, nó sẽ trả về lần xuất hiện phân đoạn tiếp theo trong cơ sở dữ liệu bất kể loại của nó, theo trình tự phân cấp.
Nếu một lệnh gọi GN bao gồm các SSA, thì DL / I chỉ truy xuất các phân đoạn đáp ứng các yêu cầu của tất cả các SSA được chỉ định.
CALL 'CBLTDLI' USING DLI-GN
PCB-NAME
IO-AREA
BOOKS-SSA
Ví dụ trên cho thấy chúng tôi thực hiện một lệnh gọi GN cung cấp vị trí bắt đầu để đọc các bản ghi một cách tuần tự. Nó tìm nạp lần xuất hiện đầu tiên của phân đoạn BOOKS.
Mã trạng thái
Bảng sau đây hiển thị các mã trạng thái có liên quan sau một cuộc gọi GN:
S. không | Mã Trạng thái & Mô tả |
---|---|
1 | Spaces Cuộc gọi thành công |
2 | GE DL / Tôi không thể tìm thấy phân đoạn đáp ứng tiêu chí được chỉ định trong cuộc gọi. |
3 | GA Một lệnh gọi GN không đủ tiêu chuẩn di chuyển lên một cấp trong phân cấp cơ sở dữ liệu để tìm nạp phân đoạn. |
4 | GB Đã đến cuối cơ sở dữ liệu và không tìm thấy phân đoạn. |
GK Một lệnh gọi GN không đủ tiêu chuẩn cố gắng tìm nạp một phân đoạn của một loại cụ thể khác với một phân đoạn vừa được truy xuất nhưng vẫn ở cùng một mức phân cấp. |
Mã lệnh
Mã lệnh được sử dụng với các lệnh gọi để tìm nạp sự xuất hiện của phân đoạn. Các mã lệnh khác nhau được sử dụng với các cuộc gọi được thảo luận dưới đây.
Mã lệnh F
Những điểm cần lưu ý -
Khi một mã lệnh F được chỉ định trong một cuộc gọi, cuộc gọi sẽ xử lý lần xuất hiện đầu tiên của phân đoạn.
Mã lệnh F có thể được sử dụng khi chúng ta muốn xử lý tuần tự và nó có thể được sử dụng với các lệnh gọi GN và lệnh gọi GNP.
Nếu chúng ta chỉ định mã lệnh F bằng lệnh gọi GU, nó không có bất kỳ ý nghĩa nào, vì lệnh gọi GU tìm nạp lần xuất hiện phân đoạn đầu tiên theo mặc định.
Mã lệnh L
Những điểm cần lưu ý -
Khi một mã lệnh L được chỉ định trong một cuộc gọi, cuộc gọi sẽ xử lý lần xuất hiện cuối cùng của phân đoạn.
Mã lệnh L có thể được sử dụng khi chúng ta muốn xử lý tuần tự và nó có thể được sử dụng với các lệnh gọi GN và lệnh gọi GNP.
D Mã lệnh
Những điểm cần lưu ý -
Mã lệnh D được sử dụng để tìm nạp nhiều lần xuất hiện phân đoạn chỉ bằng một lệnh gọi.
Thông thường DL / I hoạt động trên phân đoạn cấp thấp nhất được chỉ định trong SSA, nhưng trong nhiều trường hợp, chúng tôi cũng muốn dữ liệu từ các cấp khác. Trong những trường hợp đó, chúng ta có thể sử dụng mã lệnh D.
Mã lệnh D giúp dễ dàng truy xuất toàn bộ đường dẫn của các phân đoạn.
Mã lệnh C
Những điểm cần lưu ý -
Mã lệnh C được sử dụng để nối các khóa.
Sử dụng toán tử quan hệ hơi phức tạp, vì chúng ta cần chỉ định tên trường, toán tử quan hệ và giá trị tìm kiếm. Thay vào đó, chúng ta có thể sử dụng mã lệnh C để cung cấp một khóa được nối.
Ví dụ sau cho thấy việc sử dụng mã lệnh C:
01 LOCATION-SSA.
05 FILLER PIC X(11) VALUE ‘INLOCSEG*C(‘.
05 LIBRARY-SSA PIC X(5).
05 BOOKS-SSA PIC X(4).
05 ENGINEERING-SSA PIC X(6).
05 IT-SSA PIC X(3)
05 FILLER PIC X VALUE ‘)’.
CALL 'CBLTDLI' USING DLI-GU
PCB-NAME
IO-AREA
LOCATION-SSA
Mã lệnh P
Những điểm cần lưu ý -
Khi chúng ta thực hiện lệnh gọi GU hoặc GN, DL / I thiết lập nguồn gốc của nó ở phân đoạn cấp thấp nhất được truy xuất.
Nếu chúng ta bao gồm mã lệnh P, thì DL / I thiết lập nguồn gốc của nó ở một phân đoạn cấp cao hơn trong đường dẫn phân cấp.
Mã lệnh U
Những điểm cần lưu ý -
Khi mã lệnh U được chỉ định trong SSA không đủ tiêu chuẩn trong lệnh gọi GN, DL / I hạn chế tìm kiếm phân đoạn.
Mã lệnh U bị bỏ qua nếu nó được sử dụng với SSA đủ điều kiện.
Mã lệnh V
Những điểm cần lưu ý -
Mã lệnh V hoạt động tương tự như mã lệnh U, nhưng nó hạn chế việc tìm kiếm một phân đoạn ở một cấp cụ thể và tất cả các cấp trên hệ thống phân cấp.
Mã lệnh V bị bỏ qua khi được sử dụng với SSA đủ điều kiện.
Mã lệnh Q
Những điểm cần lưu ý -
Mã lệnh Q được sử dụng để xếp hàng hoặc đặt trước một phân đoạn để sử dụng riêng cho chương trình ứng dụng của bạn.
Mã lệnh Q được sử dụng trong môi trường tương tác nơi chương trình khác có thể thực hiện thay đổi đối với một phân đoạn.
Nhiều chế biến
Một chương trình có thể có nhiều vị trí trong cơ sở dữ liệu IMS được gọi là nhiều xử lý. Nhiều xử lý có thể được thực hiện theo hai cách:
- Nhiều PCB
- Nhiều vị trí
Nhiều PCB
Nhiều PCB có thể được xác định cho một cơ sở dữ liệu duy nhất. Nếu có nhiều PCB, thì một chương trình ứng dụng có thể có các quan điểm khác nhau về nó. Phương pháp này để thực hiện nhiều quá trình xử lý là không hiệu quả vì các chi phí chung do PCB bổ sung gây ra.
Nhiều vị trí
Một chương trình có thể duy trì nhiều vị trí trong cơ sở dữ liệu bằng cách sử dụng một PCB duy nhất. Điều này đạt được bằng cách duy trì một vị trí riêng biệt cho mỗi đường dẫn phân cấp. Nhiều định vị được sử dụng để truy cập các phân đoạn của hai hoặc nhiều loại một cách tuần tự cùng một lúc.