> Tech > Fichiers et programmes de test

Fichiers et programmes de test

Tech - Par iTPro - Publié le 24 juin 2010
email

J'ai utilisé une instruction SQL Create Table pour créer le fichier de test Master, constitué de 40 champs, y compris les types de données Integer, Decimal, Character, Character Varying et Date. Ce fichier possède une clé primaire associée à un chemin d'accès unique, constituée d'un seul champ Integer dénommé MasterId.

Fichiers et programmes de test

La longueur d’enregistrement allouée au fichier est de 1.320 octets et la longueur de sa mémoire-tampon est de 2.920 octets ; la différence entre la longueur allouée et la longueur de la mémoire-tampon résulte des champs caractères de longueur variable.
J’ai peuplé le fichier avec 109.698 enregistrements qui ont reçu des valeurs de clé pseudo-aléatoires et ont été écrits dans le fichier dans un ordre pseudo-aléatoire différent de celui des clés ; il n’y a ainsi aucun séquencement ou clustering physique des valeurs de clés dans le fichier. J’ai également utilisé un process pseudo-aléatoire pour définir la longueur des chaînes écrites dans les champs caractères de longueur variable. Dans certains cas, la chaîne dépassait la longueur allouée du champ et a été stockée en partie dans la zone de débordement du fichier. La taille totale du fichier était de 160.141.312 octets, suffisamment petite pour que tout le fichier tienne dans les pools de mémoire disponibles.

Pour tester l’accès à un fichier trié, j’ai dupliqué l’objet du fichier Master et ses données dans le fichier MasterX puis utilisé une commande RgzPfm (Reorganize Physical File Member) pour trier ce fichier d’après sa clé primaire MasterId.

Pour tester l’accès RPG à un sous-ensemble de champs, j’ai utilisé DDS pour créer deux fichiers logiques : un avec quatre champs provenant du fichier Master et un avec 10 champs. Les deux fichiers logiques partageaient le chemin d’accès par clé du fichier Master. Le fichier de quatre champs avait une longueur allouée et une longueur de mémoire-tampon de 22 octets ; le fichier de 10 champs, qui incluait un champ caractère de longueur variable, avait une longueur allouée de 335 octets et une longueur de mémoire-tampon de 1.135 octets.

J’ai écrit tous les programmes de test en RPG IV. J’ai utilisé les codes opération d’I/O intégrés (Read et Chain, par exemple) pour les tests " RPG " et les instructions SQL imbriquées (Fetch et Select, par exemple) pour les tests " SQL ". Les cartes F RPG n’incluaient pas un mot-clé Block (le blocage étant assuré par des commandes OvrDbf pendant l’exécution des tests). J’ai compilé tous les programmes avec l’optimisation complète. Les programmes SQL ont été précompilés en utilisant Commit(*None) et AlwBlk(*AllRead) sur la commande CrtSqlRpgI (Create SQL ILE RPG Object), qui permet à l’optimiseur de requêtes d’utiliser le blocage et les fichiers temporaires si nécessaire.

Quelques canevas SQL pour programmeurs RPG

Pour les programmeurs RPG intéressés par le SQL, il est intéressant d’apprendre les techniques de coding SQL équivalentes pour des opérations RPG communes, afin d’étendre le champ applicatif. Dans le troisième article de ce dossier, intitulé "Quelques canevas SQL pour programmeurs RPG", j’explique brièvement les quatre techniques SQL suivantes accompagnées d’exemples de coding pour RPG IV et SQL/400 :

1. lire un enregistrement spécifique sur clé
2. lire un ensemble d’enregistrements ayant une valeur commune pour une partie des champs clés
3. positionner le pointeur de fichier sur une clé égale ou supérieure à une clé partielle ou entière spécifiée et lire en avant
4. mettre en œuvre la simultanéité "optimiste" pour des mises à jour de fichiers

Des variantes de ces techniques peuvent servir à d’autres besoins applicatifs.

PC

Téléchargez gratuitement cette ressource

Protection des Données : 10 Best Practices

Protection des Données : 10 Best Practices

Le TOP 10 des meilleures pratiques, processus et solutions de sécurité pour mettre en œuvre une protection efficace des données et limiter au maximum les répercutions d’une violation de données.

Tech - Par iTPro - Publié le 24 juin 2010