web-dev-qa-db-fra.com

Quelle est la différence entre un format à blocage variable et un format à blocage fixe?

J'ai rencontré ces termes dans un document de définition de fichier de données pour certaines données que j'obtiens d'un système mainframe.

Je n'ai pas réussi à trouver de définitions de ces termes dans un glossaire ou une recherche Google - il suffit de les mentionner.

Quelqu'un peut-il faire la lumière sur la signification précise de ces termes?

21
user1845848

Oubliez ce que vous savez des données sur un disque dur sous Windows ou Unix/Linux.

Enregistrements de longueur fixe (qui peuvent être Record Format (RECFM) F pour débloqué, FB pour bloqué (ils peuvent également être FBS, qui est Fixed Block Standard, mais pour un simple ensemble de données à usage unique (fichier), il équivaut à un FB ) contiennent simplement des données et une quantité connue et immuable de données.

Les données qu'ils contiennent peuvent l'être par l'une des 256 valeurs binaires possibles. Il n'y a pas de délimiteurs d'enregistrement.

Les enregistrements de longueur variable (RECFM V ou VB (VBS est Varible Blocked Spanned, qui est autre chose qu'un simple enregistrement)) sont préfixés de quatre octets (le Record Descriptor Word (RDW)) le dont les deux premiers indiquent la longueur de l'enregistrement. Ils contiennent donc des informations et des données de contrôle. Il n'y a pas de délimiteurs d'enregistrement (car la longueur est connue à la place).

Les blocs pour un ensemble de données VB sont également préfixés par un mot descripteur de bloc (BDW), quatre octets, dont les deux premiers contiennent la longueur du bloc.

Les données sont écrites et lues en blocs uniquement, le déblocage étant effectué par les routines io. Plus la taille de bloc est grande, moins il y a d'ios. Cependant, étant donné que la taille de bloc maximale est inférieure à la taille d'une piste sur le disque, le blocage le plus efficace est le "blocage de demi-piste" avec une taille de bloc jusqu'à un enregistrement inférieure à 27 998 ou égale à celle-ci.

Les enregistrements à bloc fixe ont moins de surcharge, car les seules informations (taille de bloc (BLKSIZE) et longueur d'enregistrement maximale (LRECL) sont fournies (dans le catalogue, ou le JCL, ou par le programme, en particulier si elles sont écrites dans l'assembleur), non stockées dans les données.

Pour les enregistrements à bloc variable, il existe deux types d'informations de contrôle (BDW et RDW) intégrées aux données, ainsi que les autres informations.

Le programmeur sur l'ordinateur central n'a pas besoin d'en savoir beaucoup à ce sujet. Un programme traitera des enregistrements, les détails de blocage peuvent être externes au programme.

Voici un bloc FB:

DATADATADATADATA

La façon dont ce bloc se décompose en enregistrements de longueur fixe est conservée à l'extérieur des données. La position du troisième enregistrement dans un bloc peut être calculée. Il existe une méthode d'accès de bas niveau qui utilise ce fait.

Voici un bloc VB:

BDWRDWDATARDWDATARDWDATA

La position du troisième enregistrement dans le bloc n'est connue que si les enregistrements avant celui-ci ont été traités par les routines io.

Choisir le mauvais type, la mauvaise longueur d'enregistrement ou la mauvaise taille de bloc peut avoir un impact significatif sur les performances du programme.

Lorsque les données sont transférées hors d'un ordinateur central, il existe des options pour supprimer le RDW (le cas échéant), insérer des délimiteurs, supprimer les blancs de fin et des choses comme ça, de sorte que les données ressemblent maintenant à un fichier natif. Le transfert vers l'unité centrale passe par le processus inverse.

Si vous allez recevoir des données d'un ordinateur central ou envoyer des données à un ordinateur central, faites-le uniquement au format caractère. Pas de champs "binaires" ou "compressés" et utilisez des signes explicites, des décimales explicites ou des facteurs d'échelle. Vous vous épargnerez tellement d'ennuis et vous vous retrouverez dans les bons livres des auditeurs.

40
Bill Woodger