COBOLのUNSTRING文で文字列を分割する方法を徹底解説!初心者向け入門ガイド
生徒
「先生、COBOLで文字列をバラバラに分ける方法ってありますか?」
先生
「はい、COBOLではUNSTRING文を使って文字列を分割することができます。」
生徒
「UNSTRINGって何ですか?どうやって使うんですか?」
先生
「それでは、UNSTRING文の基本的な使い方から一緒に学んでいきましょう。」
1. UNSTRING文とは?
COBOLのUNSTRING文は、ひとつの長い文字列を指定した区切り文字で分割し、それぞれを別々の変数に格納するための命令です。
例えば、カンマ「,」で区切られた「田中,太郎,30」という文字列があった場合に、「田中」「太郎」「30」と3つの要素に分けることができます。
プログラムの世界では、このような処理を文字列分割やパースと呼びます。
この仕組みを使うことで、CSVファイルのようにカンマ区切りで保存されているデータを簡単に取り出すことができます。
また、氏名や住所などの情報を「名字」と「名前」に分けたり、「郵便番号」と「住所」に切り分けたりすることも可能です。
2. UNSTRING文の基本的な書き方
まずは基本的な構文を紹介します。
UNSTRING 元の文字列
DELIMITED BY 区切り文字
INTO 変数1 変数2 変数3 ...
END-UNSTRING
- 元の文字列:分割したい文字列を指定します。
- DELIMITED BY:どの文字で区切るかを指定します。例えばカンマ(,)やスペース(半角空白)などです。
- INTO:分割後に格納する変数を順番に並べて書きます。
3. 実際のサンプルコード
それでは実際にサンプルプログラムを見てみましょう。
IDENTIFICATION DIVISION.
PROGRAM-ID. UNSTRING-DEMO.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 INPUT-DATA PIC X(20) VALUE "田中,太郎,30".
01 LAST-NAME PIC X(10).
01 FIRST-NAME PIC X(10).
01 AGE PIC X(3).
PROCEDURE DIVISION.
UNSTRING INPUT-DATA
DELIMITED BY ","
INTO LAST-NAME FIRST-NAME AGE
END-UNSTRING
DISPLAY "名字: " LAST-NAME
DISPLAY "名前: " FIRST-NAME
DISPLAY "年齢: " AGE
STOP RUN.
このプログラムを実行すると、次のような結果が得られます。
名字: 田中
名前: 太郎
年齢: 30
4. UNSTRING文の便利なオプション
UNSTRING文には、初心者が知っておくと便利なオプションがいくつかあります。ここでは代表的なものを紹介します。
① WITH POINTER
分割処理の途中で「文字列のどこまで処理したか」を記録することができます。
例えば「山田,花子,25,東京都」という長いデータを分割して、3つ目の項目まで処理したあと、次の項目から処理を続けたい場合に便利です。
01 POINTER-NUM PIC 9(3) VALUE 1.
UNSTRING INPUT-DATA
DELIMITED BY ","
INTO LAST-NAME FIRST-NAME AGE
WITH POINTER POINTER-NUM
END-UNSTRING
② TALLYING
分割して実際にいくつの項目を取り出せたかをカウントしてくれます。
データの中に空の項目がある場合や、分割した数を確認したいときに役立ちます。
01 COUNT-NUM PIC 9(3).
UNSTRING INPUT-DATA
DELIMITED BY ","
INTO LAST-NAME FIRST-NAME AGE
TALLYING COUNT-NUM
END-UNSTRING
5. 日常生活にたとえて理解しよう
文字列の分割は、実はとても身近な考え方です。
例えば、スーパーで「りんご・みかん・バナナ」と書かれた買い物メモを見たとします。
これをそのままでは「果物のリスト」としてしか使えませんが、「りんご」「みかん」「バナナ」と分けることで、個別にかごに入れることができます。
COBOLのUNSTRING文は、この「・」の部分を区切り文字と見なして、メモを自動で3つに分けてくれるイメージです。
6. よく使われる応用例
初心者が実際に使う場面をイメージしやすいように、よくある応用例を紹介します。
- 住所を「郵便番号」「都道府県」「市区町村」に分ける
- CSVデータを1行ずつ分解して項目ごとに処理する
- スペース区切りの入力を個別の単語に分ける
これらの処理は、すべてUNSTRING文を使って簡単に実現できます。
特に業務システムでは、社員名簿や商品リストなどを分割して利用することが多いため、UNSTRING文は必須のスキルと言えます。