COBOLにおける文字列連結のマスター

プログラミングの世界では、文字列を扱うことが一般的な作業です。COBOLでは、長さが事前に定められていない文字列を連結するという課題に直面することが多いです。この記事では、COBOLで不明な長さの文字列を効果的に連結する方法について明確な解決策を提供します。

問題

ユーザーの名と姓を扱うプログラムで作業していると想像してみてください。あなたのWORKING-STORAGEセクションでは、これらの名前を保持するための変数を定義していますが、不要なスペースを残さずにそれらを結合する必要があるときに問題が発生します。例えば、次のように定義されているとします:

WORKING-STORAGE.
    FIRST-NAME    PIC X(15) VALUE SPACES.
    LAST-NAME     PIC X(15) VALUE SPACES.
    FULL-NAME     PIC X(31) VALUE SPACES.

FIRST-NAME'JOHN 'LAST-NAME'DOE 'に設定されていると仮定すると、次の結果を得たいと思っています:

FULL-NAME = 'JOHN DOE                       '.

しかし、単純な連結を行うと、次のようになってしまいます:

FULL-NAME = 'JOHN            DOE            '.

これは、連結された部分の間に余分なスペースが含まれているため、望ましい結果ではありません。この問題をどのように解決しますか?

解決策

この問題の解決策は、COBOLのSTRING文を効果的に使用することです。これにより、文字列を連結し、不要なスペースを排除するための区切り文字を指定できます。以下は、2つの文字列を正しく連結する手順です。

ステップバイステップガイド

  1. 文字列を定義する: 上記のように、WORKING-STORAGEセクションでFIRST-NAMELAST-NAMEFULL-NAMEを定義してください。

  2. STRING文を使用する: 文字列を連結するためにSTRING文を使用します。以下のようにします:

    STRING
        FIRST-NAME DELIMITED BY " ",
        " ",
        LAST-NAME DELIMITED BY SIZE
    INTO FULL-NAME.
    

STRING文の分解

  • FIRST-NAME DELIMITED BY " “: これは、COBOLにFIRST-NAMEを使用し、最初に出現するスペースで連結を止めることを指示し、実質的に末尾のスペースをトリミングします。

  • ” “: これは、名と姓の間に1つのスペースを追加し、適切に区切られることを保証します。

  • LAST-NAME DELIMITED BY SIZE: これは、LAST-NAMEの全長を連結に含めることを指定し、不要な末尾のスペースを回避します。

  • INTO FULL-NAME: これは、結果となる連結された文字列をFULL-NAMEに格納することを指示します。

結論

これらの手順に従うことで、COBOLで不明な長さの文字列を効率的に連結し、クリーンで整形された出力を確保できます。適切な区切り文字を使ってSTRING文を活用することで、COBOLは文字列管理のプロセスを簡素化し、プログラミングニーズに強力なツールを提供します。

次回、COBOLで連結のような課題に直面した際には、この方法を自信を持って適用し、望ましい結果を得ることができるでしょう!