◆ 詳細内容
Q: z/OSのBlockmodeとサーバランタイム以外のすべてのランタイムはファンクションSUBSTRDBCSの引数である「開始位置」と「部分文字列⻑」には文字数を使用するように変更されていると思うが、半角文字と全角文字が混在する文字列の場合、「開始位置」と「部分文字列⻑」で意図した文字が返らない。
Release: r8.0
Component: CA Gen H/E
A: z/OSのSubstrmixed関数の動作として、開始位置はシフトアウト、シフトイン制御コードも1文字として数えます。
出力文字が全角文字の場合で、シフトアウト、シフトインが含まれていない場合にはその前後にシフトアウト、シフトインが挿入されます。(もし出力フィールドに指定した⻑さを超える場合には最後の文字が削除されシフトインが挿入されます) その結果出力される文字の⻑さはシフトアウト、シフトインを含めた⻑さとなります。
例: 入力文字: 'ABCDE あいうえお CDEFG' の場合、'あいうえお'の前後の空白はシフトアウト、シフトインとする。
指定した(開始位置,⻑さ)に対する出力結果例
(6,3)->' あ '
(7,3)->' あ '
(6,7)->' あいうえお '
SUBSTRMIXED (Input_string,6,3) -> Output_string = ‘[shift-out]あ[shift-in]’
SUBSTRMIXED (Input_string,7,3) -> Output_string = ‘[shift-out]あ[shift-in]’
SUBSTRMIXED (Input_string,6,7) -> Output_string = '[shift-out]あいうえお[shift-in]’
Old Japanese Knowledge document ID: JTEC001806
CA Genのその他のFAQについては、
CA Gen FAQ一覧表