> Tech > SEUCOPY et SEU001

SEUCOPY et SEU001

Tech - Par Renaud ROSSET - Publié le 24 juin 2010
email

Chacun des cinq modules utilise les mêmes structures de données pour obtenir le format de l'espace utilisateur. Le membre copie SEUCOPY (figure 1) définit les structures de données et est copié dans chaque programme. Le premier bloc de l'espace utilisateur (A) contient des informations d'entrée, telles que le nom et

SEUCOPY et SEU001

le type du membre source, la touche de fonction activée et la position du curseur. Le deuxième bloc (B) est utilisé pour les informations de sortie, telles que le code retour et le nombre d’enregistrements de lignes sources. Le troisième bloc contient les lignes sources mises à  la disposition du programme d’exit. La structure de données située en C contient le format d’une ligne de code source telle qu’elle est présentée au programme d’exit de l’utilisateur. Le pointeur de base du programme est incrémenté pour pointer sur les lignes subséquentes de ce troisième bloc. Les modules du programme partagent tous les mêmes pointeurs vers les structures de données. Par conséquent, ils partagent les structures de données elles-mêmes. Pour de plus amples informations sur les champs de l’espace utilisateur, consultez l’appendice E du manuel Source Entry Utility (SC09-2605).
Le module principal, SEU001 (figure 2), reçoit en paramètres les pointeurs vers les trois blocs de l’espace utilisateur, et sauvegarde ces valeurs dans des variables partagées (en B). La sous-routine Valid assure ensuite qu’il ne s’est produit aucune erreur. Dans le cas contraire, le programme retourne un message d’erreur et s’arrête. Pour simplifier les choses, j’ai utilisé des messages déjà  définis dans le fichier de messages SEU (A).
L’utilisateur de SEU peut démarrer le programme d’exit en entrant une commande parmi plusieurs ou en appuyant sur la touche F7 ou F8. Aussi, si l’utilisateur entreprend plusieurs actions, il faut s’assurer que celles-ci sont compatibles. Pour ce faire, la sous-routine Valid de SEU001 commence par comparer le numéro relatif de l’enregistrement sur lequel le curseur est positionné au numéro relatif de l’enregistrement source en cours de validation lorsque l’utilisateur a appuyé sur la touche F7 ou F8 (D). Si les deux concordent (c’est-à -dire si le programme était en train d’évaluer la ligne sur laquelle se trouvait le curseur lorsque l’utilisateur a appuyé sur la touche F7 ou F8), la sous-routine poursuit sa validation. Si l’utilisateur a appuyé sur la touche F7 ou F8 sur une ligne contenant une autre commande définie par l’utilisateur ou sur une ligne contenue dans un bloc de lignes sur lequel une commande a été appliquée, un message d’erreur est renvoyé et le programme s’arrête (E). En F, la routine vérifie si le bloc indiqué par l’utilisateur débute et se termine avec des commandes différentes ou contient une autre commande ou bloc. Dans ce cas, un message d’erreur est retourné et le programme s’arrête.
En G, la sous-routine Valid vérifie si la procédure CheckCmd de SEU002 a renvoyé un message d’erreur. Si c’est le cas, SEU001 retourne un message d’erreur à  SEU et s’arrête. La procédure CmdType de SEU002 renvoie le type de commande ‘block’, pour effectuer certaines actions sur un bloc de lignes ; ou ‘line’, pour une ligne isolée. Si la procédure CmdType détermine que l’instruction est une commande s’appliquant à  un bloc, la sous-routine Valid de SEU001 vérifie que le bloc se termine avec la même commande et ne contient pas d’autres commandes. Pour atteindre cet objectif, Valid enregistre la commande de bloc dans le champ bloc lorsque la sous-routine rencontre la commande pour la première fois (H). Si la commande suivante est la même, le bloc est constitué (c’est-à -dire le champ bloc est réinitialisé à  *blank) ; dans le cas contraire, un message d’erreur est envoyé et le programme s’arrête (F).
SEU ne met pas à  jour les données à  moins que le code retour de l’espace utilisateur soit égal à  0. Aussi, la sous-routine place le code en position off (I) et lit la ligne suivante en incrémentant le pointeur (J). En K, le programme vérifie si le bloc est incomplet. Avant d’invoquer la procédure Action, SEU001 réinitialise la structure de données à  la première ligne (C).

Téléchargez cette ressource

Guide de Sécurité IA et IoT

Guide de Sécurité IA et IoT

Compte tenu de l'ampleur des changements que l'IA est susceptible d'entraîner, les organisations doivent élaborer une stratégie pour se préparer à adopter et à sécuriser l'IA. Découvrez dans ce Livre blanc Kaspersky quatre stratégies efficaces pour sécuriser l'IA et l'IoT.

Tech - Par Renaud ROSSET - Publié le 24 juin 2010