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文を使って以下のような処理が行われています。
- 入力された顧客データに禁止文字が含まれていないかチェックする
- マイナンバーや電話番号のフォーマットを整える
- 文字列の中から特定の記号や空白を取り除く
このように、文字列を検査・整形する処理は業務システムで頻繁に使われる重要な技術です。