Unicode機能では,順編成ファイル,相対編成ファイル,および索引編成ファイルについては,文字コードを意識することなく,入出力できます。しかし,テキスト編成ファイルおよびCSV編成ファイルは,ほかのアプリケーションで参照可能とするため,文字コードをUTF-8に統一します。
テキスト編成ファイルでは,UTF-8で作成されたファイルの入出力ができます。この機能の規則を次に示します。
CSV編成ファイルではUTF-8で作成されたファイルの入出力ができます。この機能の規則を次に示します。
CSV編成ファイルを入力する場合,対象ファイルはUTF-8で作成してください。対象ファイルのレコード記述項に用途がNATIONALの項目が定義されている場合,入出力時にUTF-8/UTF-16の相互変換をします。そのため,CSV編成ファイルにUTF-8以外の文字コードが含まれる場合,動作は保証しません。CSV編成ファイルの入出力について次に示します。
CSV編成ファイルでは,用途がNATIONALの項目の文字コードをUTF-16からUTF-8に変換することで,プログラム上のサイズと実際のレコードサイズが異なります。
IDENTIFICATION DIVISION.
:
DATA DIVISION.
FILE SECTION.
FD FILE01.
01 REC01 PIC X(5) USAGE DISPLAY.
PROCEDURE DIVISION.
:
MOVE 'ABCDE' TO REC01.
WRITE REC01.
IDENTIFICATION DIVISION.
:
DATA DIVISION.
FILE SECTION.
FD FILE02.
01 REC02 PIC N(5) USAGE NATIONAL.
PROCEDURE DIVISION.
:
MOVE NC'あいうえお' TO REC02.
WRITE REC02.
IDENTIFICATION DIVISION.
:
DATA DIVISION.
FILE SECTION.
FD FILE02.
01 REC02 PIC N(5) USAGE NATIONAL.
PROCEDURE DIVISION.
:
READ FILE02.
CSV編成ファイルは,Unicodeシグニチャを含まないでください。CSV編成ファイルにUnicodeシグニチャが含まれる場合,データとして扱います。
順編成ファイル,相対編成ファイル,および索引編成ファイルを使用した入出力では,用途がNATIONALの項目についてUTF-16からUTF-8への自動変換はしません。この機能の規則を次に示します。
ACCEPT文で外部から入力したデータは,文字コードを変換しません。HP-UX(IPF),AIX(32),AIX(64)の場合,外部から入力することで,用途がDISPLAY/NATIONALの項目にUTF-8/UTF-16以外の文字データが格納されるときは,コード変換ライブラリを使用して入力データをUTF-8/UTF-16へ変換してください。なお,Linux(x86),Linux(x64)の場合,ACCEPT文で外部から入力したデータを用途がNATIONALの項目に格納できません。格納する場合の動作は保証しません。
DISPLAY文で用途がDISPLAY/NATIONALの項目の内容を画面上に出力するとき,文字コードは変換しません。出力する内容がUnicodeの場合,文字情報を正しく出力するためにはコード変換ライブラリを使用し文字コードを変換してください。
ただし,Linux(x86),Linux(x64)の場合,UTF-8ロケールでの動作となるため,出力する内容がUTF-8のときは文字コードの変換は必要ありません。
DISPLAY文でファイルに出力する場合,指定した項目の用途にかかわらず,改行コードはX'0A'となります。
日本語,半角かたかななど,Unicodeの多バイト文字をCOBOLプログラムから直接画面表示はできません。
日本語,半角かたかななど,Unicodeの多バイト文字をCOBOLプログラムから直接印刷はできません。