カテゴリ: COBOL 更新日: 2026/01/08

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で文字列を自在に扱うための基本技術です。理解しておくと、プログラムが読みやすくなり、業務システムの開発効率も上がります。

まとめ

まとめ
まとめ

COBOLのSTRING文は、業務システムでよく使われる文字列の結合処理を安全かつ確実に行うための大切な仕組みです。姓と名をくっつけてフルネームを作る場面から、住所や顧客情報をまとめて1本の文字列に整理する処理まで、幅広い用途で使われています。特に、STRING文は複数の文字列をまとめて結合できるだけでなく、DELIMITED BYやWITH POINTERのようなオプションを使うことで、結合の細かい制御も可能です。文字列の端にある空白を無視したり、途中から結合を始めたりといった柔軟な動作を自然に書けるため、業務データを扱う現場では非常に重宝されます。

文字列結合を行う際には、結合先の変数サイズに注意することも欠かせません。INTOで指定した領域が短いと、それだけで文字列が途中で切れてしまい、本来意図した結果が得られない可能性があります。また、日本語の全角文字を扱う場合は、バイト数の違いによって予想外の結果になることもあるため、適切な項目長を確保することが重要です。DELIMITED BY SPACEを使用すれば余分な空白を取り除いて結合できますし、DELIMITED BY SIZEを使えば項目全体をしっかり取り込めるため、データ内容に応じて使い分けるのがポイントになります。

さらに、WITH POINTERを使うことで、結合位置を自由に操作できるため、部分的にデータを追加したい場合や、あらかじめ構造を決めた文字列に後から情報を埋め込みたい場合にも対応できます。STRING文は初心者にも理解しやすい命令ですが、実務的にはかなり応用の幅が広く、郵便番号と住所を連結したり、複数のコードをまとめて検索キーを生成したりと、幅広い工程で役立つ技術です。正しい使い方を身につけておけば、COBOLでの文字列処理がぐっとスムーズになり、複雑な帳票作成やデータ加工を効率よく進められます。

サンプルプログラム:住所をまとめて1行にするSTRING文の例


       IDENTIFICATION DIVISION.
       PROGRAM-ID. ADDRESS-STRING.
       DATA DIVISION.
       WORKING-STORAGE SECTION.
       01 ZIP-CODE    PIC X(10) VALUE "123-4567".
       01 PREF        PIC X(10) VALUE "TOKYO".
       01 CITY        PIC X(10) VALUE "MINATO".
       01 ADDRESS-LINE PIC X(40).
       01 PTR         PIC 9(2) VALUE 1.
       PROCEDURE DIVISION.
           STRING ZIP-CODE DELIMITED BY SIZE
                  " "      DELIMITED BY SIZE
                  PREF     DELIMITED BY SPACE
                  " "      DELIMITED BY SIZE
                  CITY     DELIMITED BY SPACE
             INTO ADDRESS-LINE
             WITH POINTER PTR
           END-STRING.
           DISPLAY "住所情報: " ADDRESS-LINE.
           STOP RUN.

この例では、郵便番号・都道府県・市区名を一つの文字列にまとめています。DELIMITED BY SIZEとDELIMITED BY SPACEを組み合わせることで、必要な部分だけを取り込みつつ、余計な空白を除いてきれいに結合できます。住所のように複数の項目から構成される文字列を扱うとき、STRING文の使い方を知っていれば安心して処理を組み立てられます。WITH POINTERを使って結合開始位置を制御することで、文字列の一部を上書きせずに追加しやすくなる点も実務で役立つポイントです。

STRING文をより深く理解するためのポイントを整理すると次のようになります。

  • 複数の文字列を自然な形で結合できる。
  • DELIMITED BYで区切り方を柔軟に設定できる。
  • WITH POINTERを使うと結合位置をコントロールできる。
  • INTO先のサイズ不足に注意する必要がある。
  • 全角文字を扱う場合はバイト長を意識する。

COBOLは業務システムの中核で使われることが多く、文字列処理は日々の業務を支える重要な技術です。STRING文を使いこなせるようになると、帳票出力、顧客情報整形、検索キー生成などの実務処理が一気に効率化されます。今回学んだ内容を踏まえて、実際に自分でも組み合わせて試してみることで、より深く理解できるようになります。

先生と生徒の振り返り会話

生徒

「STRING文ってシンプルだけど、かなり奥が深いんですね!」

先生

「ええ、そのとおりです。文字列を扱う場面は本当に多いので、正しく理解しておくととても役立ちますよ。」

生徒

「DELIMITED BYの違いも、実際に例を見たことでイメージがつかめました。」

先生

「使い分けがしっかりできると、余計な空白を気にせずにきれいな文字列が作れますからね。」

生徒

「WITH POINTERを使うと、途中から文字を載せられるのも便利ですね!」

先生

「その自由度がSTRING文の魅力です。住所や氏名のような複数構成の文字列で特に効果を発揮しますよ。」

生徒

「これで文字列を扱うプログラムも怖くなくなりました!」

先生

「その調子です。慣れてくるとSTRING文の便利さがどんどん実感できますよ。」

この記事を読んだ人からの質問

この記事を読んだ人からの質問
この記事を読んだ人からの質問

プログラミング初心者からのよくある疑問/質問を解決します

COBOLで文字列を結合するにはどの命令を使いますか?

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