COBOLのSTRING文を完全ガイド!初心者でもわかる文字列の結合方法
生徒
「先生、COBOLで二つの文字列をつなげて一つにする方法ってありますか?」
先生
「はい、COBOLではSTRING文を使うと簡単に文字列を結合できますよ。」
生徒
「STRING文ってどんな仕組みなんですか?」
先生
「たとえば『山田』と『太郎』をつなげて『山田太郎』にしたいときに使うものです。それでは使い方を見ていきましょう!」
1. STRING文とは?
COBOLのSTRING文は、複数の文字列を結合してひとつの文字列にするための命令です。日常生活で例えると、レゴブロックをつなげて一つの形を作るようなイメージです。
プログラムでは、名前・住所・電話番号などをまとめて一つの文字列にするときに使われます。特に業務システムでは、顧客情報を出力する際に役立ちます。
2. STRING文の基本構文
基本的な書き方は以下の通りです。
STRING 文字列1
文字列2
文字列3
INTO 結合後の変数
END-STRING
INTOで指定した変数に、すべての文字列を順番につなげた結果が入ります。
3. STRING文のサンプル(名前を結合する)
例えば「姓」と「名」をくっつけてフルネームにする例です。
IDENTIFICATION DIVISION.
PROGRAM-ID. STRING-EXAMPLE.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 LAST-NAME PIC X(10) VALUE "YAMADA".
01 FIRST-NAME PIC X(10) VALUE "TARO".
01 FULL-NAME PIC X(20).
PROCEDURE DIVISION.
STRING LAST-NAME DELIMITED BY SPACE
FIRST-NAME DELIMITED BY SPACE
INTO FULL-NAME
END-STRING.
DISPLAY "フルネーム: " FULL-NAME.
STOP RUN.
フルネーム: YAMADATARO
DELIMITED BY SPACEは「スペースが出るまで文字を取り込む」という指定です。つまり「YAMADA」や「TARO」に余分な空白があっても正しく結合されます。
4. WITH POINTERを使った結合
STRING文ではWITH POINTERを使って、結合を始める位置を指定できます。ポインタとは「どこから文字を入れるかを指し示す目印」のことです。
IDENTIFICATION DIVISION.
PROGRAM-ID. POINTER-EXAMPLE.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 ADDRESS PIC X(50).
01 PTR PIC 9(2) VALUE 1.
PROCEDURE DIVISION.
STRING "TOKYO" DELIMITED BY SIZE
" " DELIMITED BY SIZE
"JAPAN" DELIMITED BY SIZE
INTO ADDRESS
WITH POINTER PTR
END-STRING.
DISPLAY "住所: " ADDRESS.
STOP RUN.
住所: TOKYO JAPAN
WITH POINTERを指定すると、文字列をどこから追加していくかをコントロールできます。これにより、途中から追加する処理や、異なる位置に文字列を埋め込むことが可能です。
5. DELIMITED BYの使い方
DELIMITED BYは「ここで文字列を切る」という区切りを指定するオプションです。よく使うのは次の2種類です。
- DELIMITED BY SPACE:スペースが現れたら文字列を終了する
- DELIMITED BY SIZE:変数やリテラル全体を対象にする
日本語で説明すると、DELIMITED BY SPACEは「空白まで読む」、DELIMITED BY SIZEは「最後まで読む」と覚えるとわかりやすいです。
6. 複数の文字列を一度に結合する
STRING文は複数の文字列をまとめてつなげることも可能です。以下は姓・名・敬称をまとめる例です。
IDENTIFICATION DIVISION.
PROGRAM-ID. MULTI-EXAMPLE.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 LAST-NAME PIC X(10) VALUE "SUZUKI".
01 FIRST-NAME PIC X(10) VALUE "HANAKO".
01 TITLE PIC X(5) VALUE "SAN".
01 FULL-LINE PIC X(30).
PROCEDURE DIVISION.
STRING LAST-NAME DELIMITED BY SPACE
FIRST-NAME DELIMITED BY SPACE
TITLE DELIMITED BY SIZE
INTO FULL-LINE
END-STRING.
DISPLAY "結合結果: " FULL-LINE.
STOP RUN.
結合結果: SUZUKIHANAKOSAN
このように、3つ以上の文字列も一度に簡単に連結できます。
7. 初心者が注意すべきポイント
- 結合先のサイズ:
INTOで指定した変数が小さいと、文字列が途中で切れてしまいます。 - 空白の扱い:スペースを区切りにするか、サイズ全体を読むかを意識しましょう。
- 日本語(全角文字)の長さ:日本語は1文字が2バイトになる場合があるので、文字数ではなくバイト数で考える必要があります。
8. 実務での活用例
業務システムでは、STRING文は次のような場面で活用されます。
- 姓・名を連結して帳票や画面に表示する
- 郵便番号と住所を一つの文字列にまとめる
- 複数のコードを連結して検索キーを作成する
このように、STRING文はCOBOLで文字列を自在に扱うための基本技術です。理解しておくと、プログラムが読みやすくなり、業務システムの開発効率も上がります。