COBOLのINSPECT文を完全ガイド!初心者でもわかるTALLYING・REPLACINGの使い方
生徒
「先生、COBOLで文字列の中にある特定の文字を数えたり、置き換えたりする方法ってありますか?」
先生
「いい質問ですね。COBOLにはINSPECT文というとても便利な命令があります。これを使えば文字列の操作が簡単にできますよ。」
生徒
「具体的にはどんなことができるんですか?」
先生
「例えば、文字列の中に『A』がいくつあるか数えることや、『-』をスペースに置き換えるといったことができます。それでは実際に見ていきましょう!」
1. INSPECT文とは?
COBOLのINSPECT文は、文字列を調べたり加工するための命令です。英語で「検査する」という意味があり、その名の通り文字列の中を調査して数えたり置換したりできます。
プログラミング未経験の方にわかりやすく説明すると、文章を読みながら、特定の文字を探す係のようなものです。例えば「バナナ」という文字列を渡すと、INSPECTが一文字ずつ確認して「Aが2個あります」と数えてくれます。
2. INSPECT TALLYINGで文字数を数える
TALLYINGは「数える」という意味です。文字列の中に含まれる特定の文字の数をカウントすることができます。
IDENTIFICATION DIVISION.
PROGRAM-ID. COUNT-EXAMPLE.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 TEXT PIC X(20) VALUE "BANANA APPLE".
01 COUNT-A PIC 9(2) VALUE 0.
PROCEDURE DIVISION.
INSPECT TEXT TALLYING COUNT-A FOR ALL "A".
DISPLAY "Aの数は " COUNT-A.
STOP RUN.
Aの数は 4
この例では「BANANA APPLE」という文字列の中に「A」がいくつあるか数えています。結果は4となります。文字列処理の基本テクニックとしてよく使われる書き方です。
3. INSPECT REPLACINGで文字を置き換える
REPLACINGは「置き換える」という意味です。文字列の中の特定の文字を別の文字に変更できます。
IDENTIFICATION DIVISION.
PROGRAM-ID. REPLACE-EXAMPLE.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 TEXT PIC X(20) VALUE "123-456-789".
PROCEDURE DIVISION.
INSPECT TEXT REPLACING ALL "-" BY " ".
DISPLAY "置換後: " TEXT.
STOP RUN.
置換後: 123 456 789
この例では、文字列の中のハイフン(-)をスペースに置き換えています。電話番号のようにハイフン付きの文字列を整形する時に便利です。
4. TALLYINGとREPLACINGを組み合わせて使う
TALLYINGとREPLACINGは別々に使うこともできますが、同時に利用して、数えた後に置き換えるといった処理も可能です。
IDENTIFICATION DIVISION.
PROGRAM-ID. MIX-EXAMPLE.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 TEXT PIC X(30) VALUE "HELLO-WORLD-COBOL".
01 COUNT-HYPHEN PIC 9(2) VALUE 0.
PROCEDURE DIVISION.
INSPECT TEXT
TALLYING COUNT-HYPHEN FOR ALL "-"
REPLACING ALL "-" BY " ".
DISPLAY "ハイフンの数: " COUNT-HYPHEN.
DISPLAY "置換後: " TEXT.
STOP RUN.
ハイフンの数: 2
置換後: HELLO WORLD COBOL
このプログラムでは、まずハイフンの数を数え、その後すべてスペースに置き換えています。文字列処理を効率よく行いたい時にとても役立つ方法です。
5. 初心者がつまずきやすいポイント
- 大文字と小文字の区別:COBOLの
INSPECTは大文字小文字を区別します。例えば「A」と「a」は別の文字と認識されます。 - 全角と半角の違い:日本語の文字列を扱うときは全角と半角が区別されるため注意が必要です。
- 文字列の長さ:
PIC X(20)などで文字列の長さを決めています。指定より長い文字列を入れると切り捨てられます。
これらの基本を理解しておくと、COBOLの文字列操作をスムーズに行うことができます。
6. 実務での活用例
銀行や保険などのシステムでは、COBOLのINSPECT文を使って以下のような処理が行われています。
- 入力された顧客データに禁止文字が含まれていないかチェックする
- マイナンバーや電話番号のフォーマットを整える
- 文字列の中から特定の記号や空白を取り除く
このように、文字列を検査・整形する処理は業務システムで頻繁に使われる重要な技術です。
まとめ
INSPECT文で身につく文字列操作の基本と考え方
この記事では、COBOLのINSPECT文について、TALLYINGとREPLACINGを中心に詳しく見てきました。 INSPECT文は、文字列を一文字ずつ確認しながら処理を行う命令であり、文字を数える、特定の文字を置き換えるといった操作を、 とても簡潔な記述で実現できるのが大きな特徴です。 プログラミング未経験者の方でも、「文章を目で追いながらチェックする作業」をイメージすると理解しやすく、 COBOLらしい分かりやすさを感じられる命令だと言えるでしょう。
TALLYINGは、文字列の中に含まれる特定の文字や記号を数えるために使われます。 入力データのチェックや、帳票出力前の事前確認など、実務の現場では数を把握する処理が頻繁に登場します。 そのような場面でINSPECT TALLYINGを使えば、複雑なループ処理を書かなくても、 短いコードで正確なカウント処理を行うことができます。 これは、COBOLが業務システム向けに発展してきた言語であることを強く感じさせるポイントです。
一方、REPLACINGは、文字列を加工したいときに非常に役立ちます。 ハイフンや記号をスペースに変換したり、不要な文字を別の文字に置き換えたりする処理は、 データを「人が読みやすい形」に整えるために欠かせません。 INSPECT REPLACINGを使うことで、元の文字列をまとめて書き換えることができ、 電話番号やコード値、入力データの整形など、さまざまな場面で活用できます。
また、TALLYINGとREPLACINGを同時に使える点もINSPECT文の大きな魅力です。 文字を数えながら置き換えることで、「どれだけ修正が行われたのか」を把握しつつ、 データを整形することができます。 このような処理は、業務プログラムの品質を保つうえで非常に重要であり、 単なる文字操作以上の価値を持っています。 INSPECT文を理解することは、COBOLによる文字列処理全体の理解につながります。
INSPECT文の動きを確認するまとめ用サンプル
IDENTIFICATION DIVISION.
PROGRAM-ID. INSPECT-SUMMARY.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 TEXT-DATA PIC X(30) VALUE "COBOL-INSPECT-TEST".
01 COUNT-HYPHEN PIC 9(2) VALUE 0.
PROCEDURE DIVISION.
INSPECT TEXT-DATA
TALLYING COUNT-HYPHEN FOR ALL "-"
REPLACING ALL "-" BY " ".
DISPLAY "記号の数:" COUNT-HYPHEN.
DISPLAY "変換後:" TEXT-DATA.
STOP RUN.
記号の数:2
変換後:COBOL INSPECT TEST
このサンプルでは、INSPECT文を使ってハイフンの数を数え、その後すべてスペースに置き換えています。 短いコードで「確認」と「加工」を同時に行えている点に注目してください。 このような処理を自然に書けるようになると、COBOLによる文字列操作への理解が一段と深まります。
生徒:「INSPECT文って、文字を調べるだけじゃなくて、数えたり直したりもできるんですね。」
先生:「そうですね。特に業務システムでは、文字列のチェックと整形がとても重要になります。」
生徒:「TALLYINGで数を把握できるのは安心感があります。」
先生:「何件修正したのかが分かるので、データの信頼性を確認しやすくなります。」
生徒:「REPLACINGを使えば、見やすい形に整えられるのも便利ですね。」
先生:「その通りです。INSPECT文は、COBOLの文字列処理を支える大切な命令です。」
生徒:「まずは簡単な文字列で、INSPECT文をたくさん試してみます。」
先生:「それが一番の近道です。慣れてくると、実務での使いどころも見えてきますよ。」