Ray Blaak a �crit dans le message ... >The fix is, of course, named placement holders: > >"there are ${total_count} bad things here, ${critical_count} of which matter" > And what about: function Critical_Error (Total_Count, Critical_Count : in Positive) return String is begin return "there are" & Positive'Image (Total_Count) & " bad things here," & Positive'Image (Critical_Count) & " of which matter"; end Critical_Error; Now there is no problem with reordering :) For a multi-lingual error system a OO design will do as in: type Error_Message is abstract tagged private; function Critical_Error (E : Error_Message; Total_Count, Critical_Count : in Positive) return string is abstract; type English_EM is new Error_Message with private; function Critical_Error (E : English_EM; Total_Count, Critical_Count : in Positive) return string is abstract; type French_EM is new Error_Message with private; function Critical_Error (E : French_EM; Total_Count, Critical_Count : in Positive) return string is abstract; Pascal. PS : this code has not been check by any compiler except myself so it could just not compile :) --|------------------------------------------------------ --| Pascal Obry Team-Ada Member --| 45, rue Gabriel Peri - 78114 Magny Les Hameaux FRANCE --|------------------------------------------------------ --| http://perso.wanadoo.fr/pascal.obry --| --| "The best way to travel is by means of imagination"