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.