VSAM - Hướng dẫn nhanh

Phương pháp truy cập lưu trữ ảo (VSAM) là phương pháp truy cập hiệu suất cao và tổ chức tập dữ liệu, tổ chức và duy trì dữ liệu thông qua cấu trúc danh mục. Nó sử dụng khái niệm lưu trữ ảo và có thể bảo vệ tập dữ liệu ở nhiều cấp độ khác nhau bằng cách cấp mật khẩu. VSAM có thể được sử dụng trong các chương trình COBOL như các tệp tuần tự vật lý. VSAM là các bộ dữ liệu logic để lưu trữ các bản ghi. Các tệp có thể được đọc tuần tự và ngẫu nhiên trong VSAM. Đây là một cách lưu trữ dữ liệu được cải tiến khắc phục một số hạn chế của các hệ thống tệp thông thường như Tệp tuần tự.

Đặc điểm của VSAM

Sau đây là các đặc điểm của VSAM:

  • VSAM bảo vệ dữ liệu khỏi bị truy cập trái phép bằng cách sử dụng mật khẩu.

  • VSAM cung cấp khả năng truy cập nhanh vào các tập dữ liệu.

  • VSAM có các tùy chọn để tối ưu hóa hiệu suất.

  • VSAM cho phép chia sẻ tập dữ liệu trong cả môi trường hàng loạt và trực tuyến.

  • VSAM có cấu trúc và tổ chức hơn trong việc lưu trữ dữ liệu.

  • Dung lượng trống được sử dụng lại tự động trong các tệp VSAM.

Hạn chế của VSAM

Hạn chế duy nhất của VSAM là nó không thể được lưu trữ trên TAPE volume. Nó luôn được lưu trữ trên không gian DASD. Nó yêu cầu một số xi lanh để lưu trữ dữ liệu mà không hiệu quả về chi phí.

VSAM bao gồm các thành phần sau:

  • Cụm VSAM
  • Khu vực kiểm soát
  • Khoảng thời gian kiểm soát

Cụm VSAM

VSAM là các bộ dữ liệu logic để lưu trữ các bản ghi và được gọi là các cụm. Cụm là một liên kết của chỉ mục, tập hợp trình tự và các phần dữ liệu của tập dữ liệu. Không gian được chiếm bởi một cụm VSAM được chia thành các khu vực liền kề được gọi là Khoảng kiểm soát. Chúng ta sẽ thảo luận về khoảng thời gian điều khiển ở phần sau trong mô-đun này.

Có hai thành phần chính trong một cụm VSAM -

  • Index Componentchứa phần chỉ mục. Bản ghi chỉ mục có trong thành phần Chỉ mục. Sử dụng thành phần chỉ mục VSAM có thể lấy các bản ghi từ thành phần dữ liệu.

  • Data Componentchứa phần dữ liệu. Bản ghi dữ liệu thực tế có trong thành phần Dữ liệu.

Khoảng thời gian kiểm soát

Khoảng điều khiển (CI) trong VSAM tương đương với các khối cho tập dữ liệu không phải VSAM. Trong các phương pháp không phải VSAM, đơn vị dữ liệu được xác định bởi khối. VSAM hoạt động với vùng dữ liệu logic được gọi là Khoảng điều khiển.

Khoảng thời gian điều khiển là đơn vị truyền nhỏ nhất giữa đĩa và hệ điều hành. Bất cứ khi nào một bản ghi được truy xuất trực tiếp từ bộ lưu trữ, toàn bộ CI chứa bản ghi được đọc vào bộ đệm Đầu vào-Đầu ra của VSAM. Bản ghi mong muốn sau đó được chuyển đến vùng làm việc từ bộ đệm VSAM.

Khoảng thời gian kiểm soát bao gồm -

  • Hồ sơ lôgic
  • Kiểm soát các trường thông tin
  • Không gian trông

Khi một tập dữ liệu VSAM được tải, các khoảng điều khiển sẽ được tạo. Kích thước Khoảng thời gian điều khiển mặc định là 4K byte và nó có thể mở rộng lên đến 32K byte.

Phân tích khoảng thời gian kiểm soát

Sau đây là mô tả các thuật ngữ được sử dụng trong chương trình trên:

  • R1..R5 - Hồ sơ được lưu trữ trong Khoảng thời gian kiểm soát.

  • FS - FS là không gian trống, có thể được sử dụng để mở rộng thêm tập dữ liệu.

  • RDF- RDF được gọi là Trường Định nghĩa Bản ghi. RDF dài 3 byte. Nó mô tả độ dài của các bản ghi và cho biết có bao nhiêu bản ghi liền kề có cùng độ dài.

  • CIDF- CIDF được gọi là Trường định nghĩa khoảng thời gian điều khiển. CIDF dài 4 byte và chứa thông tin về Khoảng thời gian điều khiển.

Khu vực kiểm soát

Vùng Kiểm soát (CA) được hình thành bằng cách ghép hai hoặc nhiều Khoảng kiểm soát lại với nhau. Tập dữ liệu VSAM bao gồm một hoặc nhiều Vùng điều khiển. Kích thước của VSAM luôn là bội số của Vùng kiểm soát của nó. Các tệp VSAM được mở rộng theo đơn vị Vùng kiểm soát.

Sau đây là ví dụ về Khu vực kiểm soát -

Cụm VSAM được xác định trong JCL. JCL sử dụngIDCAMStiện ích để tạo một cụm. IDCAMS là một tiện ích, do IBM phát triển, dành cho các dịch vụ phương thức truy cập. Nó được sử dụng chủ yếu để xác định các bộ dữ liệu VSAM.

Xác định một cụm

Cú pháp sau đây hiển thị các tham số chính được nhóm theo Define Cluster, DataIndex.

.DEFINE CLUSTER (NAME(vsam-file-name)      -
BLOCKS(number)                             -
VOLUMES(volume-serial)                     -
[INDEXED / NONINDEXED / NUMBERED / LINEAR] -
RECSZ(average maximum)                     -
[FREESPACE(CI-Percentage,CA-Percentage)]   -
CISZ(number)                               -
[KEYS(length offset)]                      -
[READPW(password)]                         -
[FOR(days)|TO(date)]                       -
[UPDATEPW(password)]                       -
[REUSE / NOREUSE] )                        -
DATA                                       -
   (NAME(vsam-file-name.data))             -
INDEX                                      -
   (NAME(vsam-file-name.index))            -
CATALOG(catalog-name[/password]))

Các thông số ở cấp CLUSTER áp dụng cho toàn bộ cụm. Các thông số ở cấp DATA hoặc INDEX chỉ áp dụng cho thành phần dữ liệu hoặc chỉ mục.

Chúng ta sẽ thảo luận chi tiết từng tham số trong bảng sau:

Sr.No Tham số với Mô tả
1

DEFINE CLUSTER

Lệnh Define Cluster được sử dụng để xác định một cụm và chỉ định các thuộc tính tham số cho cụm và các thành phần của nó.

2

NAME

NAME chỉ định tên của tệp VSAM mà chúng tôi đang xác định cụm.

3

BLOCKS

Các khối chỉ định số khối được gán cho cụm.

4

VOLUMES

Tập chỉ định một hoặc nhiều tập sẽ chứa cụm hoặc thành phần.

5

INDEXED / NONINDEXED / NUMBERED / LINEAR

Tham số này có thể nhận ba giá trị INDEXED, NONINDEXED hoặc NUMBERED tùy thuộc vào loại tập dữ liệu mà chúng tôi đang tạo. Đối với tệp theo trình tự khóa (KSDS), tùy chọn INDEXED được sử dụng. Đối với các tệp theo trình tự mục nhập (ESDS), tùy chọn NONINDEXED được sử dụng. Đối với tệp bản ghi tương đối (RRDS), tùy chọn NUMBERED là bắt buộc. Đối với tệp tuyến tính (LDS), tùy chọn LINEAR là bắt buộc. Giá trị mặc định của tham số này là INDEXED. Chúng tôi sẽ thảo luận thêm về KSDS, ESDS, RRDS và LDS trong các mô-đun tới.

6

RECSZ

Tham số Kích thước Bản ghi có hai giá trị là Kích thước bản ghi Trung bình và Tối đa. Giá trị Trung bình chỉ định độ dài trung bình của các bản ghi lôgic trong tệp và Giá trị Tối đa biểu thị độ dài của các bản ghi.

7

FREESPACE

Freespace chỉ định phần trăm không gian trống để dự trữ cho các khoảng điều khiển (CI) và vùng điều khiển (CA) của thành phần dữ liệu. Giá trị mặc định của tham số này là 0%.

số 8

CISZ

CISZ được gọi là Kích thước khoảng thời gian kiểm soát. Nó chỉ định kích thước của khoảng kiểm soát.

9

KEYS

Tham số khóa chỉ được xác định trong các tệp theo trình tự khóa (KSDS). Nó chỉ định độ dài và độ lệch của khóa chính từ cột đầu tiên. Phạm vi giá trị của tham số này là từ 1 đến 255 byte.

10

READPW

Giá trị trong tham số READPW chỉ định mật khẩu của cấp độ đọc.

11

FOR/TO

Giá trị của tham số này chỉ định lượng thời gian về ngày tháng để lưu giữ tệp. Giá trị mặc định cho thông số này là 0 ngày.

12

UPDATEPW

Giá trị trong tham số UPDATEPW chỉ định mật khẩu của cấp cập nhật.

13

REUSE / NOREUSE

Tham số REUSE cho phép các cụm được xác định có thể được đặt lại về trạng thái trống mà không cần xóa và xác định lại chúng.

14

DATA - NAME

Phần DATA của cụm chứa tên tập dữ liệu chứa dữ liệu thực của tệp.

15

INDEX-NAME

Phần INDEX của cụm chứa khóa chính và con trỏ bộ nhớ cho bản ghi tương ứng trong phần dữ liệu. Nó được xác định khi sử dụng cụm Key Sequence.

16

CATALOG

Tham số danh mục biểu thị danh mục mà tệp sẽ được xác định. Chúng ta sẽ thảo luận riêng về danh mục trong các học phần sắp tới.

Thí dụ

Sau đây là một ví dụ cơ bản để chỉ ra cách xác định một cụm trong JCL:

//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEP1  EXEC PGM = IDCAMS
//SYSPRINT DD  SYSOUT = *
//SYSIN    DD  *
   DEFINE CLUSTER (NAME(MY.VSAM.KSDSFILE)  -
   INDEXED                                 -
   RECSZ(80 80)                            -
   TRACKS(1,1)                             -
   KEYS(5  0)                              -
   CISZ(4096)                              -                            
   FREESPACE(3 3) )                        -
   DATA (NAME(MY.VSAM.KSDSFILE.DATA))      -
   INDEX (NAME(MY.VSAM.KSDSFILE.INDEX))
/*

Nếu bạn sẽ thực thi JCL trên trên máy chủ Mainframes. Nó sẽ thực thi với MAXCC = 0 và nó sẽ tạo tệp MY.VSAM.KSDSFILE VSAM.

Xóa một cụm

Để xóa tệp VSAM, cụm VSAM cần được xóa bằng tiện ích IDCAMS. Lệnh DELETE loại bỏ mục nhập của cụm VSAM khỏi danh mục và tùy chọn loại bỏ tệp, do đó giải phóng không gian bị chiếm dụng bởi đối tượng. Nếu tập dữ liệu VSAM chưa hết hạn thì nó sẽ không bị xóa. Để xóa các loại tập dữ liệu như vậy, hãy sử dụng tùy chọn PURGE.

DELETE data-set-name CLUSTER  
[ERASE / NOERASE] 
[FORCE / NOFORCE] 
[PURGE / NOPURGE] 
[SCRATCH / NOSCRATCH]

Cú pháp trên hiển thị các tham số mà chúng ta có thể sử dụng với câu lệnh Delete. Chúng ta sẽ thảo luận chi tiết về từng loại trong bảng sau:

Sr.No Tham số với Mô tả
1

ERASE / NOERASE

Tùy chọn ERASE được chỉ định để ghi đè thuộc tính ERASE được chỉ định cho đối tượng trong danh mục. Tùy chọn NOERASE được sử dụng theo mặc định.

2

FORCE / NOFORCE

Tùy chọn FORCE được chỉ định để xóa SPACE và USERCATALOG ngay cả khi chúng không trống. Tùy chọn NOFORCE được sử dụng theo mặc định.

3

PURGE / NOPURGE

Tùy chọn PURGE được sử dụng để xóa tập dữ liệu VSAM nếu tập dữ liệu chưa hết hạn. Tùy chọn NOPURGE được sử dụng theo mặc định.

4

SCRATCH / NOSCRATCH

Tùy chọn SCRATCH được chỉ định để xóa mục nhập liên quan cho đối tượng khỏi Mục lục Tập. Nó chủ yếu được sử dụng cho các bộ dữ liệu không phải vsam như GDG. Tùy chọn NOSCRATCH được sử dụng theo mặc định.

Thí dụ

Sau đây là một ví dụ cơ bản để hiển thị cách xóa một cụm trong JCL -

//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEPNAME EXEC PGM = IDCAMS
//SYSPRINT DD  SYSOUT = *
//SYSIN    DD  *
   DELETE MY.VSAM.KSDSFILE CLUSTER
	PURGE
/*

Nếu bạn sẽ thực thi JCL trên trên máy chủ Mainframes. Nó sẽ thực thi với MAXCC = 0 và nó sẽ xóa tệp MY.VSAM.KSDSFILE VSAM.

ESDS được gọi là Tập dữ liệu có trình tự đầu vào. Tập dữ liệu theo trình tự mục nhập hoạt động giống như tổ chức tệp tuần tự với một số tính năng khác được bao gồm. Chúng tôi có thể truy cập hồ sơ trực tiếp và vì mục đích an toàn, chúng tôi cũng có thể sử dụng mật khẩu. Chúng ta phải mãNONINDEXEDbên trong lệnh DEFINE CLUSTER cho tập dữ liệu ESDS. Sau đây là các tính năng chính của ESDS:

  • Các bản ghi trong cụm ESDS được lưu trữ theo thứ tự mà chúng đã được chèn vào tập dữ liệu.

  • Các bản ghi được tham chiếu theo địa chỉ vật lý được gọi là Relative Byte Address (RBA). Giả sử nếu trong tập dữ liệu ESDS, chúng ta có bản ghi 80 byte, RBA của bản ghi đầu tiên sẽ là 0, RBA cho bản ghi thứ hai là 80, đối với bản ghi thứ ba sẽ là 160, v.v.

  • Các bản ghi có thể được truy cập tuần tự bằng RBA được gọi là addressed access.

  • Các bản ghi được sắp xếp theo thứ tự mà chúng đã được chèn vào. Bản ghi mới được chèn vào cuối.

  • Không thể xóa bản ghi trong tập dữ liệu ESDS. Nhưng chúng có thể được đánh dấu là không hoạt động.

  • Các bản ghi trong tập dữ liệu ESDS có thể có độ dài cố định hoặc độ dài thay đổi.

  • ESDS không được lập chỉ mục. Khóa không có trong tập dữ liệu ESDS, vì vậy nó có thể chứa các bản ghi trùng lặp.

  • ESDS có thể được sử dụng trong các chương trình COBOL giống như bất kỳ tệp nào khác. Chúng tôi sẽ chỉ định tên tệp trong JCL và chúng tôi có thể sử dụng tệp ESDS để xử lý bên trong chương trình. Trong chương trình COBOL chỉ định tổ chức tệp làSequential và chế độ truy cập như Sequential với tập dữ liệu ESDS.

Xác định cụm ESDS

Cú pháp sau đây cho thấy những tham số nào chúng ta có thể sử dụng trong khi tạo cụm ESDS. Mô tả tham số vẫn giống như đã đề cập trong VSAM - Cluster module.

DEFINE CLUSTER (NAME(esds-file-name)     -
BLOCKS(number)                           -
VOLUMES(volume-serial)                   -
NONINDEXED                               -
RECSZ(average maximum)                   -
[FREESPACE(CI-Percentage,CA-Percentage)] -
CISZ(number)                             -
[READPW(password)]                       -
[FOR(days)|TO(date)]                     -
[UPDATEPW(password)]                     -
[REUSE / NOREUSE])                       -
DATA                                     -
   (NAME(esds-file-name.data))

Thí dụ

Ví dụ sau cho thấy cách tạo một cụm ESDS trong JCL bằng tiện ích IDCAMS -

//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEP1  EXEC PGM = IDCAMS
//SYSPRINT DD  SYSOUT = *
//SYSIN    DD  *
   DEFINE CLUSTER (NAME(MY.VSAM.ESDSFILE)  -
   NONINDEXED                              -
   RECSZ(80 80)                            -
   TRACKS(1,1)                             -
   CISZ(4096)                              -                            
   FREESPACE(3 3) )                        -
   DATA (NAME(MY.VSAM.ESDSFILE.DATA))      
/*

Nếu bạn sẽ thực thi JCL trên trên máy chủ Mainframes. Nó sẽ thực thi với MAXCC = 0 và nó sẽ tạo tệp MY.VSAM.ESDSFILE VSAM.

Xóa cụm ESDS

Cụm ESDS bị xóa bằng tiện ích IDCAMS. Lệnh DELETE loại bỏ mục nhập của cụm VSAM khỏi danh mục và tùy chọn loại bỏ tệp, do đó giải phóng không gian bị chiếm dụng bởi đối tượng.

DELETE data-set-name CLUSTER  
[ERASE / NOERASE] 
[FORCE / NOFORCE] 
[PURGE / NOPURGE] 
[SCRATCH / NOSCRATCH]

Cú pháp trên cho thấy những tham số nào chúng ta có thể sử dụng trong khi xóa cụm ESDS. Mô tả tham số vẫn giống như đã đề cập trong VSAM - Cluster module.

Thí dụ

Ví dụ sau cho thấy cách xóa một cụm ESDS trong JCL bằng tiện ích IDCAMS -

//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEPNAME EXEC PGM = IDCAMS
//SYSPRINT DD  SYSOUT = *
//SYSIN    DD  *
   DELETE MY.VSAM.ESDSFILE CLUSTER
/*

Nếu bạn sẽ thực thi JCL trên trên máy chủ Mainframes. Nó sẽ thực thi với MAXCC = 0 và nó sẽ xóa MY.VSAM.ESDSFILE VSAM Cluster.

KSDS được gọi là Tập dữ liệu theo trình tự chính. Tập dữ liệu theo trình tự khóa (KSDS) phức tạp hơn ESDS và RRDS nhưng hữu ích và linh hoạt hơn. Chúng ta phải mãINDEXEDbên trong lệnh DEFINE CLUSTER cho tập dữ liệu KSDS. Cụm KSDS bao gồm hai thành phần sau:

  • Index- Thành phần chỉ mục của cụm KSDS chứa danh sách các giá trị chính của các bản ghi trong cụm với các con trỏ đến các bản ghi tương ứng trong thành phần dữ liệu. Thành phần chỉ mục đề cập đến địa chỉ vật lý của bản ghi KSDS. Điều này liên quan khóa của mỗi bản ghi với vị trí tương đối của bản ghi trong tập dữ liệu. Khi một bản ghi được thêm hoặc xóa, chỉ mục này được cập nhật tương ứng.

  • Data- Thành phần dữ liệu của cụm KSDS chứa dữ liệu thực tế. Mỗi bản ghi trong thành phần dữ liệu của một cụm KSDS chứa một trường khóa có cùng số ký tự và xuất hiện ở cùng một vị trí tương đối trong mỗi bản ghi.

Sau đây là các tính năng chính của KSDS:

  • Các bản ghi trong tập dữ liệu KSDS luôn được sắp xếp theo trường khóa. Các bản ghi được lưu trữ theo trình tự tăng dần, đối chiếu theo từng khóa.

  • Các bản ghi có thể được truy cập tuần tự và cũng có thể truy cập trực tiếp.

  • Hồ sơ được xác định bằng cách sử dụng một khóa. Khóa của mỗi bản ghi là một trường ở vị trí được xác định trước trong bản ghi. Mỗi khóa phải là duy nhất trong tập dữ liệu KSDS. Vì vậy việc trùng lặp hồ sơ là không thể.

  • Khi các bản ghi mới được chèn vào, thứ tự logic của các bản ghi phụ thuộc vào trình tự đối chiếu của trường khóa.

  • Các bản ghi trong tập dữ liệu KSDS có thể có độ dài cố định hoặc độ dài thay đổi.

  • KSDS có thể được sử dụng trong COBOLcác chương trình như bất kỳ tệp nào khác. Chúng tôi sẽ chỉ định tên tệp trong JCL và chúng tôi có thể sử dụng tệp KSDS để xử lý bên trong chương trình. Trong chương trình COBOL chỉ định tổ chức tệp làIndexed và bạn có thể sử dụng bất kỳ chế độ truy cập nào (Sequential, Random or Dynamic) với tập dữ liệu KSDS.

Cấu trúc tệp KSDS

Để tìm kiếm một bản ghi cụ thể, chúng tôi cung cấp một giá trị khóa duy nhất. Giá trị khóa được tìm kiếm trong thành phần chỉ mục. Khi khóa được tìm thấy, địa chỉ bộ nhớ tương ứng tham chiếu đến thành phần dữ liệu được truy xuất. Từ địa chỉ bộ nhớ, chúng ta có thể tìm nạp dữ liệu thực tế được lưu trữ trong thành phần dữ liệu. Ví dụ sau đây cho thấy cấu trúc cơ bản của chỉ mục và tệp dữ liệu:

Xác định KSDS Cluster

Cú pháp sau đây cho biết những tham số nào chúng ta có thể sử dụng trong khi tạo KSDS cluster.

Mô tả tham số vẫn giống như đã đề cập trong VSAM - Cluster module.

DEFINE CLUSTER (NAME(ksds-file-name)     -
BLOCKS(number)                           -
VOLUMES(volume-serial)                   -
INDEXED                                  -
KEYS(length offset)                      -
RECSZ(average maximum)                   -
[FREESPACE(CI-Percentage,CA-Percentage)] -
CISZ(number)                             -
[READPW(password)]                       -
[FOR(days)|TO(date)]                     -
[UPDATEPW(password)]                     -
[REUSE / NOREUSE])                       -
DATA                                     -
   (NAME(ksds-file-name.data))           -
INDEX                                    -
   (NAME(ksds-file-name.index))

Thí dụ

Ví dụ sau cho thấy cách tạo một cụm KSDS trong JCL bằng tiện ích IDCAMS -

//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEP1  EXEC PGM = IDCAMS
//SYSPRINT DD  SYSOUT = *
//SYSIN    DD  *
   DEFINE CLUSTER (NAME(MY.VSAM.KSDSFILE)  -
   INDEXED                                 -
   KEYS(6 1)	                           -	
   RECSZ(80 80)                            -
   TRACKS(1,1)                             -
   CISZ(4096)                              -                            
   FREESPACE(3 3) )                        -
   DATA (NAME(MY.VSAM.KSDSFILE.DATA))      -
   INDEX (NAME(MY.VSAM.KSDSFILE.INDEX))    -
/*

Nếu bạn sẽ thực thi JCL trên trên máy chủ Mainframes. Nó sẽ thực thi với MAXCC = 0 và nó sẽ tạo tệp MY.VSAM.KSDSFILE VSAM.

Xóa cụm KSDS

Cụm KSDS bị xóa bằng tiện ích IDCAMS. Lệnh DELETE loại bỏ mục nhập của cụm VSAM khỏi danh mục và tùy chọn loại bỏ tệp, do đó giải phóng không gian bị chiếm dụng bởi đối tượng.

DELETE data-set-name CLUSTER  
[ERASE / NOERASE] 
[FORCE / NOFORCE] 
[PURGE / NOPURGE] 
[SCRATCH / NOSCRATCH]

Cú pháp trên cho thấy những tham số nào chúng ta có thể sử dụng trong khi xóa KSDS cluster. Mô tả tham số vẫn giống như đã đề cập trong VSAM - Cluster module.

Thí dụ

Ví dụ sau cho thấy cách xóa một cụm KSDS trong JCL bằng tiện ích IDCAMS -

//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEPNAME EXEC PGM = IDCAMS
//SYSPRINT DD  SYSOUT = *
//SYSIN    DD  *
   DELETE MY.VSAM.KSDSFILE CLUSTER
/*

Nếu bạn sẽ thực thi JCL trên trên máy chủ Mainframes. Nó sẽ thực thi với MAXCC = 0 và nó sẽ xóa MY.VSAM.KSDSFILE VSAM Cluster.

RRDS được gọi là Tập dữ liệu bản ghi tương đối. Cụm RRDS tương tự như một cụm ESDS. Sự khác biệt duy nhất là các bản ghi RRDS được truy cập bởiRelative Record Number (RRN), chúng ta phải viết mã NUMBEREDbên trong lệnh DEFINE CLUSTER. Sau đây là các tính năng chính của RRDS:

  • Tập dữ liệu bản ghi tương đối có các bản ghi được xác định bởi Relative Record Number (RRN), là số thứ tự liên quan đến bản ghi đầu tiên.

  • RRDS cho phép truy cập các bản ghi theo số như bản ghi 1, bản ghi 2, v.v. Điều này cung cấp quyền truy cập ngẫu nhiên và giả sử chương trình ứng dụng có cách để có được các số bản ghi mong muốn.

  • Các bản ghi trong tập dữ liệu RRDS có thể được truy cập tuần tự, theo thứ tự số bản ghi tương đối hoặc trực tiếp, bằng cách cung cấp số bản ghi tương đối của bản ghi mong muốn.

  • Các bản ghi trong tập dữ liệu RRDS được lưu trữ trong các khe có độ dài cố định. Mỗi bản ghi được tham chiếu bởi số lượng vị trí của nó, số lượng có thể thay đổi từ 1 đến số lượng bản ghi tối đa trong tập dữ liệu.

  • Bản ghi trong RRDS có thể được ghi bằng cách chèn bản ghi mới vào một vị trí trống.

  • Các bản ghi có thể bị xóa khỏi một cụm RRDS, do đó để lại một vị trí trống.

  • Các ứng dụng sử dụng bản ghi có độ dài cố định hoặc số bản ghi có ý nghĩa theo ngữ cảnh có thể sử dụng bộ dữ liệu RRDS.

  • RRDS có thể được sử dụng trong COBOLcác chương trình như bất kỳ tệp nào khác. Chúng tôi sẽ chỉ định tên tệp trong JCL và chúng tôi có thể sử dụng tệp KSDS để xử lý bên trong chương trình. Trong chương trình COBOL chỉ định tổ chức tệp làRELATIVE và bạn có thể sử dụng bất kỳ chế độ truy cập nào (Sequential, Random or Dynamic) với tập dữ liệu RRDS.

Cấu trúc tệp RRDS

Không gian được chia thành các khe có độ dài cố định trong cấu trúc tệp RRDS. Một vị trí có thể trống hoàn toàn hoặc hoàn toàn đầy. Do đó, các bản ghi mới có thể được thêm vào các vùng trống và các bản ghi hiện có có thể bị xóa khỏi các vùng đã được lấp đầy. Chúng tôi có thể truy cập trực tiếp bất kỳ bản ghi nào bằng cách cung cấp Số bản ghi tương đối. Ví dụ sau đây cho thấy cấu trúc cơ bản của tệp dữ liệu:

Thành phần dữ liệu

Số bản ghi tương đối Trường ghi 1 Trường ghi 2
1 Hướng dẫn Điểm
2 Mohtashim M.
3 Nishant Malik

Xác định cụm RRDS

Cú pháp sau đây cho thấy những tham số nào chúng ta có thể sử dụng trong khi tạo cụm RRDS.

Mô tả tham số vẫn giống như đã đề cập trong VSAM - Cluster module.

DEFINE CLUSTER (NAME(rrds-file-name)     -
BLOCKS(number)                           -
VOLUMES(volume-serial)                   -
NUMBERED                                 -
RECSZ(average maximum)                   -
[FREESPACE(CI-Percentage,CA-Percentage)] -
CISZ(number)                             -
[READPW(password)]                       -
[FOR(days)|TO(date)]                     -
[UPDATEPW(password)]                     -
[REUSE / NOREUSE])                       -
DATA                                     -
   (NAME(rrds-file-name.data))

Thí dụ

Ví dụ sau cho thấy cách tạo một cụm RRDS trong JCL bằng tiện ích IDCAMS -

//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEP1  EXEC PGM = IDCAMS
//SYSPRINT DD  SYSOUT = *
//SYSIN    DD  *
   DEFINE CLUSTER (NAME(MY.VSAM.RRDSFILE)  -
   NUMBERED                                -
   RECSZ(80 80)                            -
   TRACKS(1,1)                             -
   REUSE                                   - 
   FREESPACE(3 3) )                        -
   DATA (NAME(MY.VSAM.RRDSFILE.DATA))      
/*

Nếu bạn sẽ thực thi JCL trên trên máy chủ Mainframes. Nó sẽ thực thi với MAXCC = 0 và nó sẽ tạo tệp MY.VSAM.RRDSFILE VSAM.

Xóa cụm RRDS

Cụm RRDS bị xóa bằng tiện ích IDCAMS. Lệnh DELETE loại bỏ mục nhập của cụm VSAM khỏi danh mục và tùy chọn loại bỏ tệp, do đó giải phóng không gian bị chiếm dụng bởi đối tượng.

DELETE data-set-name CLUSTER  
[ERASE / NOERASE] 
[FORCE / NOFORCE] 
[PURGE / NOPURGE] 
[SCRATCH / NOSCRATCH]

Cú pháp trên cho thấy những tham số nào chúng ta có thể sử dụng trong khi xóa cụm RRDS. Mô tả tham số vẫn giống như đã đề cập trong VSAM - Cluster module.

Thí dụ

Ví dụ sau cho thấy cách xóa một cụm RRDS trong JCL bằng tiện ích IDCAMS -

//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEPNAME EXEC PGM = IDCAMS
//SYSPRINT DD  SYSOUT = *
//SYSIN    DD  *
   DELETE MY.VSAM.RRDSFILE CLUSTER
/*

Nếu bạn sẽ thực thi JCL trên trên máy chủ Mainframes. Nó sẽ thực thi với MAXCC = 0 và nó sẽ xóa MY.VSAM.RRDSFILE VSAM Cluster.

LDS được gọi là Tập dữ liệu tuyến tính. Tập dữ liệu tuyến tính là dạng duy nhất của tập dữ liệu luồng byte được sử dụng trong các tệp hệ điều hành truyền thống. Bộ dữ liệu tuyến tính hiếm khi được sử dụng. Sau đây là các tính năng chính của LDS -

  • Tập dữ liệu tuyến tính không chứa RDF và CIDF vì nó không có bất kỳ thông tin điều khiển nào được nhúng trong CI của nó.

  • Dữ liệu có thể được truy cập dưới dạng chuỗi địa chỉ byte trong bộ nhớ ảo trong bộ dữ liệu tuyến tính.

  • Tập dữ liệu tuyến tính có kích thước khoảng kiểm soát là 4KByte.

  • LDS là một loại tệp không phải vsam với một số cơ sở VSAM như sử dụng IDCAMS và thông tin cụ thể VSAM trong danh mục.

  • DB2 hiện là người dùng lớn nhất của Tập dữ liệu tuyến tính.

  • IDCAMS được sử dụng để xác định LDS nhưng nó được truy cập bằng macro Dữ liệu trong ảo (DIV).

  • Tập dữ liệu tuyến tính không có khái niệm về bản ghi. Tất cả các byte LDS đều là byte dữ liệu.

Xác định cụm LDS

Cú pháp sau đây cho biết những tham số nào chúng ta có thể sử dụng trong khi tạo cụm LDS. Mô tả tham số vẫn giống như đã đề cập trong VSAM - Cluster module.

DEFINE CLUSTER (NAME(lds-file-name)      -
BLOCKS(number)                           -
VOLUMES(volume-serial)                   -
LINEAR                                   -
CISZ(number)                             -
[READPW(password)]                       -
[FOR(days)|TO(date)]                     -
[UPDATEPW(password)]                     -
[REUSE / NOREUSE])                       -
DATA                                     -
   (NAME(lds-file-name.data))

Thí dụ

Ví dụ sau cho thấy cách tạo một cụm LDS trong JCL bằng tiện ích IDCAMS -

//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEP1  EXEC PGM = IDCAMS
//SYSPRINT DD  SYSOUT = *
//SYSIN    DD  *
   DEFINE CLUSTER (NAME(MY.VSAM.LDSFILE)   -
   LINEAR                                  -
   TRACKS(1,1)                             -
   CISZ(4096) )                            -                            
   DATA (NAME(MY.VSAM.LDSFILE.DATA))      
/*

Nếu bạn sẽ thực thi JCL trên trên máy chủ Mainframes. Nó sẽ thực thi với MAXCC = 0 và nó sẽ tạo tệp MY.VSAM.LDSFILE VSAM.

Xóa cụm LDS

Cụm LDS bị xóa bằng tiện ích IDCAMS. Lệnh DELETE loại bỏ mục nhập của cụm VSAM khỏi danh mục và tùy chọn loại bỏ tệp, do đó giải phóng không gian bị chiếm dụng bởi đối tượng.

DELETE data-set-name CLUSTER  
[ERASE / NOERASE] 
[FORCE / NOFORCE] 
[PURGE / NOPURGE] 
[SCRATCH / NOSCRATCH]

Cú pháp trên cho thấy những tham số nào chúng ta có thể sử dụng trong khi xóa cụm LDS. Mô tả tham số vẫn giống như đã đề cập trong VSAM - Cluster module.

Thí dụ

Ví dụ sau cho thấy cách xóa một cụm LDS trong JCL bằng tiện ích IDCAMS -

//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEPNAME EXEC PGM = IDCAMS
//SYSPRINT DD  SYSOUT = *
//SYSIN    DD  *
   DELETE MY.VSAM.LDSFILE CLUSTER
/*

Nếu bạn sẽ thực thi JCL trên trên máy chủ Mainframes. Nó sẽ thực thi với MAXCC = 0 và nó sẽ xóa MY.VSAM.LDSFILE VSAM Cluster.

Các lệnh VSAM được sử dụng để thực hiện các hoạt động nhất định trên bộ dữ liệu VSAM. Sau đây là các lệnh VSAM hữu ích nhất:

  • Alter
  • Repro
  • Listcat
  • Examine
  • Verify

Alter

Lệnh ALTER được sử dụng để sửa đổi các thuộc tính tệp VSAM. Chúng tôi có thể thay đổi các thuộc tính của tệp VSAM mà chúng tôi đã đề cập trong định nghĩa Cụm VSAM. Sau đây là cú pháp để thay đổi các thuộc tính:

ALTER  file-cluster-name [password] 
   [ADDVOLUMES(volume-serial)] 
   [BUFFERSPACE(size)] 
   [EMPTY / NOEMPTY] 
   [ERASE / NOERASE] 
   [FREESPACE(CI-percentage CA-percentage)] 
   [KEYS(length offset)] 
   [NEWNAME(new-name)] 
   [RECORDSIZE(average maximum)] 
   [REMOVEVOLUMES(volume-serial)] 
   [SCRATCH / NOSCRATCH] 
   [TO(date) / FOR(days)] 
   [UPGRADE / NOUPGRADE] 
   [CATALOG(catalog-name [password]]

Cú pháp trên cho thấy chúng ta có thể thay đổi các tham số nào trong một cụm VSAM hiện có. Mô tả tham số vẫn giống như đã đề cập trong VSAM - Cluster module.

Thí dụ

Ví dụ sau cho thấy cách sử dụng lệnh ALTER để tăng Freespace, để thêm nhiều khối lượng hơn và các phím thay thế -

//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEP1  EXEC PGM = IDCAMS
//SYSPRINT DD  SYSOUT = *
//SYSIN DD  *
   ALTER  MY.VSAM.KSDSFILE 
   [ADDVOLUMES(2)] 
   [FREESPACE(6 6)] 
   [KEYS(10 2)] 
/*

Nếu bạn sẽ thực thi JCL trên trên máy chủ Mainframes. Nó sẽ thực thi với MAXCC = 0 và nó sẽ thay đổi Freespace, Volumes và Keys.

Repro

Lệnh REPRO được sử dụng để tải dữ liệu vào tập dữ liệu VSAM. Nó cũng được sử dụng để sao chép dữ liệu từ tập dữ liệu VSAM này sang tập dữ liệu VSAM khác. Chúng ta có thể sử dụng lệnh này để sao chép dữ liệu từ tệp tuần tự sang tệp VSAM. Tiện ích IDCAMS sử dụng lệnh REPRO để tải các tập dữ liệu.

REPRO INFILE(in-ddname) 
   OUTFILE(out-ddname)

Trong cú pháp trên, tên in-dd là tên DD cho Tập dữ liệu đầu vào đang có bản ghi. Out-ddname là tên DD cho Tập dữ liệu đầu ra, nơi các bản ghi của tập dữ liệu đầu vào sẽ được sao chép.

Thí dụ

Ví dụ sau cho thấy cách sao chép bản ghi từ một tập dữ liệu này sang một tập dữ liệu VSAM khác:

//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEP1  EXEC PGM = IDCAMS
//IN  DD DSN = MY.VSAM.KSDSFILE,DISP = SHR
//OUT DD DSN = MY.VSAM1.KSDSFILE,DISP = SHR
//SYSPRINT DD  SYSOUT = *
//SYSIN DD  *
   REPRO INFILE(IN) 
      OUTFILE(OUT)
/*

Nếu bạn sẽ thực thi JCL trên trên máy chủ Mainframes. Nó sẽ thực thi với MAXCC = 0 và nó sẽ sao chép tất cả các bản ghi từ MY.VSAM.KSDSFILE sang tệp MY.VSAM1.KSDSFILE VSAM.

Listcat

Lệnh LISTCAT được sử dụng để lấy chi tiết danh mục của tập dữ liệu VSAM. Lệnh Listcat cung cấp thông tin sau về bộ dữ liệu VSAM:

  • Thông tin SMS
  • Thông tin RLS
  • Thông tin khối lượng
  • Thông tin Sphere
  • Thông tin phân bổ
  • Thuộc tính tập dữ liệu
LISTCAT ENTRY(vsam-file-name) ALL

Trong cú pháp trên, vsam-file-name là tên tập dữ liệu VSAM mà chúng ta cần tất cả thông tin. ALL từ khóa được chỉ định để có được tất cả các chi tiết danh mục.

Thí dụ

Ví dụ sau đây cho thấy cách tìm nạp tất cả các chi tiết bằng lệnh Listcat cho tập dữ liệu VSAM:

//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEP1  EXEC PGM = IDCAMS
//SYSPRINT DD  SYSOUT = *
//SYSIN DD  *
   LISTCAT ENTRY(MY.VSAM.KSDSFILE) 
   ALL 
/*

Nếu bạn sẽ thực thi JCL trên trên máy chủ Mainframes. Nó sẽ thực thi với MAXCC = 0 và nó sẽ hiển thị tất cả các chi tiết danh mục về tập dữ liệu MY.VSAM.KSDSFILE.

Xem xét

Lệnh Examine được sử dụng để kiểm tra tính toàn vẹn cấu trúc của một cụm tập dữ liệu theo trình tự khóa. Nó kiểm tra các thành phần chỉ mục và dữ liệu và nếu tìm thấy bất kỳ vấn đề nào, các thông báo lỗi sẽ được gửi đi. Bạn có thể kiểm tra bất kỳ tin nhắn IDCxxxxx nào.

EXAMINE NAME(vsam-ksds-name) -                                    
   INDEXTEST DATATEST -                  
   ERRORLIMIT(50)

Trong cú pháp trên, vsam-ksds-name là tên tập dữ liệu VSAM mà chúng ta cần kiểm tra chỉ mục và phần dữ liệu của VSAM cluster.

Thí dụ

Ví dụ sau cho thấy cách kiểm tra xem phần Chỉ mục và Dữ liệu của tập dữ liệu KSDS có được đồng bộ hóa hay không -

//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEP1  EXEC PGM = IDCAMS
//SYSPRINT DD  SYSOUT = *
//SYSIN DD  *
   EXAMINE NAME(MY.VSAM.KSDSFILE) -                                    
   INDEXTEST DATATEST -                  
   ERRORLIMIT(50)
/*

Nếu bạn sẽ thực thi JCL trên trên máy chủ Mainframes. Nó sẽ thực thi với MAXCC = 0 và nó sẽ hiển thị tất cả các vấn đề với tập dữ liệu VSAM trong một trong các thông báo IDCxxxxx trong ống.

Kiểm chứng

Lệnh Verify được sử dụng để kiểm tra và sửa chữa các tệp VSAM chưa được đóng đúng cách sau khi xảy ra lỗi. Lệnh thêm các bản ghi Dữ liệu Cuối chính xác vào tệp.

VERIFY DS(vsam-file-name)

Trong cú pháp trên, vsam-file-name là tên tập dữ liệu VSAM mà chúng ta cần kiểm tra lỗi.

Thí dụ

Ví dụ sau cho thấy cách kiểm tra và sửa lỗi trong tập dữ liệu VSAM:

//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEP1  EXEC PGM = IDCAMS
//SYSPRINT DD  SYSOUT = *
//SYSIN DD  *
   VERIFY DS(MY.VSAM.KSDSFILE)                                  
/*

Nếu bạn sẽ thực thi JCL trên trên máy chủ Mainframes. Nó sẽ thực thi với MAXCC = 0 và nó sẽ sửa các lỗi trong tập dữ liệu VSAM.

Chỉ mục thay thế là chỉ mục bổ sung được tạo cho tập dữ liệu KSDS / ESDS ngoài chỉ mục chính của chúng. Chỉ mục thay thế cung cấp quyền truy cập vào các bản ghi bằng cách sử dụng nhiều hơn một khóa. Khóa của chỉ mục thay thế có thể là một khóa không phải là duy nhất, nó có thể có các bản sao.

Tạo chỉ mục thay thế

Các bước sau được sử dụng để tạo Chỉ mục thay thế:

  • Xác định chỉ mục thay thế
  • Xác định đường dẫn
  • Xây dựng chỉ mục

Xác định chỉ mục thay thế

Chỉ mục thay thế được xác định bằng cách sử dụng DEFINE AIX chỉ huy.

DEFINE AIX                              -
(NAME(alternate-index-name)             -
RELATE(vsam-file-name)                  -
CISZ(number)                            -
FREESPACE(CI-Percentage,CA-Percentage)  -
KEYS(length offset)                     -
NONUNIQUEKEY / UNIQUEKEY                -
UPGRADE / NOUPGRADE                     -
RECORDSIZE(average maximum))            -
DATA                                    -
   (NAME(vsam-file-name.data))          -
INDEX                                   -
   (NAME(vsam-file-name.index))

Cú pháp trên hiển thị các tham số được sử dụng trong khi xác định Chỉ mục thay thế. Chúng ta đã thảo luận về một số tham số trong mô-đun xác định cụm và một số tham số mới được sử dụng để xác định Chỉ mục thay thế mà chúng ta sẽ thảo luận ở đây

Sr.No Tham số với Mô tả
1

DEFINE AIX

Lệnh Define AIX được sử dụng để xác định Chỉ số thay thế và chỉ định các thuộc tính tham số cho các thành phần của nó.

2

NAME

NAME chỉ định tên của Chỉ mục thay thế.

3

RELATE

RELATE chỉ định tên của cụm VSAM mà chỉ mục thay thế được tạo.

4

NONUNIQUEKEY / UNIQUEKEY

UNIQUEKEY chỉ định rằng chỉ mục thay thế là duy nhất và NONUNIQUEKEY chỉ định rằng các bản sao có thể tồn tại.

5

UPGRADE / NOUPGRADE

UPGRADE chỉ định rằng chỉ mục thay thế sẽ được sửa đổi nếu cụm cơ sở được sửa đổi và NOUPGRADE chỉ định rằng chỉ mục thay thế nên được để riêng nếu cụm cơ sở được sửa đổi.

Thí dụ

Sau đây là một ví dụ cơ bản để chỉ ra cách xác định Chỉ mục thay thế trong JCL -

//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEP1  EXEC PGM = IDCAMS
//SYSPRINT DD  SYSOUT = *
//SYSIN    DD  *
   DEFINE AIX (NAME(MY.VSAM.KSDSAIX)      -
   RELATE(MY.VSAM.KSDSFILE)               -
   CISZ(4096)                             -
   FREESPACE(20,20)                       -
   KEYS(20,7)                             -
   NONUNIQUEKEY                           -
   UPGRADE                                -
   RECORDSIZE(80,80))                     -
   DATA(NAME(MY.VSAM.KSDSAIX.DATA))       -
   INDEX(NAME(MY.VSAM.KSDSAIX.INDEX))
/*

Nếu bạn sẽ thực thi JCL trên trên máy chủ Mainframes. Nó sẽ thực thi với MAXCC = 0 và nó sẽ tạo Chỉ mục thay thế MY.VSAM.KSDSAIX.

Xác định đường dẫn

Định nghĩa Đường dẫn được sử dụng để liên kết chỉ mục thay thế với cụm cơ sở. Trong khi xác định đường dẫn, chúng tôi chỉ định tên của đường dẫn và chỉ mục thay thế có liên quan đến đường dẫn này.

DEFINE PATH                        -
NAME(alternate-index-path-name)    -
PATHENTRY(alternate-index-name))

Cú pháp trên có hai tham số. NAME được sử dụng để chỉ định Tên đường dẫn chỉ mục thay thế và PATHENTRY được sử dụng để chỉ định Tên chỉ mục thay thế.

Thí dụ

Sau đây là một ví dụ cơ bản để xác định Path trong JCL:

//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEP1  EXEC PGM = IDCAMS
//SYSPRINT DD  SYSOUT = *
//SYSIN    DD  *
DEFINE PATH                          -
   NAME(MY.VSAM.KSDSAIX.PATH)    -
   PATHENTRY(MY.VSAM.KSDSAIX))
/*

Nếu bạn sẽ thực thi JCL trên trên máy chủ Mainframes. Nó sẽ thực thi với MAXCC = 0 và nó sẽ tạo đường dẫn giữa Chỉ mục thay thế đến cụm cơ sở.

Xây dựng chỉ mục

Lệnh BLDINDEX được sử dụng để xây dựng chỉ mục thay thế. BLDINDEX đọc tất cả các bản ghi trong tập dữ liệu được lập chỉ mục VSAM (hoặc cụm cơ sở) và trích xuất dữ liệu cần thiết để xây dựng chỉ mục thay thế.

BLDINDEX                           -
INDATASET(vsam-cluster-name)       -
OUTDATASET(alternate-index-name))

Cú pháp trên có hai tham số. INDATASET được sử dụng để chỉ định Tên cụm VSAM và OUTDATASET được sử dụng để chỉ định Tên chỉ mục thay thế.

Thí dụ

Sau đây là một ví dụ cơ bản để xây dựng chỉ mục trong JCL -

//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEP1  EXEC PGM = IDCAMS
//SYSPRINT DD  SYSOUT = *
//SYSIN    DD  *
   BLDINDEX                           -
   INDATASET(MY.VSAM.KSDSFILE)        -
   OUTDATASET(MY.VSAM.KSDSAIX))
/*

Nếu bạn sẽ thực thi JCL trên trên máy chủ Mainframes. Nó sẽ thực thi với MAXCC = 0 và nó sẽ xây dựng chỉ mục.

Catalog duy trì đơn vị và khối lượng nơi tập dữ liệu cư trú. Danh mục được sử dụng để truy xuất tập dữ liệu. Các bộ dữ liệu không phải VSAM tạo mục nhập danh mục bằng Tham số bố trí trong JCL. Bộ dữ liệu VSAM duy trì danh mục riêng của nó dưới dạng KSDS cluster. Trong hình ảnh sau, bạn có thể thấy loại danh mục VSAM -

Danh mục chính

Bản thân danh mục chính là một tệp giám sát và quản lý hoạt động của VSAM. Chúng chỉ là một danh mục chính trong bất kỳ hệ thống nào chứa các mục nhập về bộ dữ liệu hệ thống và bộ dữ liệu VSAM. Các bộ dữ liệu VSAM và Non-VSAM có thể có mục nhập trong danh mục chính nhưng đây không phải là một thực tiễn tốt. Danh mục chính được tạo trong quá trình tạo hệ thống và nằm trên khối lượng hệ thống. Danh mục chính sở hữu tất cả các tài nguyên VSAM trong hệ điều hành. Tất cả các tệp được sử dụng trong VSAM đều được kiểm soát bởi danh mục chính. Danh mục chính chịu trách nhiệm cho các hoạt động sau:

  • Cấp quyền mật khẩu cho tệp
  • Tăng cường bảo mật
  • Quyền truy cập VSAM cho các tệp
  • Quản lý không gian của tệp
  • Vị trí của tệp
  • Dung lượng trống có sẵn trong tệp

Khi bất kỳ thuộc tính tệp nào ở trên thay đổi, chúng sẽ tự động được cập nhật trong danh mục chính. Danh mục chính được xác định bằng các chương trình IDCAMS.

Danh mục người dùng

Danh mục người dùng có cấu trúc và khái niệm tương tự như danh mục chính. Nó hiện diện ở cấp độ phân cấp tiếp theo sau danh mục chính. Danh mục người dùng không bắt buộc trong hệ thống nhưng nó được sử dụng để tăng cường bảo mật cho hệ thống VSAM. Danh mục chính trỏ đến các tệp VSAM nhưng nếu Danh mục người dùng có thì danh mục chính sẽ trỏ đến danh mục người dùng. Danh mục người dùng có thể có nhiều số lượng theo yêu cầu hệ thống. Trong cấu trúc VSAM nếu danh mục chính bị loại bỏ thì nó sẽ không ảnh hưởng đến danh mục người dùng. Danh mục người dùng chứa các mục về tập dữ liệu cụ thể của ứng dụng. Thông tin của danh mục người dùng được lưu trữ trong danh mục chính.

Không gian dữ liệu

Không gian dữ liệu là một vùng của thiết bị lưu trữ truy cập trực tiếp được cấp phát riêng cho việc sử dụng VSAM. Không gian dữ liệu phải được tạo trước khi tạo các cụm VSAM. Vùng bị chiếm dụng bởi không gian dữ liệu được ghi lại trong Mục lục Khối lượng (VTOC), do đó không gian sẽ không có sẵn để phân bổ cho bất kỳ mục đích sử dụng nào khác, VSAM hoặc không phải VSAM. VTOC có mục nhập của khu vực bị chiếm dụng bởi không gian. VSAM tạo ra một không gian dữ liệu để chứa các mục nhập danh mục người dùng. VSAM kiểm soát không gian này và giám sát và duy trì không gian này khi các tệp VSAM cần.

Các cụm độc đáo

Các cụm duy nhất bao gồm một không gian dữ liệu riêng biệt được sử dụng hoàn toàn bởi cụm được tạo bên trong nó. Các cụm duy nhất được tạo từ không gian chưa được phân bổ trên bộ nhớ truy cập trực tiếp.

Các cụm được phân bổ phụ

Tệp VSAM được phân bổ phụ chia sẻ không gian VSAM với các tệp được phân bổ phụ khác. Nó chỉ định rằng tệp nên được cấp phát phụ trong không gian VSAM hiện có. Phân bổ phụ được sử dụng để quản lý và kiểm soát các không gian VSAM dễ dàng hơn.

Bộ dữ liệu không phải VSAM

Các tập dữ liệu không phải VSAM nằm trên cả băng và lưu trữ truy cập trực tiếp. Các tập dữ liệu không phải VSAM có thể có các mục nhập trong cả danh mục chính và danh mục người dùng. Chức năng chính của việc lập danh mục các bộ dữ liệu không phải VSAM là giữ lại thông tin nối tiếp đơn vị và khối lượng.

Trong khi làm việc với bộ dữ liệu VSAM, bạn có thể gặp phải lỗi. Sau đây là các mã trạng thái tệp phổ biến cùng với mô tả của chúng sẽ giúp bạn giải quyết các vấn đề -

Sự miêu tả
00 Hoạt động thành công
02 Đã tìm thấy khóa trùng lặp của Chỉ mục thay thế không duy nhất
04 Bản ghi độ dài cố định không hợp lệ
05 Trong khi thực hiện MỞ Tệp và tệp không xuất hiện
10 Gặp phải Cuối tệp
14 Đã cố ĐỌC một bản ghi tương đối bên ngoài ranh giới tệp
20 Khóa không hợp lệ cho VSAM KSDS hoặc RRDS
21 Lỗi trình tự khi thực hiện WRITE hoặc thay đổi khóa trên REWRITE
22 Đã tìm thấy khóa trùng lặp chính
23 Không tìm thấy bản ghi hoặc không tìm thấy tệp
24 Ranh giới bên ngoài chính của tệp
30 Lỗi I / O vĩnh viễn
34 Ghi bên ngoài ranh giới tệp
35 Trong khi thực hiện MỞ Tệp và tệp không xuất hiện
37 MỞ tệp với chế độ sai
38 Đã cố gắng MỞ tệp bị khóa
39 MỞ không thành công do thuộc tính tệp xung đột
41 Đã cố gắng MỞ một tệp đã được mở
42 Cố gắng ĐÓNG một tệp không MỞ
43 Cố gắng REWRITE mà không ĐỌC bản ghi trước
44 Đã cố gắng VIẾT bản ghi có độ dài khác
46 Cố gắng ĐỌC ngoài Phần cuối của tệp
47 Cố gắng ĐỌC từ một tệp chưa được mở IO hoặc INPUT
48 Đã cố gắng VIẾT một tệp chưa được mở IO hoặc OUTPUT
49 Đã cố gắng XÓA hoặc GHI lại một tệp chưa được mở IO
91 Mật khẩu hoặc ủy quyền không thành công
92 Lỗi logic
93 Tài nguyên không có sẵn
94 Bản ghi tuần tự không khả dụng hoặc lỗi MỞ đồng thời
95 Thông tin tệp không hợp lệ hoặc không đầy đủ
96 Không có tuyên bố DD cho tệp
97 MỞ thành công và tính toàn vẹn của tệp đã được xác minh
98 Tệp bị khóa - MỞ không thành công
99 Bản ghi đã khóa - Truy cập hồ sơ không thành công