COBOLサンプルソース集)Tips

条件記述の簡素化

IF命令で入り子の中に更に入り子というのは見た目もよくないし、解かり辛い。同じ項目での比較であれば、EVALUATE命令を利用するのもひとつの手法ですよ、と。

************************************************
*    IF文の簡略化 サンプル
************************************************
IF  A-ITEM   =  "1"
    IF  B-ITEM   =  "1"
        MOVE  "1"  TO  FLAG
    ELSE
        MOVE  "2"  TO  FLAG
    END-IF
ELSE
    IF  A-ITEM   =  "2"
        IF  B-ITEM   =  "1"
            MOVE  "3"  TO  FLAG
        ELSE
            MOVE  "4"  TO  FLAG
        END-IF
    ELSE
        IF  A-ITEM   =  "3"
            MOVE  "5"  TO  FLAG
        ELSE
            MOVE  "6"  TO  FLAG
        END-IF
    END-IF
END-IF.

↓↓↓↓↓↓↓↓↓↓↓↓

EVALUATE   A-ITEM  ALSO  B-ITEM
    WHEN   "1"     ALSO  "1"
        MOVE   "1"     TO      FLAG
    WHEN   "1"     ALSO  ANY
        MOVE   "2"     TO      FLAG
    WHEN   "2"     ALSO  "1"
        MOVE   "3"     TO      FLAG
    WHEN   "2"     ALSO  ANY
        MOVE   "4"     TO      FLAG
    WHEN   "3"     ALSO  ANY
        MOVE   "5"     TO      FLAG
    WHEN   OTHER
        MOVE   "6"     TO      FLAG
END-EVALUATE.

最大ページ数を求める

帳票印刷プログラムなどで、「15/30ページ」なんて感じの出力をしなきゃいけない時もあります。最終ページを求めるための簡単な手法サンプルです。 ※1ページは40行と想定しています。  

************************************************
*    最大ページの算出方法 サンプル
************************************************

 WORKING-STORAGE            SECTION.
 77  DATA-CNT     PIC  9(05).    *>データ件数
 77  MAX-PAGE     PIC  9(03).    *>最大ページ数
 77  AMARI        PIC  9(01).    *>余り計算用

*  =============<<  中略  >>====================

     MOVE    ZERO      TO    AMARI.
     DIVIDE  DATA-CNT  BY    40  GIVING  MAX-PAGE
                             REMAINDER   AMARI.
     IF  AMARI         >     ZERO
         ADD     1     TO    MAX-PAGE
     END-IF.

<< Back   Index   Next >>    < Top >