1 に答える
別のコードページを使用して、ccsid424物理ファイル上に論理ファイルを作成してみてください。as / 400では、キーワードを追加することにより、個々の列に対して異なるコードページを持つ論理ファイルを作成することができますCCSID(<num>)
。CCSID(1200)
UTF-16などのUnicode文字セットに設定することもできます。もちろん、物理ファイルは424コードページにあるcharのみを格納でき、それらは無効な文字charに置き換えられますが、その方法の方が変換が優れている可能性があります。
コードページ424にない文字を、そのコードページのある列に直接格納する方法はありません(私が考えることができる唯一の方法は、複数の文字を使用してそれらをエンコードすることですが、それはおそらくあなたがやりたいことではありません。それは「解決する」よりも多くの問題をもたらすでしょう)。
そのシステムを制御でき、さらに大きな変更を加えることができる場合は、逆の方法で行うことができます。別の名前でその物理ファイルの新しいUnicodeバージョンを作成します(CCSID(1200)を提案します。これは、as / 400 afaikでUTF-16に到達するのと同じくらい近く、私の経験では、UTF-8はシステムのすべての部分でサポートされているわけではありません。IBMはユニコードに1200を推奨しています)。古いファイルから新しいファイルにすべてのデータを転送するよりも、古いファイルを削除します(その前にバックアップしてください!)、古い物理ファイルの名前を使用して、新しい物理ファイルの上に論理ファイルを作成します。その論理ファイルで、すべてのccsidを含む列を1200から424に変更します。これにより、既存のプログラムは引き続きデータを処理できます。もちろん、ccsid 424のサブセットにないデータを挿入すると、論理ファイルに無効な文字が含まれるようになります。したがって、ほとんどの場合、新しい論理ファイルを使用するすべてのプログラムを確認する必要があります。