カテゴリ: COBOL 更新日: 2025/11/12

COBOLの文字列検索を完全ガイド!初心者でもわかるINSPECTとUNSTRINGの使い方

文字列検索のパターン(INSPECT, UNSTRINGなど)
文字列検索のパターン(INSPECT, UNSTRINGなど)

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

生徒

「先生、COBOLで文字列の中から特定の言葉を探したり、分けたりすることってできますか?」

先生

「もちろんできますよ。COBOLには、文字列を調べたり分解したりするための命令があります。その代表がINSPECTUNSTRINGです。」

生徒

「なんだか難しそうですが、どんなときに使うんですか?」

先生

「たとえば、文章の中にある文字を数えたいときや、カンマで区切られたデータを分けたいときなどに使います。実際の例を見てみましょう!」

1. COBOLの文字列操作とは?

1. COBOLの文字列操作とは?
1. COBOLの文字列操作とは?

COBOLでは、文字列操作(もじれつそうさ)を使って、文字や文章を調べたり編集したりすることができます。文字列とは、「A」「B」「C」などの文字が並んだもののことです。たとえば「HELLO」や「123-4567」も文字列です。

業務システムでは、文字列を扱うことがとても多くあります。たとえば「郵便番号からハイフンを取り除く」「氏名を名字と名前に分ける」「商品コードに特定の文字が含まれているか調べる」などです。

COBOLでよく使われる文字列操作命令には、INSPECTUNSTRINGの2つがあります。この2つを理解すると、データの分析や整形がぐっと楽になります。

2. INSPECT文とは?

2. INSPECT文とは?
2. INSPECT文とは?

INSPECT文は、文字列の中を調べたり、置き換えたり、数えたりする命令です。英語の「inspect(調べる)」という意味の通り、文字列を検査するのが目的です。

● 文字の出現回数を数える

まずは、文字列の中にある特定の文字が何回出てくるかを数える方法を見てみましょう。


IDENTIFICATION DIVISION.
PROGRAM-ID. INSPECT-SAMPLE.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 TEXT     PIC X(30) VALUE "APPLE BANANA APPLE".
01 COUNT-A  PIC 9(3) VALUE 0.
PROCEDURE DIVISION.
    INSPECT TEXT TALLYING COUNT-A FOR ALL "A".
    DISPLAY "Aの出現回数は:" COUNT-A.
    STOP RUN.

    Aの出現回数は:6

この例では、TEXTの中に含まれている「A」という文字を数えています。結果は「6」になります。TALLYINGというのは「数える」という意味です。

● 特定の文字を別の文字に置き換える

INSPECTには、REPLACINGを使って文字を置き換える機能もあります。たとえば「-(ハイフン)」を「スペース」に置き換えることができます。


IDENTIFICATION DIVISION.
PROGRAM-ID. INSPECT-REPLACE.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 PHONE-NUMBER PIC X(13) VALUE "080-1234-5678".
PROCEDURE DIVISION.
    INSPECT PHONE-NUMBER REPLACING ALL "-" BY " ".
    DISPLAY "変換後:" PHONE-NUMBER.
    STOP RUN.

    変換後:080 1234 5678

このように、INSPECTは文字列の中の特定の文字を別の文字に変えることができます。実務では、電話番号や住所データの整形などでよく使われます。

3. UNSTRING文とは?

3. UNSTRING文とは?
3. UNSTRING文とは?

UNSTRING文は、文字列を特定の区切り文字で分割して、それぞれ別の変数に取り出す命令です。英語の「unstring」は「ひもをほどく」という意味で、ひとつの長い文字列をバラバラにするイメージです。

たとえば、カンマ(,)で区切られたデータ「TARO,SUZUKI,30」を名前や年齢に分けたいときに使います。


IDENTIFICATION DIVISION.
PROGRAM-ID. UNSTRING-SAMPLE.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 PERSON-DATA PIC X(30) VALUE "TARO,SUZUKI,30".
01 FIRST-NAME  PIC X(10).
01 LAST-NAME   PIC X(10).
01 AGE         PIC X(3).
PROCEDURE DIVISION.
    UNSTRING PERSON-DATA
        DELIMITED BY ","
        INTO FIRST-NAME LAST-NAME AGE.
    DISPLAY "名前:" FIRST-NAME.
    DISPLAY "苗字:" LAST-NAME.
    DISPLAY "年齢:" AGE.
    STOP RUN.

    名前:TARO
    苗字:SUZUKI
    年齢:30

このように、UNSTRINGを使うとカンマ区切りやスペース区切りのデータを簡単に分割できます。CSVデータのような形式にも対応できるので、業務プログラムでは非常によく使われます。

4. INSPECTとUNSTRINGの違いと使い分け

4. INSPECTとUNSTRINGの違いと使い分け
4. INSPECTとUNSTRINGの違いと使い分け

ここまでで、INSPECTUNSTRINGの使い方がわかってきましたね。では、それぞれどんなときに使えばよいのでしょうか?

  • INSPECT:文字列の中を調べたり、数えたり、置き換えたりしたいとき。
  • UNSTRING:区切り文字を使って文字列を複数の部分に分けたいとき。

たとえば、住所の中から「都道府県」を取り出したい場合はUNSTRINGが便利です。一方、住所に含まれる特定の文字(例:「-」や「丁目」など)を数えたり削除したいときはINSPECTが向いています。

5. 実務での応用例

5. 実務での応用例
5. 実務での応用例

実際の業務プログラムでは、文字列処理は避けて通れません。たとえば、銀行システムで「口座番号のハイフンを削除する」「顧客名簿から特定の名前を抽出する」など、多くの場面で使われます。

ここでは、複合的な例として「住所から郵便番号と都道府県を抽出する」サンプルを紹介します。


IDENTIFICATION DIVISION.
PROGRAM-ID. ADDRESS-EXTRACT.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 FULL-ADDRESS PIC X(50) VALUE "123-4567,東京都,新宿区".
01 ZIP-CODE     PIC X(10).
01 PREF-NAME    PIC X(10).
01 CITY-NAME    PIC X(20).
PROCEDURE DIVISION.
    UNSTRING FULL-ADDRESS
        DELIMITED BY ","
        INTO ZIP-CODE PREF-NAME CITY-NAME.
    INSPECT ZIP-CODE REPLACING ALL "-" BY "".
    DISPLAY "郵便番号:" ZIP-CODE.
    DISPLAY "都道府県:" PREF-NAME.
    DISPLAY "市区町村:" CITY-NAME.
    STOP RUN.

    郵便番号:1234567
    都道府県:東京都
    市区町村:新宿区

このように、UNSTRINGINSPECTを組み合わせることで、文字列データを自在に操作できます。実際のシステム開発でも頻繁に使われるテクニックです。

カテゴリの一覧へ
新着記事
New1
C#
C#のLINQでAny・Allなど条件確認メソッドの使い方を完全ガイド!初心者でもわかるデータ検証
New2
C#
C#のデフォルト引数と名前付き引数の使い方を解説!初心者でも安心のやさしい入門
New3
C#
C#のオブジェクト初期化子を完全ガイド!初心者でもわかる便利な使い方
New4
COBOL
COBOLの帳票出力と編集を完全マスター!条件付き表示で分かりやすい書類を作る方法
人気記事
No.1
Java&Spring記事人気No1
C#
C#のpartialクラスとは?初心者でも理解できるクラス分割の基本
No.2
Java&Spring記事人気No2
C#
C#でJSONファイルを読み書きする方法(JsonSerializer・Newtonsoft.Json)
No.3
Java&Spring記事人気No3
C#
C#でswitch式を使う方法!C# 8.0以降の新機能を解説
No.4
Java&Spring記事人気No4
C#
C#のLINQクエリ構文の書き方と基本操作をマスターしよう
No.5
Java&Spring記事人気No5
COBOL
COBOLの数値データ型「PIC 9」の使い方と注意点をやさしく解説!
No.6
Java&Spring記事人気No6
C#
C#の非同期処理とUIスレッドをマスター!WPF/WinFormsでアプリが止まる問題を解決
No.7
Java&Spring記事人気No7
C#
C#のCancellationTokenを使ったキャンセル処理を完全ガイド!非同期処理を安全に止める方法
No.8
Java&Spring記事人気No8
C#
C#のLINQ(リンク)とは?基本概念とデータ操作を初心者向けに徹底解説!