COBOL言語の関数「UPPER(LOWER)-CASE」ついて理解しよう! | 用語辞典

COBOL(コボル)言語の予約語「UPPER(LOWER)-CASE」を使用した文字変換とは

辞典・辞書-UPPER(LOWER)-CASE-イメージ

COBOL(コボル)言語の関数UPPER(LOWER)-CASEとは?

COBOL言語には、使用頻度の高い機能が、組み込み関数としてあらかじめ用意されています。

関数UPPER-CASEと関数LOWER-CASEも、COBOL言語で用意されている組み込み関数で、UPPER-CASEは小文字の英字を大文字に変換する機能があり、LOWER-CASEは大文字の英字を小文字に変換する機能があります。

COBOL言語では、通常、関数UPPER-CASEと関数LOWER-CASEは、MOVEなどの命令文で使用します。

UPPER-CASEの形式

UPPER-CASEは、引数に指定された文字列に含まれる小文字の英字を大文字に変換し、関数値として返却します。

■書式

FUNCTION UPPER-CASE(変換する文字)

■構文規則

<変換する文字>

変換する文字が含まれたデータ項目や定数を指定します。

■使用例

関数UPPER-CASEを使用するプログラム例をご紹介します。

以下のプログラム例では、小文字と大文字が入り混じった定数を、関数UPPER-CASEを使用し、全て大文字にして表示しています。

辞典・辞書-UPPER(LOWER)-CASE-使用例

■実行結果

辞典・辞書-UPPER(LOWER)-CASE-実行結果

小文字を含んだ文字列が全て大文字に変換され、プログラムが終了しました。

LOWER-CASEの形式

LOWER-CASEは、引数に指定された文字列に含まれる大文字の英字を小文字に変換し、関数値として返却します。

■書式

FUNCTION LOWER-CASE(変換する文字)

■構文規則

<変換する文字>

変換する文字が含まれたデータ項目や定数を指定します。

■使用例

関数LOWER-CASEを使用するプログラム例をご紹介します。

以下のプログラム例では、小文字と大文字が入り混じった定数を、関数LOWER-CASEを使用し、全て小文字にして表示しています。

辞典・辞書-UPPER(LOWER)-CASE-使用例

■実行結果

辞典・辞書-UPPER(LOWER)-CASE-実行結果

大文字を含んだ文字列が全て小文字に変換され、プログラムが終了しました。

関数UPPER(LOWER)-CASEのCOBOL(コボル)言語における基本事項やルールについて

関数UPPER-CASEは、引数に指定された英字、英数字、字類に含まれる小文字の英字を大文字に変換した文字列を関数値として返却する組み込み関数です。引数の長さと関数値の長さは同じになります。

関数LOWER-CASEは、引数に指定された英字、英数字、字類に含まれる大文字の英字を小文字に変換した文字列を関数値として返却する組み込み関数です。引数の長さと関数値の長さは同じになります。

どちらの関数も、英字の小文字と大文字が入れ替わることを除けば、引数と関数値の値は同じです。

COBOL(コボル)言語の関数UPPER(LOWER)-CASEを使うときの注意点

関数UPPER-CASEも関数LOWER-CASEも、指定する引数は1文字以上の長さが必要です。

長さが0文字の定数を引数に指定すると、コンパイル時に警告が出たり、コンパイラによっては致命的なエラーと解釈されたりすることがあります。

また、実行時に引数の長さが0文字の場合、スペースが指定されたと解釈されますが、関数の処理速度が遅くなることがあります。

関数UPPER(LOWER)-CASEを使ったCOBOL(コボル)プログラムの活用方法

COBOLプログラムのデータ処理では、英字の小文字と大文字を同じ値として扱わなければならない場合があります。例えば、人が使いやすいユーザインタフェース仕様として、英字は小文字でも大文字でも入力できる仕様にすることがあります。こうした場合、入力された英字をプログラム内では、大文字か小文字かのどちらかに統一して扱うために、関数UPPER-CASE、または関数LOWER-CASEを活用します。

では、コンソールからレコードキーの値(3桁の英数字)を入力し、索引順編成ファイル「SHOHIN-INDX」の該当するレコードを読み出して表示するプログラム例をご紹介します。入力仕様として、レコードキーの入力値の英字部分は、大文字でも小文字でもよいものとします。

  1. ******************************************************************
  2. * Author:
  3. * Date:
  4. * Purpose:
  5. * Tectonics: cobc
  6. ******************************************************************
  7. IDENTIFICATION DIVISION.
  8. PROGRAM-ID. UPPER-CASE_SAMPLE2.
  9.  
  10. ENVIRONMENT DIVISION.
  11. INPUT-OUTPUT SECTION.
  12. FILE-CONTROL.
  13. SELECT IN-FILE ASSIGN TO "SHOHIN-INDX"
  14. ACCESS MODE IS RANDOM
  15. ORGANIZATION IS INDEXED
  16. RECORD KEY IS IN-CODE.
  17.  
  18. DATA DIVISION.
  19. FILE SECTION.
  20. FD IN-FILE.
  21. 01 IN-REC.
  22. 03 IN-CODE PIC X(03).
  23. 03 IN-HINMEI PIC X(10).
  24. 03 IN-KAKAKU PIC 9(04).
  25.  
  26. WORKING-STORAGE SECTION.
  27. 01 WORKING-AREA.
  28. 03 CNSL-INPUT PIC X(03).
  29.  
  30. *-------------------------------------------
  31. * 主手続
  32. *-------------------------------------------
  33. PROCEDURE DIVISION.
  34. MAIN-PROCEDURE.
  35. * メッセージ表示&入力
  36. MOVE SPACE TO CNSL-INPUT.
  37. DISPLAY "製品コード(3桁)を入力してください".
  38. ACCEPT CNSL-INPUT FROM CONSOLE.
  39.  
  40. * ファイルオープン
  41. OPEN INPUT IN-FILE.
  42.  
  43. * レコード読み出しと表示
  44. MOVE FUNCTION UPPER-CASE(CNSL-INPUT) TO IN-CODE.
  45. READ IN-FILE
  46. INVALID KEY
  47. DISPLAY "入力された番号のレコードが存在しません"
  48. GO TO END-PROC
  49. NOT INVALID KEY
  50. DISPLAY IN-REC
  51. END-READ.
  52.  
  53. *終了処理
  54. END-PROC.
  55. CLOSE IN-FILE.
  56. STOP RUN.
  57. END PROGRAM UPPER-CASE_SAMPLE2.

■索引順編成ファイル「SHOHIN-INDX」のレコード様式とレコード内容

索引順編成ファイル「SEIHIN」は、3桁の製品コード(キー)の昇順に並び、「A01」~「A05」までが登録されています。

製品コード
3桁
製品名
10桁
製品価格
4桁

レコード1:A01りんご 0300

レコード2:A02めろん 1000

レコード3:A03みかん 0200

レコード4:A04ばなな 0180

レコード5:A05いちご 0800

■実行結果

はじめに製品コードの入力を促すメッセージが表示されます。

辞典・辞書-UPPER(LOWER)-CASE-実行結果

英数字の「a05」を入力してみます。

辞典・辞書-UPPER(LOWER)-CASE-入力例

製品コード「A05」のレコードが表示され、プログラムが終了しました。

次に、製品コードに「A05」を入力してみます。

辞典・辞書-UPPER(LOWER)-CASE-入力例

「a05」を入力したときと同じく、製品コード「A05」のレコードが表示され、プログラムが終了しました。

関数UPPER-CASEと関数LOWER-CASEによる英字の大文字と小文字の変換は、実務でもよく使用されるCOBOLプログラムの基本的なテクニックです。ぜひ、使い方を覚えて活用しましょう。

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

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

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

COBOL入門のカテゴリー

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

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