お問い合わせ

ホーム > COBOLのはなし > COBOL 第5次規格 新機能紹介 〜TRIM組込関数〜

COBOL 第5次規格 新機能紹介 〜TRIM組込関数〜

野村 芳明(日本電気株式会社 クラウドプラットフォーム事業部)

はじめに

本稿では、COBOL 第5次国際規格(COBOL 2014)の新機能である、TRIM組込関数について説明します。

利用例

TRIM組込関数は、引数の文字列から先頭や末尾の空白を削除した文字列を返します。

以下にプログラム例を示します。

プログラム
01  SRC PIC X(10) VALUE "␣␣AB␣CD␣␣␣".

   DISPLAY "[" FUNCTION TRIM( SRC          ) "]".
   DISPLAY "[" FUNCTION TRIM( SRC LEADING  ) "]".
   DISPLAY "[" FUNCTION TRIM( SRC TRAILING ) "]".
実行結果
[AB␣CD]
[AB␣CD␣␣␣]
[␣␣AB␣CD]

言語仕様

一般形式

FUNCTION TRIM ( 引数 [ LEADING | TRAILING ] )

引数

引数には、英字、英数字、又は各国文字のデータ項目を指定できます。

関数の返却値

  • LEADING 指定がある場合、引数の空白でない最左端文字位置から、最右端文字位置までの文字からなる文字列が、返却値となります。
  • TRAILING 指定がある場合、引数の最左端文字位置から,空白でない最右端文字位置までの文字からなる文字列が、返却値となります。
  • LEADING 指定も TRAILING 指定もない場合、引数の空白でない最左端文字位置から、空白でない最右端文字位置までの文字からなる文字列が、返却値となります。

引数の型に対する関数の型は以下の通りです。

引数の型関数の型
英字英数字
英数字英数字
各国文字各国文字

従来手段、他言語との比較

INSPECT文/UNSTRING文

従来、TRIM組込関数と同等の処理を実現するには、先頭や末尾の空白の数を調べるために文字列を 1文字ずつ走査する処理を、利用者が記述する必要がありました。限定的に、INSPECT文や UNSTRING文で記述できる場合もありますが、TRIM組込関数を用いることで、全ての場合について簡潔で直接的な記述を行えるようになります。

文字列操作文TRIM組込関数相当の処理を記述する場合
INSPECT文TALLYING 一意名 FOR LEADING SPACE の指定を行うことで先頭の空白の数を取得できますが、空白を削除した文字列を抽出するためには、部分参照などを用いた転記処理も組み合わせて記述する必要があります。また、末尾の空白の数を取得することはできません。
UNSTRING文空白の個数があらかじめ分かっており(分割した中で何番目が目的の文字列かが固定であり)、先頭と末尾以外に空白が含まれていない場合に限り、DELIMITED BY SPACE の指定を行うことで TRIM組込関数と同等の結果を得ることができます。

SQL

SQL でも TRIM組込関数と同等の機能を持つ TRIM関数、LTRIM関数、RTRIM関数が提供されています(LTRIM関数、RTRIM関数は規格では既定されていませんが、多くの DBMS で独自に提供されています)。データベースを埋め込み SQL 等で処理する COBOL プログラムの場合は、これらの関数を利用することもできます。

TRIM組込関数同等機能の SQL関数
LEADING指定ありLTRIM関数
TRAILING指定ありRTRIM関数
LEADING指定も TRAILING指定もなしTRIM関数

まとめ

COBOL 第5次規格の新機能として TRIM組込関数について紹介しました。TRIM組込関数を用いることで、文字列の先頭や末尾の空白を削除する処理を従来よりも簡潔に記述することができます。