VSAM - KSDS

KSDS est connu sous le nom de jeu de données séquencées par clé. Un ensemble de données séquencées par clé (KSDS) est plus complexe que ESDS et RRDS, mais il est plus utile et polyvalent. Il faut coderINDEXEDdans la commande DEFINE CLUSTER pour les ensembles de données KSDS. Le cluster KSDS se compose des deux composants suivants:

  • Index- Le composant d'index du cluster KSDS contient la liste des valeurs de clé pour les enregistrements du cluster avec des pointeurs vers les enregistrements correspondants dans le composant de données. Le composant d'index fait référence à l'adresse physique d'un enregistrement KSDS. Cela relie la clé de chaque enregistrement à l'emplacement relatif de l'enregistrement dans l'ensemble de données. Lorsqu'un enregistrement est ajouté ou supprimé, cet index est mis à jour en conséquence.

  • Data- Le composant de données du cluster KSDS contient les données réelles. Chaque enregistrement du composant de données d'un cluster KSDS contient un champ clé avec le même nombre de caractères et apparaît à la même position relative dans chaque enregistrement.

Voici les principales caractéristiques de KSDS -

  • Les enregistrements de l'ensemble de données KSDS sont toujours triés par champ clé. Les enregistrements sont stockés par ordre croissant de classement par clé.

  • Les enregistrements sont accessibles séquentiellement et un accès direct est également possible.

  • Les enregistrements sont identifiés à l'aide d'une clé. La clé de chaque enregistrement est un champ dans une position prédéfinie dans l'enregistrement. Chaque clé doit être unique dans l'ensemble de données KSDS. La duplication des enregistrements n'est donc pas possible.

  • Lorsque de nouveaux enregistrements sont insérés, l'ordre logique des enregistrements dépend de la séquence de classement du champ clé.

  • Les enregistrements du jeu de données KSDS peuvent être de longueur fixe ou variable.

  • KSDS peut être utilisé dans COBOLprogrammes comme n'importe quel autre fichier. Nous allons spécifier le nom du fichier dans JCL et nous pouvons utiliser le fichier KSDS pour le traitement à l'intérieur du programme. Dans le programme COBOL, spécifiez l'organisation des fichiers commeIndexed et vous pouvez utiliser n'importe quel mode d'accès (Sequential, Random or Dynamic) avec l'ensemble de données KSDS.

Structure des fichiers KSDS

Afin de rechercher un enregistrement particulier, nous attribuons une valeur de clé unique. La valeur de clé est recherchée dans le composant d'index. Une fois la clé trouvée, l'adresse mémoire correspondante qui fait référence au composant de données est récupérée. À partir de l'adresse mémoire, nous pouvons récupérer les données réelles qui sont stockées dans le composant de données. L'exemple suivant montre la structure de base de l'index et du fichier de données -

Définition du cluster KSDS

La syntaxe suivante montre les paramètres que nous pouvons utiliser lors de la création d'un cluster KSDS.

La description des paramètres reste la même que celle mentionnée dans VSAM - module 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))

Exemple

L'exemple suivant montre comment créer un cluster KSDS dans JCL à l'aide de l'utilitaire 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 vous exécutez le JCL ci-dessus sur le serveur Mainframes. Il doit s'exécuter avec MAXCC = 0 et il créera le fichier MY.VSAM.KSDSFILE VSAM.

Suppression du cluster KSDS

Le cluster KSDS est supprimé à l'aide de l'utilitaire IDCAMS. La commande DELETE supprime l'entrée du cluster VSAM du catalogue et supprime éventuellement le fichier, libérant ainsi l'espace occupé par l'objet.

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

La syntaxe ci-dessus montre les paramètres que nous pouvons utiliser lors de la suppression du cluster KSDS. La description des paramètres reste la même que celle mentionnée dans VSAM - module Cluster.

Exemple

L'exemple suivant montre comment supprimer un cluster KSDS dans JCL à l'aide de l'utilitaire IDCAMS -

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

Si vous exécutez le JCL ci-dessus sur le serveur Mainframes. Il doit s'exécuter avec MAXCC = 0 et supprimera MY.VSAM.KSDSFILE VSAM Cluster.