VSAM - KSDS

KSDS se conoce como conjunto de datos secuenciados clave. Un conjunto de datos en secuencia de claves (KSDS) es más complejo que ESDS y RRDS, pero es más útil y versátil. Debemos codificarINDEXEDdentro del comando DEFINE CLUSTER para conjuntos de datos KSDS. El clúster de KSDS consta de los siguientes dos componentes:

  • Index- El componente de índice del clúster KSDS contiene la lista de valores clave para los registros en el clúster con punteros a los registros correspondientes en el componente de datos. El componente de índice se refiere a la dirección física de un registro KSDS. Esto relaciona la clave de cada registro con la ubicación relativa del registro en el conjunto de datos. Cuando se agrega o elimina un registro, este índice se actualiza en consecuencia.

  • Data- El componente de datos del clúster KSDS contiene los datos reales. Cada registro en el componente de datos de un grupo KSDS contiene un campo clave con el mismo número de caracteres y ocurre en la misma posición relativa en cada registro.

Las siguientes son las características clave de KSDS:

  • Los registros dentro del conjunto de datos de KSDS siempre se mantienen ordenados por campo clave. Los registros se almacenan en orden ascendente, clasificando secuencia por tecla.

  • Se puede acceder a los registros de forma secuencial y también es posible el acceso directo.

  • Los registros se identifican mediante una clave. La clave de cada registro es un campo en una posición predefinida dentro del registro. Cada clave debe ser única en el conjunto de datos de KSDS. Por tanto, no es posible la duplicación de registros.

  • Cuando se insertan nuevos registros, el orden lógico de los registros depende de la secuencia de clasificación del campo clave.

  • Los registros del conjunto de datos KSDS pueden tener una longitud fija o variable.

  • KSDS se puede utilizar en COBOLprogramas como cualquier otro archivo. Especificaremos el nombre del archivo en JCL y podemos usar el archivo KSDS para procesarlo dentro del programa. En el programa COBOL, especifique la organización de archivos comoIndexed y puedes usar cualquier modo de acceso (Sequential, Random or Dynamic) con el conjunto de datos KSDS.

Estructura de archivo KSDS

Para buscar un registro en particular, le damos un valor de clave único. El valor clave se busca en el componente de índice. Una vez que se encuentra la clave, se recupera la dirección de memoria correspondiente que se refiere al componente de datos. De la dirección de memoria podemos obtener los datos reales que se almacenan en el componente de datos. El siguiente ejemplo muestra la estructura básica del índice y el archivo de datos:

Definición de clúster de KSDS

La siguiente sintaxis muestra qué parámetros podemos usar al crear un clúster KSDS.

La descripción del parámetro sigue siendo la misma que se menciona en VSAM - Módulo de clúster.

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

Ejemplo

El siguiente ejemplo muestra cómo crear un clúster KSDS en JCL utilizando la utilidad 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))    -
/*

Si va a ejecutar el JCL anterior en el servidor Mainframes. Debería ejecutarse con MAXCC = 0 y creará el archivo MY.VSAM.KSDSFILE VSAM.

Eliminar el clúster de KSDS

El clúster de KSDS se elimina mediante la utilidad IDCAMS. El comando DELETE elimina la entrada del clúster VSAM del catálogo y, opcionalmente, elimina el archivo, liberando así el espacio ocupado por el objeto.

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

La sintaxis anterior muestra qué parámetros podemos usar al eliminar el clúster KSDS. La descripción del parámetro sigue siendo la misma que se menciona en VSAM - Módulo de clúster.

Ejemplo

El siguiente ejemplo muestra cómo eliminar un clúster KSDS en JCL mediante la utilidad IDCAMS:

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

Si va a ejecutar el JCL anterior en el servidor Mainframes. Debería ejecutarse con MAXCC = 0 y eliminará MY.VSAM.KSDSFILE VSAM Cluster.