2013-12-10 35 views
2
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刪除串1任何提示將是有益的我在用Cobol語言

回答

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). 

您CA n現在爲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 GO TO。

從來沒有必要使用轉到。始終

PERFORM paragraphname [UNTIL condition]. 

,直到你習慣它,它不是一個簡單的學科 - 你會習慣它,當你有意大利麪條代碼的惡夢; 轉到 s到處都是PERFORM me調用遞歸代碼。

如果有人提到執行只是微笑點頭,忽視他們必須說的一切。它們是倡導佈局相關代碼的邪惡的縮影。

+0

@ nano.galvao感謝了很多人,我迫切需要的,現在這一切有意義的那是我遇到什麼現在作爲一個輸出,我繼續得到不必要的行,再次感謝 –

+1

我會+1備份Magoo關於'轉到'的危險,但也有點不同意。 A +0.999。這裏列出的樣本值得加粗的ESCHEW,因爲它不是實際使用跳躍。但是,在COBOL中編寫狀態機或單字符協議解釋器時,「決定使用」可能非常實用。範圍有限,乾淨,甚至可以抗拒。 _包括每個工作段__所需的進一步_轉到下一步標籤_的子段負擔_。所以,永遠是的,除了每年的一個星期二外,還要準備用棍棒,石頭和文字來保衛大門。 –

+0

@KarllaurenzBagasan,Magoo做的工作,nano.galvao只格式化它。 –

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.... ` 
+0

想一想,從1 ... 1 ...開始,執行L2-SUB-PARAGRAPH和執行-L2-LOOPING-PARAVARYING INDEX1有多容易和更面向對象。不需要所有那些單行的段落引誘博士生只需要輸入一點定稿代碼。更乾淨。這是來自PERFORM SECTION時代的結構兼容性宿醉。保持冗長,爲根植於過去的管理者提供安全保障。這種結構唯一可能的藉口是「IF條件轉到PARA-EXIT」,但如果你遵循Jacksonesque結構,那麼「如果noitidnoc PERFORM PARA-SUB」規則! – Magoo

+0

這是一個問答網站。 「答案」是針對已提出的問題的答案。我建議你在任何人下調之前刪除你的「答案」,或者將其標記爲主持人的注意。與你的另一個一樣。如果您對某個問題或答案有意見,請將其作爲「評論」。至於你上面提出的建議,我不會鼓勵它,這對於COBOL來說是一個非常*過時的事情。但是,是的,總是有網站標準。這並不意味着推薦一般是件好事。 –