Вы можете попытаться создать логический файл по вашему физическому файлу ccsid424 с другой кодовой страницей. В качестве/400 можно создать логические файлы с разными кодовыми страницами для отдельных столбцов, добавив ключевое слово CCSID(<num>)
. Вы даже можете установить его в кодировку Unicode, например. CCSID(1200)
для UTF-16. Конечно, ваш физический файл будет по-прежнему иметь возможность хранить символы, которые находятся в кодовой странице 424, и они будут заменены некоторым недопустимым символьным символом, но перевод может быть лучше.
Там нет никакого способа, чтобы хранить символы, которые не в кодировке 424 в колонке с этой кодовой страницы непосредственно (единственный способ, которым я могу думать кодирует их каким-то образом с несколькими символов, но это, скорее всего, не, что вы хотите сделать, так как это вызовет больше проблем, чем «решает»).
Если у вас есть контроль над этой системой, и вы можете сделать некоторые большие изменения, вы можете сделать это наоборот: создать новую версию этого файла в формате Unicode с другим именем (я бы предложил CCSID (1200), это как можно ближе к UTF-16 в качестве/400 afaik, а UTF-8 не поддерживается всеми компонентами системы в моем опыте. IBM рекомендует 1200 для unicode). Затем переместите все данные из старого файла в новый, удалите старый (до этого, резервную копию!), а затем создайте логический файл поверх нового физического имени с именем старого физического файла. В этом логическом файле изменяются все столбцы ccsid-bearing от 1200 до 424. Таким образом, существующие данные могут все еще работать с данными. Конечно, в логическом файле теперь будут недопустимые символы, как только вы введете данные, которые не находятся в подмножестве ccsid 424; поэтому вам, скорее всего, придется взглянуть на все программы, которые используют новый логический файл.