汎用機のCOBOLを使用しています。今回、ソース上でUNICODEのカンマを設定する必要がでてきたのですが、どのように設定していいかわかりません。。。
処理をしたデータをバイナリで(文字コードを変換しないで)転送する必要があり、かつデータの受け取り側がカンマをUNICODEでと指定してきているため、(COBOL上でカンマを打っても、汎用機の英数字コード(EBCDIK)になってしまいますので)どうしてもCOBOL上でUNICODEのカンマをしなければなりません。
UNICODEでのカンマはコードが「U+002C」ということなのですが、どのように設定すればUNICODEでカンマと認識されるのでしょうか?
とりあえず、下記のような項目をつくってデータをつくってみたのですが・・・
01 X-COMMA PIC X(02) VALUE X'002C'
データの受け取り側がこのコードをカンマと判断してくれませんでした・・・
コードはU+002Cとなっているのでそのとおりに設定したかったのですが、「+」が設定できないため、上記のような書き方としました。
何かぜんぜん別の書き方をするのでしょうか?
質問の内容がわかりづらく申し訳ありませんが、どなたか知恵を貸していただければと思います。
よろしくお願いします。
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
X'002C'でもX'2C00'でもダメなら以下の方法もお試しください。
COBOLにも方言があるのですが、一応COBOL85の標準とします。
01 X-COMMA.
03 FILLER X(1) VALUE LOW-VALUE.
03 FILLER S9(1) USAGE PACKED-DECIMAL VALUE 2.
確か正のゾーンは0x0Cだったので、数値の2と合わせて0x2Cになるはず。
No.2
- 回答日時:
> 01 X-COMMA PIC X(02) VALUE X'002C'
COBOLの文法を良く覚えてないので確認しますが、これはバイト列として
'00', '2C'
の順で並ぶのですか。
そうでなく2バイトの数値なのだとしたら処理系がリトルエンディアンなら
'2C', '00'
の順になるので修正してください。
何にせよ実際に出て行くデータをバイト列としてみて意図通りかどうか確認されることをお勧めします。
> 仕様書を読むと「002C」となっているので、UTF-16BEだと思われます。
これも「002C」のバイト列としての仕様を確認するべきです。仕様書がバイト列として意識して書かれていなければUTF-16LEの可能性を排除できません。
No.1
- 回答日時:
データ表現としてはそれで合ってます。
カンマだけを送っている訳じゃないと思いますが、他のデータはちゃんとユニコードで送れているんでしょうか?
単にユニコードと言った場合、UTF-16を指しますが、上位バイトを先に送るか後に送るかの2種類(UTF-16BEとUTF-16LE)があり、LEだとX'2C00'です。
また、ユニコードといいつつUTF-8かもしれず、その場合は1バイトのX'2C'です。
つまり「ユニコード」というだけではコードが定まりません。
迅速なご回答ありがとうございます!
仕様書を読むと「002C」となっているので、UTF-16BEだと思われます。
あと、送るデータなのですが、文字コードが混在した形になっています。具体的にいいますと、
キーコード(半角数字・EBCDIK)カンマ(UTF-16BE)氏名(日本語項目・KEIS)
こんな感じです。文字コードは受け取り側のプログラムでそれぞれの項目で設定できるため、問題ないと思っています。
このデータ受け取り側のエラーとしては、「氏名の項目が見つかりません」とでるので、キーコードは読めていますがカンマのコードをカンマとして認識していないのでは?と思われるのですが・・・
ご検討よろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Java javaのCSVデータ読込についてです 6 2022/07/02 10:58
- C言語・C++・C# VisualStudioのソースコードで漢字を使いたい 4 2022/05/21 10:16
- Windows 8 win8 "ベータ ワールドワイド言語サポートで Unicode UTF-8 を使用"を出したい 2 2023/05/23 19:57
- Visual Basic(VBA) VBAでエクセルをtxtに変換するとエクセルでカンマを含む文字数字がtxtでは「""」付にならないよ 1 2022/08/27 12:17
- Excel(エクセル) 【マクロ】PasteSpecialメソッドにて、コードが動かない理由が分かりません 2 2023/08/15 20:47
- Excel(エクセル) CSVファイルがカンマ区切りにならない。対処法を教えていただきたいです。 仕事でSMS一斉送信ができ 2 2022/07/01 21:24
- その他(教育・科学・学問) 「、」を「,」(カンマ)で綴っている文献って、何故そうしているんですか? 7 2022/11/30 19:59
- Visual Basic(VBA) 【VBA】特定の文字で改行(次の行)に行きたい。 3 2022/04/11 17:20
- Visual Basic(VBA) VBAで出力したCSVファイルの先頭にカンマを挿入したい 5 2022/10/14 12:20
- その他(Microsoft Office) エクセルのマクロを教えてください。 1 2022/12/08 15:45
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
DataGridViewで表示に制限をつ...
-
【Excel VBA】先頭の「0」飛び...
-
.NET SqlDataReader のレコー...
-
Listviewのデータを上から順番...
-
VBによる可変長ファイルの読み書き
-
SqlDataSourceのUpdatingイベン...
-
GridViewにバインドせずにデー...
-
GASでスプレッドシートの一番上...
-
【ASP.NET MVC】一覧編集画面
-
GridViewを自動的にスクロール...
-
DataGrdViewに関連付けたデータ...
-
マクロについて(tatsumaru77さ...
-
yahoo天気の過去1ヶ月分のデー...
-
Windows formアプリで データグ...
-
ExcelVBAを使って、値...
-
VB.NETで DataRow()を利用して...
-
Excelで指定した日付から過去の...
-
特定のセルが空白だったら、そ...
-
VBAでセルをクリックする回...
-
VBA:小数点以下の数字を取得で...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【Excel VBA】先頭の「0」飛び...
-
DataGrdViewに関連付けたデータ...
-
Listviewのデータを上から順番...
-
GASでスプレッドシートの一番上...
-
VBAでページ番号、ページ最終行...
-
.NET SqlDataReader のレコー...
-
GridViewにバインドせずにデー...
-
【ASP.NET MVC】一覧編集画面
-
ASP C# データベースから1行取得
-
MSFlexGridのデータ表示位置の設定
-
コンパイルエラーSubまたは...
-
C# データ配列から画像を作成す...
-
エクセルマクロ小数点桁数
-
DataGridViewで表示に制限をつ...
-
スプレッドシート 一括でQRコー...
-
GridViewを自動的にスクロール...
-
VB DataRepeaterにて条件で表示
-
DBへの重複更新を防ぐ方法について
-
GoogleEarthのKMLファイルでラ...
-
エクセルVBA、数式の入ったセル...
おすすめ情報