cobol - 我在使用 Cobol 处理表格时遇到问题

标签 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 中的内容,任何关于一一删除字符串的提示都会有所帮助

最佳答案

首先你需要类似的东西

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)。这可能接近您想要做的事情。

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

避开前往。

永远没有必要使用转到。总是

PERFORM paragraphname [UNTIL condition].

在你习惯之前,这不是一个容易的规则 - 当你做意大利面条代码的噩梦时,你就会习惯它; GO TO 无处不在,PERFORM me 调用递归代码。

如果有人提到执行到底,只需微笑并点头,忽略他们所说的一切。他们是邪恶的缩影,因为他们提倡依赖布局的代码。

关于cobol - 我在使用 Cobol 处理表格时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20496521/

相关文章:

COBOL:SYSIN JCL,用于从 PDS 编译源代码

java - 大型机上的 Unix : COB2 compiler, 用于 Java 调用 COBOL

cobol - 如何防止 COBOL 中的内表溢出?

cobol - Signed Comp-3 Data COBOL 中的 DISPLAY 显示意外输出

cobol - 在 Cobol 中获取当前行号

cobol - 在 COBOL 中转换日期

c# - 自动生成的序列图

c# - 如何从 C# 调用 CICS 程序