VSAM - KSDS

KSDS è noto come Key Sequencing Data Set. Un set di dati con sequenza di chiavi (KSDS) è più complesso di ESDS e RRDS ma è più utile e versatile. Dobbiamo codificareINDEXEDall'interno del comando DEFINE CLUSTER per i set di dati KSDS. Il cluster KSDS è costituito dai seguenti due componenti:

  • Index- Il componente indice del cluster KSDS contiene l'elenco dei valori chiave per i record nel cluster con puntatori ai record corrispondenti nel componente dati. Il componente indice fa riferimento all'indirizzo fisico di un record KSDS. Questo collega la chiave di ogni record alla posizione relativa del record nel set di dati. Quando un record viene aggiunto o eliminato, questo indice viene aggiornato di conseguenza.

  • Data- Il componente dati del cluster KSDS contiene i dati effettivi. Ogni record nel componente dati di un cluster KSDS contiene un campo chiave con lo stesso numero di caratteri e si trova nella stessa posizione relativa in ogni record.

Di seguito sono riportate le caratteristiche principali di KSDS:

  • I record all'interno del set di dati KSDS vengono sempre tenuti ordinati per campo chiave. I record vengono memorizzati in ordine crescente, ordinando la sequenza per chiave.

  • È possibile accedere ai record in sequenza ed è anche possibile l'accesso diretto.

  • I record vengono identificati utilizzando una chiave. La chiave di ogni record è un campo in una posizione predefinita all'interno del record. Ogni chiave deve essere univoca nel set di dati KSDS. Quindi la duplicazione dei record non è possibile.

  • Quando vengono inseriti nuovi record, l'ordine logico dei record dipende dalla sequenza di confronto del campo chiave.

  • I record nel set di dati KSDS possono essere di lunghezza fissa o variabile.

  • KSDS può essere utilizzato in COBOLprogrammi come qualsiasi altro file. Specificheremo il nome del file in JCL e possiamo utilizzare il file KSDS per l'elaborazione all'interno del programma. Nel programma COBOL specificare l'organizzazione dei file comeIndexed e puoi utilizzare qualsiasi modalità di accesso (Sequential, Random or Dynamic) con il set di dati KSDS.

Struttura dei file KSDS

Per cercare un record particolare, diamo un valore chiave univoco. Il valore della chiave viene cercato nel componente index. Una volta trovata la chiave, viene recuperato l'indirizzo di memoria corrispondente che fa riferimento al componente dati. Dall'indirizzo di memoria possiamo prelevare i dati effettivi memorizzati nel componente dati. L'esempio seguente mostra la struttura di base dell'indice e del file di dati:

Definizione del cluster KSDS

La sintassi seguente mostra quali parametri possiamo usare durante la creazione del cluster KSDS.

La descrizione del parametro rimane la stessa menzionata in VSAM - Modulo 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))

Esempio

L'esempio seguente mostra come creare un cluster KSDS in JCL utilizzando l'utilità 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))    -
/*

Se eseguirai il JCL sopra sul server Mainframes. Dovrebbe essere eseguito con MAXCC = 0 e creerà il file MY.VSAM.KSDSFILE VSAM.

Eliminazione del cluster KSDS

Il cluster KSDS viene eliminato utilizzando l'utilità IDCAMS. Il comando DELETE rimuove la voce del cluster VSAM dal catalogo e opzionalmente rimuove il file, liberando così lo spazio occupato dall'oggetto.

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

La sintassi sopra mostra quali parametri possiamo usare durante l'eliminazione del cluster KSDS. La descrizione del parametro rimane la stessa menzionata in VSAM - Modulo Cluster.

Esempio

L'esempio seguente mostra come eliminare un cluster KSDS in JCL utilizzando l'utilità IDCAMS -

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

Se eseguirai il JCL sopra sul server Mainframes. Dovrebbe essere eseguito con MAXCC = 0 ed eliminerà MY.VSAM.KSDSFILE VSAM Cluster.