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

  1. FEnetインフラ
  2. FEnetテックマガジン
  3. プログラミング
  4. COBOLにおける条件分岐について・IF文による複数の分岐の方法

COBOLにおける条件分岐について・IF文による複数の分岐の方法

  • プログラミング
公開日時:   更新日時:
COBOLにおける条件分岐について・IF文による複数の分岐の方法
この記事でわかること
    基本情報技術者試験の試験対策はこちら>>
    最新情報や関心のある情報を毎日お届け。  FEnetインフラメールマガジン    メルマガ登録はこちらから>>

    COBOLにおける条件分岐について


    この記事では、COBOLにおける条件分岐、特に条件によって複数に分岐するプログラムについて、説明していきます。

    COBOLというプログラミング言語自体は、作られてから既に半世紀以上が経過していますが、金融業界などでは、現在でも使われている言語です。そんなCOBOLにおける、条件分岐について知りたい方は是非ご覧ください。

    条件分岐の方法

    では、基本的な条件分岐の方法としてまずは、IF-THEN型のコードを見てみます。

    このプログラムでは、変数numが13ならば、「num is 13」と出力し、そうでなければ何もしないというプログラムです。では、変数numが13ではない場合、「num is not 13」と出力するように改造してみましょう。

    このように、

    とすることで、条件分岐を行うことが出来ます。

    IF文による複数の分岐の方法

    COBOLにおけるシンプルな条件分岐についてサンプルコードを見てきたところで、ここからは複数に分岐する場合の書き方を見ていきます。

    例として、前出のサンプルプログラムを改造し、変数numの値が10だったら「num is 10」と、変数numの値が13だったら「num is 13」と、それ以外ならば「num is other」と表示させるようなプログラムを考えてみましょう。

    COBOL以外では…

    ifとelseの間に、elseifという構文が用意されているプログラミング言語もあります。その代表格がPHPです。PHPは1995年に公開されてから、現在でもWEBアプリケーションなどの分野で利用されているプログラミング言語です。

    さて、PHPで複数の分岐を書こうとすると、以下のようなコードになります。

    ここで注目したいのは、ifとelseの間にelseif (条件式) という構文があることです。この構文によって、変数numが10の場合、13の場合、それ以外の場合に分岐させることができるのです。

    COBOLで複数の分岐を行う

    PHPでは、elseifという構文が用意されていました。しかし、COBOLでは、このような構文は用意されていません。 よって、COBOLでは、ELSEの中に入れ子(ネスト)にして新たな、IF文を書かなければなりません。

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

    注目すべきは、「IF num = 13 THEN」が書かれている位置です。このIF文全体が「IF num = 10 THEN」のELSEの中に書かれていることが分かると思います。

    このように、変数numが10の場合、13の場合、それ以外の場合に分岐させるには、ELSEの中にさらにIF文を書いてあげると想定通り、正しく動きます。

    ELSE IFを用いる方法

    このように、COBOLでは、入れ子構造にしなければならないのですが、一方で、IF文の中にIF文があって、さらにその中にIF文があって…となった場合、非常に分かりにくくなってしまいます。上述のPHPのようにelseifで区分けされていると、プログラム全体の見通しが良くなり、分かりやすいソースコードとなります。

    そこで、COBOLのソースコードを少し工夫して、見やすくする書き方もあります。それが、このようなコードです。

    このように、インデントの位置と改行を少し変更すれば、まるで、ELSE IF構文があるかのような見た目となり、プログラムの可読性が上がります。IF文で複数の分岐を行わなければならない際は、このような分かりやすくするための工夫も行う必要があるでしょう。

    プログラムの例

    それでは、ここまでで紹介したことを踏まえ、おみくじをひけるサンプルプログラムを、COBOLで作成してみましょう。

    ここで、「DISPLAY “======おみくじ======“」より上の2行は、現在の時刻を取得し、ミリ秒のみを取り出して、変数numに格納するプログラムです。

    ミリ秒は0~99までの値を取りうるため、IF文を使って条件分岐しています。ソースコードを見ると分かるように、変数numが10未満ならば「大吉」、30未満ならば「中吉」、95未満ならば「吉」、いずれにも該当しなければ「凶」と表示されます。

    COBOLの条件分岐を使いこなそう

    いかがでしたでしょうか。COBOLでは、他のプログラミング言語で見られるelseifなどの構文はありません。そのため複数に分岐する場合は、入れ子(ネスト)を利用した分岐処理を書かなければなりませんでした。

    ぜひここで紹介したソースコードやご自身で作ったプログラムを実際に動かしてみて、COBOLにおける条件分岐を使いこなしてみてください。

    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