COBOLのDBアクセスパターンを学ぼう!「TRIM」|応用ガイド

COBOL(コボル)言語のDBの指定文字を削除する「TRIM」とは?

応用-TRIM-イメージ

COBOL(コボル)言語のDBアクセス「TRIM」とは?

リレーショナル型のデータベースに対して、特定の列の値(文字列)から不要な空白や指定文字を削除するためには「TRIM」を使用します。削除できるのは文字列の先頭・末尾にある文字で、文字列の途中にある文字は削除されません。また、削除する文字を指定しない場合は「空白」が削除されます。使い方をしっかり身につけましょう。

書き方:

TRIM(対象文字列)
TRIM(対象文字列,削除する文字列)

COBOL(コボル)言語のDBアクセス「TRIM」の処理構成

COBOL(コボル)言語でSQLを利用する際には、データベースに接続するなど共通の処理を実施しておく必要があります。どのようなSQLを使う場合にも必要になりますので、その使い方について理解しましょう。

[DB利用の基本的な処理構成]

1.ホスト変数の定義、2.共通領域の定義、3.データベース接続、4.データベースアクセス

各処理で実施する処理内容は以下の通りです。

1.ホスト変数の定義

COBOL、DB間のデータ連携は変数定義した項目を利用する必要があります。この変数を利用してDBから取得したデータをCOBOLで加工、編集して利用する使い方になります。

2.共通領域の定義

DBで発生したエラー情報を格納する領域です。DB利用で発生したエラーをもとにエラーハンドリングして利用します。直接の処理をここで定義することはありません。

3.データベース接続

DBにアクセスする際は、ユーザID、パスワードを利用して接続することになります。
この接続についてもプログラミングして定義しておきます。

4.データベースアクセス

1~3の準備が整った後、初めてSQL文を記述することができます。今回ご紹介する「TRIM」関数はこの領域を利用してプログラミングしていきます。

1.ホスト変数の定義~3.データベース接続はSQLを利用する際は必ず必要になってきますので、一度サンプルを作成して他でも活用できるようにしておきましょう。

では基本的な処理構成について記述したサンプルプログラム(使用例1)を用意しましたので、その書き方について見ていきましょう。

使用例1

※今回のDBMSは、オープンソースの「PostgreSQL」を使用しています。
※USERNAME、PASSWORDはご自身の環境に合わせてご指定ください。(省略します)

応用-TRIMプログラム1-使用例1

テーブル(test4):
応用-TRIMの対応プログラム1-テーブル(test4)

実行結果:
応用-の対応プログラム1-実行結果1

COBOL(コボル)言語のDBアクセス「TRIM」の応用的な使い方

DBアクセスおよび「TRIM」関数の基本的な処理構成と書き方についてご理解いただけたでしょうか?今度は、応用的な使い方について考えていきましょう。TRIMは他に文字列の先頭の文字を削除する「LTRIM」と文字列の末尾の文字を削除する「RTRIM」を利用することができます。関数として2種類用意されており、先頭だけ、末尾だけ、という使い方ができますので実際に試してみましょう。なお、「LTRIM」「RTRIM」ともに削除する文字列を指定しなかった場合は「空白」が削除されます。

使用例2:

  1. IDENTIFICATION DIVISION.
  2. PROGRAM-ID. db_trim_sample02.
  3. ENVIRONMENT DIVISION.
  4. DATA DIVISION.
  5. WORKING-STORAGE SECTION.
  6. * 1.ホスト変数の定義
  7. EXEC SQL BEGIN DECLARE SECTION END-EXEC.
  8. 01 DBNAME PIC X(32) VALUE "testdb".
  9. 01 USERNAME PIC X(32) VALUE "********".
  10. 01 PASSWORD PIC X(32) VALUE "********".
  11. 01 WK-NAME PIC X(10).
  12. EXEC SQL END DECLARE SECTION END-EXEC.
  13.  
  14. * 2.共通領域の定義
  15. EXEC SQL INCLUDE SQLCA END-EXEC.
  16.  
  17. PROCEDURE DIVISION.
  18. * 3.データベース接続
  19. EXEC SQL
  20.  CONNECT :USERNAME IDENTIFIED BY :PASSWORD
  21.     USING :DBNAME
  22. END-EXEC.
  23.  
  24. * 4.データベースアクセス
  25. EXEC SQL
  26.  SELECT ltrim(tname,'1.')
  27.  INTO :WK-NAME
  28.  FROM test3
  29.  WHERE tid = '1'
  30. END-EXEC.
  31. DISPLAY WK-NAME.
  32.  
  33. EXEC SQL
  34.  SELECT rtrim(tname,':1')
  35.  INTO :WK-NAME
  36.  FROM test3
  37.  WHERE tid = '2'
  38. END-EXEC.
  39. STOP RUN.
  40. ND PROGRAM db_trim_sample02.

テーブル(test3):
応用-ORDERBYの対応プログラム2-テーブル(test3)

実行結果:
応用-ORDERBYの対応プログラム2-実行結果2

練習問題

最後に練習問題にチャレンジしてみましょう

問題) TRIMで削除される「空白」は、全角空白・半角空白のどちらも対象になるでしょうか?

答え)一般的に、デフォルトでは半角空白のみが削除対象になります。全角空白を削除したい場合は、削除する文字として全角空白を明示的に指定する必要があります。「TRIM」はちょっとした時に便利に活用できますので、覚えておきましょう。

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

あなたのCOBOL技術を活かしませんか?

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

COBOL入門のカテゴリー

|  基礎  |  応用  |  勉強  |  試験 |  辞書  |

取引企業様 募集中
COBOL技術者 募集
COBOL魂
COBOL入門
COBOL やばい COBOL 宗教