!standard 1.1.4(14.2/5) 22-12-01 AI12-0450-1/01 !standard 1.2(4.1/3) !standard 1.2(8/5) !standard 1.2.1(5/5) !standard 1.2.1(6/5) !standard 1.2.1(8/5) !standard 1.2.1(9/5) !standard 1.2.1(10/5) !standard 2.1(1/5) !standard 2.1(3.1/5) !standard 2.1(4/5) !standard 2.1(4.1/5) !standard 2.1(5/5) !standard 2.1(15/5) !standard 2.3(4.1/5) !standard 2.3(5/5) !standard 3.5.2(2/5) !standard 3.5.2(3/5) !standard 3.5.2(4/5) !standard A.1(36.1/5) !standard A.1(36.2/5) !standard A.3.2(32.6/5) !standard A.3.5(33.2/5) !standard A.3.5(51.2/5) !standard A.3.5(55/5) !standard A.3.5(59/5) !standard A.3.5(61.2/5) !standard A.3.5(63/5) !standard A.4.6(8/3) !standard A.4.10(3/5) !standard A.19(12/5) !standard B.3(39.1/2) !standard B.5(21/5) !standard F.3.3(46) !standard F.3.3(47) !standard F.3.3(48) !standard F.3.3(49) !standard F.3.3(50) !standard F.3.3(51) !standard F.3.3(52) !class binding interpretation 22-12-01 !status Amendment 1-2012 22-12-06 !status ARG Approved 13-0-0 23-01-19 !status work item 22-12-01 !status received 22-11-04 !priority Low !difficulty Easy !qualifier Omission !subject Update references to standards !summary Update references to obsolete standards. !question ISO does not allow us to reference obsolete standards. Should we update all references to such standards? (Yes.) !recommendation (See Summary.) !wording Modify 1.1.4(14.2/5): When this document mentions the conversion of some character or sequence of characters to upper case, it means the character or sequence of characters obtained by using simple upper case mapping, as defined by documents referenced in Clause 2 of ISO/IEC 10646:[2017]{2020}. Modify 1.2(4.1/3): ISO[/IEC] 3166-1:[2006]{2020}, Codes for the representation of names of countries and their subdivisions — Part 1: Country Codes. [Editor's note: Update year, remove "IEC" (this is just an ISO standard).] Modify 1.2(8/5): ISO/IEC 10646:{2020}[2017], Information technology — Universal [Coded Character Set]{coded character set} (UCS). [Editor's note: Update year. Note that we previously did that for Ada 2022, but it changed again. The title subtly changed as well.] Modify 1.2.1(5/5): ISO/IEC 6429:1992, Information technology — Control functions for coded [graphic ]character sets [Editor's note: The word "graphic" is not in the actual title.] Modify 1.2.1(6/5): ISO 8601{-1}:[2004]{2019}, Data elements and interchange formats — Information interchange — {Part 1} Representation of dates and times [Editor's note: Correct as this is now a series of standards. *** Check the title!! ***] Modify 1.2.1(8/5): ISO/IEC 9899:[2011]{2018}, Information technology — Programming languages — C [Editor's note: update year.] Modify 1.2.1(9/5): ISO/IEC 14882:[2011]{2020}, Information technology — Programming languages — C++ [Editor's note: update year.] Delete 1.2.1(10/5): ISO/IEC TR 19769:2004, Information technology — Programming languages, their environments and system software interfaces — Extensions for the programming language C to support new character data types [Editor's note: Jeff reports that this TR was encorporated into the current C and C++ standards; ISO reports that this TR is withdrawn. So we don't need it at all.] Modify 2.1(1/5): The character repertoire for the text of an Ada program consists of the entire coding space described by the ISO/IEC 10646:{2020}[2017] Universal [Coded Character Set]{coded character set}. This coding space is organized in planes, each plane comprising 65536 characters. Modify 2.1(3.1/5): A character is defined by this International Standard for each cell in the coding space described by ISO/IEC 10646:{2020}[2017], regardless of whether or not ISO/IEC 10646:{2020}[2017] allocates a character to that cell. Modify 2.1(4/3): The coded representation for characters is implementation defined (it need not be a representation defined within ISO/IEC 10646:{2020}[2017]). A character whose relative code point in its plane is 16#FFFE# or 16#FFFF# is not allowed anywhere in the text of a program. The only characters allowed outside of comments are those in categories other_format, format_effector, and graphic_character. Modify 2.1(4.1/5): The semantics of an Ada program whose text is not in Normalization Form C (as defined by Clause [21]{22} of ISO/IEC 10646:[2017)]{2020}) is implementation defined. [Editor's note: The 10646 clause changed numbers in the 2020 edition.] Modify 2.1(5/3): The description of the language definition in this International Standard uses the character properties General Category, Simple Uppercase Mapping, Uppercase Mapping, and Special Case Condition of the documents referenced by Clause 2 of ISO/IEC 10646:{2020}[2017]. The actual set of graphic symbols used by an implementation for the visual representation of the text of an Ada program is not specified. In AARM 2.1(6.a/3), replace 2017 with 2020. Modify 2.1(15/3): The following names are used when referring to certain characters (the first name is that given in ISO/IEC 10646:{2020}[2017]): In AARM 2.1(15.a/3), replace 2017 with 2020. Modify 2.3(4.1/5): An identifier shall only contain characters that may be present in Normalization Form KC [(]as defined by Clause [21]{22} of ISO/IEC 10646:[2017)]{2020}. [Editor's note: The ISO editors deleted the parens without comment. But no change was made to a similar sentence in A.3.5. Go figure. The 10646 clause changed numbers in the 2020 edition.] Modify 2.3(5/5): Two identifiers are considered the same if they consist of the same sequence of characters after applying locale-independent simple case folding, as defined by documents referenced in Clause 2 of ISO/IEC 10646:[2017]{2020}. [Editor's note: The clause here did not change numbers. Note, as always, that case information is not included or mentioned in 10646; we have to directly depend on Unicode. Also note that these days there are direct references to Unicode in 10646, so we might be able to directly reference Unicode in our standard. But best not to make such a change this late in the process.] In 3.5.2(2/5, 3/5, 4/5), replace 2017 with 2020. Modify AARM 9.6.1(82.a/2): The Image provides a string in ISO 8601{-1} format, the international standard time format{, with the exception that we separate the date and time with a blank rather than a 'T' (this was allowed in previous versions of the ISO 8601 standard)}. Alternative representations allowed in ISO 8601{-1} are not supported here. Modify AARM 9.6.1(82.b/2): ISO 8601{-1} allows 24:00:00 for midnight; and a seconds value of 60 for leap seconds. These are not allowed here (the routines mentioned above cannot produce those results). In A.1(36.1/5) and A.1(36.2/5), replace 2017 with 2020. Modify A.3.2(32.6/5) [as introduced by AI12-0004-1]: True if Item could be present in a string normalized to Normalization Form KC (as defined by Clause 21 of ISO/IEC 10646:{2020}[2017]); this includes all characters except those with positions 160, 168, 170, 175, 178, 179, 180, 181, 184, 185, 186, 188, 189, and 190. In AARM A.3.2(60.a/5), replace 2017 with 2020. Modify A.3.5(51.2/5) [as introduced by AI12-0004-1]: Returns True if the Wide_Character designated by Item could be present in a string normalized to Normalization Form KC (as defined by Clause 21 of ISO/IEC 10646:{2020}[2017]), otherwise returns False. Modify A.3.5(55/5): Returns the Simple Lowercase Mapping as defined by documents referenced in Clause 2 of ISO/IEC 10646:{2020}[2017] of the Wide_Character designated by Item. If the Simple Lowercase Mapping does not exist for the Wide_Character designated by Item, then the value of Item is returned. In AARM A.3.2(55.a/5), replace 2017 with 2020. Modify A.3.5(59/5): Returns the Simple Uppercase Mapping as defined by documents referenced in Clause 2 of ISO/IEC 10646:{2020}[2017] of the Wide_Character designated by Item. If the Simple Uppercase Mapping does not exist for the Wide_Character designated by Item, then the value of Item is returned. Modify the references in AARM A.3.5(62.a/3) to 10646:2020 and Unicode 13.0 (current as of this writing). Modify A.3.5(63/5): NOTE 1 The results returned by these functions can may depend on which particular version of {ISO/IEC}[the] 10646[ standard] is supported by the implementation (see 2.1). [Editor's note: Use a proper undated reference to 10646 (following the Directives).] Modify A.4.6(8/3): NOTE There are certain characters which are defined to be lower case letters by ISO{/IEC} 10646 and are therefore allowed in identifiers, but are not considered lower case letters by Ada.Strings.Maps.Constants. [Editor's note: Use a proper undated reference to 10646 (following the Directives).] Modify A.19(12/5): Function Country returns the code of the country associated with the active locale. If the Country_Code associated with the active locale cannot be determined from the environment, then Country returns Country_Unknown. Otherwise, the result is an upper-case string representation of an ISO 3166-1:[2006]{2020} alpha-2 code that identifies a country. [Editor's note: We could use an undated reference here instead. That would mean that an updated standard might cause a change in Locales, but that is very unlikely in practice (the standard is generally updated compatibly). ***] Modify B.3(39.1/2): -- ISO/IEC 10646[:2003] compatible types[ defined by ISO/IEC TR 19769:2004]. [Editor's note: Jeff reports these types are now defined by the C and C++ standards. Rather than giving us something to change repeatedly, we should just drop the reference to a particular Standard; similarly, we use an undated 10646 reference.] Modify B.5(21/5): An implementation may add additional declarations to the Fortran interface packages. For example, declarations are permitted for the character types corresponding to Fortran character kinds 'ascii' and 'iso_10646', which in turn correspond to ISO/IEC 646:1991 and to UCS-4 as specified in ISO/IEC 10646:[2017]{2020}. [Editor's note: The ISO editors put in a comment on this paragraph marking "iso_10646" that the correct reference is ISO/IEC 10646. But this referring to something defined in the Fortran Standard, so we have to write it exactly as defined there. Thus no change here for that.] Move F.3.3(46-52) to an AARM "discussion" note: NOTE The rules for edited output are based on COBOL (ANSI X3.23:1985, endorsed by ISO as ISO 1989-1985), with the following differences: [Editor's note: ISO 1989:1985 is old and cannot be referenced. We don't have the expertise to determine if the note is still accurate with newer COBOL standards. We could try to find someone that could comment, but that could take a long time. And this Annex is not used much. So I recommend moving the entire note as-is to the AARM (which has no restrictions about referencing standards) - it will still be accurate and we won't need to update it now or in the future.] !discussion See the Editor's notes in the wording. !corrigendum 1.1.4(14.2/5) @drepl When this International Standard mentions the conversion of some character or sequence of characters to upper case, it means the character or sequence of characters obtained by using simple upper case mapping, as defined by documents referenced in Clause 2 of ISO/IEC 10646:2017. @dby When this International Standard mentions the conversion of some character or sequence of characters to upper case, it means the character or sequence of characters obtained by using simple upper case mapping, as defined by documents referenced in Clause 2 of ISO/IEC 10646:2020. !corrigendum 1.2(4.1/3) @drepl ISO/IEC 3166-1:2006, @i. @dby ISO 3166-1:2020, @i !corrigendum 1.2(8/3) @drepl ISO/IEC 10646:2017, @i. @dby ISO/IEC 10646:2020, @i !corrigendum 1.2.1(0) @dinsc The following documents are mentioned in this document as informative references. !corrigendum 2.1(1/5) @drepl The character repertoire for the text of an Ada program consists of the entire coding space described by the ISO/IEC 10646:2017 Universal Coded Character Set. This coding space is organized in @i, each plane comprising 65536 characters. @dby The character repertoire for the text of an Ada program consists of the entire coding space described by the ISO/IEC 10646:2030 Universal coded character set. This coding space is organized in @i, each plane comprising 65536 characters. !corrigendum 2.1(3.1/5) @drepl A @fa is defined by this International Standard for each cell in the coding space described by ISO/IEC 10646:2017, regardless of whether or not ISO/IEC 10646:2017 allocates a character to that cell. @dby A @fa is defined by this International Standard for each cell in the coding space described by ISO/IEC 10646:2020, regardless of whether or not ISO/IEC 10646:2020 allocates a character to that cell. !corrigendum 2.1(4/5) @drepl The coded representation for characters is implementation defined (it can be a representation that is not defined within ISO/IEC 10646:2017). A character whose relative code point in its plane is 16#FFFE# or 16#FFFF# is not allowed anywhere in the text of a program. The only characters allowed outside of comments are those in categories @fa, @fa, and @fa. @dby The coded representation for characters is implementation defined (it can be a representation that is not defined within ISO/IEC 10646:2020). A character whose relative code point in its plane is 16#FFFE# or 16#FFFF# is not allowed anywhere in the text of a program. The only characters allowed outside of comments are those in categories @fa, @fa, and @fa. !corrigendum 2.1(4.1/5) @drepl The semantics of an Ada program whose text is not in Normalization Form KC (as defined by Clause 21 of ISO/IEC 10646:2017) is implementation defined. @dby The semantics of an Ada program whose text is not in Normalization Form C (as defined by Clause 22 of ISO/IEC 10646:2020) is implementation defined. !corrigendum 2.1(5/5) @drepl The description of the language definition in this International Standard uses the character properties General Category, Simple Uppercase Mapping, Uppercase Mapping, and Special Case Condition of the documents referenced by the note in Clause 2 of ISO/IEC 10646:2017. The actual set of graphic symbols used by an implementation for the visual representation of the text of an Ada program is not specified. @dby The description of the language definition in this International Standard uses the character properties General Category, Simple Uppercase Mapping, Uppercase Mapping, and Special Case Condition of the documents referenced by Clause 2 of ISO/IEC 10646:2020. The actual set of graphic symbols used by an implementation for the visual representation of the text of an Ada program is not specified. !corrigendum 2.1(15/3) @drepl The following names are used when referring to certain characters (the first name is that given in ISO/IEC 10646:2017): @dby The following names are used when referring to certain characters (the first name is that given in ISO/IEC 10646:2020): !comment use the overall paragraph to force a conflict. !corrigendum 2.3(4/3) @drepl An identifier shall only contain characters that may be present in Normalization Form KC (as defined by Clause 21 of ISO/IEC 10646:2017). @dby An identifier shall only contain characters that may be present in Normalization Form KC as defined by Clause 22 of ISO/IEC 10646:2020. !corrigendum 2.3(5/3) @drepl Two @fas are considered the same if they consist of the same sequence of characters after applying locale-independent simple case folding, as defined by documents referenced in Clause 2 of ISO/IEC 10646:2017. @dby Two @fas are considered the same if they consist of the same sequence of characters after applying locale-independent simple case folding, as defined by documents referenced in Clause 2 of ISO/IEC 10646:2020. !corrigendum 3.5.2(2/3) @drepl The predefined type Character is a character type whose values correspond to the 256 code points of Row 00 (also known as Latin-1) of the ISO/IEC 10646:2017 Basic Multilingual Plane (BMP). Each of the graphic characters of Row 00 of the BMP has a corresponding @fa in Character. Each of the nongraphic characters of Row 00 has a corresponding language-defined name, which is not usable as an enumeration literal, but which is usable with the attributes Image, Wide_Image, Wide_Wide_Image, Value, Wide_Value, and Wide_Wide_Value; these names are given in the definition of type Character in A.1, "The Package Standard", but are set in @i. @dby The predefined type Character is a character type whose values correspond to the 256 code points of Row 00 (also known as Latin-1) of the ISO/IEC 10646:2020 Basic Multilingual Plane (BMP). Each of the graphic characters of Row 00 of the BMP has a corresponding @fa in Character. Each of the nongraphic characters of Row 00 has a corresponding language-defined name, which is not usable as an enumeration literal, but which is usable with the attributes Image, Wide_Image, Wide_Wide_Image, Value, Wide_Value, and Wide_Wide_Value; these names are given in the definition of type Character in A.1, "The Package Standard", but are set in @i. !corrigendum 3.5.2(3/3) @drepl The predefined type Wide_Character is a character type whose values correspond to the 65536 code points of the ISO/IEC 10646:2017 Basic Multilingual Plane (BMP). Each of the graphic characters of the BMP has a corresponding @fa in Wide_Character. The first 256 values of Wide_Character have the same @fa or language-defined name as defined for Character. Each of the @fas has a corresponding @fa. @dby The predefined type Wide_Character is a character type whose values correspond to the 65536 code points of the ISO/IEC 10646:2020 Basic Multilingual Plane (BMP). Each of the graphic characters of the BMP has a corresponding @fa in Wide_Character. The first 256 values of Wide_Character have the same @fa or language-defined name as defined for Character. Each of the @fas has a corresponding @fa. !corrigendum 3.5.2(4/3) @drepl The predefined type Wide_Wide_Character is a character type whose values correspond to the 2147483648 code points of the ISO/IEC 10646:2017 character set. Each of the @fas has a corresponding @fa in Wide_Wide_Character. The first 65536 values of Wide_Wide_Character have the same @fa or language-defined name as defined for Wide_Character. @dby The predefined type Wide_Wide_Character is a character type whose values correspond to the 2147483648 code points of the ISO/IEC 10646:2020 character set. Each of the @fas has a corresponding @fa in Wide_Wide_Character. The first 65536 values of Wide_Wide_Character have the same @fa or language-defined name as defined for Wide_Character. !corrigendum A.1(36.1/2) @drepl @xcode< --@ft<@i< The declaration of type Wide_Character is based on the standard ISO/IEC 10646:2017 BMP character>> --@ft<@i< set. The first 256 positions have the same contents as type Character. See 3.5.2.>> @b Wide_Character @b (@ft<@i>, @ft<@i> ... @ft<@i>, @ft<@i>);> @dby @xcode< --@ft<@i< The declaration of type Wide_Character is based on the standard ISO/IEC 10646:2020 BMP character>> --@ft<@i< set. The first 256 positions have the same contents as type Character. See 3.5.2.>> @b Wide_Character @b (@ft<@i>, @ft<@i> ... @ft<@i>, @ft<@i>);> !corrigendum A.1(36.2/2) @drepl @xcode< --@ft<@i< The declaration of type Wide_Wide_Character is based on the full>> --@ft<@i< ISO/IEC 10646:2017 character set. The first 65536 positions have the>> --@ft<@i< same contents as type Wide_Character. See 3.5.2.>> @b Wide_Wide_Character @b (@ft<@i>, @ft<@i> ... @ft<@i>, @ft<@i>); @b Wide_Wide_Character'Size @b 32;> @dby @xcode< --@ft<@i< The declaration of type Wide_Wide_Character is based on the full>> --@ft<@i< ISO/IEC 10646:2020 character set. The first 65536 positions have the>> --@ft<@i< same contents as type Wide_Character. See 3.5.2.>> @b Wide_Wide_Character @b (@ft<@i>, @ft<@i> ... @ft<@i>, @ft<@i>); @b Wide_Wide_Character'Size @b 32;> !comment use the overall paragraph to force a conflict. !corrigendum A.3.2(32.5/5) @drepl @xindent @dby @xindent !comment use the overall paragraph to force a conflict. !corrigendum A.3.5(33/3) @drepl @xindent @dby @xindent !comment use the overall paragraph to force a conflict. !corrigendum A.3.5(51/5) @drepl @xindent @dby @xindent !corrigendum A.3.5(55/5) @drepl @xindent @dby @xindent !corrigendum A.3.5(59/5) @drepl @xindent @dby @xindent !comment use the overall paragraph to force a conflict. !corrigendum A.3.5(61/3) @drepl @xindent @dby @xindent !corrigendum A.3.5(63/5) @drepl @xindent<@s9> @dby @xindent<@s9> !corrigendum A.4.6(8/3) @drepl @xindent<@s9> @dby @xindent<@s9> !corrigendum A.4.10(3/5) @drepl @xindent @dby @xindent !corrigendum A.19(12/5) @drepl Function Country returns the code of the country associated with the active locale. If the Country_Code associated with the active locale cannot be determined from the environment, then Country returns Country_Unknown. Otherwise, the result is an upper-case string representation of an ISO 3166-1:2006 alpha-2 code that identifies a country. @dby Function Country returns the code of the country associated with the active locale. If the Country_Code associated with the active locale cannot be determined from the environment, then Country returns Country_Unknown. Otherwise, the result is an upper-case string representation of an ISO 3166-1:2020 alpha-2 code that identifies a country. !corrigendum B.3(39.1/2) @drepl @xcode< -- @ft<@i>> @dby @xcode< -- @ft<@i>> !corrigendum B.5(21/5) @drepl An implementation may add additional declarations to the Fortran interface packages. For example, declarations are permitted for the character types corresponding to Fortran character kinds 'ascii' and 'iso_10646', which in turn correspond to ISO/IEC 646:1991 and to UCS-4 as specified in ISO/IEC 10646:2017. @dby An implementation may add additional declarations to the Fortran interface packages. For example, declarations are permitted for the character types corresponding to Fortran character kinds 'ascii' and 'iso_10646', which in turn correspond to ISO/IEC 646:1991 and to UCS-4 as specified in ISO/IEC 10646:2020. !corrigendum F.3.3(46) @ddel @xindent<@s9> !corrigendum F.3.3(47) @ddel @xinbull<@s9> !corrigendum F.3.3(48) @ddel @xinbull<@s9> !corrigendum F.3.3(49) @ddel @xi2bull<@s9> !corrigendum F.3.3(50) @ddel @xi2bull<@s9> !corrigendum F.3.3(51) @ddel @xi2bull<@s9> !corrigendum F.3.3(52) @ddel @xi2bull<@s9> !corrigendum F.3.3(52.1) @ddel @xindent<@s9> !ASIS No ASIS effect. !ACATS test No ACATS test needed, no semantic changes are intended. !appendix ****************************************************************