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

COBOLのSTRING文を完全ガイド!初心者でもわかる文字列の結合方法

STRING文で文字列を結合する方法
STRING文で文字列を結合する方法

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

生徒

「先生、COBOLで二つの文字列をつなげて一つにする方法ってありますか?」

先生

「はい、COBOLではSTRING文を使うと簡単に文字列を結合できますよ。」

生徒

「STRING文ってどんな仕組みなんですか?」

先生

「たとえば『山田』と『太郎』をつなげて『山田太郎』にしたいときに使うものです。それでは使い方を見ていきましょう!」

1. STRING文とは?

1. STRING文とは?
1. STRING文とは?

COBOLのSTRING文は、複数の文字列を結合してひとつの文字列にするための命令です。日常生活で例えると、レゴブロックをつなげて一つの形を作るようなイメージです。

プログラムでは、名前・住所・電話番号などをまとめて一つの文字列にするときに使われます。特に業務システムでは、顧客情報を出力する際に役立ちます。

2. STRING文の基本構文

2. STRING文の基本構文
2. STRING文の基本構文

基本的な書き方は以下の通りです。


STRING 文字列1
       文字列2
       文字列3
  INTO 結合後の変数
END-STRING

INTOで指定した変数に、すべての文字列を順番につなげた結果が入ります。

3. STRING文のサンプル(名前を結合する)

3. STRING文のサンプル(名前を結合する)
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を使った結合

4. WITH POINTERを使った結合
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の使い方

5. DELIMITED BYの使い方
5. DELIMITED BYの使い方

DELIMITED BYは「ここで文字列を切る」という区切りを指定するオプションです。よく使うのは次の2種類です。

  • DELIMITED BY SPACE:スペースが現れたら文字列を終了する
  • DELIMITED BY SIZE:変数やリテラル全体を対象にする

日本語で説明すると、DELIMITED BY SPACEは「空白まで読む」、DELIMITED BY SIZEは「最後まで読む」と覚えるとわかりやすいです。

6. 複数の文字列を一度に結合する

6. 複数の文字列を一度に結合する
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. 初心者が注意すべきポイント

7. 初心者が注意すべきポイント
7. 初心者が注意すべきポイント
  • 結合先のサイズINTOで指定した変数が小さいと、文字列が途中で切れてしまいます。
  • 空白の扱い:スペースを区切りにするか、サイズ全体を読むかを意識しましょう。
  • 日本語(全角文字)の長さ:日本語は1文字が2バイトになる場合があるので、文字数ではなくバイト数で考える必要があります。

8. 実務での活用例

8. 実務での活用例
8. 実務での活用例

業務システムでは、STRING文は次のような場面で活用されます。

  • 姓・名を連結して帳票や画面に表示する
  • 郵便番号と住所を一つの文字列にまとめる
  • 複数のコードを連結して検索キーを作成する

このように、STRING文はCOBOLで文字列を自在に扱うための基本技術です。理解しておくと、プログラムが読みやすくなり、業務システムの開発効率も上がります。

カテゴリの一覧へ
新着記事
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句の使い方を完全ガイド!初心者でもわかる共通部品の再利用方法