8 octobre 2009

Tables working CO40 et CO41

Ces zones working des programmes de gestion de dossiers servent a stocker en mémoire la clef des demandes de mises à jour (table working CO40) et leur contenu (table working CO41). Ceci est valable pour les demandes de mise à jour (batch/TP), mais aussi pour les AMJ / AMK faits par les traitements rattachés aux processus de gestion.

Débordement de tables CO40 / CO41

En batch si la taille des zones CO40 / CO41 est insuffisante, les programmes basculent leurs données en base dans la table M8 (nom complet <RDPROS>M81). Ceci leur permet de continuer, mais avec des performances dégradées.
Depuis HRv3e, le TP fonctionne comme le batch avec une table de débordement CO40 en Base de Données. Les programmes peuvent toutefois bloquer sur des débordements en cas d'utilisation d'opérateurs ALE - opérateur incompatible avec la table en base.



Si votre traitement se bloque pour des problèmes de débordement de ces zones, plusieurs pistes peuvent être à étudier :
* en batch, réduire le nombre minimum de mouvements par commit : ceci peut permettre de réduire la taille des paquets de mouvements traités. Depuis HRv5 ce paramétrage est disponible dans les écrans de Opération. Dans les versions antérieures il n'est accessible que par l'objet "Plate-forme logique", ce qui est gênant car cette propriété est valable pour TOUTES les mises à jour batch. Et la modification de sa valeur nécessite une regénération des programmes. Une solution dégradée est de modifier dans le source Cobol du BMM concerné la valeur de W-WPVA-NBMVCM. Toutefois, les mouvements d'un NUDOSS/ZONUT1 n'étant jamais séparés dans des paquets différents, cela peut ne pas suffire. Dans ce cas ...
* en batch, voir s'il est possible de réduire le nombre de bordereaux par dossier : s'ils peuvent être séparés en plusieurs paquets, positionner dans les bordereaux des ZONUT1 différentes. Les bordereaux d'un même NUDOSS ayant des ZONUT1 différentes sont traités comme des dossiers différents.
Ces deux points peuvent avoir un effet négatif sur les performances du traitement batch.
* voir s'il est possible de corriger les traitements pour réduire le nombre de mises à jour par dossier : existe-t-il des traitements qui fasse des AMJ en masse pour annuler le contenu d'une information répétitive, puis la reconstruire ? Si oui étudier un mécanisme fonctionnant en différentiel.
* si le débordement concerne la CO41, voir s'il est possible de réduire la longueur maximale des bordereaux. Vous trouverez cette longueur en consultant la macro BGVV18 en table GE35 pour votre processus. Si cette longueur est importante, c'est probablement qu'est rattaché au processus une information possédant un champ "commentaire". Voir si cette information peut être détachée - ou modifiée,
* en dernier recours, augmenter la taille des tables de travail CO40 et/ou CO41,

Visualiser un débordement en batch


En batch la bascule des CO40 / CO41 en base se fait de manière transparente. Pour ajouter une alarme dans les squelettes de BMA et BMK sur dépassement de capacité, copiez les lignes indiquées ci dessous dans vos squelettes (fonctions F9MEF, F9MMJ, F9MGD). Notez que ces lignes spécifiques seront perdues en cas d’intégration de patch sur BMA et BMK. Ceci vous permettra de savoir laquelle des tables CO40 / CO41 déborde.

021400*N9MEF.    NOTE *PLUS DE PLACE : BASCULEMENT EN     *.            P005
021500 F9MEF.    IF    W-WP00-LGINFS >                                  P005
021600                 W-WP00-LGTRAV                                    P010
021700           OR    CO40-NBCO40 = ICO40M                             P020
021800           NEXT SENTENCE ELSE GO TO     F9MEF-FN.                 P020
021900*TABLE DE DEBORDEMENT                                             P010
022000*Alimentation temoin ecriture M8                                  P030

      *digix          : Warning si bascule des mvts en table M8.
      *
      *<DEBSUB>RDPROG.

           IF W-WP00-LGINFS > W-WP00-LGTRAV
           DISPLAY "%1BMA-DIGIX001-DEBORDMNT CO41.BASCULE EN M8".

           IF CO40-NBCO40 = ICO40M
           DISPLAY "%1BMA-DIGIX002-DEBORDMNT CO40.BASCULE EN M8".

      *<FINSUB>.

022100     MOVE        "1" TO CO15-TEECTB                               P040
022200*Initialisation indice de boucle                                  P050
022300     MOVE        ZERO TO ICO40R                                   P060
022400     MOVE        CO40-NBCO40 TO ICO40L.                           P070

et

042900*N9MMJ.    NOTE *PLUS DE PLACE : BASCULEMENT EN     *.            P005
043000 F9MMJ.    IF    CO40-NBCO40 = ICO40M                             P005
043100           NEXT SENTENCE ELSE GO TO     F9MMJ-FN.                 P005
043200*TABLE DE DEBORDEMENT                                             P010
043300*Alimentation temoin ecriture M8                                  P020

      *digix          : Warning si bascule des mvts en table M8.
      *
      *<DEBSUB>RDPROG.
           DISPLAY "%1BMA-DIGIX003-DEBORDMNT CO40.BASCULE EN M8".
      *<FINSUB>.

043400     MOVE        "1" TO CO15-TEECTB                               P030
043500*Initialisation indice de boucle                                  P040
043600     MOVE        ZERO TO ICO40R                                   P050
043700     MOVE        CO40-NBCO40 TO ICO40L.                           P060

et

950200*N9MGD.    NOTE *BASCULEMENT TABLE RELATIONNELLE    *.            P005
950300 F9MGD.    IF    CO15-TEECTB = "0"                                P005
950400           AND   (CO40-NBCO40 = IMT40M                            P010
950500           OR    CO40-PTCOUR + W-WP00-LGINFS                      P020
950600                 > W-CO41-LNGI)                                   P030
950700           NEXT SENTENCE ELSE GO TO     F9MGD-FN.                 P030
950800*Alimentation temoin ecriture M8                                  P040

      *digix          : Warning si bascule des mvts en table M8.
      *
      *<DEBSUB>RDPROG.

           IF CO40-PTCOUR + W-WP00-LGINFS > W-CO41-LNGI
           DISPLAY "%1BMK-DIGIX001-DEBORDMNT CO41.BASCULE EN M8".

           IF CO40-NBCO40 = IMT40M
           DISPLAY "%1BMK-DIGIX002-DEBORDMNT CO40.BASCULE EN M8".

      *<FINSUB>.

950900     MOVE        "1" TO CO15-TEECTB                               P050
951000*Initialisation indice de boucle                                  P060
951100     MOVE        ZERO TO IMT40R                                   P070
951200     MOVE        CO40-NBCO40 TO IMT40L.                           P080

Augmenter la taille des CO40 / CO41


Dans la plate forme physique, onglet processus, afficher les radicaux spécifiques du processus de mise à jour batch concerné.
Si ceux ci ne sont pas déjà présents, ajouter deux radicaux CO40 et CO41 (choisir 2 radicaux libres parmi les radicaux 2, 3, 4, 5, 6 ou 7).
* CO40 prend un numérique sur 4 (nombre de mouvements par paquets - 0100 par défaut). Ex : CO400100,
* CO41 prend un numérique sur 3 (contenu des mouvements en milliers de caractères - 016 par défaut). Ex : CO41016.

L'éditeur estime donc que la longueur d'un mouvement est en moyenne de 16000/100=160 caractères. On gardera par défaut un ratio proche de celui-ci.
Attention toutefois a ne pas augmenter inutilement les tailles de CO40 et CO41 : les programmes consommeront plus de mémoire. Ceci peut être dangereux, surtout dans le cas de programmes TP car leur nombre sur la machine peut être important.

Ces valeurs seront reprises lors de la génération des programmes de mise à jour. Sont impactés BMA, BMK, BML, BMM, BNA, BNF, BNK, BNL, BNM, BNN. HR Access ne sait pas analyser cet impact, aussi ne faites pas de RON mais une RBG choix G suivie d'une RBA.

Extraits de BMA :

397600*<DEBSUB>NBCO40VAFCP1                                             78E405
397700 01                 CO40-INDICES.                                 78E408
397800   05               ICO40R            PICTURE S9(4) %2.           78E410
397900   05               ICO40L            PICTURE S9(4) %2.           78E412
398000   05               ICO40M            PICTURE S9(4) %2            78E416
398100                                      VALUE %1.                   78E418
398200   05               IOC40R            PICTURE S9(4) %2.           78E420
398300   05               IOC40L            PICTURE S9(4) %2.           78E422
398400   05               IOC40M            PICTURE S9(4) %2            78E426
398500                                      VALUE %1.                   78E428
398600   05               IMT40R            PICTURE S9(4) %2.           78E430
398700   05               IMT40L            PICTURE S9(4) %2.           78E432
398800   05               IMT40M            PICTURE S9(4) %2            78E436
398900                                      VALUE %1.                   78E438
399000   05               ITM40R            PICTURE S9(4) %2.           78E440
399100   05               ITM40L            PICTURE S9(4) %2.           78E442
399200   05               ITM40M            PICTURE S9(4) %2            78E446
399300                                      VALUE %1.                   78E448
399400*<FINSUB>                                                         78E449

423900*******    TABLE DES MOUVEMENTS    *********                      79E010
424000 01                 WP00-CO40.                                    79E100

424600     10             CO40-NBCO40                                   79E130
424700                  PICTURE S9(4)                                   79E130
424800                    COMPUTATIONAL.                                79E130
424900*<SUBRAD>NBCO40                                                   79E135
425000     10             CO40-POSTE    OCCURS %1.                      79E140


430800*****************   CO41   ***************************************79E450
430900*                                                                 79E460
431000 01                 WP00-CO41.                                    79E470
431100   05               CO41.                                         79E480
431200*<SUBRAD>LGCO41                                                   79E485
431300     10             CO41-ZOBANA        PICTURE X(%1).             79E490

Aucun commentaire:

Enregistrer un commentaire