A noter : le compte rendu de BMM (RBM950IZ ou NRB322IZ.$nupro) liste les dossiers dont la mise a jour est en erreur. Pour avoir un bilan complet il ne faut pas oublier :
- Le compte rendu de BMI (RBM150IZ ou NRB150IZ.$nupro) qui liste les bordereaux rejetés (informations non gérées par le processus, formats invalides),
- Le compte rendu de BME (RBM212IZ ou NRB212IZ.$nupro) qui liste les dossiers à recycler (dossiers dont les contrôles ont été passés mais dont la mise a jour a été "rollbackée" avec celle d'un dossier en erreur) ou l'identifiant du dernier dossier traité (en cas d'arrêt brutal du programme),
- Le log qui va lister les erreurs SQL graves sources d'un rollback (table absente, tablespace plein, clef en double ...),
- Que le contenu du compte rendu de BMM peut être filtré par les cartes paramètre PA87/PA88 de la demande ZO,
- Que ce compte rendu peut ne pas être produit en cas d'incident sur la chaîne (kill, macro-processus déphasées, disque plein ...).
On mesure ici la simplicité de l'exploitation de cette chaîne ...
echo "matricule;information;poids;traitement;dictionnaire;rubrique;zone libre;code erreur;libelle;"
cat ${LIS}/NRB322IZ.${nupro} | awk ' BEGIN {
matricule=""
typAno=""
editAno="Complet"
}
{
if (substr($0,33,14) == "CLE DU DOSSIER") { matricule = substr($0, 51, 33) }
if (substr($0,4,11) == "INFORMATION") { info = substr($0,18,25) }
if (index($0,"Gravité : ") > 0) { typAno = substr($0,72,15) }
if (index($0,"I Groupe de traitement :") > 0) { trt=substr($0,27,2) " " substr($0,48,6) }
if (index($0,"I Structure de données :") > 0) { dico=substr($0,index($0,"Structure de données : ")+23,2)
if (index($0,"Code information : ") > 0 ) { dico=dico " " substr($0,index($0,"Code information : ")+19,2)}
if (index($0,"Rubrique : ") > 0 ) { rubr=substr($0,index($0,"Rubrique : ")+11,6)}
if (index($0,"Zone libre : ") > 0 ) { zlib=substr($0,index($0,"Zone libre : ")+13,30)}
}
if (index($0,"I Code erreur :") > 0) {
coderr=substr($0,18,6)
sub(/[ \t]+Li/, "", coderr)
reste=substr(substr($0,20),index(substr($0,20),":")+1,80)
sub(/^[ \t]+/, "", reste)
coderr=coderr ":" reste
}
if (index($0,"I Libelle :") > 0) { libel = substr($0,18,80) }
if (index($0,"I ") > 0) {
if (typAno != "") {
if ((editAno == "Complet") || (typAno == "Erreur " )) {
sub(/[ \t]+$/, "",matricule)
sub(/[ \t]+$/, "",typAno)
sub(/[ \t]+$/, "",trt)
sub(/[ \t]+$/, "",dico)
sub(/[ \t]+$/, "",rubr)
sub(/[ \t]+$/, "",zlib)
sub(/[ \t]+$/, "",coderr)
sub(/[ \t]+$/, "",libel)
printf("%s;%s;%s;%s;%s;%s;%s;%s;%s\n",matricule,info,typAno,trt,dico,rubr,zlib,coderr,libel)
}
typAno=""
trt=""
dico=""
rubr=""
zlib=""
coderr=""
libel=""
empl=""
}
}
}'
Exemple de résultat :
001DIGIX01;DV Congés payés ;Erreur;;ZY DV;RDMOT2;E01;P:Erreur sur mouvement Rubrique absente ou présente à tort;
001DIGIX02;DV Congés payés ;Erreur;V1 0DVB;;;;0DVB06:0DVB/JD/SOLDE<0/HP;Solde déjà négatif avant l'imputation des absences
001DIGIX03;DV Congés payés ;Erreur;V1 0DVB;;;;0DVB05:0DVB/UW/PTR.IMP/HP;Solde des congés négatif ou nul : Impossible d'imputer une absence..
Aucun commentaire:
Enregistrer un commentaire