I'd suggest looking again at DeMorgan's Law of boolean expressions. I've made this mistake dozens of times over the years. Randy. "Mehdi Saada" <00120260a@gmail.com> wrote in message news:fd7c28a6-5605-4521-b9e9-f88b47b9714d@googlegroups.com... This piece shall verify the program's arguments. I don't understand why whatever the first argument is, it doesn't raise EXC_COMMANDE as expected. It should do it if ARGUMENT(1)(1) isn't 'n','c','N','C'. if Argument_Count /= 2 then PUT_LINE ("Pas le bon nombre d'arguments."); raise Exc_Commande; elsif Argument (1)'Length /= 1 and ARGUMENT(1)(1) not in 'n'| 'c'| 'N' | 'C' then PUT_LINE ("Première argument incorrect: veuillez mettre un (seul) charactère entre n, c, N et C."); raise Exc_Commande; elsif ADA.Strings.Fixed.Index (Argument (2), Alphanumeric_Set, Outside) /= 0 then PUT_LINE ("Deuxième argument incorrect: l'acronyme ne peut pas contenir de chiffres !"); raise Exc_Commande; end if;