【COBOL】STRING文の基本から応用までを初心者向けに9ステップ解説 – Japanシーモア

【COBOL】STRING文の基本から応用までを初心者向けに9ステップ解説

COBOLのSTRING文を使ったプログラミングの基本と応用を学ぶCOBOL
この記事は約14分で読めます。

 

【サイト内のコードはご自由に個人利用・商用利用いただけます】

このサービスは複数のSSPによる協力の下、運営されています。

この記事では、プログラムの基礎知識を前提に話を進めています。

説明のためのコードや、サンプルコードもありますので、もちろん初心者でも理解できるように表現してあります。

基本的な知識があればカスタムコードを使って機能追加、目的を達成できるように作ってあります。

※この記事は、一般的にプロフェッショナルの指標とされる『実務経験10,000時間以上』を凌駕する現役のプログラマチームによって監修されています。

サイト内のコードを共有する場合は、参照元として引用して下さいますと幸いです

※Japanシーモアは、常に解説内容のわかりやすさや記事の品質に注力しております。不具合、分かりにくい説明や不適切な表現、動かないコードなど気になることがございましたら、記事の品質向上の為にお問い合わせフォームにてご共有いただけますと幸いです。
(送信された情報は、プライバシーポリシーのもと、厳正に取扱い、処分させていただきます。)

はじめに

この記事を読めば、COBOLのSTRING文の使い方がマスターできます。

COBOLは、ビジネスアプリケーションに広く使用される古典的なプログラミング言語です。

特にSTRING文は、テキスト処理において非常に重要な役割を果たします。

この記事では、COBOLの基本から、STRING文の使い方、応用例までを詳細に解説し、プログラミングの初心者でも理解しやすい内容になっています。

●COBOLとは

COBOL(Common Business-Oriented Language)は、1959年に開発されたビジネス向けの高水準プログラミング言語です。

その名の通り、ビジネスデータ処理に特化しており、金融機関や保険会社、政府機関などで広く利用されています。

COBOLは、その読みやすい英語に似た構文が特徴で、大規模なデータ処理に適しています。

○COBOLの歴史と特徴

COBOLは、商業的なデータ処理のために設計された最初の数少ない言語の一つです。

長い歴史を持ち、多くのバージョンアップを経て、現在も多くの企業システムで使用され続けています。

COBOLの特徴は、その高い可読性と保守の容易さにあります。

プログラムは英語のような構文で書かれ、非専門家でも理解しやすいのが大きな利点です。

○COBOLの現代における重要性

現代のプログラミング言語と比較すると、COBOLは古い言語ですが、その重要性は依然として高いです。

特に金融セクターや政府関連のシステムでは、今日でもCOBOLで書かれたプログラムが広く使われています。

これらのシステムは長年にわたって構築されてきたため、COBOLを理解し、これらのシステムをメンテナンスできる技術者は非常に重宝されます。

また、近年ではCOBOLのスキルを持つプログラマーが少なくなってきているため、COBOLを学ぶことは貴重なキャリアチャンスを生む可能性があります。

●STRING文の基本

COBOLにおけるSTRING文は、複数の文字列を結合するために使用される重要な機能です。

この文は、特にレポート作成やデータフォーマットのカスタマイズにおいて、非常に役立ちます。

STRING文を使うことで、異なる文字列や変数を一つの文字列に結合し、より複雑な文字列操作を容易に行うことができます。

○STRING文とは

STRING文は、COBOLで提供される組み込みの文字列操作機能の一つです。

これは、文字列の連結を行う際に使用され、一つまたは複数のソース文字列を取り、それらを一つのターゲット文字列に結合することができます。

STRING文は、ビジネスアプリケーションにおいて、異なるデータフィールドからの情報を組み合わせる際に特に有用です。

○STRING文の基本的な構文

STRING文の基本的な構文は比較的シンプルです。

ここでは、基本的なSTRING文の構造を表すサンプルコードを紹介します。

       STRING 変数1 DELIMITED BY SIZE
              変数2 DELIMITED BY '特定の区切り文字'
              INTO 結合先変数
       END-STRING

このサンプルコードでは、変数1変数2結合先変数に結合しています。

DELIMITED BY SIZEは、変数のサイズに基づいて結合を行うことを意味し、DELIMITED BY '特定の区切り文字'は、指定された区切り文字によって変数の結合ポイントを決定します。

実行されると、変数1変数2の内容が結合先変数に連結され、新たな文字列として出力されます。

STRING文を使用することで、複数のデータソースからの情報を一つの文字列にまとめ、報告書やデータベースへの入力など、さまざまなビジネス用途に適用することが可能です。

●STRING文の使い方

COBOLのSTRING文を効果的に使うためには、基本的な構文の理解だけでなく、実際の使用方法にも精通する必要があります。

STRING文は、さまざまなシナリオで役立つ多様な使い方が可能です。

ここでは、特に一般的な2つの使用方法をサンプルコードを用いて解説します。

○サンプルコード1:文字列の結合

STRING文の最も基本的な使い方は、2つ以上の文字列を結合することです。

下記のサンプルコードは、2つの異なる文字列変数を結合して、新しい文字列を生成する一例を表しています。

       IDENTIFICATION DIVISION.
       PROGRAM-ID. StringExample.
       DATA DIVISION.
       WORKING-STORAGE SECTION.
       01 文字列1 PIC A(10) VALUE 'Hello'.
       01 文字列2 PIC A(10) VALUE ', World!'.
       01 結合後文字列 PIC A(20).

       PROCEDURE DIVISION.
       MAIN-LOGIC SECTION.
           STRING 文字列1 DELIMITED BY SIZE
                  文字列2 DELIMITED BY SIZE
                  INTO 結合後文字列
           END-STRING
           DISPLAY 結合後文字列
       STOP RUN.

このコードでは、文字列1文字列2結合後文字列に連結され、「Hello, World!」という結果が出力されます。

STRING文を使用することで、複数のデータソースから情報を収集し、必要に応じて一つの文字列にまとめることが可能です。

○サンプルコード2:変数間の文字列移動

STRING文は、変数間での文字列の移動にも使用できます。

特に、異なる種類のデータを一つの文字列に組み込む必要がある場合に便利です。

下記のサンプルコードは、数値とテキストを組み合わせた文字列を生成する方法を表しています。

       IDENTIFICATION DIVISION.
       PROGRAM-ID. StringMoveExample.
       DATA DIVISION.
       WORKING-STORAGE SECTION.
       01 数値 PIC 9(4) VALUE 1234.
       01 テキスト PIC A(15) VALUE 'の結果は'.
       01 結果文字列 PIC A(20).

       PROCEDURE DIVISION.
       MAIN-LOGIC SECTION.
           STRING 数値 DELIMITED BY SIZE
                  ' ' DELIMITED BY SIZE
                  テキスト DELIMITED BY SIZE
                  INTO 結果文字列
           END-STRING
           DISPLAY 結果文字列
       STOP RUN.

このコードでは、数値変数数値と文字列テキスト結果文字列に結合しています。

実行結果として「1234 の結果は」という文字列が得られます。

このようにSTRING文を活用することで、数値や日付など、異なる形式のデータを一つの文字列に統合し、出力やレポート作成に利用することができます

●STRING文の応用例

COBOLにおけるSTRING文の応用は多岐にわたります。

基本的な文字列の結合から複雑な条件付きの文字列操作まで、さまざまなシナリオで活用することが可能です。

ここでは、STRING文を用いた応用的なプログラミング技術を二つのサンプルコードを通して解説します。

○サンプルコード3:条件付き文字列の生成

STRING文を使用して、特定の条件に基づいて異なる文字列を生成することができます。

例えば、ユーザー入力やプログラムの状態に応じて異なるメッセージを組み立てる場合に有用です。

ここでは、条件に基づいて異なる文字列を結合するサンプルコードを紹介します。

       IDENTIFICATION DIVISION.
       PROGRAM-ID. ConditionalString.
       DATA DIVISION.
       WORKING-STORAGE SECTION.
       01 状態コード PIC 9 VALUE 1.
       01 メッセージ1 PIC A(20) VALUE '処理が成功しました: '.
       01 メッセージ2 PIC A(20) VALUE 'エラーが発生しました: '.
       01 結果メッセージ PIC A(40).

       PROCEDURE DIVISION.
       MAIN-LOGIC SECTION.
           IF 状態コード = 1
               STRING メッセージ1 '詳細情報' INTO 結果メッセージ
           ELSE
               STRING メッセージ2 'エラーコード' INTO 結果メッセージ
           END-IF
           DISPLAY 結果メッセージ
       STOP RUN.

このコードでは、状態コードの値に基づいて、メッセージ1またはメッセージ2を選択し、追加のテキストと結合しています。

このようにSTRING文を使うことで、プログラムの状態に応じた動的な文字列の生成が可能になります。

○サンプルコード4:繰り返し処理による文字列操作

STRING文は、繰り返し処理と組み合わせて使うことで、より複雑な文字列操作を行うことができます。

下記のサンプルコードでは、ループを使って複数の文字列を順番に結合しています。

       IDENTIFICATION DIVISION.
       PROGRAM-ID. LoopString.
       DATA DIVISION.
       WORKING-STORAGE SECTION.
       01 カウンター PIC 9 VALUE 1.
       01 最大カウント PIC 9 VALUE 5.
       01 一時文字列 PIC A(10) VALUE '数値: '.
       01 結果文字列 PIC A(60).

       PROCEDURE DIVISION.
       MAIN-LOGIC SECTION.
           PERFORM VARYING カウンター FROM 1 BY 1 UNTIL カウンター > 最大カウント
               STRING 一時文字列 カウンター DELIMITED BY SIZE ', ' INTO 結果文字列
           END-PERFORM
           DISPLAY 結果文字列
       STOP RUN.

このコードでは、カウンター変数を用いたループ内でSTRING文を使用し、一時文字列とカウンターの値を連結しています。

このような繰り返し処理を利用することで、複数の要素を含む文字列を効率的に構築することが可能です。

●注意点と対処法

COBOLでSTRING文を使用する際には、いくつかの注意点があります。

正確なプログラミングを行うためには、これらの注意点を理解し、適切に対処することが重要です。

STRING文を使ったプログラミングでよく遭遇するエラーやその対処法について詳しく解説します。

○STRING文の一般的なエラー

STRING文を使用する際によく発生するエラーには、次のようなものがあります

  1. 文字列がターゲット変数に収まらない場合のオーバーフローエラー
  2. 不適切なデリミタを使用した場合のエラー
  3. 不正なデータ型の使用によるエラー

これらのエラーは、STRING文の構文やデータ型の不一致に起因することが多く、注意深くプログラムを設計することで避けることが可能です。

○エラー処理の方法

STRING文に関連するエラーを適切に処理するための方法は次の通りです

  1. ターゲット変数のサイズを事前に確認し、STRING文の入力がこのサイズを超えないようにする。また、ON OVERFLOW節を使用して、オーバーフローが発生した場合の処理を定義する。
  2. STRING文で使用するデリミタが正しいことを確認し、必要に応じてデータを整形する。
  3. 文字列操作に使用する変数のデータ型が互換性を持つことを確認し、必要に応じて型変換を行う。

ここでは、オーバーフローエラーを防ぐためのサンプルコードを紹介します。

       IDENTIFICATION DIVISION.
       PROGRAM-ID. OverflowExample.
       DATA DIVISION.
       WORKING-STORAGE SECTION.
       01 入力文字列1 PIC A(10) VALUE '長い文字列'.
       01 入力文字列2 PIC A(10) VALUE 'テスト'.
       01 結果文字列 PIC A(15).

       PROCEDURE DIVISION.
       MAIN-LOGIC SECTION.
           STRING 入力文字列1 DELIMITED BY SIZE
                  入力文字列2 DELIMITED BY SIZE
                  INTO 結果文字列
           ON OVERFLOW
               DISPLAY 'エラー 文字列が長すぎます'
           NOT ON OVERFLOW
               DISPLAY 結果文字列
           END-STRING
       STOP RUN.

このコードでは、STRING文でオーバーフローが発生した場合にエラーメッセージを表示し、それ以外の場合は結果文字列を表示します。

このようなエラー処理を行うことで、STRING文を安全に使用することができます。

●カスタマイズ方法

COBOLのSTRING文は、その柔軟性により様々なカスタマイズが可能です。

特に、異なる種類のデータ処理や特定のシナリオに合わせた応用ができる点が強みです。

ここでは、STRING文の高度な使用法と異なるシナリオでの応用方法を具体的なサンプルコードを交えて解説します。

○STRING文の高度な使用法

STRING文を高度に使用する一つの方法は、動的な文字列生成です。

例えば、ユーザー入力や外部データに基づいて、リアルタイムで異なるメッセージを生成することが可能です。

       IDENTIFICATION DIVISION.
       PROGRAM-ID. DynamicString.
       DATA DIVISION.
       WORKING-STORAGE SECTION.
       01 ユーザー入力 PIC A(20).
       01 結果メッセージ PIC A(60).

       PROCEDURE DIVISION.
       MAIN-LOGIC SECTION.
           ACCEPT ユーザー入力
           STRING '入力されたデータ: ' 
                  ユーザー入力 
                  ' が処理されました' 
                  INTO 結果メッセージ
           DISPLAY 結果メッセージ
       STOP RUN.

このコードでは、ユーザーからの入力を受け取り、その入力を含むカスタムメッセージを生成しています。

○異なるシナリオでの応用

STRING文は、異なるシナリオに応じて多様な方法で応用することができます。

例えば、ファイルから読み込んだデータを処理して結果を出力する場合や、データベースから取得した情報を整形してレポートに使用する場合などです。

異なるデータソースを取り扱う際に、STRING文を用いることでデータの結合や整形が容易になります。

       IDENTIFICATION DIVISION.
       PROGRAM-ID. DatabaseString.
       DATA DIVISION.
       WORKING-STORAGE SECTION.
       01 DBデータ PIC A(20).
       01 結果レポート PIC A(80).

       PROCEDURE DIVISION.
       MAIN-LOGIC SECTION.
           MOVE '顧客名: 山田太郎, 購入金額: 30000円' TO DBデータ
           STRING 'レポート: ' 
                  DBデータ 
                  ', 処理日: ' 
                  FUNCTION CURRENT-DATE
                  INTO 結果レポート
           DISPLAY 結果レポート
       STOP RUN.

このコードでは、データベースから取得した仮想のデータをレポート形式に整形しています。

STRING文を用いることで、異なる形式のデータを組み合わせ、意図した形の出力を生成することが可能です。

まとめ

この記事では、COBOLプログラミング言語におけるSTRING文の基本から応用までを詳しく解説しました。

初心者から上級者までが理解できるよう、基本的な構文の紹介から始め、さまざまな使用方法や応用例を示しました。

また、STRING文の使用時に遭遇しやすい一般的なエラーとその対処法についても説明しました。

今回の記事を通じて、STRING文の多様性と柔軟性を理解し、それを実際のプログラムに応用できるようになることを願っています。

COBOLは古い言語ですが、その機能と強力なデータ処理能力は今日でも多くの企業システムで活用されています。

この基礎知識が、COBOLプログラミングの学習や実務において役立つことを願っています。