Google
オフコン練習帳内を検索
インターネット全体を検索

NECオフコン関連
オフコン一般
情報

[掲示板に戻る]


構造化プログラミングの方法 江須扇 2004-8-19 14:00
(再投稿)構造化プログラミングの方法 江須扇 2004-8-19 14:18
Re:(再投稿)構造化プログラミングの方... EXCHANGE 2004-8-20 3:40

1 構造化プログラミングの方法
江須扇 2004-8-19 14:00  [返信] [編集]

こんにちは、ご無沙汰しております。江須扇です。

今日は初歩的な事をご教授していただきたく投稿しました。
過去のCOBOLのプログラムはGO TO だらけなのでメンテナンスは、
そのままGO TO だらけで修正しております。
構造化プログラミングはいままでしていないので、いまさらと思っておりまし
たが、新規プログラムをGOTOレスで作ろうと思ったのですが中々巧くいき
ません。サンプルを作ったのですが、おかしいところを添削していただけない
でしょうか?

項目Aと項目Bを入力しその表示をして項目Bに戻るというものです。
また、項目BでBTABをすれば項目Aに戻る必要もあります。
項目A又は項目BでPF9を入力すると終了とします。
実際はMAIN−RTNはもっと複雑になります。

コーディング例

----------------------------------------------------------------------

000010 IDENTIFICATION   DIVISION.
000020 PROGRAM-ID.      ACPTST.
000030 ENVIRONMENT      DIVISION.
000040 CONFIGURATION    SECTION.
000050 SOURCE-COMPUTER. EXPRESS5800.
000060 OBJECT-COMPUTER. EXPRESS5800.
000070 DATA             DIVISION.
000080 WORKING-STORAGE  SECTION.
000090 77  A-CELL       PIC  X(05).
000100 77  B-CELL       PIC  X(05).
000110 01  SWITCH-FLAG  PIC  9(01) VALUE 0.
000120 88  SWITCH-HTAB             VALUE 1.
000130 88  SWITCH-BSKIP            VALUE 9.
000140 SCREEN  SECTION.
000150 SD  GAMEN END    STATUS IS  END-STATUS.
000160 01  ACEP-A CLEAR SCREEN.
000170     02 LINE 05   COLUMN 10 PIC X(05) USING A-CELL.
000180 01  ACEP-B.
000190     02 LINE 10   COLUMN 10 PIC X(05) INTO  B-CELL.
000200 01  DISP-C.
000210     02 LINE 15   COLUMN 10 PIC N(05) FROM  A-CELL.
000220     02 LINE 20   COLUMN 10 PIC N(05) FROM  B-CELL WAIT.
000230 PROCEDURE        DIVISION.
000240 INIT-RTN.
000250     SET SWITCH-BSKIP TO TRUE.
000260     PERFORM UNTIL END-STATUS = "P9"
000270       EVALUATE TRUE
000280           WHEN SWITCH-BSKIP
000290                ACCEPT    ACEP-A
000300                IF END-STATUS = "01"
000310                                     SET SWITCH-HTAB TO TRUE
000320                END-IF
000330           WHEN SWITCH-HTAB
000340                DISPLAY   ACEP-A
000350                ACCEPT    ACEP-B
000360                EVALUATE  END-STATUS
000370                    WHEN  "01"       PERFORM MAIN-RTN
000380                    WHEN  "09"       SET SWITCH-BSKIP TO TRUE
000390                END-EVALUATE
000400       END-EVALUATE
000410     END-PERFORM.
000420     STOP RUN.
000430******************************************************************
000440 MAIN-RTN.
000450     DISPLAY DISP-C.
2 (再投稿)構造化プログラミングの方法
江須扇 2004-8-19 14:18  [返信] [編集]


コーディング例


----------------------------------------------------------------------

000010 IDENTIFICATION DIVISION.
000020 PROGRAM-ID. ACPTST.
000030 ENVIRONMENT DIVISION.
000040 CONFIGURATION SECTION.
000050 SOURCE-COMPUTER. EXPRESS5800.
000060 OBJECT-COMPUTER. EXPRESS5800.
000070 DATA DIVISION.
000080 WORKING-STORAGE SECTION.
000090 77 A-CELL PIC X(05).
000100 77 B-CELL PIC X(05).
000110 01 SWITCH-FLAG PIC 9(01) VALUE 0.
000120 88 SWITCH-HTAB VALUE 1.
000130 88 SWITCH-BSKIP VALUE 9.
000140 SCREEN SECTION.
000150 SD GAMEN END STATUS IS END-STATUS.
000160 01 ACEP-A CLEAR SCREEN.
000170     02 LINE 05 COLUMN 10 PIC X(05) USING A-CELL.
000180 01 ACEP-B.
000190     02 LINE 10 COLUMN 10 PIC X(05) INTO B-CELL.
000200 01 DISP-C.
000210     02 LINE 15 COLUMN 10 PIC N(05) FROM A-CELL.
000220     02 LINE 20 COLUMN 10 PIC N(05) FROM B-CELL WAIT.
000230 PROCEDURE DIVISION.
000240 INIT-RTN.
000250     SET SWITCH-BSKIP TO TRUE.
000260     PERFORM UNTIL END-STATUS = "P9"
000270       EVALUATE TRUE
000280           WHEN SWITCH-BSKIP
000290                ACCEPT ACEP-A
000300                IF END-STATUS = "01"
000310                                     SET SWITCH-HTAB TO TRUE
000320                END-IF
000330           WHEN SWITCH-HTAB
000340                DISPLAY ACEP-A
000350                ACCEPT ACEP-B
000360                EVALUATE END-STATUS
000370                    WHEN "01" PERFORM MAIN-RTN
000380                    WHEN "09" SET SWITCH-BSKIP TO TRUE
000390                END-EVALUATE
000400       END-EVALUATE
000410     END-PERFORM.
000420     STOP RUN.
000430******************************************************************
000440 MAIN-RTN.
000450     DISPLAY DISP-C.
3 Re:(再投稿)構造化プログラミングの方法
EXCHANGE 2004-8-20 3:40  [返信] [編集]

☆ バッチ処理プログラムでは、専ら「構造化」で書くのですが、入力系(会話型)では、GOTOをつかっていますので、あまりいい考えは浮かばないのですが。。

例えば、次のような考え方はダメでしょうか。。

 MOVE 1  TO CUR-POSITION
  MOVE 2  TO CUR-POSITION-MAX
  MOVE SPACE  TO END-STATUS
*
  PERFORM  UNTIL END-STATUS = "P9"
              OR CUR-POSITON > CUR-POSITION-MAX
    EVALUATE  CUR-POSITION
      WHEN 0
      WHEN 1
             ACCEPT   ACEP-A-ACP
             EVALUATE END-STATUS 
               WHEN "09"
                    SUBTRACT 1  FROM CUR-POSITION
               WHEN OTHER
                    DISPLAY ACEP-A-DSP
                    ADD 1       TO   CUR-POSITON
             END-EVALUATE
      WHEN 2
             ACCEPT  ACEP-B-ACP 
             EVALUATE END-STATUS 
               WHEN "09"
                    SUBTRACT 1  FROM CUR-POSITION
               WHEN OTHER
                    DISPLAY ACEP-B-DSP
                    ADD 1       TO   CUR-POSITON
             END-EVALUATE
      WHEN OTHER
             CONTINUE
    END-EVALUATE
  END-PERFORM.

BluesBB ©Sting_Band