COBOL言語の「LOW-VALUE」の使い方について理解しよう!|基礎ガイド

COBOL(コボル)言語の最小の値を持つLOW-VALUEとは

基礎-LOW-VALUE-イメージ

COBOL(コボル)言語のLOW-VALUEとは?

COBOL(コボル)言語には変数の値を初期化したり、初期値として値を持たせたり、条件として比較したりする場合に予め用意された予約語があります。その1つが今回ご紹介するLOW-VALUEです。

LOW-VALUEはある変数に対して値を全て「00」で埋めるという機能を持ちます。これはCOBOL言語上、最小の値を有する事を意味します。では早速LOW-VALUEの書き方、使用例について見ていきましょう。

書き方:

LOW-VALUE

使用例:

基礎-LOW-VALUE-使用例

使用例は、ある基本項目、集団項目に対してZEROとLOW-VALUEを移送し、ZEROと値の大きさを比較しています。ZEROより値が小さい場合はそれがわかるメッセージを表示します。この使用例で、LOW-VALUEが0よりも小さい事がご理解いただけるかと思います。

実行結果:

基礎-LOW-VALUE-実行結果

COBOL(コボル)言語のHIGH-VALUEとは?

LOW-VALUEと対になる予約語についても紹介しておきます。それはHIGH-VALUEです。

HIGH-VALUEはある変数に対して値を全て16進数「FF」で埋めるという機能を持ちます。これはCOBOL言語上、最大の値を有する事を意味します。

HIGH-VALUEはLOW-VALUEと共に、ある条件の範囲が不明な場合に合わせて使用される事がありますので、その書き方、使用例について合わせて覚えておくようにしましょう。

書き方:

HIGH-VALUE

使用例:

基礎-LOW-VALUE-使用例1

使用例は、ある基本項目、集団項目に対してHIGH-VALUEを移送し、99、9999999と値の大きさを比較しています。99、9999999より値が大きい場合はそれがわかるメッセージを表示します。この使用例で、HIGH-VALUEが99、9999999よりも大きい事がご理解いただけるかと思います。

実行結果:

基礎-LOW-VALUE-実行結果1

LOW-VALUEのCOBOL(コボル)言語における基本事項や注意事項

  1. LOW-VALUEは、英数字と同じように値の初期値として使用する事ができます。
  2. LOW-VALUEは、英数字と同じようにある変数に対して値を移送する事ができます。
  3. LOW-VALUEは、英数字と同じように条件式の比較対象として指定できます。
  4. LOW-VALUEは16進数「00」を有するため、値を画面表示させてもお使いの環境によっては何も表示されない場合があります。

LOW-VALUEを使ったCOBOL(コボル)プログラムの活用法

プログラムの中である条件に合致する値を取得したいが、条件として指定する値が定まらないという事があります。

このような場合にもLOW-VALUEは有効です。LOW-VALUEは初期値として、また条件比較する際にも使用できます。

ここではDBから値を取得する場合を例として用意しましたので、その使用例を確認しましょう。WHERE句にTABLEのキー項目を条件指定できている事にも注目です。

サンプルプログラム(LOWVALUE_SAMPLE03):

  1. IDENTIFICATION DIVISION.
  2. PROGRAM-ID. LOWVALUE_SAMPLE03.
  3. ENVIRONMENT DIVISION.
  4. DATA DIVISION.
  5. *****************************************************
  6. WORKING-STORAGE SECTION.
  7. * 1.ホスト変数の定義
  8. EXEC SQL BEGIN DECLARE SECTION END-EXEC.
  9. 01 DBNAME PIC X(32) VALUE "testdb".
  10. 01 USERNAME PIC X(32) VALUE "********".
  11. 01 PASSWORD PIC X(32) VALUE "********".
  12. 01 TID-L PIC X(4) VALUE LOW-VALUE.
  13. 01 TID PIC X(4).
  14. 01 TNAME PIC X(10).
  15. 01 SW-AREA.
  16. 03 SW-NOTFOUND PIC X(01) VALUE SPACE.
  17. 01 CST-AREA.
  18. 03 CST-1X PIC X(01) VALUE "1".
  19. 03 CST-SQL-NF PIC S9(09) COMP-5 VALUE +100.
  20. EXEC SQL END DECLARE SECTION END-EXEC.
  21. *****************************************************
  22. * 2.共通領域の定義
  23. EXEC SQL INCLUDE SQLCA END-EXEC.
  24. *****************************************************
  25. PROCEDURE DIVISION.
  26. MAIN-RTN SECTION.
  27. * 3.データベース接続
  28. EXEC SQL
  29. CONNECT :USERNAME IDENTIFIED BY :PASSWORD
  30. USING :DBNAME
  31. END-EXEC.
  32. * 4.データベースアクセス
  33. *** DB カーソルオープン処理
  34. PERFORM OPEN-RTN.
  35. *** DB FETCH処理
  36. PERFORM FETCH-RTN UNTIL SW-NOTFOUND = CST-1X.
  37. *** DB カーソルクローズ処理
  38. PERFORM CLOSE-RTN.
  39. STOP RUN.
  40. MAIN-EXIT.
  41. *****************************************************
  42. *** DB カーソルオープン処理
  43. OPEN-RTN SECTION.
  44. EXEC SQL
  45. DECLARE CSR01 CURSOR FOR
  46. SELECT tid,tname
  47. FROM test
  48. WHERE tid >= :TID-L
  49. ORDER BY tid
  50. END-EXEC.
  51. EXEC SQL
  52. OPEN CSR01
  53. END-EXEC.
  54. OPEN-EXIT.
  55. *****************************************************
  56. *** DB FETCH処理
  57. FETCH-RTN SECTION.
  58. EXEC SQL
  59. FETCH CSR01
  60. INTO :TID,:TNAME
  61. END-EXEC.
  62. *
  63. IF SQLCODE = CST-SQL-NF
  64. THEN
  65. MOVE CST-1X TO SW-NOTFOUND
  66. ELSE
  67. DISPLAY TID TNAME
  68. END-IF.
  69. FETCH-EXIT.
  70. *****************************************************
  71. *** DB カーソルクローズ処理
  72. CLOSE-RTN SECTION.
  73. EXEC SQL
  74. CLOSE CSR01
  75. END-EXEC.
  76. CLOSE-EXIT.
  77. *****************************************************
  78. END PROGRAM LOWVALUE_SAMPLE03.

テーブル(test):処理実行前

基礎-LOW-VALUE-処理実行前2

実行結果:

基礎-LOW-VALUE-実行結果2

いかがでしたでしょうか?COBOL(コボル)言語はこのように複雑になりがちな、またどう書けば悩むようなものが予約語として用意されている事があります。他のプログラミング言語を学習したCOBOL(コボル)言語入門者からすると、少し見慣れない内容で戸惑う事もあるかもわかりませんが、COBOL(コボル)言語用語辞典なども活用しながら予約語を少しずつ理解しコーディングの幅を広げていっていただければと思います。

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

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

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

COBOL入門のカテゴリー

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