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/