.****************************************************************************** .* RXULS.IPF * .* Documentation for RxULS in OS/2 IPF format. * .* (C) 2009 Alex Taylor * .* * .* LICENSE: * .* * .* Redistribution and use in source and binary forms, with or without * .* modification, are permitted provided that the following conditions are * .* met: * .* * .* 1. Redistributions of source code must retain the above copyright * .* notice, this list of conditions and the following disclaimer. * .* * .* 2. Redistributions in binary form must reproduce the above copyright * .* notice, this list of conditions and the following disclaimer in the * .* documentation and/or other materials provided with the distribution. * .* * .* 3. The name of the author may not be used to endorse or promote products * .* derived from this software without specific prior written permission. * .* * .* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ''AS IS'' AND ANY EXPRESS OR * .* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * .* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * .* DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, * .* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * .* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * .* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * .* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * .* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN * .* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * .* POSSIBILITY OF SUCH DAMAGE. * .****************************************************************************** :userdoc. :title.Универсальная поддержка языков в REXX .****************************************************************************** :h1 x=left y=bottom width=100% height=100% id=intro.Введение :p.REXX Universal Language Support (RxULS) предоставляет интерфейс REXX для определённых частей API OS/2 Universal Language Support (ULS). :p.ULS был разработан для облегчения разработки интернационализированных программ в сочетании со стандартом Unicode. По этой причине ULS иногда называют OS/2 Unicode API. :p.Используя RxULS, становится возможным&colon. :ul compact. :li.Поиск или преобразование текстовых строк в соответствии с правилами для конкретного региона. :li.Запросить информацию о локали. :li.Преобразование текстовых строк из одной кодовой страницы в другую, в том числе в кодировки Unicode или из них, такие как UTF-8 и UCS-2. :li.Доступ к тексту буфера обмена в кодировке Unicode. :eul. .* ---------------------------------------------------------------------------- :h2 x=left y=bottom width=100% height=100% id=unicode.Что такое Unicode (Юникод)? :p.Unicode (Юникод) - это стандарт символов, предназначенный для того, чтобы все возможные символы из всех известных систем письма были представлены в компьютерных системах во взаимозаменяемой форме. :p.Стандарт Unicode охватывает множество различных аспектов кодирования текста. Одной из наиболее важных является цель присвоения уникального числового значения практически каждому существующему символу. Часть стандарта, определяющая эти сопоставления, также известна как универсальный набор символов (UCS), и он даёт возможность единообразно и однозначно представлять широкий спектр уникальных символов из разных языков. :p.OS/2 ULS поддерживает только плоскость 0 UCS (базовая многоязычная плоскость), но, тем не менее, она охватывает почти все языки, используемые в настоящее время во всём мире. :p.Стандарт Unicode поддерживается Консорциумом Юникода. (https&colon.//www.unicode.org/). .****************************************************************************** :h1 x=left y=bottom width=100% height=100% id=using.Использование универсальной поддержки языков в REXX :p.Как и все библиотеки REXX, Вы должны зарегистрировать функции RxULS, прежде чем сможете их использовать. Функцию :link reftype=hd refid=ulscontrol.ULSLoadFuncs:elink. можно использовать для одновременной регистрации всех других функций RxULS. :xmp. CALL RxFuncAdd 'ULSLoadFuncs', 'RXULS', 'ULSLoadFuncs' CALL ULSLoadFuncs :exmp. :p.Аналогичным образом :link reftype=hd refid=ulscontrol.ULSDropFuncs:elink. отменяет регистрацию всех функций RxULS. :xmp. CALL ULSDropFuncs :exmp. :p. :p.В оставшейся части этого раздела содержатся различные примечания по использованию RxULS и работе с кодовыми страницами и Unicode. .* ---------------------------------------------------------------------------- :h2 x=left y=bottom width=100% height=100% id=codepages.Кодовые страницы :p.Внутренне компьютеры представляют все данные (будь то текст, изображения, программный код или что-либо ещё) как последовательности 8-битных двоичных чисел, называемых байтами. :hp2.Кодовая страница:ehp2.- это просто таблица кодирования, используемая для перевода байтов в понятный человеку текст. Когда Вы пытаетесь просмотреть байты как текст, компьютер использует ту кодовую страницу, которая активна в данный момент, чтобы определить, какие символы представлены различными значениями байтов. :p.В значительной степени по историческим причинам большинство кодовых страниц поддерживают только один или два конкретных языка или наборов символов. И поскольку у разных людей разные потребности, было определено очень много разных кодовых страниц. :p.Каждый сеанс OS/2 имеет определённую активную кодовую страницу, известную как :hp2.кодовая страница процесса:ehp2.. Команду :hp2.CHCP:ehp2. можно использовать для изменения кодовой страницы процесса, но только на кодовую страницу, которая в настоящее время указана в настройке CONFIG.SYS :hp2.CODEPAGE:ehp2.. Таким образом можно использовать не более двух кодовых страниц одновременно, и поддерживаются только определённые кодовые страницы. :p.Используя RxULS, Вы можете преобразовывать текст из одной кодовой страницы в другую или в различные текстовые кодировки Unicode и из них, не изменяя кодовую страницу процесса. :p.Список кодовых страниц OS/2 представлен в :link reftype=hd refid=appa.Приложении A:elink.. .* ---------------------------------------------------------------------------- :h2 x=left y=bottom width=100% height=100% id=utf.Кодировки текста Unicode :p.Текст Unicode можно закодировать несколькими способами. ULS и, следовательно, RxULS, поддерживает три таких кодирования. Как и все другие кодировки текста, присущие OS/2, они реализованы в виде кодовых страниц. :dl break=all. :dt.UCS-2 (codepage 1200) :dd.Самая старая и простая кодировка Unicode, в которой каждый символ представляет собой двухбайтовое целочисленное значение фиксированной ширины, соответствующее назначенному ему номеру UCS. OS/2 использует UCS-2 для внутренней обработки, но он не подходит для вывода, поскольку содержит встроенные нулевые байты. :dt.UTF-8 (кодовая страница 1208) :dd.Кодировка с переменной шириной, в которой каждый символ представлен от одного до четырёх байтов, в зависимости от его значения UCS. UTF-8 обладает многими свойствами, разработанными для того, чтобы сделать кодировку выгодной для обмена данными. Она обратно совместима с однобайтовым ASCII (весь текст ASCII также является допустимым текстом UTF-8); требует в среднем немного меньше места для хранения, чем UCS-2; и использует надежный алгоритм кодирования, который гарантирует, что потерянный или поврежденный байт может поставить компроментировать только текущий символ, а не остальную часть потока данных. :p.С другой стороны, алгоритм UTF-8 довольно сложен, что при некоторых обстоятельствах может привести к значительным накладным расходам. По этой причине он обычно используется для вывода и обмена, а не для внутренней обработки. :dt.UPF-8 (кодовая страница 1207) :dd.Это частная кодировка переменной ширины, характерная для OS/2, предназначенная для использования в Presentation Manager. UPF-8 требует от одного до трёх байтов для представления каждого символа, но имеет меньшие накладные расходы на обработку, чем UTF-8. Алгоритм нельзя использовать для обмена данными. :edl. :p.Как UCS-2, так и UTF-8 имеют ограниченное применение в среде REXX. UCS-2 не может использоваться для вывода осмысленного текста и обычно не используется для обмена данными. UTF-8 также не может использоваться для обмена, поскольку является проприетарной кодировкой, специфичной для OS/2, и может эффективно использоваться только для вывода в Presentation Manager, когда кодовая страница очереди сообщений может быть изменена во время выполнения (что обычно невозможно с REXX). :p.Следовательно, UTF-8, вероятно, является наиболее полезной кодировкой Unicode с точки зрения программиста REXX. .* ---------------------------------------------------------------------------- :h2 x=left y=bottom width=100% height=100% id=ucs2.Работа с текстом UCS-2 :p.ULS внутри кодирует весь текст Unicode в формате UCS-2. По всей вероятности, Вы, как правило, будете работать с текстом, преобразованным в определённую кодовую страницу. Однако можно возвращать данные из функций RxULS непосредственно в формате UCS-2, указав выходную кодовую страницу 1200. :p.В то время как использование встроенных нулевых байтов в данные UCS-2 создаёт проблемы в таких языках программирования как C, REXX не имеет таких ограничений. Поэтому Вы можете использовать стандартные функции REXX для работы со строками UCS-2. Однако важно помнить, что в UCS-2 каждый символ соответствует двум байтам вместо одного. По этой причине Вы должны быть осторожны, чтобы поддерживать целостность символов при использовании &osq.обычных&csq. функций REXX для манипулирования данными UCS-2. (То же предостережение применяется при работе с текстом кодовой страницы DBCS или MBCS.) .* ---------------------------------------------------------------------------- :h2 x=left y=bottom width=100% height=100% id=parameters.Общие параметры :p.Различные функции RxULS должны обрабатывать текст Unicode или преобразовывать текст из одной кодовой страницы в другую. Многие из этих функций принимают в качестве аргументов все или некоторые общие параметры, перечисленные ниже. Чтобы не повторять эту информацию в описании каждой функции, здесь приводится информация об этих параметрах. :ul compact. :li.:link reftype=hd res=2041.codepage:elink. :li.:link reftype=hd res=2042.subchar:elink. :li.:link reftype=hd res=2043.controls:elink. :li.:link reftype=hd res=2044.path:elink. :li.:link reftype=hd res=2045.locale:elink. :eul. .* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - :h3 x=left y=bottom width=100% height=100% res=2041 id=parm_codepage.codepage :p.Этот параметр указывает номер кодовой страницы OS/2. Это должно быть положительное целое значение; текстовые псевдонимы в настоящее время не поддерживаются. Не добавляйте к номеру кодовой страницы префикс 'IBM-' или любую другую строку. :p.Можно использовать любую кодовую страницу, поддерживаемую OS/2 (другими словами, Вы не ограничены значениями кодовой страницы процесса, определёнными в CONFIG.SYS). Полный список кодовых страниц OS/2 смотрите в :link reftype=hd refid=appa.Приложении A:elink.. .* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - :h3 x=left y=bottom width=100% height=100% res=2042 id=parm_subchar.subchar :p.Этот параметр указывает символ замены, который будет использоваться при преобразовании текста в целевую кодовую страницу. Это двухбуквенное шестнадцатеричное значение от 00 до FF, представляющее символ в целевой кодовой странице, который будет использоваться для представления заменённых (т.е. неподдерживаемых) символов. :p.Значение по умолчанию зависит от кодовой страницы; для большинства однобайтовых кодовых страниц ПК это 0x7F (&house.). :p.Этот параметр не поддерживается, если целевая кодовая страница является кодовой страницей DBCS, а символ замены по умолчанию - двухбайтовый символ. В этом случае всегда будет использоваться символ по умолчанию. .* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - :h3 x=left y=bottom width=100% height=100% res=2043 id=parm_controls.controls :p.Этот параметр является флагом сопоставления управляющего байта. :p.Значения байтов от 0x00 до 19 и 0x7F имеют двойную функцию. Согласно исходной спецификации ASCII, они представляют собой управляющие коды, изменяющие поток данных (например, 0x0D - это символ &osq.newline&csq.). Однако в некоторых контекстах (особенно в графических средах, таких как Presentation Manager) значения этих байтов часто используются для представления отображаемых символов. :p.Назначение этого параметра - указать, как следует интерпретировать эти байты при преобразовании из одной кодовой страницы в другую. Только первый символ имеет значение и (если указан) должен быть одним из следующих значений&colon. :dl break=all. :dt.:hp2.D:ehp2.ATA :dd.Не преобразовывать эти байтовые значения вообще, а оставить их неизменными в выходном тексте. Это значение по умолчанию. :dt.:hp2.G:ehp2.LYPHS :dd.Предполагает, что эти байты представляют собой отображаемые глифы, и преобразует их в соответствии с кодовой страницей, как и любой другой символ. :dt.:hp2.C:ehp2.ONTROLS :dd.Предполагает, что эти байты представляют собой управляющие коды, и преобразует их с помощью стандартного сопоставления элементов управления IBM. :dt.:hp2.L:ehp2.INEBREAKS :dd.Обработать байты &osq.конца строки&csq. (0x0D/возврат каретки и 0x0A/перевод строки) в качестве управляющих кодов, а все остальные - в виде отображаемых глифов. :edl. .* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - :h3 x=left y=bottom width=100% height=100% res=2044 id=parm_path.path :p.Этот параметр является флагом преобразования пути DBCS. Он применяется только к кодовым страницам DBCS и указывает, следует ли предполагать, что преобразуемый текст содержит спецификацию пути. :p.Несколько азиатских кодовых страниц DBCS, которые в основном совместимы с ASCII, заменяют символ обратной косой черты ASCII (0x5C) символом азиатской валюты (иена, юань или вон), а тильду ASCII (0x7E) символом надчеркивания. Назначение этого параметра - управлять тем, как следует обрабатывать эти значения символов при преобразовании в такие кодовые страницы и обратно. :p.Только первый символ имеет значение и (если указан) должен быть одним из следующих значений&colon. :dl break=fit. :dt.:hp2.Y:ehp2.ES :dd.Предполагает, что строка может содержать путь; преобразовует 0x5C как обратную косую черту ASCII и 0x7E как тильду ASCII. Это значение по умолчанию. :dt.:hp2.N:ehp2.O :dd.Предполагает, что строка не содержит пути; преобразует 0x5C как символ валюты половинной ширины и 0x7E как надчёркивание половинной ширины. :edl. :p.По сути, при использовании :hp1.path:ehp1.=:hp2.Y:ehp2., 0x5C и 0x7E будут рассматриваться как обратная косая черта и тильда (соответственно) при преобразовании :hp2.в:ehp2. другие кодовые страницы. При преобразовании :hp2.из:ehp2. других кодовых страниц и обратная косая черта, и символ валюты станут 0x5C, а тильда и верхняя черта станут 0x7E. :p.И наоборот, при использовании :hp1.path:ehp1.=:hp2.N:ehp2., 0x5C и 0x7E будут рассматриваться как символ валюты и надчеркивание (соответственно) при преобразовании :hp2.в:ehp2. другие кодовые страницы. При конвертации :hp2.из:ehp2. других кодовых страниц символ валюты станет 0x5C, а надчеркивание станет 0x7E; однако обратная косая черта и тильда будут рассматриваться как несуществующие символы и заменяться символами замены. :nt.Все значения семантических символов, на которые влияет этот параметр (обратная косая черта, тильда, надчёркивание и различные символы валюты), относятся только к однобайтовым (&osq.полуширинным&csq.) формам. Кодовые страницы DBCS могут содержать двухбайтовые (или &osq.полноразмерные&csq.) формы всех этих символов, на которые параметр :hp1.path:ehp1. не влияет.:ent. :p. :p.:hp7.Пример:ehp7. :p.Поскольку значения этого параметра могут быть несколько запутанными, его применение иллюстрируется несколькими примерами. :p.Например, возможные преобразования для кодовой страницы 932 (Japanese) в/из UCS-2 и в кодовую страницу 850 (PC Latin-1) показаны в таблицах ниже. :p. :p.:hp2.Когда :ehp2.:hp3.path:ehp3.:hp2.=Y:ehp2. :table cols='15 15 15 15 20' rules=vert. :row. :c.:hp5.Из 932:ehp5. :c.:hp5.В/Из UCS-2:ehp5. :c.:hp5.В 932:ehp5. :c.:hp5.В 850:ehp5. :c.:hp5.Трактовать как:ehp5. :row. :c.0x5C :c.U+005C :c.0x5C :c.0x5C :c.Backslash :row. :c.0x7E :c.U+007E :c.0x7E :c.0x7E :c.Tilde :row. :c.- :c.U+00A5 :c.0x5C :c.0xBE :c.Yen :row. :c.- :c.U+203E :c.0x7E :c.0xEE :c.Overline :etable. В этом примере преобразование 0x5C из кодовой страницы 932 приведёт к тому, что оно станет U+005C для UCS-2 (кодовая страница 1200) или 0x5C (обратная косая черта) для кодовой страницы 850. Преобразование U+005C из UCS-2 обратно в кодовую страницу 932 снова даст 0x5C. :p.Однако, преобразование U+00A5 из UCS-2 в кодовую страницу 932 также даст значение 0x5C. При преобразовании в кодовую страницу 850 оно станет 0xBE (иена). .* When PATH=YES .* From 932 Treat As UCS-2 To 932 To 850 .* 0x5C HW backslash U+005C 0x5C 0x5C .* 0x7E HW tilde U+007E 0x7E 0x7E .* - HW yen U+00A5 0x5C 0xBE .* - HW overline U+203E 0x7E 0xEE :p. :p.:hp2.Когда :ehp2.:hp3.path:ehp3.:hp2.=N:ehp2. :table cols='15 15 15 15 20' rules=vert. :row. :c.:hp5.Из 932:ehp5. :c.:hp5.В/Из UCS-2:ehp5. :c.:hp5.В 932:ehp5. :c.:hp5.В 850:ehp5. :c.:hp5.Трактовать как:ehp5. :row. :c.- :c.U+005C :c.- :c.0x5C :c.Backslash :row. :c.- :c.U+007E :c.- :c.0x7E :c.Tilde :row. :c.0x5C :c.U+00A5 :c.0x5C :c.0xBE :c.Yen :row. :c.0x7E :c.U+203E :c.0x7E :c.0xEE :c.Overline :etable. В этом примере преобразование 0x5C из кодовой страницы 932 приведёт к тому, что оно станет U+00A5 (0x00A5) для UCS-2 или 0xBE (иена) для кодовой страницы 850. Преобразование U+00A5 из UCS-2 обратно в кодовую страницу 932 снова даст 0x5C. :p.Однако, преобразование U+005C из UCS-2 в кодовую страницу 932 спродуцирует символ замены (указывающего на несуществующий символ). При преобразовании в кодовую страницу 850 оно станет 0x5C (обратная косая черта). .* When PATH=NO .* Treat As To UCS-2 To 932 To 850 .* - HW backslash U+005C - 0x5C .* - HW tilde U+007E - 0x7E .* 0x5C HW yen U+00A5 0x5C 0xBE .* 0x7E HW overline U+203E 0x7E 0xEE .* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - :h3 x=left y=bottom width=100% height=100% res=2045 id=parm_locale.locale :p.Этот параметр является названием локали, атрибуты которой используются. Названия локалей обычно имеют вид :hp3.xx_YY:ehp3., где :hp3.xx:ehp3. это язык и :hp3.YY:ehp3. - это страна (например, &osq.:hp2.en_US:ehp2.&csq., &osq.:hp2.zh_TW:ehp2.&csq., &osq.:hp2.it_IT:ehp2.&csq. и т.д.) .* ---------------------------------------------------------------------------- :h2 x=left y=bottom width=100% height=100% res=2090.Обработка ошибок :p.Все функции RxULS записывают информацию об ошибке в глобальную переменную REXX в вызывающей программе, которая называется :hp2.ULSERR:ehp2.. Эта переменная будет иметь значение &osq.0&csq., если последняя функция RxULS завершилась успешно. :p.Всякий раз, когда в функции RxULS возникает ошибка, она устанавливает значение :hp2.ULSERR:ehp2. в строку формы &osq.:hp3.x:ehp3.:hp2.&colon. :ehp2.:hp3.текст:ehp3.&csq., где :hp1.x:ehp1. - целочисленное значение, а :hp1.текст:ehp1. - короткая строка, указывающая на конкретную возникшую ошибку. (В большинстве случаев :hp1.текст:ehp1. будет именем внутреннего вызова функции, который завершился ошибкой, а :hp1.x:ehp1. будет кодом возврата этой функции.) .****************************************************************************** :h1 x=left y=bottom width=100% height=100% id=functions.Функции RxULS .* ---------------------------------------------------------------------------- :h2 x=left y=bottom width=100% height=100% id=ulscontrol.Функции управления библиотекой :p.:hp7.ULSLoadFuncs():ehp7. :cgraphic. ┌───────────────────────────────────────────────────────────────────────────┐ │ │ │ &rahead.&rahead.──ULSLoadFuncs()─────────────────────────────────────────────────────&rahead.&lahead. │ │ │ └───────────────────────────────────────────────────────────────────────────┘ :ecgraphic. :p.ULSLoadFuncs регистрирует все остальные функции RxULS. Она не принимает параметров и не возвращает никакого значения. :p. :p.:hp7.ULSDropFuncs():ehp7. :cgraphic. ┌───────────────────────────────────────────────────────────────────────────┐ │ │ │ &rahead.&rahead.──ULSDropFuncs()─────────────────────────────────────────────────────&rahead.&lahead. │ │ │ └───────────────────────────────────────────────────────────────────────────┘ :ecgraphic. :p.ULSDropFuncs отменяет регистрацию всех функций RxULS (включая себя). Она не принимает параметров и не возвращает никакого значения. .* ---------------------------------------------------------------------------- :h2 x=left y=bottom width=100% height=100% id=ulsconvertcodepage.ULSConvertCodepage :p.:hp7.Синтаксис:ehp7. :cgraphic. ┌───────────────────────────────────────────────────────────────────────────┐ │ │ │ &rahead.&rahead.──ULSConvertCodepage( string ─┬───────────────────────────────────────&rahead. │ │ └─,──┬──────────────────┬───────────────&rahead. │ │ └─ sourcecodepage ─┘ │ │ │ │ &rahead.───────────────────────────────────────────────────────────────────────&rahead. │ │ &rahead.─┬─────────────────────────────────────────────────────────────────────&rahead. │ │ &rahead. └─,──┬──────────────────┬──┬──────────────────────────────────────────&rahead. │ │ └─ targetcodepage ─┘ └─,──┬───────────┬──┬──────────────────────&rahead. │ │ └─ subchar ─┘ └─,──┬────────────┬────&rahead. │ │ └─ controls ─┘ │ │ │ │ &rahead.─────────────────────────┬──)─────────────────────────────────────────&rahead.&lahead. │ │ &rahead.───────────────────────┬─┘ │ │ &rahead.─────────────────────┬─┘ │ │ &rahead.───────────────────┬─┘ │ │ &rahead.─┬───────────────┬─┘ │ │ └─,──┬────────┬─┘ │ │ └─ path ─┘ │ │ │ └───────────────────────────────────────────────────────────────────────────┘ :ecgraphic. :p.:hp7.Описание:ehp7. :p.Преобразует строку из одной кодовой страницы в другую. Верхнего предела длины строки нет. :p.Если исходная или целевая кодовая страница не указана, предполагается текущая кодовая страница процесса. Поэтому, если ни один из параметров кодовой страницы не указан, строка будет возвращена без изменений. :p. :p.:hp7.Параметры:ehp7. :dl break=fit tsize=12. :dt.string :dd.Строка для преобразования. Этот параметр является обязательным. :dt.sourcecodepage :dd.Исходная :link reftype=hd refid=parm_codepage.codepage:elink.. Это кодовая страница, в которой закодирована :hp1.string:ehp1. (т.е. в которой она будет отображаться правильно). Если не указано, по умолчанию используется текущая кодовая страница процесса. :dt.targetcodepage :dd.Целевая :link reftype=hd refid=parm_codepage.codepage:elink.. Это кодовая страница, в которой должна быть закодирована возвращаемая строка. Если не указано, по умолчанию используется текущая кодовая страница процесса. :dt.:link reftype=hd refid=parm_subchar.subchar:elink. :dd.Символ замены для целевой кодовой страницы. :dt.:link reftype=hd refid=parm_controls.controls:elink. :dd.Флаг сопоставления управляющего байта. :dt.:link reftype=hd refid=parm_path.path:elink. :dd.Флаг преобразования пути DBCS. :edl. :p. :p.:hp7.Возвращаемое значение:ehp7. :p.Преобразованная строка. Если во время преобразования возникает ошибка, возвращается пустая строка (""), а глобальной переменной ULSERR присваивается ненулевое значение. :p. :p.:hp7.Пример:ehp7. :xmp. /* Входная строка (кодовая страница 850) */ string = 'We had lunch at a cafВ in Reykjavбk.' SAY '[Codepage 850]&colon.' string /* Преобразование в кодовую страницу 862, используя '?' (0x3F) для неподдерживаемых символов */ string2 = ULSConvertCodepage( string, 850, 862, '3f') IF ULSERR \= '0' THEN SAY ULSERR ELSE SAY '[Codepage 862]&colon.' string2 /* Преобразование в кодовую страницу 1200 (UCS-2) */ string3 = ULSConvertCodepage( string, 850, 1200 ) IF ULSERR \= '0' THEN SAY ULSERR ELSE SAY '[UCS-2]&colon. ' string3 :exmp. :p.Ниже показан вывод функции из приведенного выше примера&colon. :xmp. [Codepage 850]&colon. We had lunch at a cafВ in Reykjavбk. [Codepage 862]&colon. We had lunch at a caf? in Reykjav?k. [UCS-2]&colon. W e h a d l u n c h a t a c a f щ i n R e y k j a v э k . :exmp. .* ---------------------------------------------------------------------------- :h2 x=left y=bottom width=100% height=100% id=ulscountrylocale.ULSCountryLocale :p.:hp7.Синтаксис:ehp7. :cgraphic. ┌───────────────────────────────────────────────────────────────────────────┐ │ │ │ &rahead.&rahead.──ULSCountryLocale( number )─────────────────────────────────────────&rahead.&lahead. │ │ │ └───────────────────────────────────────────────────────────────────────────┘ :ecgraphic. :p.:hp7.Описание:ehp7. :p.Возвращает название локали системы, соответствующее указанной числовой константе локали. :p.API универсальной языковой поддержки (ULS) использует одно-трёхзначное число для уникальной идентификации каждого предопределённого языкового стандарта страны. Эта функция позволяет запрашивать название локали, соответствующее определённому номеру. Список известных номеров приведен ниже. :nt.Этот номер :hp2.не:ehp2. совпадает с кодом страны (который используется :hp2.DosQueryDBCSEnv:ehp2. и другими функциями), хотя значения в некоторой степени перекрываются. На самом деле эти номера не используются никакими другими функциями ULS или OS/2. Следовательно, эта функция может не иметь особого практического применения, но она была включена в интерфейс REXX для полноты картины.:ent. :p. :p.:hp7.Параметры:ehp7. :dl break=fit tsize=12. :dt.number :dd.Числовой код запрашиваемой локали (обязательный). :edl. :p. :p.:hp7.Возвращаемое значение:ehp7. :p.Название локали, закодированное в текущей активной кодовой странице. :p. :p.:hp7.Номера локалей:ehp7. :p.Ниже приведен список известных номеров вместе с наиболее близким идентификатором языка OS/2. (Спасибо Питеру Коллеру за их компиляцию.) Символ '*' означает, что имя локали не распознаётся функциями OS/2 за пределами Universal Language Support API. :xmp. ULS LANGID (approx) NAME DESCRIPTION 0 81 ja_JP Japan (Japanese) 1 1 en_US United States (English) 2 2 fr_CA Canada (French) 3 3 es_LA Latin America (Spanish) 7 7 ru_RU Russia (Russian) 20 785 ar_EG Egypt (Arabic) * 27 27 en_ZA South Africa (English) 30 358 fi_FI_E Finland (Finnish) 31 31 nl_NL Netherlands (Dutch) 32 32 en_BE Belgium (English) 33 33 fr_FR France (French) 34 34 es_ES Spain (Spanish) 36 36 hu_HU Hungary (Hungarian) 39 39 it_IT Italy (Italian) 40 40 ro_RO Romania (Romanian) 41 41 fr_CH Switzerland (French) 42 421 cs_CZ Czech Republic (Czech) 43 43 de_AT Austria (German) 44 44 en_GB United Kingdom (English) 45 45 da_DK Denmark (Danish) 46 46 sv_SE Sweden (Swedish) 47 47 no_NO Norway (Norwegian) 48 48 pl_PL Poland (Polish) 49 49 de_DE Germany (German) 51 34 es_PE Peru (Spanish) * 52 34 es_MX Mexico (Spanish) * 54 34 es_AR Argentina (Spanish) * 55 55 pt_BR Brazil (Portuguese) 56 34 es_CL Chile (Spanish) * 57 34 es_CO Colombia (Spanish) * 58 34 es_VE Venezuela (Spanish) * 61 61 en_AU Australia (English) 64 64 en_NZ New Zealand (English) 65 86 zh_SG Singapore (Chinese) * 66 66 th_TH Thailand (Thai) 81 49 de_LI Liechtenstein (German) * 82 66 in_ID Indonesia (Indonesian) * 84 66 vi_VN Vietnam (Vietnamese) * 86 86 zh_CN China (Simplified Chinese) 88 88 zh_TW Taiwan (Traditional Chinese) 90 90 tr_TR Turkey (Turkish) 99 1 univ Universal * 212 785 ar_MA Morocco (Arabic) * 213 785 ar_DZ Algeria (Arabic) * 216 785 ar_TN Tunisia (Arabic) * 351 351 pt_PT Portugal (Portuguese) 352 33 fr_LU Luxembourg (French) * 353 353 en_IE Ireland (English) 354 354 is_IS Iceland (Icelandic) 355 355 sq_AL Albania (Albanian) 358 46 sv_FI Finland (Swedish) * 359 359 bg_BG Bulgaria (Bulgarian) 370 370 lt_LT Lithuania (Lithuanian) 371 371 lv_LV Latvia (Latvian) 372 372 et_EE Estonia (Estonian) 375 7 be_BY Belarus (Belarussian) * 380 7 uk_UA Ukraine (Ukrainian) * 381 381 hr_SP Serbia (Croatian) 385 385 hr_HR Croatia (Croatian) 386 386 sl_SI Slovenia (Slovenian) 387 387 sh_BA Bosnia (Serbo-Croatian) 389 389 mk_MK Macedonia (Macedonian) 502 34 es_GT Guatemala (Spanish) * 503 34 es_SV El Salvador (Spanish) * 504 34 es_HN Honduras (Spanish) * 505 34 es_NI Nicaragua (Spanish) * 506 34 es_CR Costa Rica (Spanish) * 507 34 es_PA Panama (Spanish) * 591 34 es_BO Bolivia (Spanish) * 593 34 es_EC Ecuador (Spanish) * 595 34 es_PY Paraguay (Spanish) * 598 34 es_UY Uruguay (Spanish) * 785 785 ar_AA Arabic Speaking (Arabic) 852 86 zh_HK Hong Kong (Traditional Chinese) * 961 785 ar_LB Lebanon (Arabic) * 962 785 ar_JO Jordan (Arabic) * 963 785 ar_SY Syria (Arabic) * 965 785 ar_KW Kuwait (Arabic) * 966 785 ar_SA Saudi Arabia (Arabic) * 967 785 ar_YE Yemen (Arabic) * 968 785 ar_OM Oman (Arabic) * 971 785 ar_AE United Arab Emirates (Arabic) * 972 30 el_GR_E Greece (Greek) * 973 785 ar_BH Bahrain (Arabic) * 974 785 ar_QA Qatar (Arabic) * 981 1 fa_IR Iran (Farsi) * :exmp. .* ---------------------------------------------------------------------------- :h2 x=left y=bottom width=100% height=100% id=ulsfindattr.ULSFindAttr :p.:hp7.Синтаксис:ehp7. :cgraphic. ┌───────────────────────────────────────────────────────────────────────────┐ │ │ │ &rahead.&rahead.──ULSFindAttr( string ─┬──────────────────────────────────────────────&rahead. │ │ └─,──┬─────────────┬──┬────────────────────────&rahead. │ │ └─ attribute ─┘ └─,──┬─────────┬─────────&rahead. │ │ └─ start ─┘ │ │ │ │ &rahead.───────────────────────────────────────────────────────────────────────&rahead. │ │ &rahead.───────────────────────────────────────────────────────────────────────&rahead. │ │ &rahead.─┬─────────────────────────────────────────────────────────────────────&rahead. │ │ └─,──┬───────┬──┬─────────────────────────────────────────────────────&rahead. │ │ └─ max ─┘ └─,──┬────────┬──┬────────────────────────────────────&rahead. │ │ └─ flag ─┘ └─,──┬────────────┬──────────────────&rahead. │ │ └─ codepage ─┘ │ │ │ │ &rahead.─────────────────────────────┬──)─────────────────────────────────────&rahead.&lahead. │ │ &rahead.───────────────────────────┬─┘ │ │ &rahead.─────────────────────────┬─┘ │ │ &rahead.───────────────────────┬─┘ │ │ &rahead.─────────────────────┬─┘ │ │ &rahead.─┬─────────────────┬─┘ │ │ └─,──┬──────────┬─┘ │ │ └─ locale ─┘ │ │ │ └───────────────────────────────────────────────────────────────────────────┘ :ecgraphic. :p.:hp7.Описание:ehp7. :p.Выполняет поиск в строке первого символа, соответствующего указанному в атрибуте критерию. :p. :p.:hp7.Параметры:ehp7. :nt.Параметры :hp1.start:ehp1. и :hp1.max:ehp1. (ниже) указывают количество символов, а не количество байтов. В случае кодовых страниц MBCS это может быть не одно и то же.:ent. :dl break=fit tsize=12. :dt.string :dd.Входная строка для поиска. :dt.attribute :dd.Название атрибута для поиска. Смотрите описание функции :link reftype=hd refid=ulsqueryattr.ULSQueryAttr:elink. со списком допустимых названий атрибутов. :dt.start :dd.Начать поиск символа в :hp1.string:ehp1. с этой позиции. Должно находиться в диапазоне от 1 до длины строки (в символах). По умолчанию равно 1 (начало строки). :dt.max :dd.Максимальное количество символов для поиска. По умолчанию равно длине :hp1.string:ehp1. (в символах). :dt.flag :dd.Указывает, следует ли выполнять позитивный поиск (в отличие от негативного поиска). Только первый символ имеет значение и (если указан) должен быть одним из следующих значений&colon. :dl compact tsize=4. :dt.T :dd.True&colon. найти первый символ, соответствующий указанному атрибуту (позитивный поиск). Это значение по умолчанию. :dt.F :dd.False&colon. найти первый символ, не соответствующий указанному атрибуту (негативный поиск). :edl. :dt.:link reftype=hd refid=parm_codepage.codepage:elink. :dd.Исходная кодовая страница. Это кодовая страница, в которой закодирован параметр :hp1.string:ehp1. (т.е. в которой он будет отображаться правильно). Если не указано, предполагается текущая кодовая страница процесса. :dt.:link reftype=hd refid=parm_locale.locale:elink. :dd.Локаль, правила текстовых атрибутов которой должны использоваться. Если не указано, по умолчанию используется текущая локаль, определённая переменными среды LANG и LC_*. :edl. :p. :p.:hp7.Возвращаемое значение:ehp7. :p.Позиция первого совпадения или 0, если совпадающие символы не найдены. В случае ошибки возвращается пустая строка (""), а глобальной переменной ULSERR присваивается ненулевое значение. :p. :p.:hp7.Пример:ehp7. :xmp. /* Входная строка (кодовая страница 850) */ string = 'We had lunch at a cafВ in Reykjavбk.' SAY string /* Строка поиска для первого символа, отличного от ASCII */ c = ULSFindAttr( string, 'ascii',,,'F') IF ULSERR \= '0' THEN SAY ULSERR ELSE SAY 'Первый не-ASCII-символ находится в позиции&colon.' c :exmp. :p.Ниже показан вывод функции из приведенного выше примера&colon. :xmp. We had lunch at a cafВ in Reykjavбk. Первый не-ASCII-символ находится в позиции&colon. 22 :exmp. .* ---------------------------------------------------------------------------- :h2 x=left y=bottom width=100% height=100% id=ulsformattime.ULSFormatTime :p.:hp7.Синтаксис:ehp7. :cgraphic. ┌───────────────────────────────────────────────────────────────────────────┐ │ │ │ &rahead.&rahead.──ULSFormatTime( seconds ─┬───────────────────────────────────────────&rahead. │ │ └─,──┬──────────┬──┬────────────────────────&rahead. │ │ └─ format ─┘ └─,──┬───────┬───────────&rahead. │ │ └─ utc ─┘ │ │ │ │ &rahead.───────────────────────────────────────────────────────────────────────&rahead. │ │ &rahead.───────────────────────────────────────────────────────────────────────&rahead. │ │ &rahead.─┬─────────────────────────────────────────────────────────────────────&rahead. │ │ └─,──┬──────────┬──┬──────────────────────────────────────────────────&rahead. │ │ └─ locale ─┘ └─,──┬────────────┬──┬─────────────────────────────&rahead. │ │ └─ codepage ─┘ └─,──┬───────────┬────────────&rahead. │ │ └─ subchar ─┘ │ │ │ │ &rahead.───────────────────────────────┬──)───────────────────────────────────&rahead.&lahead. │ │ &rahead.─────────────────────────────┬─┘ │ │ &rahead.───────────────────────────┬─┘ │ │ &rahead.─────────────────────────┬─┘ │ │ &rahead.───────────────────────┬─┘ │ │ &rahead.─┬───────────────────┬─┘ │ │ └─,──┬────────────┬─┘ │ │ └─ controls ─┘ │ │ │ └───────────────────────────────────────────────────────────────────────────┘ :ecgraphic. :p.:hp7.Описание:ehp7. :p.Преобразует абсолютное значение времени в отформатированную строку даты и времени. :p. :p.:hp7.Параметры:ehp7. :dl break=fit tsize=12. :dt.seconds :dd.Абсолютное значение времени, подлежащее форматированию. Это положительное целое число, представляющее количество секунд с момента начала эпохи (0&colon.00&colon.00 1 Января 1970 года) по Всемирному координированному времени (UTC). :dt.format :dd.Строка, описывающая формат возвращаемой строки времени. Эта строка имеет тот же синтаксис, что и функция ULS :hp2.UniStrftime:ehp2. и может содержать сочетание текста и спецификаторов преобразования (перечисленных ниже). Строка формата по умолчанию - "%c", что указывает на стандартную строку даты и времени локали. :p.Возможные спецификаторы преобразования перечислены ниже. Любой текст в строке формата, который не соответствует спецификатору преобразования, будет просто скопирован в выходную строку. :p.:hp2.Стандартные спецификаторы преобразования&colon.:ehp2. :dl compact tsize=8. :dt.%a :dd.Сокращённое название дня недели региона (например 'Вс'). :dt.%A :dd.Полное название дня недели региона (например 'Воскресенье'). :dt.%b :dd.Сокращённое название месяца региона (например 'Окт'). :dt.%B :dd.Полное название месяца региона (например 'Октябрь'). :dt.%c :dd.Стандартная строка даты и времени региона. :dt.%C :dd.Век в виде десятичного числа (00-99). :dt.%d :dd.День месяца в виде двузначного десятичного числа (01-31). :dt.%D :dd.Дата в формате %m/%d/%y (например, '10/26/67'). :dt.%e :dd.День месяца в виде десятичного числа ( 1-31). Перед одиночной цифрой ставится пробел. :dt.%h :dd.То же, что и %b. :dt.%H :dd.24-часовой формат часов в виде десятичного числа (00-23). :dt.%I :dd.12-часовой формат часов в виде десятичного числа (01-12). :dt.%j :dd.День года в виде трёхзначного десятичного числа (001-366). :dt.%m :dd.Месяц года в виде двузначного десятичного числа (01-12). :dt.%M :dd.Минуты часа в виде десятичного числа (00-59). :dt.%n :dd.Символ новой строки. :dt.%p :dd.Строка AM или PM региона. :dt.%r :dd.То же, что и %I&colon.%M&colon.%S%p. :dt.%R :dd.24-часовое время в формате %H&colon.%M. :dt.%S :dd.Секунда минуты в виде десятичного числа (00-61). :dt.%t :dd.Символ табуляции. :dt.%T :dd.То же, что и %H&colon.%M&colon.%S. :dt.%u :dd.День недели в виде десятичного числа (1-7), где 1 означает понедельник. :dt.%U :dd.Неделя года в виде двузначного десятичного числа (00-53), где считается, что неделя начинается в воскресенье. :dt.%V :dd.Неделя года в виде двузначного десятичного числа (01-53), где считается, что неделя начинается в понедельник. Если неделя, содержащая 1 января, имеет четыре или более дней в новом году, то она считается неделей 1; в противном случае это 53-я неделя предыдущего года, а следующая неделя - 1-я неделя. :dt.%w :dd.День недели в виде десятичного числа (0-6), где 0 означает воскресенье. :dt.%W :dd.Неделя года в виде двузначного десятичного числа (00-53), где считается, что неделя начинается в понедельник. Все дни нового года, предшествующие первому воскресенью, считаются нулевой неделей. :dt.%x :dd.Представление только даты локали по умолчанию. :dt.%X :dd.Представление только времени локали по умолчанию. :dt.%y :dd.Год века (00-99). :dt.%Y :dd.Год с веком в виде десятичного числа (например, '1967'). :dt.%Z :dd.Название или аббревиатура часового пояса, если их можно определить (например, 'EST'), или ничего, если информация о часовом поясе не существует. :dt.%% :dd.Знак % (процента). :edl. :p.:hp2.Спецификаторы преобразования для элементов альтернативной локали&colon.:ehp2. :dl compact tsize=8. :dt.%Ec :dd.Строка даты и времени альтернативной локали. :dt.%EC :dd.Базовый год или эра в представлении альтернативной локали. :dt.%Ex :dd.Представление даты альтернативной локали. :dt.%EX :dd.Представление времени альтернативной локали. :dt.%Ey :dd.Смещение года от %EC в представлении альтернативной локали. :dt.%EY :dd.Полное альтернативное представление года. :dt.%Od :dd.День месяца с использованием цифровых символов альтернативной локали; заполняется по мере необходимости начальными нулями, если есть какой-либо альтернативный символ для нуля, в противном случае - начальными пробелами. :dt.%Oe :dd.День месяца с использованием числовых символов альтернативной локали, заполненных при необходимости начальными пробелами. :dt.%OH :dd.Час (24-часовой формат) с использованием цифровых символов альтернативной локали. :dt.%OI :dd.Час (12-часовой формат) с использованием цифровых символов альтернативной локали. :dt.%Om :dd.Месяц с использованием цифровых символов альтернативной локали. :dt.%OM :dd.Минуты с использованием цифровых символов альтернативной локали. :dt.%OS :dd.Секунды с использованием цифровых символов альтернативной локали. :dt.%Ou :dd.День недели (1-7, где понедельник = 1) с использованием цифровых символов альтернативной локали. :dt.%OU :dd.Номер недели в году (00-53, где воскресенье - первый день недели) с использованием цифровых символов альтернативной локали. :dt.%OV :dd.Номер недели в году (01-53, где воскресенье - первый день недели) с использованием цифровых символов альтернативной локали. :dt.%Ow :dd.Номер дня недели (0-6, где воскресенье = 0) с использованием цифровых символов альтернативной локали. :dt.%OW :dd.Номер недели в году (01-53, где понедельник - первый день недели) с использованием цифровых символов альтернативной локали. :dt.%Oy :dd.Год (смещение от %C) в представлении альтернативной локали с использованием числовых символов этой локали. :edl. :dt.utc :dd.Указывает, будет ли возвращенное время представлено в формате всемирного координированного времени (UTC) или преобразовано в местное время (с поправкой на летнее время, если применимо). Только первый символ имеет значение и (если указан) должен быть одним из следующих значений: :dl compact tsize=4. :dt.Y :dd.Возвращает время в формате UTC. :dt.N :dd.Преобразование в местный часовой пояс; это значение по умолчанию. :edl. :nt.Если необходимо вернуть местное время, значение :hp1.секунд:ehp1. не должно преобразовываться во время до 0&colon.00&colon.00 1 января 1970; в противном случае будет возвращена пустая строка, а ULSERR укажет на ошибку в :hp1.gmtime:ehp1..:ent. :dt.:link reftype=hd refid=parm_locale.locale:elink. :dd.Название локали, язык и правила локализации которой должны использоваться при форматировании строки времени. По умолчанию используется текущая локаль, определённая переменными среды LANG и LC_*. :dt.:link reftype=hd refid=parm_codepage.codepage:elink. :dd.Целевая кодовая страница. Это кодовая страница, в которой должна быть закодирована возвращаемая строка. По умолчанию используется текущая кодовая страница процесса. :dt.:link reftype=hd refid=parm_subchar.subchar:elink. :dd.Символ замены для целевой кодовой страницы. :dt.:link reftype=hd refid=parm_controls.controls:elink. :dd.Флаг сопоставления управляющего байта. :edl. :p. :p.:hp7.Возвращаемое значение:ehp7. :p.Отформатированная строка времени. В случае ошибки возвращается пустая строка (""), а глобальной переменной ULSERR присваивается ненулевое значение. :p. :p.:hp7.Пример:ehp7. :p.(В следующем примере предполагается, что местный часовой пояс - EST5EDT.) :xmp. /* Время эпохи в секундах. */ epochtime = 1234567890 /* Преобразование в местное время, с использованием текущей локали. */ timestr = ULSFormatTime( epochtime ) SAY timestr /* То же самое, за исключением использования соглашений о локализации * nl_NL (голландский язык). */ timestr = ULSFormatTime( epochtime,, 'N', 'nl_NL') SAY timestr /* То же самое снова, но на этот раз с использованием соглашений о локализации * ja_JP (японский). */ timestr = ULSFormatTime( epochtime,, 'N', 'ja_JP',, '3F', 'G') SAY timestr /* Все предыдущие три вызова преобразуются в (один и тот же) местный часовой * пояс. * Теперь мы получаем время в формате всемирного координированного времени (UTC). */ timestr = ULSFormatTime( epochtime, '%Y-%m-%d %X', 'Y', 'C') SAY 'Всемирное координированное время&colon.' timestr :exmp. :p.Ниже показан вывод функции из приведенного выше примера&colon. :xmp. Fri Feb 13 18&colon.31&colon.30 EST 2009 vr feb 13 18&colon.31&colon.30 2009 2009?02?13? 18?31?30? Всемирное координированное время&colon. 2009-02-13 23&colon.31&colon.30 :exmp. .* ---------------------------------------------------------------------------- :h2 x=left y=bottom width=100% height=100% id=ulsgetlocales.ULSGetLocales :p.:hp7.Синтаксис:ehp7. :cgraphic. ┌───────────────────────────────────────────────────────────────────────────┐ │ │ │ &rahead.&rahead.──ULSGetLocales(─┬────────┬─, stem )─────────────────────────────────&rahead.&lahead. │ │ └─ flag ─┘ │ │ │ └───────────────────────────────────────────────────────────────────────────┘ :ecgraphic. :p.:hp7.Описание:ehp7. :p.Получает список локалей, известных системе. :p.Локалями могут быть либо системные локали (стандартизированные локали, определённые OS/2), либо пользовательские локали (экземпляры локалей, которые отображаются в Палитре Стран или объекте "Язык"). :p. :p.:hp7.Параметры:ehp7. :dl break=fit tsize=12. :dt.flag :dd.Указывает, какой тип локалей (языковых стандартов) следует перечислить&colon. системный, пользовательский или оба. Только первый символ имеет значение и (если указан) должен быть одним из следующих значений&colon. :dl compact tsize=4. :dt.B :dd.Список пользовательских и системных локалей; это значение по умолчанию. :dt.S :dd.Список только системных локалей. :dt.U :dd.Список только пользовательских локалей. :edl. :dt.stem :dd.Имя переменной основы (массива), в которую будет записан список доступных локалей. :hp1.stem:ehp1..0 будет содержать целое число :hp1.n:ehp1., указывающее количество найденных локалей; от :hp1.stem:ehp1..1 до :hp1.stem:ehp1..:hp1.n:ehp1. каждый элемент будет содержать одно имя локали. :edl. :p. :p.:hp7.Возвращаемое значение:ehp7. :p.Количество доступных локалей (то же, что и :hp1.stem:ehp1..0). В случае ошибки возвращается пустая строка (""), а глобальной переменной ULSERR присваивается ненулевое значение. :p. :p.:hp7.Пример:ehp7. :xmp. /* Получить список всех пользовательских локалей, определённых в системе */ CALL ULSGetLocales 'U', 'locales.' SAY 'There are' locales.0 'user locales defined&colon.' DO i = 1 TO locales.0 SAY ' ->.' locales.i END :exmp. :p.Ниже показан вывод функции из приведенного выше примера&colon. :xmp. There are 2 user locales defined&colon. ->. en_CA ->. ja_JP :exmp. .* ---------------------------------------------------------------------------- :h2 x=left y=bottom width=100% height=100% id=ulsgetunicodeclipboard.ULSGetUnicodeClipboard :p.:hp7.Синтаксис:ehp7. :cgraphic. ┌───────────────────────────────────────────────────────────────────────────┐ │ │ │ &rahead.&rahead.──ULSGetUnicodeClipboard(─┬──────────────────┬──┬─────────────────────&rahead. │ │ └─ targetcodepage ─┘ └─,──┬───────────┬────&rahead. │ │ └─ subchar ─┘ │ │ │ │ &rahead.──────────────────────────────────────────┬──)────────────────────────&rahead.&lahead. │ │ &rahead.─┬──────────────────────────────────────┬─┘ │ │ └─,──┬────────────┬──┬───────────────┬─┘ │ │ └─ controls ─┘ └─,──┬────────┬─┘ │ │ └─ path ─┘ │ │ │ └───────────────────────────────────────────────────────────────────────────┘ :ecgraphic. :p.:hp7.Описание:ehp7. :p.Извлекает текст в кодировке Unicode из буфера обмена, если он доступен. :p.Текст в кодировке Unicode читается с использованием формата данных буфера обмена "text/unicode", который используется рядом приложений, включая семейство продуктов Mozilla. Он также поддерживается последними версиями сторонней библиотеки UClip. :p. :p.:hp7.Параметры:ehp7. :dl break=fit tsize=12. :dt.targetcodepage :dd.Целевая :link reftype=hd refid=parm_codepage.codepage:elink.. Это кодовая страница, в которой должна быть закодирована возвращаемая строка. Если не указано, по умолчанию используется текущая кодовая страница процесса. :dt.:link reftype=hd refid=parm_subchar.subchar:elink. :dd.Символ замены для целевой кодовой страницы. :dt.:link reftype=hd refid=parm_controls.controls:elink. :dd.Флаг сопоставления управляющего байта. :dt.:link reftype=hd refid=parm_path.path:elink. :dd.Флаг преобразования пути DBCS. :edl. :p. :p.:hp7.Возвращаемое значение:ehp7. :p.Текст в кодировке Unicode, извлечённый из буфера обмена и преобразованный в целевую кодовую страницу. Если текст не может быть получен, возвращается пустая строка (""). .* ---------------------------------------------------------------------------- :h2 x=left y=bottom width=100% height=100% id=ulsputunicodeclipboard.ULSPutUnicodeClipboard :p.:hp7.Синтаксис:ehp7. :cgraphic. ┌───────────────────────────────────────────────────────────────────────────┐ │ │ │ &rahead.&rahead.──ULSPutUnicodeClipboard( string ─┬───────────────────────────────────&rahead. │ │ └─,──┬──────────────────┬───────────&rahead. │ │ └─ sourcecodepage ─┘ │ │ │ │ &rahead.──────────────────────────────────────────┬──)────────────────────────&rahead.&lahead. │ │ &rahead.─┬──────────────────────────────────────┬─┘ │ │ └─,──┬────────────┬──┬───────────────┬─┘ │ │ └─ controls ─┘ └─,──┬────────┬─┘ │ │ └─ path ─┘ │ │ │ └───────────────────────────────────────────────────────────────────────────┘ :ecgraphic. :p.:hp7.Описание:ehp7. :p.Преобразует указанный текст в Unicode (UCS-2) и помещает его в буфер обмена в формате "text/unicode". Этот формат используется рядом приложений, включая семейство продуктов Mozilla. (Он также поддерживается последними версиями сторонней библиотеки UClip.) :p.Текст :hp2.не:ehp2. копируется в текстовом формате; если приложению нужно, чтобы это было сделано, оно должно сделать это самостоятельно, используя отдельные средства. :nt.Эта функция не очищает буфер обмена от других форматов. Это также зависит от приложения, если оно сочтёт это необходимым.:ent. :p. :p.:hp7.Параметры:ehp7. :dl break=fit tsize=12. :dt.string :dd.Строка, которая будет помещена в буфер обмена. Этот параметр является обязательным. :dt.sourcecodepage :dd.Исходная :link reftype=hd refid=parm_codepage.codepage:elink.. Это кодовая страница, в которой закодирован параметр :hp1.string:ehp1. (т.е. в которой строка будет отображаться правильно). Если не указано, по умолчанию используется текущая кодовая страница процесса. :dt.:link reftype=hd refid=parm_codepage.controls:elink. :dd.Флаг сопоставления управляющего байта. :dt.:link reftype=hd refid=parm_path.path:elink. :dd.Флаг преобразования пути DBCS. :edl. :p. :p.:hp7.Возвращаемое значение:ehp7. :p.Пустая строка (""). .* ---------------------------------------------------------------------------- :h2 x=left y=bottom width=100% height=100% id=ulsqueryattr.ULSQueryAttr :p.:hp7.Синтаксис:ehp7. :cgraphic. ┌───────────────────────────────────────────────────────────────────────────┐ │ │ │ &rahead.&rahead.──ULSQueryAttr( char, attribute ─┬────────────────────────────────────&rahead. │ │ └─,──┬────────────┬──────────────────&rahead. │ │ └─ codepage ─┘ │ │ │ │ &rahead.─────────────────────┬──)─────────────────────────────────────────────&rahead.&lahead. │ │ &rahead.─┬─────────────────┬─┘ │ │ └─,──┬──────────┬─┘ │ │ └─ locale ─┘ │ │ │ └───────────────────────────────────────────────────────────────────────────┘ :ecgraphic. :p.:hp7.Описание:ehp7. :p.Запрашивает, имеет ли символ указанный атрибут символа. :p. :p.:hp7.Параметры:ehp7. :dl break=fit tsize=12. :dt.char :dd.Символ для запроса. Это должен быть допустимый символ для указанной кодовой страницы. Это может быть многобайтовая строка, если кодовая страница допускает использование нескольких байтов на символ; однако, если строка содержит более одного допустимого символа, будет учитываться только первый (остальные игнорируются). :dt.attribute :dd.Название атрибута для проверки. Должно быть одним из следующих ниже. (Атрибуты, имена которых начинаются с "_", представляют собой наборы символов Unicode. Те, которые начинаются с "#", являются атрибутами BIDI.) Название не чувствительно к регистру. :dl compact tsize=12. :dt.alnum :dd.Alphabetic and numeric characters :dt.alpha :dd.Letters and linguistic marks :dt.ascii :dd.Standard ASCII character :dt.blank :dd.Space and tab characters :dt.cntrl :dd.Control and format characters :dt.digit :dd.Digits 0 through 9 :dt.graph :dd.All except controls and space :dt.lower :dd.Lower case alphabetic character :dt.number :dd.Integral numbers between 0 and 9 :dt.print :dd.Everything except control characters :dt.punct :dd.Punctuation marks :dt.space :dd.Whitespace and line-breaking characters :dt.symbol :dd.Symbol :dt.upper :dd.Upper case alphabetic character :dt.xdigit :dd.Hexadecimal digits (0-9, a-f, A-F) :dt.diacritic :dd.Diacritic mark :dt.fullwidth :dd.Full-width variant :dt.halfwidth :dd.Half-width variant :dt.hiragana :dd.Hiragana character :dt.ideograph :dd.Kanji/Han character :dt.kashida :dd.Arabic tatweel (elongation character) :dt.katakana :dd.Katakana character :dt.nonspacing :dd.Non-spacing mark :dt.nsdiacritic :dd.Non-spacing diacritic :dt.nsvowel :dd.Non-spacing vowel :dt.vowelmark :dd.Vowel mark :dt._apl :dd.APL character :dt._arabic :dd.Arabic character :dt._arrow :dd.Arrow character :dt._bengali :dd.Bengali character :dt._bopomofo :dd.Bopomofo character :dt._box :dd.Box or line drawing character :dt._currency :dd.Currency Symbol :dt._cyrillic :dd.Cyrillic character :dt._dash :dd.Dash character :dt._devanagari :dd.Devanagari character :dt._dingbat :dd.Dingbat :dt._fraction :dd.Fraction value :dt._greek :dd.Greek character :dt._gujarati :dd.Gujarati character :dt._gurmukhi :dd.Gurmukhi character :dt._hanguel :dd.Hangul Jamo character :dt._hebrew :dd.Hebrew character :dt._hiragana :dd.Hiragana character set :dt._katakana :dd.Katakana character set :dt._lao :dd.Laotian character :dt._latin :dd.Latin character :dt._linesep :dd.Line separator :dt._math :dd.Math symbol :dt._punctstart :dd.Punctuation start :dt._punctend :dd.Punctuation end :dt._tamil :dd.Tamil character :dt._telegu :dd.Telegu character :dt._thai :dd.Thai character :dt._userdef :dd.User defined character :dt.#arabicnum :dd.Arabic numbers :dt.#blocksep :dd.Block separator :dt.#commonsep :dd.Common separator :dt.#euronum :dd.European number :dt.#eurosep :dd.European separator :dt.#euroterm :dd.European terminator :dt.#left :dd.Left to right text orientation :dt.#mirrored :dd.Symmetrical text orientation :dt.#neutral :dd.Other neutral :dt.#right :dd.Right to left text orientation :dt.#whitespace :dd.Whitespace :edl. :dt.:link reftype=hd refid=parm_codepage.codepage:elink. :dd.Исходная кодовая страница. Это кодовая страница, в которой закодирована :hp1.строка:ehp1. (т.е. в которой она будет отображаться корректно). Если не указано, предполагается текущая кодовая страница процесса. :dt.:link reftype=hd refid=parm_locale.locale:elink. :dd.Название локали, чьи правила текстовых атрибутов должны использоваться. По умолчанию используется текущая локаль, определённая переменными среды LANG и LC_*. :edl. :p. :p.:hp7.Возвращаемое значение:ehp7. :p.Эта функция возвращает 1, если символ имеет указанный атрибут, или 0, если нет. Если во время запроса возникает ошибка, возвращается пустая строка (""), а глобальной переменной ULSERR присваивается ненулевое значение. .* ---------------------------------------------------------------------------- :h2 x=left y=bottom width=100% height=100% id=ulsquerylocaleitem.ULSQueryLocaleItem :p.:hp7.Синтаксис:ehp7. :cgraphic. ┌───────────────────────────────────────────────────────────────────────────┐ │ │ │ &rahead.&rahead.──ULSQueryLocaleItem( item ─┬─────────────────────────────────────────&rahead. │ │ └─,──┬──────────┬──┬──────────────────────&rahead. │ │ └─ locale ─┘ └─,──┬────────────┬────&rahead. │ │ └─ codepage ─┘ │ │ │ │ &rahead.────────────────────────┬──)──────────────────────────────────────────&rahead.&lahead. │ │ &rahead.──────────────────────┬─┘ │ │ &rahead.─┬──────────────────┬─┘ │ │ └─,──┬───────────┬─┘ │ │ └─ subchar ─┘ │ │ │ └───────────────────────────────────────────────────────────────────────────┘ :ecgraphic. :p.:hp7.Описание:ehp7. :p.Запрашивает значение указанного элемента локали. :p. :p.:hp7.Параметры:ehp7. :dl break=fit tsize=12. :dt.item :dd.Запрашиваемый элемент локали. Доступные элементы локали перечислены ниже. Элемент может быть указан по названию или номеру; названия, если они используются, не чувствительны к регистру. :xmp. НАЗВАНИЕ НОМЕР ОПИСАНИЕ sDateTime 1 Date and time format string sShortDate 2 Short date format sTimeFormat 3 Time format string s1159 4 AM string s2359 5 PM string sAbbrevDayName7 6 Abbreviation of day 7 (Sun) sAbbrevDayName1 7 Abbreviation of day 1 (Mon) sAbbrevDayName2 8 Abbreviation of day 2 (Tue) sAbbrevDayName3 9 Abbreviation of day 3 (Wed) sAbbrevDayName4 10 Abbreviation of day 4 (Thu) sAbbrevDayName5 11 Abbreviation of day 5 (Fri) sAbbrevDayName6 12 Abbreviation of day 6 (Sat) sDayName7 13 Name of day of week 7 (Sun) sDayName1 14 Name of day of week 1 (Mon) sDayName2 15 Name of day of week 2 (Tue) sDayName3 16 Name of day of week 3 (Wed) sDayName4 17 Name of day of week 4 (Thu) sDayName5 18 Name of day of week 5 (Fri) sDayName6 19 Name of day of week 6 (Sat) sAbbrevMonthName1 20 Abbreviation of month 1 sAbbrevMonthName2 21 Abbreviation of month 2 sAbbrevMonthName3 22 Abbreviation of month 3 sAbbrevMonthName4 23 Abbreviation of month 4 sAbbrevMonthName5 24 Abbreviation of month 5 sAbbrevMonthName6 25 Abbreviation of month 6 sAbbrevMonthName7 26 Abbreviation of month 7 sAbbrevMonthName8 27 Abbreviation of month 8 sAbbrevMonthName9 28 Abbreviation of month 9 sAbbrevMonthName10 29 Abbreviation of month 10 sAbbrevMonthName11 30 Abbreviation of month 11 sAbbrevMonthName12 31 Abbreviation of month 12 sMonthName1 32 Name of month 1 sMonthName2 33 Name of month 2 sMonthName3 34 Name of month 3 sMonthName4 35 Name of month 4 sMonthName5 36 Name of month 5 sMonthName6 37 Name of month 6 sMonthName7 38 Name of month 7 sMonthName8 39 Name of month 8 sMonthName9 40 Name of month 9 sMonthName10 41 Name of month 10 sMonthName11 42 Name of month 11 sMonthName12 43 Name of month 12 sDecimal 44 Decimal point sThousand 45 Triad separator sYesString 46 Yes string sNoString 47 No string sCurrency 48 Currency symbol sCodeSet 49 Locale codeset xLocaleToken 50 IBM Locale Token xWinLocale 51 Win32 Locale ID iLocaleResnum 52 Resource number for description sNativeDigits 53 String of native digits iMaxItem 54 Maximum item number sTimeMark 55 Time mark (am/pm) format sEra 56 Era definition sAltShortDate 57 Alternate short date format string sAltDateTime 58 Alternate date and time format sAltTimeFormat 59 Alternate time format sAltDigits 60 XPG4 alternate digits sYesExpr 61 XPG4 Yes expression sNoExpr 62 XPG4 No expression sDate 63 Short date separator sTime 64 Time separator sList 65 List separator sMonDecimalSep 66 Monetary currency separator sMonThousandSep 67 Monetary triad separator sGrouping 68 Grouping of digits sMonGrouping 69 Monetary groupings iMeasure 70 Measurement (Metric, British) iPaper 71 Normal paper size iDigits 72 Digits to right of decimal iTime 73 Clock format iDate 74 Format of short date iCurrency 75 Format of currency iCurrDigits 76 Digits to right for currency iLzero 77 Leading zero used iNegNumber 78 Format of negative number iLDate 79 Format of long date iCalendarType 80 Type of default calendar iFirstDayOfWeek 81 First day of week (0=Mon) iFirstWeekOfYear 82 First week of year iNegCurr 83 Format of negative currency iTLzero 84 Leading zero on time iTimePrefix 85 AM/PM preceeds time iOptionalCalendar 86 Alternate calendar type sIntlSymbol 87 International currency symbol sAbbrevLangName 88 Windows language abbreviation sCollate 89 Collation table iUpperType 90 Upper case algorithm iUpperMissing 91 Action for missing upper case sPositiveSign 92 Positive sign sNegativeSign 93 Negative sign sLeftNegative 94 Left paren for negative sRightNegative 95 Right paren for negative sLongDate 96 Long date formatting string sAltLongDate 97 Alternate long date format string sMonthName13 98 Name of month 13 sAbbrevMonthName13 99 Abbreviation of month 13 sName 100 OS/2 locale name sLanguageID 101 Abbreviation for language (ISO) sCountryID 102 Abbreviation for country (ISO) sEngLanguage 103 English name of Language sLanguage 104 Native name of language sEngCountry 105 English name of country sCountry 106 Localized country name sNativeCtryName 107 Name of country in native language iCountry 108 Country code sISOCodepage 109 ISO codepage name iAnsiCodepage 110 Windows codepage iCodepage 111 OS/2 primary codepage iAltCodepage 112 OS/2 alternate codepage iMacCodepage 113 Mac codepage iEbcdicCodepage 114 Ebcdic codepage sOtherCodepages 115 Other ASCII codepages sSetCodepage 116 Codepage to set on activation sKeyboard 117 Primary keyboard name sAltKeyboard 118 Alternate keyboard name sSetKeyboard 119 Keyboard to set on activation sDebit 120 Debit string sCredit 121 Credit string sLatin1Locale 122 Locale for Latin 1 names wTimeFormat 123 Win32 Time format wShortDate 124 Win32 Date format wLongDate 125 Win32 Long date format jISO3CountryName 126 Java abbreviation for country (ISO-3) jPercentPattern 127 Java percent pattern jPercentSign 128 Java percent symbol jExponent 129 Java exponential symbol jFullTimeFormat 130 Java full time format jLongTimeFormat 131 Java long time format jShortTimeFormat 132 Java short time format jFullDateFormat 133 Java full date format jMediumDateFormat 134 Java medium date format jDateTimePattern 135 Java date time format pattern jEraStrings 136 Java era strings :exmp. :dt.:link reftype=hd refid=parm_locale.locale:elink. :dd.Название локали, значения которой запрашиваются. По умолчанию используется текущая локаль, определённая переменными среды LANG и LC_*. :dt.:link reftype=hd refid=parm_codepage.codepage:elink. :dd.Кодовая страница, в которую будет преобразовано возвращаемое значение. (Значения элемента локали хранятся внутри как текст Unicode UCS-2. Чтобы вернуть значение в UCS-2, укажите кодовую страницу 1200.) :dt.:link reftype=hd refid=parm_subchar.subchar:elink. :dd.Символ замены для целевой кодовой страницы. :edl. :p. :p.:hp7.Возвращаемое значение:ehp7. :p.Значение указанного элемента локали, преобразованное в запрошенную кодовую страницу. :p. :p.:hp7.Пример:ehp7. :xmp. /* Запрашивается название языка для локали 'es_AR' (Аргентина) как на * английском, так и на самом локализованном языке. */ englang = ULSQueryLocaleItem('sEngLanguage', 'es_AR', 850 ) IF ULSERR \= '0' THEN DO SAY ULSERR RETURN END natlang = ULSQueryLocaleItem('sLanguage', 'es_AR', 850 ) IF ULSERR \= '0' THEN DO SAY ULSERR RETURN END SAY 'Язык по умолчанию для локали es_AR: "'englang'" ("'natlang'")' :exmp. :p.Ниже показан вывод функции из приведенного выше примера&colon. :xmp. Язык по умолчанию для локали es_AR: "Spanish" ("Espa&nt.ol") :exmp. .* ---------------------------------------------------------------------------- :h2 x=left y=bottom width=100% height=100% id=ulstransform.ULSTransform :p.:hp7.Синтаксис:ehp7. :cgraphic. ┌───────────────────────────────────────────────────────────────────────────┐ │ │ │ &rahead.&rahead.──ULSTransform( string, transformation ─┬─────────────────────────────&rahead. │ │ └─,──┬────────────┬───────────&rahead. │ │ └─ codepage ─┘ │ │ │ │ &rahead.─────────────────────┬──)─────────────────────────────────────────────&rahead.&lahead. │ │ &rahead.─┬─────────────────┬─┘ │ │ └─,──┬──────────┬─┘ │ │ └─ locale ─┘ │ │ │ └───────────────────────────────────────────────────────────────────────────┘ :ecgraphic. :p.:hp7.Описание:ehp7. :p.Преобразует строку в соответствии с одним из предопределённых типов преобразования. Эффект этого преобразования может различаться в зависимости от региона (локали). :p. :p.:hp7.Параметры:ehp7. :dl break=fit tsize=12. :dt.string :dd.Строка для преобразования. Этот параметр является обязательным. :dt.xform :dd.Название применяемого преобразования (обязательно). Это должно быть одно из следующего ниже. Название не чувствительно к регистру. :dl tsize=12 break=fit. :dt.lower :dd.Преобразовать весь текст в нижний регистр. Символы не имеющие формы нижнего регистра (как определено локалью) остаются без изменений. :dt.upper :dd.Преобразовать весь текст в верхний регистр. Символы без заглавных букв (как определено локалью) остаются без изменений. :dt.compose :dd.Преобразовать чтобы все диакритические (например, акцентированные) символы были представлены с использованием полностью составных форм (один элемент кода представляет комбинированный символ). :dt.decompose :dd.Преобразовать чтобы все диакритические знаки были представлены с помощью разложенных форм (отдельные элементы кода используются для представления основного символа и диакритического знака). :dt.hiragana :dd.Преобразовать чтобы все фонетические символы японского языка использовали набор символов Хирагана. :dt.katakana :dd.Преобразовать чтобы все японские фонетические символы использовали полноширинный набор символов Катакана. :dt.kana :dd.Преобразовать чтобы все японские фонетические символы использовали набор символов Катакана половинной ширины. :edl. :dt.:link reftype=hd refid=parm_codepage.codepage:elink. :dd.Исходная кодовая страница. Это кодовая страница, в которой кодируется :hp1.string:ehp1. и в которой будет закодирована возвращаемая строка. По умолчанию используется текущая кодовая страница процесса. :dt.:link reftype=hd refid=parm_locale.locale:elink. :dd.Название локали, правила преобразования которой должны использоваться. По умолчанию используется текущая локаль, определённая переменными среды LANG и LC_*. :edl. :p. :p.:hp7.Возвращаемое значение:ehp7. :p.Преобразованная строка, закодированная с использованием той же кодовой страницы, что и входная строка. Если во время преобразования возникает ошибка, возвращается пустая строка (""), а глобальной переменной ULSERR присваивается ненулевое значение. .* ---------------------------------------------------------------------------- :h2 x=left y=bottom width=100% height=100% id=ulsversion.ULSVersion :p.:hp7.Синтаксис:ehp7. :cgraphic. ┌───────────────────────────────────────────────────────────────────────────┐ │ │ │ &rahead.&rahead.──ULSVersion()───────────────────────────────────────────────────────&rahead.&lahead. │ │ │ └───────────────────────────────────────────────────────────────────────────┘ :ecgraphic. :p.:hp7.Описание:ehp7. :p.Возвращает текущую версию библиотеки RxULS. :p. :p.:hp7.Параметры:ehp7. :p.Без параметров. :p. :p.:hp7.Возвращаемое значение:ehp7. :p.Текущая версия библиотеки в виде ":hp1.старшая:ehp1..:hp1.младшая:ehp1..:hp1.изменения:ehp1.". :p. :p.:hp7.Пример:ehp7. :xmp. SAY 'Используемая версия RXULS.DLL&colon.' ULSVersion() :exmp. :p.Ниже показан результат вывода из приведенного выше примера&colon. :xmp. Используемая версия RXULS.DLL&colon. 0.6.0 :exmp. .****************************************************************************** :h1 x=left y=bottom width=100% height=100% id=appa.Приложение A&colon. Кодовые страницы OS/2 :p.Перечисленные ниже кодовые страницы можно использовать в качестве исходных или целевых кодовых страниц в сочетании с функциями RxULS. :p.В описаниях кодовых страниц указано имя применяемого набора символов, за которым может следовать запятая, и дополнительные сведения о конкретном используемом стандарте кодирования, за которым в скобках может следовать название страны, региона или приложения. :p.Кодовые страницы с префиксом 'IBM' указывают на кодировку, основанную на модификациях расширенной таблицы ASCII для DOS, и не рекомендуются для межплатформенного обмена. :nt.Не все кодовые страницы могут быть доступны в разных системах.:ent. :p. :p.:hp7.Кодовые страницы Unicode:ehp7. :xmp. 1200 Unicode, UCS-2 (2-byte Universal Character Set encoding) 1207 Unicode, UPF-8 (8-bit Unicode Processing Format) 1208 Unicode, UTF-8 (8-bit Unicode Transformation Format) :exmp. :p.:hp7.Кодовые страницы на основе ASCII (ПК):ehp7. :xmp. 367 ASCII, 7-bit 437 DOS Extended ASCII (United States) 813 ISO Greek, ISO-8859-7 819 ISO Latin 1, ISO-8859-1 850 IBM Latin 1, :link reftype=fn refid=ibm858.Modified:elink. (Multilingual) 851 DOS Greek 852 IBM Latin 2 (Eastern Europe) 855 IBM Cyrillic 856 DOS Hebrew 857 IBM Latin 5 (Turkey) 859 IBM Latin 9 (Multilingual) 860 IBM Portuguese 861 IBM Icelandic 862 IBM Hebrew, :link reftype=fn refid=ibm867.Modified:elink. (Israel) 863 IBM Canadian French 864 IBM Arabic 865 IBM Nordic 866 IBM Russian 868 IBM Urdu 869 IBM Greek 874 Thai, TIS-620/ISO-8859-11 Extended 878 Internet Russian, KOI8-R 891 Korean ASCII Extended + Half-Width Hangul, SBCS-PC 895 Japanese JIS-Roman, 7-bit 897 Japanese JISX0201-1976, SBCS-PC 903 Simplified Chinese ASCII Extended, SBCS-PC (PRC) 904 Traditional Chinese ASCII Extended, SBCS-PC (Taiwan) 907 APL 909 APL2 Extended 910 APL2 912 ISO Latin 2, ISO-8859-2 913 ISO Latin 3, ISO-8859-3 914 ISO Latin 4, ISO-8859-4 915 ISO Cyrillic, ISO-8859-5 916 ISO Hebrew, ISO-8859-8 920 ISO Latin 5, ISO-8859-9 921 ISO Latin 7, ISO-8859-13 922 Estonian 923 ISO Latin 9, ISO-8859-15 (Multilingual) 932 Japanese, MBCS-PC/Shift-JIS [aliased to 943] 934 Korean, MBCS-PC legacy encoding [aliased to 944] 936 Simplified Chinese, MBCS-PC legacy encoding (PRC) [aliased to 946] 938 Traditional Chinese CNS11643 Extended, MBCS-PC (Taiwan) [aliased to 948] 942 Japanese JISX0201-1976 + JISX0208-1978 Extended, Shift-JIS 943 Japanese JISX0201-1976 + JISX0208-1990 Windows31-J, Shift-JIS 944 Korean SAA 946 Simplified Chinese SAA (PRC) 948 Traditional Chinese SAA (Taiwan) 949 Korean KSC5601, :link reftype=fn refid=uhc.MBCS-PC/KS-Code:elink. 950 Traditional Chinese Big-5, MBCS-PC/Big-5 (Taiwan) 954 Japanese, EUC-JP 964 Traditional Chinese, EUC-TW (Taiwan) 970 Korean, EUC-KR 1004 Windows Latin 1 Extended 1006 Urdu 1008 Windows Arabic, Original 1041 Japanese JISX0201 Extended, SBCS-PC [identical to 897] 1043 Traditional Chinese ASCII Extended, SBCS-PC [identical to 904] 1051 HP Roman 8 1088 Korean ASCII Extended, SBCS-PC 1089 ISO Arabic, ISO-8859-6 1098 IBM Farsi 1114 ASCII + PC Symbols, 7-bit SBCS-PC (PRC &. Taiwan) 1115 Simplified Chinese ASCII Extended, SBCS-PC 1116 IBM Estonian 1117 IBM Latvian 1118 IBM Lithuanian 1119 IBM Lithuanian &. Russian 1124 Ukrainian, :link reftype=fn refid=ibm1124.Modified ISO Cyrillic:elink. 1125 IBM Ukrainian 1131 IBM Belarussian 1250 Windows Latin 2 1251 Windows Cyrillic 1252 Windows Latin 1 1253 Windows Greek 1254 Windows Turkish 1255 Windows Hebrew 1256 Windows Arabic 1257 Windows Latin 4 1275 Apple Latin 1 1276 Adobe PostScript Standard Encoding 1277 Adobe PostScript Latin 1 Encoding 1280 Apple Greek 1281 Apple Turkish 1282 Apple Central European 1283 Apple Cyrillic 1381 Simplified Chinese GB2312 Extended, MBCS-PC (PRC) 1383 Simplified Chinese, EUC-CN (PRC) 1386 Simplified Chinese GBK, MBCS-PC (PRC) :exmp. :p.:hp7.Кодовые страницы на основе EBCDIC (мейнфреймы):ehp7. :xmp. 37 United States/Canada, CECP 273 Germany/Austria, CECP 277 Denmark/Norway, CECP 278 Finland/Sweden, CECP 280 Italy, CECP 282 Portugal, CECP 284 Spain/Latin America, CECP 285 United Kingdom, CECP 290 Japanese Half-Width Katakana Extended, SBCS-Host 293 APL 297 France, CECP 361 International - Publishing 382 Austria/Germany - Publishing 383 Belgium - Publishing 385 Canadian French - Publishing 386 Denmark/Norway - Publishing 387 Finland/Sweden - Publishing 388 France - Publishing 389 Italy - Publishing 391 Portugal - Publishing 392 Spain/Philippines - Publishing 393 Latin America - Publishing 394 United Kingdom/Ireland - Publishing 395 United States/Canada - Publishing 420 Arabic Bilingual 424 Hebrew (Israel) 500 International 833 Korean, SBCS-Host 838 Thai 870 Latin 2 (Eastern Europe) 871 Iceland, CECP 875 Greek 918 Urdu 924 Latin 9 (Multilingual) 930 Japanese JISX0201-1976 + JISX208-1990 Extended, MBCS-Host 931 Japanese Latin, MBCS-Host 933 Korean KSC5601, MBCS-Host 935 Simplified Chinese GB2312 Extended, MBCS-Host (PRC) 937 Traditional Chinese CNS11643 Extended, MBCS-Host (Taiwan) 939 Japanese Extended, MBCS-Host 1025 Cyrillic 1026 Latin 5 (Turkey) 1027 Japanese JISX0201-1976 Extended, SBCS-Host 1028 Hebrew - Publishing 1046 Arabic 1047 Open Systems 1097 Farsi 1112 Baltic 1122 Estonia 1123 Ukrainian 1140 United States/Canada, ECECP 1141 Germany, ECECP 1142 Denmark/Norway, ECECP 1143 Finland/Sweden, ECECP 1144 Italy, ECECP 1145 Spain/Latin America, ECECP 1146 UK/Ireland, ECECP 1147 France, ECECP 1148 Multilingual, ECECP 1149 Iceland, ECECP :exmp. :p.:hp7.Другие кодовые страницы:ehp7. :xmp. 259 Host Symbols - WP 300 Japanese JISX0208-1990, DBCS-Host 301 Japanese JISX0208-1990, DBCS-PC 363 Host Symbols - Publishing 829 Host Math Symbols - Publishing 834 Korean KSC5601, DBCS-Host 835 Traditional Chinese CNS11643 Extended, DBCS-Host (Taiwan) 837 Simplified Chinese GB2312 Extended, DBCS-Host (PRC) 896 Japanese Half-Width Katakana, 7-bit 926 Korean, DBCS-PC legacy encoding [aliased to 944] 927 Traditional Chinese CNS11643 Extended, DBCS-PC [aliased to 948] 928 Simplified Chinese, DBCS-PC legacy encoding [aliased to 946] 941 Japanese JISX0208-1990 Extended, DBCS-PC/Shift-JIS [aliased to 943] 947 Traditional Chinese Big-5, DBCS-PC/Big-5 [aliased to 950] 951 Korean KSC5601, DBCS-PC/KS-Code [aliased to 949] 952 Japanese JISX0208-1990, EUC encoded 953 Japanese JISX0212-1990, EUC encoded 955 Japanese JISX0208-1978, canonical 971 Korean KSC5601, canonical 1038 Adobe PostScript Symbol Set 1092 Modified PC Symbols 1380 Simplified Chinese GB2312 Extended, DBCS-PC [aliased to 1381] :exmp. :fn id=ibm858. :p.Текущая реализация кодовой страницы 850 в которой i без точки в позиции 0xD5 заменяется символом евро. (Изменённая кодовая страница официально зарегистрирована как IBM Coded Character Set ID номер 858.) :efn. :fn id=ibm867. :p.Текущая реализация кодовой страницы 862 в которой символ флорина в позиции 0x9F заменён символом новых шекелей, а перевёрнутый восклицательный знак в позиции 0xAD - символом евро. (Изменённая кодовая страница официально зарегистрирована как IBM Coded Character Set ID номер 867.) :efn. :fn id=uhc. :p.Кодовая страница 949 (:hp2.IBM949:ehp2.), включённая по умолчанию в OS/2, поддерживает только кодовый набор KSC5601 EUC 1 плюс расширения IBM DBCS-PC (от 0x9A** до 0xA0**). :p.Таблица кодовых страниц для замены доступна через http&colon.//www.borgendale.com/uls.htm, которая обновляет кодовую страницу 949 для поддержки кодировки MS Unified Hangul Code ("Extended Wansung"). Это обеспечивает полную поддержку набора символов Johab. :efn. :fn id=ibm1124. :p.Кодовая страница 1124 является модификацией ISO-8859-5 (кодовая страница 915) с украинскими символами ?, ? (GHE) заменяющими ?, ? (GJE) в позициях 0xA3 и 0xF3. :efn. :euserdoc.