COBOL2002 ユーザーズガイド
Unicodeの文字操作や文字数/けた数の取得,コード変換をする組み込み関数を次の表に示します。これらの組み込み関数の形式や使用例などの詳細は,マニュアル「COBOL2002 言語 拡張仕様編 24.2 組み込み関数」を参照してください。
表30-14 Unicodeに対応した組み込み関数
# | 用途 | 組み込み関数名 | 概要 |
---|---|---|---|
1 | 文字列の取り出し | SUBSTRING | 字類が英字,英数字,または日本語のデータ項目から部分文字列を返します。 |
2 | 文字数の取得 | COUNT-CHAR | 字類が英字,英数字,または日本語のデータ項目の文字数を返します。 |
3 | けた数の取得 | LENGTH-OF-SUBSTRING | 字類が英字,英数字,または日本語のデータ項目の部分文字列のけた数を返します。 |
4 | コード変換 | DISPLAY-OF | 字類が日本語のデータ項目中のUTF-16の文字列をUTF-8の文字列に変換して返します。 |
5 | NATIONAL-OF | 字類が英数字のデータ項目中のUTF-8の文字列をUTF-16の文字列に変換して返します。 |
なお,Unicodeに対応した組み込み関数を使用した場合,Unicode文字の特性上,文字の判定や取得する処理の実行時間が増加する場合や,動作を保証できない場合があります。詳細は,「(2) Unicodeに対応した組み込み関数の注意事項」を参照してください。
要因 | 組み込み関数名 | ||||
---|---|---|---|---|---|
COUNT-CHAR | DISPLAY-OF | LENGTH-OF- SUBSTRING | NATIONAL-OF | SUBSTRING | |
引数1の文字コードが不当な値である。※1 | ○ | ○ | ○ | ○ | ○ |
引数1の文字列中にある異体字セレクタが不当な位置にある。※2 | ○ | − | ○ | − | ○ |
引数2と引数3が一意名または算術式で,値が正の整数でない。 | − | − | ○ | − | ○ |
引数2で指定する開始位置,または引数2で指定する開始位置から引数3で指定する長さだけ進めた文字位置が引数1の終端を超えている。 | − | − | ○ | − | ○ |
引数2で指定する開始位置,または引数2で指定する開始位置から引数3で指定する長さだけ進めた文字位置が全角文字の途中である。※3 | − | − | ○ | − | ○ |
01 DATA1 PIC X(30) VALUE X'EFBDB1EFBDB2EFBDB3EFBDB4EFFDB5EFBDB6EFBDB7EFBDB8EFBDB9EFBDBA'. *> アイウエオカキクケコにしたいが,14バイト目が不正(BDのはずがFDになっている。 *> この位置にFDがあるのはUTF-8として不正な文字と扱う) MOVE FUNCTION SUBSTRING(DATA1, 2, 4) TO DATA2.
KCCC2310R-S 組み込み関数処理中に文字コード不正を検出しました。 プログラム名=MAIN 行番号/欄=000022/15 関数名=SUBSTRING 詳細情報=引数1の14バイト目で文字コード不正を検出しました。 4バイト目以降:efbdb2efbdb3efbdb4effdb5efbdb6efbdb7efbdb8
FD FILE1. 01 GRP01 GROUP-USAGE NATIONAL. 02 DATA1 PIC N(1). 02 DATA2 PIC N(2). 01 DATA3 PIC N(6). READ FILE1. *>UTF-16の'葛'(X'845BDB40DD03')をファイルから読み取る。 *>このときDATA1にX'845B',DATA2にX'DB40DD03'が転記される。 MOVE FUNCTION SUBSTRING(DATA2, 1) TO DATA3. *>DATA2の文字列は先頭から異体字セレクタとなっているため,不正な文字として扱う。
01 DATA1 PIC X(4) VALUE 'あBC'. MOVE FUNCTION SUBSTRING(DATA1, 2, 2 WIDTH) TO DATA2. *>引数2で指定する開始位置は'あ'の途中を指しているため文字を正確に取り出せない。
01 DATA1 PIC X(4) VALUE 'ABう'. MOVE FUNCTION SUBSTRING(DATA1, 2, 2 WIDTH) TO DATA2. *>引数2で指定する開始位置から引数3の長さだけ進めた文字位置は'う'の途中を *> 指しているため文字を正確に取り出せない。
All Rights Reserved. Copyright (C) 2013, 2016, Hitachi, Ltd.
All Rights Reserved. Copyright (C) 2002, 2011, Microsoft Corporation.