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