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.