エンジニアの転職を支援するFEnetインフラのテックブログ。ネットワークなどのITインフラ情報を中心に発信中。

  1. FEnetインフラ
  2. FEnetテックマガジン
  3. テクノロジー
  4. COBOLにおけるEVALUATEとは|EVALUATE文の使い方

COBOLにおけるEVALUATEとは|EVALUATE文の使い方

  • テクノロジー
  • プログラミング
公開日時:   更新日時:
COBOLにおけるEVALUATEとは|EVALUATE文の使い方
この記事でわかること
    基本情報技術者試験の試験対策はこちら>>

    COBOLにおけるEVALUATE


    今回は、金融業界などで多々使われているプログラミング言語「COBOL」における、EVALUATE文について紹介します。

    英語で 「evaluate」とは、「査定する、評価する」といった意味の英単語です。しかし、プログラミング言語で「査定」と言われてもピンとこない方は多いのではないでしょうか。

    この言葉は、プログラミング言語の中でも、COBOLにおいて、IF文と深い関わりがあるキーワードとして利用されています。

    本記事では、COBOLのEVALUATE文について詳しく紹介して行きますので、興味のある方はぜひご覧ください。

    EVALUATEとは?

    ここからは、EVALUATE文について紹介します。結論から言うと、EVALUATEとは、複数に条件分岐するために用いるキーワードです。

    早速、実際のソースコードを見てみましょう。

    EVALUATEは条件分岐の方法

    EVALUATE文を用いたソースコードはこのようになります。

    基本的なEVALUATE文を用いたコードはこの様になっています。このプログラムは、変数numに10が入っていれば「num is 10」と、13が入っていれば「num is 13」と、それ以外が入っていた場合は「num is other」と表示されるようになっています。

    このように、シンプルな使い方としては、

    と書くことが出来ます。これは、ある変数の値を判定して、WHENの直後にある値と一致していたら、その後ろに書かれている処理を実行する構文になっています。

    IF文との使い分け

    COBOLにおいて、IF文もEVALUATE文も、条件分岐するための構文です。そのため、IF文とEVALUATE文は、分岐する数によって使い分けることが必要です。

    IF文は2つ、または3つに分岐する場合にのみ利用するようにしましょう。もちろん、4つ以上に分岐する場合でも、IF文で書くことは可能ですが、非常に見にくくなってしまいます。

    まずは、IF文で書いたプログラムを見てみましょう。

    これは、入力された1~4の数字に基づいて、別々のメッセージを表示させるプログラムです。

    これと同様のプログラムを、EVALUATE文を用いて作成すると、このようになります。

    IF文を用いたプログラムは文字数や行数も多く、またEND-IFもたくさん書かれており、読みにくいコードとなっています。対して、EVALUATE文を用いたプログラムでは、全体的にすっきりしており、読みやすいプログラムとなっています。

    このように、複数に分岐する場合は、IF文ではなくEVALUATE文を用いると合理的です。

    他のプログラミング言語では?


    ここまでCOBOLのEVALUATE文について見てきました。ここで、「EVALUATE文の代わりにswitch文を用いる」「eval関数には注意」といった内容から他の言語との関係性について、すこし説明します。

    EVALUATE文の代わりにswitch文を用いる

    COBOLにある、同じく条件分岐を行うための「IF」というキーワードは、他のプログラミング言語でも、キーワードとして登録されていることが多い言葉です。

    一方の「EVALUATE」は、COBOLを含むいくつかのプログラミング言語でしか、キーワードとして利用することが出来ません。

    COBOLにおけるEVALUATE文と似たようなことを他のプログラミング言語で実現するには、switch文を利用します。

    この記事の「EVALUATEは条件分岐の方法」の節で、変数numが10、13、それ以外で場合分けし、それぞれメッセージを表示するプログラムを見てきました。これを、JavaScriptで再現すると、このようになります。

    上記のように、EVALUATEの代わりにswitchを、WHENの代わりにcaseを用いています。JavaScriptは、WEBページに動きをつけるために、広く利用されているプログラミング言語ですが、JavaやPHP、C言語などの有名なプログラミング言語でも似たような構文が存在しています。

    eval関数には注意

    evaluateは、はじめにも書いた通り、「査定する、評価する」という意味の英単語です。

    COBOLにはありませんが、これを縮めた「eval」という構文を持つプログラミング言語もあります。その代表例が先程も出てきたJavaScriptです。

    これはJavaScriptのソースコードですが、「eval」というキーワードが登場しているのが見て分かるでしょう。

    これは、与えられた文字列をプログラムとして解釈し、実行する、というキーワードです。

    このように、同じevaluateという英単語に由来するキーワードですが、COBOLにおけるEVALUATEと、他のプログラミング言語におけるevalは全くの別物なので、注意してください。

    便利なEVALUATE文の使い方

    ここからは、COBOLにおけるEVALUATE文のもっと便利な使い方を紹介していきます。とはいえ、以下のような基本の構文を理解した上であれば、何も難しいことはありません。

    範囲の指定

    EVALUATE文では、WHENのあとに書かれる「変数の値」に、範囲で指定することが出来ます。例えば、現在の日付を取得し、春夏秋冬のどれに当たるのかを判定するプログラムを作ってみましょう。

    このプログラムで「DISPLAY “現在の季節は…”」より上は現在の月を取得して、変数monに格納しています。このように、WHENの後ろに、「 (数値) THRU (数値) 」と入力することで、その数の間に含まれる値をすべて指定することが出来ます。

    処理の合流

    EVALUATE文では、WHEN (変数の値)の後ろに続けてWHEN (変数の値)を書くことも出来ます。こうすることで、処理を合流させることが出来ます。次のプログラムを見てみましょう。

    5以下の自然数を入力し、それが偶数なのか奇数なのか判定するプログラムです。このプログラムでは、WHEN節を続けて書くことで、処理を合流させています。

    EVALUATEを上手く利用しよう

    いかがでしたでしょうか。COBOLにおけるEVALUATEを用いた条件分岐の方法を説明してきました。IF文と違いEVALUATE文は、より多くの条件分岐を行う際に、コードが見やすくなるなど、有用な構文です。

    ここで紹介したソースコードを書いたり、実際に実行してみたりして、理解を深めてください。

    FEnetを運営しているネプラス株式会社はサービス開始から10年以上
    『エンジニアの生涯価値の向上』をミッションに掲げ、
    多くのインフラエンジニア・ネットワークエンジニアの就業を支援してきました。
    ネプラス株式会社ロゴ

    ネプラス株式会社はこんな会社です

    秋葉原オフィスにはネプラス株式会社をはじめグループのIT企業が集結!
    数多くのエンジニアが集まります。

    秋葉原オフィスイメージ
    • インフラ業界に特化

      インフラ業界に特化

      ネットワーク・サーバー・データベース等、ITインフラ業界に特化。Cisco Systemsプレミアパートナーをはじめ各種ベンダーのパートナー企業です。

      業界を知り尽くしているからこそ大手の取引先企業、経験豊富なエンジニアに選ばれています。

    • 正社員なのにフリーランスのような働き方

      正社員なのにフリーランスのような働き方

      正社員の方でも希望を聞いたうえでプロジェクトをアサインさせていただいており、フリーランスのような働き方が可能。帰社日もありません。

      プロジェクト終了後もすぐに次の案件をご紹介させていただきますのでご安心ください。

    • 大手直取引の高額案件

      大手直取引の高額案件

      案件のほとんどが大手SIerやエンドユーザーからの直取引のためエンジニアの皆様へに高く還元できています。

      Ciscoをはじめ、Juniper、Azure、Linux、AWS等インフラに特化した常時300件以上の案件があります。

    • スキルアップ支援

      スキルアップ支援

      不要なコストを削減し、その分エンジニアの方へのスキルアップ支援(ネットワーク機器貸出、合格時の受験費用支給など)や給与で還元しています。

      受験費用例)CCNP,CCIE:6-20万円、JNCIS:3-4万円、AWS:1-3万円など

      ※業務に関連する一定の資格のみ。各種条件がありますので詳しくは担当者へにお尋ねください。

    • 現給与を保証します!

      100%現給与保証

      前職の給与保証しており、昨年度は100%の方が給与アップを実現。収入面の不安がある方でも安心して入社していただけます。

      ※適用にはインフラエンジニアの業務経験1年以上、等一定の条件がございます。

    • インセンティブ制度

      インセンティブ制度

      ネットワーク機器の販売・レンタル事業等、売上に貢献いただいた方にはインセンティブをお支払いしています。

      取引先企業とエンジニア側、双方にメリットがあり大変好評をいただいています。

    • 社会保険・福利厚生

      社会保険・福利厚生

      社員の方は、社会保険を完備。健康保険は業界内で最も評価の高い「関東ITソフトウェア健康保険組合」です。

      さらに様々なサービスをお得に利用できるベネフィットステーションにも加入いただきます。

    • 東証プライム上場企業グループ

      東証プライム上場企業グループ

      ネプラスは東証プライム上場「株式会社夢真ビーネックスグループ」のグループ企業です。

      安定した経営基盤とグループ間のスムーズな連携でコロナ禍でも安定した雇用を実現させています。

    ネプラス株式会社に興味を持った方へ

    ネプラス株式会社では、インフラエンジニアを募集しています。

    年収をアップしたい!スキルアップしたい!大手の上流案件にチャレンジしたい!
    まずは話だけでも聞いてみたい場合もOK。お気軽にご登録ください。

    ネプラス株式会社へのご応募はこちら↓
    ネプラス株式会社へのご応募はこちら↓

    COBOL新着案件New Job