はじめに
ライブラリ上にあるソースをIFSにコピーするためCPYTOSTMFコマンドを使って、IBM Bobで確認したところ見事なほどに文字化けしました。のでその回避策メモ!
結論:STMFCCSID(1208)を指定する
CPYTOSTMF FROMMBR('/QSYS.LIB/DEMOLIB.LIB/QCBLSRC.FILE/IPH110CBL.MBR') TOSTMF('/home/SAKURA/qcblsrc/IPH110CBL.cbl') STMFOPT(*NONE) STMFCCSID(1208)
このコマンドでいけるはず!
FROMメンバーとTOストリームファイルのパスは書き換えてください。
メモ ・ 注意
-
FROMMBRとTOSTMFはフルパス指定が必要です、
私はACSの統合ファイルシステムから確認して、コピペしてます。
他にいい方法あれば教えてください。 -
データベースのCCSIDは5035で指定されていたので、*FILEのままで実行しました。65535の場合は指定が必要です。
データベースのCCSIDはソースファイルQCBLSRCの表示で見られます。メンバーごとにCCSIDは持ちません!
DSPFD FILE(DEMOLIB/QCBLSRC)

-
IBM Bobで確認するためSTMFCCSID 1208にしております、STMFCCSID 5035(1399)は5250エミュレーターから見る分には文字化けしません。UTF-8で出力必要な場合は1208を指定してください。


IBM bob(VS code)では文字化け。。。

-
IFSにコピーするメンバーのディレクトリ(QCBLSRC)は作成してから、ソースメンバーをコピーする。(ホームディレクトリの下に直接コピーもできるけど)
-
今回はIBM i の QCBLSRC(ソースファイル)に格納されている COBOL ソースを、SAKURA のホームディレクトリ配下に作成した QCBLSRC フォルダ に、ストリームファイルとしてコピーしました。

