COBOL言語の文字列操作のパターンを理解しよう!|基礎ガイド

COBOL(コボル)言語でよく利用される文字列操作のパターンとは

基礎-文字列操作のパターン-イメージ

COBOL(コボル)言語の文字列操作とは?

COBOL(コボル)言語のプログラムは、入力されたデータに対して何らかの編集処理を行った後、画面やファイルに結果を出力するという事が処理の基本になります。その編集処理としてよく利用されるのが今回ご紹介する文字列操作です。

ここでは、まずCOBOL(コボル)言語の文字列操作の基本となる文字列の一部を取り出して画面に表示するという処理の書き方についてご紹介しますので、しっかりその書き方及び使用方法について理解していきましょう。

書き方:

データ項目(開始文字位置:[長さ])

使用例:

基礎-文字列操作のパターン-使用例

使用例は、WK-MOJIというデータ項目の1桁目から3文字分を取り出して、結果を画面表示するというプログラムです。この使用例のように、ある文字列の一部を取り出す処理を利用すると、例えば文字列がコード値と名称で構成されていた場合に、コード値のみを取り出して次の処理に利用するといった使い方ができるようになります。

実行結果:

基礎-文字列操作のパターン-実行結果

COBOL(コボル)言語の文字列操作のパターン

COBOL(コボル)言語の基本的な文字列操作の書き方を理解いただけたところで、次は文字列操作のパターンについてご紹介します。

COBOL(コボル)言語の文字列操作は主に1.文字列の初期化、2.文字列の分割、3.文字列の連結、4.集団項目を利用した文字列操作の4つのパターンに分けられます。順にその書き方及び使用方法について見ていきましょう。

書き方1:文字列の初期化

INITIALIZE データ項目

使用例1:

基礎-文字列操作のパターン-使用例1

使用例は、'123456'という初期値の設定されたWK-MOJIというデータ項目の値を初期化して、結果を画面表示するというプログラムです。データ項目を使用した編集処理を行う際は、プログラムの誤動作を防止するために、この使用例のように明示的にデータ項目を初期化しておく事もよく行われます。

実行結果1:

基礎-文字列操作のパターン-実行結果1

書き方2:文字列の分割

先にご紹介した「文字列の一部と取り出す処理」を活用

使用例2:

基礎-文字列操作のパターン-使用例2

使用例は、WK-MOJIというデータ項目の1桁目から3文字分と、4桁目から3文字分を取り出して、結果を画面に表示するというプログラムです。このように1つのデータ項目を分割して利用するといった使い方もCOBOL(コボル)言語では容易に実現する事ができます。

実行結果2:

基礎-文字列操作のパターン-実行結果2

書き方3:文字列の連結

STRING データ項目1、データ項目2・・ DELIMITED BY SIZE

INTO データ項目3[WITH POINTER 開始文字位置]

[END-STRING]

使用例3:

基礎-文字列操作のパターン-使用例3

使用例は、WK-MOJI1、WK-MOJI2という文字列を連結し、WK-MOJIに格納した後、結果を画面表示するというプログラムです。このように複数のデータ項目を連結して利用するといった使い方もCOBOL(コボル)言語では容易に実現する事ができます。

実行結果3:

基礎-文字列操作のパターン-実行結果3

書き方4:集団項目を利用した文字列操作

01 集団項目

03 基本項目1

03 基本項目2 ・・

使用例4:

基礎-文字列操作のパターン-使用例4

使用例は、先の文字列の連結を集団項目を利用するように変更したプログラムです。この使用例のように、COBOL(コボル)言語では集団項目というデータの使い方ができます。あるデータが複数のデータ項目で構成されている事がわかっている場合には、このように集団項目を定義しておく事で、文字列の連結や分割といった文字列操作をさらに容易に実現する事ができます。

実行結果4:

基礎-文字列操作のパターン-実行結果4

COBOL(コボル)言語における文字列操作の基本事項や注意事項

文字の一部分を取り出す「データ項目(開始文字位置:[長さ])」の記述について

  • 文字間の空白や改行は、自由に設定できます。
  • 「開始文字位置」、「長さ」は、1以上である必要があります。
    また「長さ」は省略できますが、省略時はデータの末尾まで指定したものとみなされます。
  • 「長さ」はデータ項目長の範囲に収まっている必要があります。
    範囲外である場合、実行時に予期せぬエラーが起きる可能性があります。

文字列を連結する「STRING データ項目1、データ項目2・・ DELIMITED BY SIZE INTO データ項目3[WITH POINTER 開始文字位置][END-STRING]」について

  • 文字間の空白や改行は、自由に設定できます。
  • データ項目3に文字が連結される順番は、データ項目1、データ項目2・・の順になります。
    また、データ項目3に文字が収まる範囲内でしか文字列は連結されません。
  • [WITH POINTER 開始文字位置][END-STRING]は省略できます。
    [WITH POINTER 開始文字位置]の省略時には開始文字位置は1を指定したものとみなされます。

文字列操作のCOBOL(コボル)プログラムの活用法

COBOL(コボル)言語の文字列操作の基本的な書き方や使用例について理解いただけたでしょうか?最後に活用法として繰り返し処理と組み合わせて使用する事の多い、文字列の比較処理をご紹介します。

今までご紹介した書き方のパターンが理解いただけていれば、それ程難しい内容ではないと思います。是非ご自身のプログラムにも活用できるよう、理解を深めていただければと思います。

サンプルプログラム:

  1. IDENTIFICATION DIVISION.
  2. PROGRAM-ID. MOJI_SAMPLE06.
  3. ENVIRONMENT DIVISION.
  4. DATA DIVISION.
  5. WORKING-STORAGE SECTION.
  6. 01 WK-MOJI PIC X(07) VALUE '123,456'.
  7. 01 WK-SUJI PIC 9.
  8. PROCEDURE DIVISION.
  9. PERFORM VARYING WK-SUJI FROM 1 BY 1
  10. UNTIL WK-MOJI(WK-SUJI:1) = ','
  11. END-PERFORM.
  12. DISPLAY WK-MOJI(1:WK-SUJI - 1).
  13. DISPLAY WK-MOJI(WK-SUJI + 1:).
  14. STOP RUN.
  15. END PROGRAM MOJI_SAMPLE06.

実行結果:

基礎-文字列操作のパターン-実行結果

いかがでしたでしょうか?あるデータに対して文字列を操作する処理は、COBOL(コボル)言語の業務プログラムではよく利用されています。特に集団項目を利用した処理は、他のプログラミング言語ではあまり見られませんが、COBOL(コボル)言語では頻繁に利用される書き方になりますので、是非覚えていただければと思います。

また、今回ご紹介したような処理パターンは、組み合わせて利用できるようになるとプログラミングの幅が広がります。いろいろな処理やパターンを身につけていただき、いろいろな組み合わせでできるプログラムの作成に応用していっていただければと思います。

この記事を読んだ人は、こちらの記事も読んでいます

【未経験者歓迎】COBOLプログラマー・システムエンジニアの募集

株式会社COBOLの求人・転職・募集情報を見る

COBOL入門のカテゴリー

取引企業様 募集中
COBOL技術者 募集
COBOL魂
読者採用
COBOL入門