> Tech > L’ordre d’application des overrides

L’ordre d’application des overrides

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

  Nous avons vu les règles concernant l'applicabilité des overrides. Au cours d'un job, de nombreux overrides peuvent être émis. En fait, comme nous l'avons vu, beaucoup d'entre eux peuvent être émis pour un fichier unique. Lorsque de nombreux overrides sont émis pour un seul fichier, le système construit un override

unique à  partir des attributs d’override en vigueur à  partir de tous les overrides. Ce type d’override est appelé override fusionné (merged override). Cela ne signifie quand même pas que les overrides fusionnés sont tout simplement le résultat de l’accumulation des différents attributs de fichiers d’override. Le système doit également modifier, ou remplacer, les attributs applicables qui ont été « overriden » plusieurs fois et supprimer les overrides quand une requête applicable à  cet effet est émise.

   Pour déterminer l’override fusionné, le système suit un jeu de règles distinct qui régissent l’ordre dans lequel les overrides sont traités. Le système traite les overrides pour un fichier quand il ouvre celui-ci et utilise la séquence suivante pour vérifier et appliquer les overrides :

1 – les overrides au niveau d’appel jusqu’au, et y compris le, niveau d’appel de la procédure la plus ancienne dans le groupe d’activation contenant le fichier ouvert (en commençant avec le niveau d’appel qui ouvre le fichier et en continuant dans l’ordre décroissant des niveaux d’appel)
2 – les overrides au niveau du groupe d’activation les plus récents pour le groupe d’activation contenant le fichier ouvert
3 – les overrides au niveau d’appel inférieurs au niveau d’appel de la procédure la plus ancienne dans le groupe d’activation contenant le fichier ouvert (en commençant par le niveau d’appel précédant immédiatement celui de la procédure la plus ancienne dans le groupe d’activation contenant le fichier ouvert et en progressant dans l’ordre décroissant des niveaux d’appel)
4 – les overrides au niveau job les plus récents

  Cet ordre dans lequel s’appliquent les overrides n’est pas simple ! C’est, sans aucun doute, l’aspect le moins bien compris des overrides de fichiers et la source de confusion et d’erreurs considérables.

Un exemple va nous aider à  comprendre. La figure 2A présente un job avec 10 niveaux d’appel, des programmes dans le groupe d’activation par défaut et dans deux groupes d’activation nommés (AG1 et AG2), et des overrides dans chaque niveau d’appel et chaque groupe d’activation. Avant de voir comment le système traite ces overrides, voyons si vous pouvez déterminer le fichier que ProgramJ au niveau d’appel 10 ouvrira, ainsi que les valeurs d’attribut qui seront en vigueur en raison des overrides du job. Ou plutôt, faites deux fois l’exercice : la première fois sans tenir compte des règles régissant l’ordre.

  La figure 2B révèle les résultats des overrides du job. Etes-vous parvenu à  ces résultats dans l’un de vos essais ? Suivons pas à  pas le processus de détermination des overrides en vigueur pour cet exemple.

Etape 1 – Overrides au niveau d’appel jusqu’au, et y compris le, niveau d’appel de la plus ancienne procédure dans le groupe d’activation contenant le fichier ouvert

  La vérification au niveau d’appel 10 montre que le système ouvre le fichier Report1 dans le groupe d’activation AG1. La plus ancienne procédure dans le groupe d’activation AG1 apparaît au niveau d’appel 2. Par conséquent, à  l’étape 1, le système traite les overrides au niveau d’appel en commençant au niveau d’appel 10 et en remontant dans la pile d’appels jusqu’au niveau d’appel 2. Quand le système traite le niveau d’appel 2, l’étape 1 est terminée.

a – Il n’y a pas d’override au niveau d’appel pour le fichier Report1 au niveau d’appel 10.
b – Il n’y a pas d’override au niveau d’appel pour le fichier Report1 au niveau d’appel 9.
c – Il n’y a pas d’override au niveau d’appel pour le fichier Report1 au niveau d’appel 8.
d – Il n’y a pas d’override au niveau d’appel pour le fichier Report1 au niveau d’appel 7.
e – Le niveau d’appel 6 contient un override au niveau d’appel pour le fichier Report1. L’attribut Copies pour le fichier Report1 est « overriden » en 7.

Overrides actifs à  ce stade : Copies(7)

f – f. Le niveau d’appel 5 montre un override au niveau du groupe d’activation, mais le programme s’exécute dans le groupe d’activation par défaut. Rappelons que les overrides au niveau du groupe d’activation émis à  partir du groupe d’activation par défaut ont l’étendue des overrides au niveau d’appel. Par conséquent, le système traite cet override comme un override au niveau d’appel. L’attribut CPI pour le fichier Report1 est « overriden » en 13.3, et la valeur d’attribut Copies précédente est remplacée par cette dernière valeur de 6.

Overrides actifs à  ce stade : CPI(13.3) Copies(6)

g – Il n’y a pas d’override au niveau d’appel pour le fichier Report1 au niveau d’appel 4.
h – Le niveau d’appel 3 contient un override au niveau d’appel pour le fichier Report1. L’attribut LPI pour le fichier Report1 est « overriden » en 9, et la valeur d’attribut Copies précédente est remplacée par cette dernière valeur de 4.

Overrides actifs à  ce stade : LPI(9) CPI(13.3) Copies(4)

i – Il n’y a pas d’override au niveau d’appel pour le fichier Report1 au niveau d’appel 2.

L’étape 1 est terminée. Le niveau d’appel 2 contient la procédure la plus ancienne dans le groupe d’activation AG1 (qui contient le fichier ouvert).

Etape 2 – Les overrides au niveau du groupe d’activation les plus récents pour le groupe d’activation contenant le fichier ouvert

Le système recherche maintenant l’override au niveau du groupe d’activation émis le plus récemment dans un groupe d’activation AG1, où le fichier Report1 a été ouvert.

a – Il n’y a pas d’override au niveau du groupe d’activation pour le fichier Report1 au niveau d’appel 10.
b – Il n’y a pas d’override au niveau du groupe d’activation pour le fichier Report1 dans le groupe d’activation AG1 au niveau d’appel 9. L’override au niveau du groupe d’activation dans le niveau d’appel 9 est dans le groupe d’activation AG2 et n’est par conséquent pas applicable.
c – Le niveau d’appel 8 contient un override au niveau du groupe d’activation dans le groupe d’activation AG1 pour le fichier Report1. L’attribut FormFeed pour le fichier Report1 est « overriden » par *Cut, la valeur d’attribut LPI précédente est remplacée par cette dernière valeur de 12, et la valeur d’attribut Copies précédente est remplacée par cette dernière valeur de 9.

Overrides actifs à  ce stade :
LPI(12) CPI(13.3) FormFeed(*Cut) Copies(9)

  L’étape 2 est terminée. Le système cesse de rechercher des overrides au niveau du groupe d’activation parce qu’il a atteint l’override au niveau du groupe d’activation le plus récemment émis dans le groupe d’activation AG1.

Etape 3 – Les overrides au niveau d’appel inférieurs au niveau d’appel de la procédure la plus ancienne dans le groupe d’activation contenant le fichier ouvert

  Souvenons-nous que le niveau d’appel 2 est le niveau d’appel de la plus ancienne procédure dans le groupe d’activation AG1. Le système commence à  traiter les overrides au niveau d’appel, au niveau d’appel précédant le niveau d’appel 2. Dans ce cas, il n’y a qu’un niveau d’appel inférieur au niveau d’appel 2.

a – Le niveau d’appel 1 contient un override au niveau d’appel pour le fichier Report1. L’attribut OutQ pour Report1 est « overriden » par Prt01 et la valeur d’attribut Copies précédente est remplacée par cette dernière valeur de 2.

Overrides actifs à  ce stade :
LPI(12) CPI(13.3) FormFeed(*Cut) OutQ(Prt01) Copies(2)

  L’étape 3 est terminée. La pile d’appels a été traitée jusqu’au niveau d’appel 1.

Etape 4 – Les overrides au niveau du job les plus récents

  Le système finit le traitement des overrides en recherchant l’override au niveau du job émis le plus récemment pour le fichier Report1.

a – Il n’y a pas d’override au niveau du job pour le fichier Report1 au niveau d’appel 10.
b – Il n’y a pas d’override au niveau du job pour le fichier Report1 au niveau d’appel 9.
c – Il n’y a pas d’override au niveau du job pour le fichier Report1 au niveau d’appel 8.
d – d. Le niveau d’appel 7 contient un override au niveau du job pour le fichier Report1. Notons que le programme s’exécute dans le groupe d’activation AG2 plutôt qu’AG1. Les overrides au niveau du job peuvent provenir d’un groupe d’activation quelconque. La valeur d’attribut Copies précédente est remplacée par cette dernière valeur de 8.

Overrides actifs à  ce stade :
LPI(12) CPI(13.3) FormFeed(*Cut) OutQ(Prt01) Copies(8)

  L’étape 4 est terminée. Le système cesse de rechercher des overrides au niveau du job parce qu’on a atteint l’override au niveau du job émis le plus récemment.
Ceci termine l’application des overrides. L’override fusionné final qui sera appliqué au niveau d’appel 10 est :

LPI(12) CPI(13.3) FormFeed(*Cut) OutQ(Prt01) Copies(8)

  Toutes les autres valeurs d’attribut viennent de la description de fichiers pour le fichier d’imprimante Report1. On voit bien comment ce processus pourrait être déroutant et provoquer de nombreuses erreurs dans les applications !

   A présent, rendons le processus encore plus déroutant ! Dans l’exemple précédent, notre programme HLL (ProgramJ) a ouvert le fichier Report1 et aucun programme n’a émis un override à  destination du nom de fichier. A votre avis, que se passe-t-il quand on fait override du nom de fichier vers un fichier différent en associant le paramètre ToFile à  la commande OvrPrtF ? Après avoir émis un override qui modifie le fichier, le système recherche les overrides concernant le nouveau fichier, pas l’original. Examinons une version légèrement modifiée de notre exemple. La figure 2C contient les nouveaux programmes.

   Deux seulement des programmes originaux ont été modifiés dans ce nouvel exemple. Dans ProgramC au niveau d’appel 3, le paramètre ToFile a été ajouté à  la commande OvrPrtF, changeant le fichier à  ouvrir de Report1 à  Report2. Et ProgramB au niveau d’appel 2 « override » maintenant le fichier d’imprimante Report2 plutôt que Report1.

   La figure 2D présente les résultats des overrides. Voyons à  nouveau pas à  pas les overrides en vigueur de cet exemple.

Etape 1 – Overrides au niveau d’appel jusqu’au, et y compris le, niveau d’appel de la plus ancienne procédure dans le groupe d’activation contenant le fichier ouvert

  La vérification au niveau d’appel 10 montre que le système ouvre le fichier Report1 dans le groupe d’activation AG1. La plus ancienne procédure dans le groupe d’activation AG1 apparaît au niveau d’appel 2. Par conséquent, à  l’étape 1, le système traite les overrides au niveau d’appel en commençant au niveau d’appel 10 et en remontant dans la pile d’appels jusqu’au niveau d’appel 2. Quand le système traite le niveau d’appel 2, l’étape 1 est terminée.

a – Il n’y a pas d’override au niveau d’appel pour le fichier Report1 au niveau d’appel 10.
b – Il n’y a pas d’override au niveau d’appel pour le fichier Report1 au niveau d’appel 9.
c – Il n’y a pas d’override au niveau d’appel pour le fichier Report1 au niveau d’appel 8.
d – Il n’y a pas d’override au niveau d’appel pour le fichier Report1 au niveau d’appel 7.
e – Le niveau d’appel 6 contient un override au niveau d’appel pour le fichier Report1. L’attribut Copies pour le fichier Report1 est « overriden » en 7.

Overrides actifs à  ce stade : Copies(7)

f – Le niveau d’appel 5 montre un override au niveau du groupe d’activation, mais le programme s’exécute dans le groupe d’activation par défaut. Rappelons que les overrides au niveau du groupe d’activation émis à  partir du groupe d’activation par défaut ont l’étendue des overrides au niveau d’appel. Par conséquent, le système traite cet override comme un override au niveau d’appel. L’attribut CPI pour le fichier Report1 est « overriden » en 13.3 et la valeur d’attribut Copies précédente est remplacée par cette dernière valeur de 6.

Overrides actifs à  ce stade : CPI(13.3) Copies(6)

g – Il n’y a pas d’override au niveau d’appel pour le fichier Report1 au niveau d’appel 4.
h – Le niveau d’appel 3 contient un override au niveau d’appel pour le fichier Report1. L’attribut LPI pour le fichier Report1 est « overriden » en 9 et la valeur d’attribut Copies précédente est remplacée par cette dernière valeur de 4. Notons que le fichier d’imprimante a aussi été « overriden » en Report2. C’est particulièrement intéressant parce que le système va maintenant commencer à  rechercher des overrides concernant le fichier Report2 plutôt que le fichier Report1.

Overrides actifs à  ce stade : ToFile(Report2) LPI(9) CPI(13.3) Copies(4)

i – Il n’y a pas d’override au niveau d’appel pour le fichier Report1 au niveau d’appel 2.

  L’étape 1 est terminée. Le niveau d’appel 2 contient la procédure la plus ancienne dans le groupe d’activation AG1 (le groupe d’activation contenant le fichier ouvert).

Etape 2 – Les overrides au niveau du groupe d’activation les plus récents pour le groupe d’activation contenant le fichier ouvert

  Le système recherche maintenant l’override au groupe d’activation émis le plus récemment dans un groupe d’activation AG1, où le fichier Report1 (en réalité Report2 maintenant) a été ouvert.

a – Il n’y a pas d’override au niveau du groupe d’activation pour le fichier Report2 au niveau d’appel 10.
b – Il n’y a pas d’override au niveau du groupe d’activation pour le fichier Report2 dans le groupe d’activation AG1 au niveau d’appel 9. L’override au niveau du groupe d’activation dans le niveau d’appel 9 est dans le groupe d’activation AG2 et n’est par conséquent pas applicable.
c – Il n’y a pas d’override au niveau du groupe d’activation pour le fichier Report2 au niveau d’appel 8.
d – Il n’y a pas d’override au niveau du groupe d’activation pour le fichier Report2 au niveau d’appel 7.
e – Il n’y a pas d’override au niveau du groupe d’activation pour le fichier Report2 au niveau d’appel 6.
f – Il n’y a pas d’override au niveau du groupe d’activation pour le fichier Report2 au niveau d’appel 5.
g – Il n’y a pas d’override au niveau du groupe d’activation pour le fichier Report2 au niveau d’appel 4.
h – Il n’y a pas d’override au niveau du groupe d’activation pour le fichier Report2 au niveau d’appel 3.
i – Le niveau d’appel 2 contient un override au niveau du groupe d’activation dans le groupe d’activation AG1 pour le fichier Report2. L’attribut FormType pour le fichier Report2 est « overriden » en FormB, la valeur d’attribut LPI précédente est remplacée par cette dernière valeur de 7.5 et la valeur d’attribut Copies précédente est remplacée par cette dernière valeur de 3.

Overrides actifs à  ce stade : ToFile(Report2) LPI(7.5) CPI(13.3) FormType(FormB) Copies(3)

  L’étape 2 est terminée. Le système cesse de rechercher des overrides au niveau du groupe d’activation parce qu’il a atteint l’override au niveau du groupe d’activation le plus récemment émis dans le groupe d’activation AG1.

Etape 3 – Les overrides au niveau d’appel inférieurs au niveau d’appel de la procédure la plus ancienne dans le groupe d’activation contenant le fichier ouvert

  A nouveau, le niveau d’appel 2 est le niveau d’appel de la plus ancienne procédure dans le groupe d’activation AG1. Le système commence le traitement des overrides au niveau d’appel au niveau d’appel précédant le niveau d’appel 2 (c’est-à -dire, le niveau d’appel 1).

a – Il n’y a pas d’override au niveau d’appel pour le fichier Report2 au niveau d’appel 1.

  L’étape 3 est terminée. La pile d’appels a été traitée jusqu’au niveau d’appel 1.

Etape 4 – Les overrides au niveau du job les plus récents

  Le système finit le traitement des overrides en recherchant l’override au niveau du job émis le plus récemment pour le fichier Report1.

a – Il n’y a pas d’override au niveau du job pour le fichier Report2 au niveau d’appel 10.
b – Il n’y a pas d’override au niveau du job pour le fichier Report2 au niveau d’appel 9.
c – Il n’y a pas d’override au niveau du job pour le fichier Report2 au niveau d’appel 8.
d – Il n’y a pas d’override au niveau du job pour le fichier Report2 au niveau d’appel 7.
e – Il n’y a pas d’override au niveau du job pour le fichier Report2 au niveau d’appel 6.
f – Il n’y a pas d’override au niveau du job pour le fichier Report2 au niveau d’appel 5.
g – Il n’y a pas d’override au niveau du job pour le fichier Report2 au niveau d’appel 4.
h – Il n’y a pas d’override au niveau du job pour le fichier Report2 au niveau d’appel 3.
i – Il n’y a pas d’override au niveau du job pour le fichier Report2 au niveau d’appel 2.
j – Il n’y a pas d’override au niveau du job pour le fichier Report2 au niveau d’appel 1.

  L’étape 4 est terminée. Il n’y a pas d’overrides au niveau du job pour le fichier Report2.

  Ainsi se termine l’application des overrides. L’override fusionné final qui sera appliqué au fichier d’imprimante Report2 dans le niveau d’appel 10 est :

LPI(7.5) CPI(13.3) FormType(FormB) Copies(3)

  Toutes les autres valeurs d’attribut proviennent de la description de fichier du fichier d’imprimante Report2.

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