カテゴリ: COBOL 更新日: 2025/10/30

COBOLのUNSTRING文で文字列を分割する方法を徹底解説!初心者向け入門ガイド

UNSTRING文で文字列を分割するテクニック
UNSTRING文で文字列を分割するテクニック

先生と生徒の会話形式で理解しよう

生徒

「先生、COBOLで文字列をバラバラに分ける方法ってありますか?」

先生

「はい、COBOLではUNSTRING文を使って文字列を分割することができます。」

生徒

「UNSTRINGって何ですか?どうやって使うんですか?」

先生

「それでは、UNSTRING文の基本的な使い方から一緒に学んでいきましょう。」

1. UNSTRING文とは?

1. UNSTRING文とは?
1. UNSTRING文とは?

COBOLのUNSTRING文は、ひとつの長い文字列を指定した区切り文字で分割し、それぞれを別々の変数に格納するための命令です。
例えば、カンマ「,」で区切られた「田中,太郎,30」という文字列があった場合に、「田中」「太郎」「30」と3つの要素に分けることができます。
プログラムの世界では、このような処理を文字列分割パースと呼びます。

この仕組みを使うことで、CSVファイルのようにカンマ区切りで保存されているデータを簡単に取り出すことができます。
また、氏名や住所などの情報を「名字」と「名前」に分けたり、「郵便番号」と「住所」に切り分けたりすることも可能です。

2. UNSTRING文の基本的な書き方

2. UNSTRING文の基本的な書き方
2. UNSTRING文の基本的な書き方

まずは基本的な構文を紹介します。


UNSTRING 元の文字列
    DELIMITED BY 区切り文字
    INTO 変数1 変数2 変数3 ...
END-UNSTRING

- 元の文字列:分割したい文字列を指定します。
- DELIMITED BY:どの文字で区切るかを指定します。例えばカンマ(,)やスペース(半角空白)などです。
- INTO:分割後に格納する変数を順番に並べて書きます。

3. 実際のサンプルコード

3. 実際のサンプルコード
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文の便利なオプション

4. UNSTRING文の便利なオプション
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. 日常生活にたとえて理解しよう

5. 日常生活にたとえて理解しよう
5. 日常生活にたとえて理解しよう

文字列の分割は、実はとても身近な考え方です。
例えば、スーパーで「りんご・みかん・バナナ」と書かれた買い物メモを見たとします。
これをそのままでは「果物のリスト」としてしか使えませんが、「りんご」「みかん」「バナナ」と分けることで、個別にかごに入れることができます。
COBOLのUNSTRING文は、この「・」の部分を区切り文字と見なして、メモを自動で3つに分けてくれるイメージです。

6. よく使われる応用例

6. よく使われる応用例
6. よく使われる応用例

初心者が実際に使う場面をイメージしやすいように、よくある応用例を紹介します。

  • 住所を「郵便番号」「都道府県」「市区町村」に分ける
  • CSVデータを1行ずつ分解して項目ごとに処理する
  • スペース区切りの入力を個別の単語に分ける

これらの処理は、すべてUNSTRING文を使って簡単に実現できます。
特に業務システムでは、社員名簿や商品リストなどを分割して利用することが多いため、UNSTRING文は必須のスキルと言えます。

カテゴリの一覧へ
新着記事
C#で複数ファイルをまとめて操作する方法(foreach・LINQ)をやさしく解説!
C#のインターフェースとは?クラス設計を柔軟にする基本技術
C#のコンストラクタの役割と使い方!オブジェクト初期化の基本
COBOLでデータベース接続を理解しよう!初心者でもわかる基本の考え方
人気記事
No.1
Java&Spring記事人気No1
C#のpartialクラスとは?初心者でも理解できるクラス分割の基本
No.2
Java&Spring記事人気No2
C#で型を調べる方法!GetType()・typeof演算子の違いと使い方
No.3
Java&Spring記事人気No3
C#の数値型をマスターしよう!int・double・decimalの違いと使い方
No.4
Java&Spring記事人気No4
COBOLのCOPY句の使い方を完全ガイド!初心者でもわかる共通部品の再利用方法