使用Cobol我遇到了麻烦

时间:2013-12-10 14:00:47

标签: cobol cobol85 cobol.net

 IDENTIFICATION DIVISION.
 PROGRAM-ID. MP4-5.
 ENVIRONMENT DIVISION.
 DATA DIVISION.
 WORKING-STORAGE SECTION.

 01 SEAT-DESCRIPTION.
    03 FILLER PIC X(50) VALUE "01   DRIVER".
    03 FILLER PIC X(50) VALUE "02   DRIVER'S ASST".
    03 FILLER PIC X(50) VALUE "03".
    03 FILLER PIC X(50) VALUE "04".
    03 FILLER PIC X(50) VALUE "05".
    03 FILLER PIC X(50) VALUE "06".
    03 FILLER PIC X(50) VALUE "07".
    03 FILLER PIC X(50) VALUE "08".
    03 FILLER PIC X(50) VALUE "09".
    03 FILLER PIC X(50) VALUE "10".
    03 FILLER PIC X(50) VALUE "11".
    03 FILLER PIC X(50) VALUE "12".
    03 FILLER PIC X(50) VALUE "13".
    03 FILLER PIC X(50) VALUE "14".
    03 FILLER PIC X(50) VALUE "15".

 01 MAIN-MENU   PIC X.
   88 RESERVATION VALUE "R".
   88 VIEW-RESERVATION VALUE "V".
   88 CANCEL-RESERVATION VALUE "D".
   88 EXIT-PROC VALUE "E".

 01 DECISION PIC X.
   88 YES VALUE "Y".
   88 NAY VALUE "N".   

 01 SEAT-NUM PIC 9(2).

 01 CUST-NAME PIC X(18).

 01 CUST-CNTCT PIC 9(11).

 01 CHOICE PIC X.

PROCEDURE DIVISION.
MAIN-ROUTINE.

 DISPLAY "        ABC TRANSPORT COMPANY".
 DISPLAY "__________________________________________".
 DISPLAY "     [R] ADD RESERVATION/S ".
 DISPLAY "     [V] VIEW RESERVATION/S ".
 DISPLAY "     [D] CANCEL RESERVATION/S ".
 DISPLAY "     [E] EXIT".
 DISPLAY "         ENTER CHOICE: " WITH NO ADVANCING.

 ACCEPT MAIN-MENU.

 PERFORM I-CHAIN.

I-CHAIN.
 IF RESERVATION
    GO TO RESERVE-PROC
 ELSE IF VIEW-RESERVATION
    GO TO VRESERVE-PROC
 ELSE IF CANCEL-RESERVATION
    GO TO CRESERVE-PROC
 ELSE IF EXIT-PROC
    GO TO END-PGM
 ELSE
    DISPLAY "INVALID OPTION"

 GO TO MAIN-ROUTINE.


RESERVE-PROC.
 DISPLAY "RESERVE SEAT #:   "WITH NO ADVANCING.
 ACCEPT SEAT-NUM.

 IF SEAT-NUM IS NUMERIC
      IF SEAT-NUM >2 AND SEAT-NUM <16
      GO TO CONT-RES
      ELSE
             DISPLAY "INVALID OPTION"
             PERFORM RESERVE-PROC
 ELSE 
    DISPLAY "ENTER A NUMERIC VALUE"
    GO TO RESERVE-PROC.

CONT-RES.
 DISPLAY "CUSTOMER NAME :     "WITH NO ADVANCING.
 ACCEPT CUST-NAME.

 MOVE CUST-NAME TO SEAT-NUM.
 DISPLAY "CUSTOMER CONTACT #: "WITH NO ADVANCING.
 ACCEPT CUST-CNTCT.

 MOVE CUST-CNTCT TO SEAT-NUM.
 GO TO RESER-CONT.

RESER-CONT.
 DISPLAY "RESERVE MORE? [Y/N]? "WITH NO ADVANCING.
 ACCEPT DECISION.
 IF YES
     PERFORM RESERVE-PROC
 ELSE IF NAY
     PERFORM MAIN-ROUTINE
 ELSE
     DISPLAY "INVALID OPTION"
     PERFORM RESER-CONT.

VRESERVE-PROC.
 DISPLAY "        ABC TRANSPORT COMPANY".
 DISPLAY "           RESERVATION LIST".
 DISPLAY "__________________________________________".
 DISPLAY " "SEAT-DESCRIPTION.

CRESERVE-PROC.
 DISPLAY "        ABC TRANSPORT COMPANY".
 DISPLAY "         CANCEL RESERVATION".
 DISPLAY "__________________________________________".

END-PGM.
 STOP RUN.

我知道代码还没有完成,但我可以在如何使用表格方面有所帮助,因为 我很难尝试显示我想要添加到我的变量SEAT-NUM的内容,任何有关删除字符串1的提示都会有所帮助

2 个答案:

答案 0 :(得分:2)

开始你需要像

这样的东西
01 SEAT-DESCRIPTION-REDEF REDEFINES SEAT-DESCRIPTION.
   03 SEAT-NUMBER-DATA OCCURS 15.
      05 SEAT-NUMBER-TEXT   PIC X(02).
      05 FILLER             PIC X(04).
      05 SEAT-FILLED-BY     PIC X(44).

您现在可以为SEAT-FILLED-BY(SEAT-NUM)分配一个值,为座位指定名称。

目前尚不清楚您使用CUST-CNTCT做了什么,只是进行了一些小调整:

01 SEAT-DESCRIPTION-REDEF REDEFINES SEAT-DESCRIPTION.
   03 SEAT-NUMBER-DATA OCCURS 15.
      05 SEAT-NUMBER-TEXT   PIC X(02).
      05 FILLER             PIC X(04).
      05 SEAT-FILLED-BY     PIC X(32).
      05 FILLER             PIC X(01).
      05 SEAT-CONTACT       PIC X(11).

现在你可以MOVE CUST-CNTCT TO SEAT-CONTACT(SEAT-NUM).,这可能与你想做的很接近。

现在有一个关于结构的小广告。

ESCHEW转到。

绝对不必使用转到。总是

PERFORM paragraphname [UNTIL condition].

在你习惯之前,这不是一门轻松的训练 - 当你做意大利面条码的噩梦时,你会习惯它; 转到,到处都是 PERFORM me 调用递归代码。

如果有人提到通过,只需微笑并点头并忽略他们必须说的一切。他们是提倡依赖布局的代码的邪恶的缩影。

答案 1 :(得分:0)

我们在商店中使用THROUGH,但仅限于一个目的。我们用名称标记每个paragrah,并用该名称关闭该段落,最后用“ - ”EXIT“。

然后,当我们调用该段落时,我们使用语法

来调用它

PERFORM L2-SUB-PARAGRAPH THROUGH L2-SUB-PARAPGRAPH-EXIT.

这使代码具有更加面向对象的外观,并使段落更加模块化。

或者如果想循环一个段落,那么你可以这样编码:

`PERFORM -L2-LOOPING-PARA' 
     'THROUGH L2-LOOPING-PARA-EXIT'
         'VARYING INDEX1 FROM 1 BY 1.... `