generic type Month is range <>; type Day is range <>; type Year is range <>; package Date_Format_Template is Short_Date_Length : constant := 8; Long_Date_Length : constant := 18; subtype Short_Date is String (1 .. Short_Date_Length); subtype Long_Date is String (1 .. Long_Date_Length); type Date_Delimiter is (Slash_Delimiter, Hyphen_Delimiter, Dot_Delimiter); type Date_Style is (Month_Preceding, Day_Preceding, Year_Preceding); function Is_Long_Date (From_Month : in Month; From_Day : in Day; From_Year : in Year; Using_Date_Style : in Date_Style := Month_Preceding) return Long_Date; function Is_Short_Date (From_Month : in Month; From_Day : in Day; From_Year : in Year; Using_Date_Style : in Date_Style := Month_Preceding; Using_Date_Delimiter : in Date_Delimiter := Slash_Delimiter) return Short_Date; Operation_Failure : exception; end Date_Format_Template;