1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140
| int A427_RECH_CHAMP (ZoneErreur *pZErr,
char * pParametreIn,
char *pValChamp,
int nbreMaxZones,
Reperage * pReperage)
{
/*--------------------------------------------------------------------*/
/* Variables locales */
/*--------------------------------------------------------------------*/
int rc = 0;
int i = 0;
int x = 0;
char * virg;
char ValPos[2]; /* sert à controler les 2 caractères numériques
dans les rubrique "CHAMPxx" */
char val[257]; /*Pointeur sur chaine de caractere de la valeur*/
/*--------------------------------------------------------------------*/
/* Debut de traitement */
/*--------------------------------------------------------------------*/
#ifdef DEBUG
printf("DEBUG : A427 : Debut de la fonction\n");
#endif
memset(ValPos, '\0', sizeof(ValPos));
memset(val, '\0', sizeof(val));
memset(pReperage, '\0', sizeof(pReperage));
/* On verifie la presence d'espaces dans la chaine */
if (pParametreIn[0] == ' ')
{
/* Dans ce cas la, on deplace le pointeur */
strcpy(pParametreIn, pParametreIn + 1);
}
/* On effectue une boulece, tant que le nombre maximum de
* zones a renseigner n'est pas atteint */
while (i < nbreMaxZones)
{
/*Initialisations */
memset(ValPos,'\0',sizeof(ValPos));
memset(val,'\0',sizeof(val));
/* si on ne trouve pas le caractère ',' ou finc de chaîne '\0
* alors la carte est mal renseignée */
printf("Valeur de pParametreIn dans A427 : %s\n", pParametreIn);
if((pParametreIn[7] != ',') && (pParametreIn[7] != '\0'))
{
rc = c_R_ARRET;
goto A427_RECH_CHAMP_END;
}
/* controle que les 5 premiers caracteres correspondent à
* "CHAMP" */
if (strncmp(pParametreIn, "CHAMP", 5)!=0)
{
rc = c_R_ARRET;
goto A427_RECH_CHAMP_END;
}
/* On recupere les valeur numeric de pParametreIn
* comprises entre 01 et 16 pour ensuite les convertir en
* entier grace a atoi */
ValPos[0] = pParametreIn[5];
ValPos[1] = pParametreIn[6];
printf("Valeur de ValPos dans A427 : %.2s\n", ValPos);
/* Appel de A423 pour verifier que la valeur recupere est
* un entier */
rc = A423_all_digits(ValPos);
if((rc != c_R_OK) || (atoi(ValPos)>16) || (atoi(ValPos)==0))
{
rc = c_R_ARRET;
goto A427_RECH_CHAMP_END;
}
if(pReperage->flagCHAMP[atoi(ValPos)] != 'Y')
{
FormatMsg("ACD010", pZErr->Libelle, "CHAMP", ValPos);
rc = c_R_ARRET;
goto A427_RECH_CHAMP_END;
}
else
{
printf("Avant le memcpy dans pValChamp\n");
printf("Valeur de pParametreIn dans A427 :%s:\n",
pParametreIn);
/* On recuper dans pValChamp les 7 caracteres lu dans
* pParametreIn. i*8 permet de se deplacer de champ en
* champ dans le tableau */
memcpy(pValChamp + (i*8), pParametreIn, 7);
printf(" ===>>Valeur de pValChamp + (%d*8) :<%s>:\n", i,
pValChamp + (i*8));
printf("Apres le memcpy dans pValChamp\n");
}
/* Recherche de la virgule dans pParametreIn */
virg = strchr(pParametreIn, ',');
printf("Valeur de virg dans A427 : %s\n", virg);
if (virg != NULL)
{
/* On se deplace en attribuant la valeur apres la virgule
* a val et on recommence le traitement*/
strcpy(val, virg +1);
printf("Valeur de val : %s\n", val);
printf("Valeur de virg : %s\n", virg);
strcpy(pParametreIn, val);
printf("Valeur de pParametreIn : %s\n", pParametreIn);
}
else
{
break;
}
i++;
}
/* Verification qu'il n'y a plus aucune valeur ni aucun
* champ a traiter et que les cartes sont valides */
if((i == nbreMaxZones-1) &&(pParametreIn[7] != '\0'))
{
rc = c_R_WAR;
goto A427_RECH_CHAMP_END;
}
for(x = 1; x<17; x++)
{
printf("* Affichage de CHAMP[%d] dans A427:<%s>\n",
x, pReperage->CHAMP[x]);
}
A427_RECH_CHAMP_END:
#ifdef DEBUG
printf("DEBUG : A427 : Fin de la fonction \n");
#endif
return(rc);
} |
Partager