VSAM - KSDS

KSDS jest znany jako zestaw danych z sekwencją kluczy. Zestaw danych z sekwencją kluczy (KSDS) jest bardziej złożony niż ESDS i RRDS, ale jest bardziej użyteczny i wszechstronny. Musimy kodowaćINDEXEDwewnątrz polecenia DEFINE CLUSTER dla zestawów danych KSDS. Klaster KSDS składa się z dwóch następujących elementów -

  • Index- Komponent indeksu klastra KSDS zawiera listę wartości kluczowych dla rekordów w klastrze ze wskaźnikami do odpowiednich rekordów w komponencie danych. Składnik indeksu odnosi się do fizycznego adresu rekordu KSDS. Odnosi to klucz każdego rekordu do względnej lokalizacji rekordu w zbiorze danych. Po dodaniu lub usunięciu rekordu ten indeks jest odpowiednio aktualizowany.

  • Data- Komponent danych klastra KSDS zawiera aktualne dane. Każdy rekord w składniku danych klastra KSDS zawiera pole klucza z taką samą liczbą znaków i występuje w tym samym względnym położeniu w każdym rekordzie.

Oto kluczowe cechy KSDS -

  • Rekordy w zestawie danych KSDS są zawsze sortowane według pola klucza. Rekordy są przechowywane w rosnącej kolejności według klucza.

  • Dostęp do rekordów można uzyskać sekwencyjnie, możliwy jest również dostęp bezpośredni.

  • Rekordy są identyfikowane za pomocą klucza. Kluczem każdego rekordu jest pole na wstępnie zdefiniowanej pozycji w rekordzie. Każdy klucz musi być unikalny w zbiorze danych KSDS. Tak więc kopiowanie rekordów nie jest możliwe.

  • Po wstawieniu nowych rekordów logiczna kolejność rekordów zależy od kolejności zestawiania pola kluczowego.

  • Rekordy w zbiorze danych KSDS mogą mieć stałą lub zmienną długość.

  • KSDS może być używany w COBOLprogramy jak każdy inny plik. Nazwę pliku określimy w JCL i możemy użyć pliku KSDS do przetwarzania wewnątrz programu. W programie COBOL określ organizację plików jakoIndexed i możesz użyć dowolnego trybu dostępu (Sequential, Random or Dynamic) ze zbiorem danych KSDS.

Struktura pliku KSDS

Aby wyszukać konkretny rekord, podajemy unikalną wartość klucza. Wartość klucza jest przeszukiwana w składniku indeksu. Po znalezieniu klucza pobierany jest odpowiedni adres pamięci, który odnosi się do składnika danych. Z adresu pamięci możemy pobrać aktualne dane, które są przechowywane w komponencie danych. Poniższy przykład przedstawia podstawową strukturę indeksu i pliku danych -

Definiowanie klastra KSDS

Poniższa składnia pokazuje, jakich parametrów możemy użyć podczas tworzenia klastra KSDS.

Opis parametrów pozostaje taki sam, jak wspomniany w module VSAM - Cluster.

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))

Przykład

Poniższy przykład pokazuje, jak utworzyć klaster KSDS w JCL przy użyciu narzędzia 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))    -
/*

Jeśli wykonasz powyższe JCL na serwerze mainframe. Powinien zostać wykonany z MAXCC = 0 i utworzy plik MY.VSAM.KSDSFILE VSAM.

Usuwanie klastra KSDS

Klaster KSDS jest usuwany za pomocą narzędzia IDCAMS. Polecenie DELETE usuwa wpis klastra VSAM z katalogu i opcjonalnie usuwa plik, zwalniając w ten sposób miejsce zajmowane przez obiekt.

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

Powyższa składnia pokazuje, jakich parametrów możemy użyć podczas usuwania klastra KSDS. Opis parametrów pozostaje taki sam, jak wspomniany w module VSAM - Cluster.

Przykład

Poniższy przykład pokazuje, jak usunąć klaster KSDS w JCL za pomocą narzędzia IDCAMS -

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

Jeśli wykonasz powyższe JCL na serwerze mainframe. Powinien zostać uruchomiony z MAXCC = 0 i usunie klaster MY.VSAM.KSDSFILE VSAM.