COBOL言語の関数「INTEGER、INTEGER-PART」ついて理解しよう! | 用語辞典

COBOL(コボル)言語の組み込み関数「INTEGER、INTEGER-PART」を使用した数値の整数化とは

辞典・辞書-INTEGER_INTEGER-PART-イメージ

COBOL(コボル)言語の関数INTEGER、INTEGER-PARTとは?

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

関数INTEGERと関数INTEGER-PARTは、COBOL言語で用意されている組み込み関数で、数値データを整数に変換する機能があります。

INTEGERの形式

INTEGERは、引数に指定された数値データの値以下の最大値になる整数を関数値として返却します。

■書式

FUNCTION INTEGER(変換する数値データ)

■構文規則

<変換する数値データ>

変換する数値データ項目や数値定数を指定します。

■使用例

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

以下のプログラム例では、マイナスの数値定数「-1.5」とプラスの数値定数「+1.5」を、関数INTEGERを使用して、整数値に変換しています。

辞典・辞書-INTEGER_INTEGER-PART-使用例

■実行結果

辞典・辞書-INTEGER_INTEGER-PART-実行結果

マイナスの数値定数「-1.5」とプラスの数値定数「+1.5」が、それぞれの値以下で最大値となる整数に変換され、プログラムが終了しました。

INTEGER-PARTの形式

INTEGER-PARTは、引数に指定された数値データの整数部を取り出し、関数値として返却します。

■書式

FUNCTION INTEGER-PART(変換する数値データ)

■構文規則

<変換する数値データ>

変換する数値データ項目や数値定数を指定します。

■使用例

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

以下のプログラム例では、マイナスの数値定数「-1.5」とプラスの数値定数「+1.5」を、関数INTEGER-PARTを使用し、整数値に変換しています。

辞典・辞書-INTEGER_INTEGER-PART-使用例

■実行結果

辞典・辞書-INTEGER_INTEGER-PART-実行結果

マイナスの数値定数「-1.5」とプラスの数値定数「+1.5」から整数部が取り出され、プログラムが終了しました。

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

関数INTEGERは、引数に指定された数値データ項目や数値定数の値以下になる最大の整数を、関数INTEGER-PARTは、引数に指定された数値データ項目や数値定数の整数部を、関数値として返却する組み込み関数です。

どちらの関数も引数にゼロを指定した場合、ゼロが返却されます。

また、どちらの関数も引数がゼロ以上の場合、返却される関数値は同じですが、引数がゼロ未満の場合、返却される関数値が異なること覚えておきましょう。

COBOL(コボル)言語の関数INTEGER、INTEGER-PARTを使うときの注意点

関数INTEGER-PARTは引数の整数部を返却するので理解しやすいのですが、関数INTEGERは引数以下の最大整数を返却するため、引数がマイナスの場合には注意が必要です。

例えば、「-1.5」を引数に指定すると、「-2」が返却されますが、「-2」ではなく「-1」が返却されると勘違いしやすいので注意してください。

関数INTEGER、INTEGER-PARTを使ったCOBOL(コボル)プログラムの活用方法

業務プログラムでは、小数部のある数値データを値域ごとに集計し、最終的に小数部を切り捨てて整数化しなければならない場合があります。そうした場合、整数化手法のひとつとして、関数INTEGERや関数INTEGER-PARTを使用することができます。

では、0.1から9.9までの値をコンソールからランダムに入力し、整数部ごとの入力値の合計、合計の小数点以下を切り捨て整数化した値、および入力回数を表示するプログラム例をご紹介します。

ピンク色のマーカー部分が、整数化に関数INTEGER、または関数INTEGER-PARTを使用している部分です。

  1. ******************************************************************
  2. * Author:
  3. * Date:
  4. * Purpose:
  5. * Tectonics: cobc
  6. ******************************************************************
  7. IDENTIFICATION DIVISION.
  8. PROGRAM-ID. INTEGER_SAMPLE3.
  9. DATA DIVISION.
  10. WORKING-STORAGE SECTION.
  11. 01 WORKING-AREA.
  12. 03 CNSL-INPUT PIC S9(3)V9.
  13. 03 SHUKEI OCCURS 10.
  14. 05 SHU-CNT PIC 9(3) VALUE ZERO.
  15. 05 SHU-TOTAL PIC 9(3)V9 VALUE ZERO.
  16. 03 SHUKEI-IDX PIC 9(2).
  17. 03 DISP-SHUKEI.
  18. 05 D-IDX1 PIC 99.
  19. 05 D-DLM1 PIC X(1) VALUE "-".
  20. 05 D-IDX2 PIC 99.
  21. 05 D-DLM2 PIC X(6) VALUE ":合計[".
  22. 05 D-SHU-TOTAL PIC 999.9.
  23. 05 D-DLM3 PIC X(12) VALUE "]--> 整数部[".
  24. 05 D-INT-TOTAL PIC 999.
  25. 05 D-DLM4 PIC X(12) VALUE "] 入力回数[".
  26. 05 D-SHU-CNT PIC 999.
  27. 05 D-DLM5 PIC X(1) VALUE "]".
  28.  
  29. *-------------------------------------------
  30. * 主手続
  31. *-------------------------------------------
  32. PROCEDURE DIVISION.
  33. DISPLAY "整数部1桁、小数部1桁の正の値を入力してください".
  34. DISPLAY "集計を終了する場合は0以下の値を入力してください".
  35. MOVE 1 TO CNSL-INPUT.
  36. PERFORM SHUKEI-PROC UNTIL CNSL-INPUT <= 0.0.
  37. PERFORM DISP-PROC.
  38. STOP RUN.
  39.  
  40. *-------------------------------------------
  41. * 集計処理
  42. *-------------------------------------------
  43. SHUKEI-PROC.
  44. * コンソール入力
  45. ACCEPT CNSL-INPUT FROM CONSOLE.
  46.  
  47. * 合計値と入力回数の集計
  48. IF CNSL-INPUT > 0 THEN
  49. MOVE FUNCTION INTEGER(CNSL-INPUT)
  50. TO SHUKEI-IDX
  51. ADD CNSL-INPUT TO SHU-TOTAL(SHUKEI-IDX)
  52. ADD 1 TO SHU-CNT(SHUKEI-IDX)
  53. END-IF.
  54. EXIT.
  55.  
  56. *-------------------------------------------
  57. * 集計結果の表示処理
  58. *-------------------------------------------
  59. DISP-PROC.
  60. DISPLAY "集計結果".
  61. PERFORM VARYING SHUKEI-IDX FROM 1 BY 1
  62. UNTIL SHUKEI-IDX = 10
  63. IF SHU-CNT(SHUKEI-IDX) > 0 THEN
  64. SUBTRACT 1 FROM SHUKEI-IDX GIVING D-IDX1
  65. MOVE SHUKEI-IDX TO D-IDX2
  66. MOVE SHU-TOTAL(SHUKEI-IDX) TO D-SHU-TOTAL
  67. MOVE FUNCTION INTEGER-PART(SHU-TOTAL(SHUKEI-IDX))
  68. TO D-INT-TOTAL
  69. MOVE SHU-CNT(SHUKEI-IDX) TO D-SHU-CNT
  70. DISPLAY DISP-SHUKEI
  71. END-IF
  72. END-PERFORM.
  73. EXIT.
  74.  
  75. END PROGRAM INTEGER_SAMPLE3.

■実行結果

はじめに集計データの入力を促すメッセージが表示されます。

辞典・辞書-INTEGER_INTEGER-PART-実行結果

集計データとして、1.1、1.2、2.2、4.4を入力してみます。

辞典・辞書-INTEGER_INTEGER-PART-入力

集計を終了させるために、0を入力します。

辞典・辞書-INTEGER_INTEGER-PART-入力例

集計結果が表示され、プログラムが終了しました。

関数INTEGERと関数INTEGER-PARTによる数値の整数化は、使い方を正しく覚えてしまえば、実務でも便利に使えるテクニックです。ぜひ、使い方を覚えて活用しましょう。

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

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

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

COBOL入門のカテゴリー

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