close

COBOL系統目錄架構

111-crop  

COBOL系統檔案架構

ACC91100.CBL為例,可由一般文字編輯器開啟,如記事本、Notepad++COBOL 程式結構段落,依大小分為:(Division)、節(Section)、段(Paragraph)、句子(Sentence)、子句(Clause)、單字(Word)及字母(Character),並有其保留字。程式結尾以 . 為結束標誌。

COBOL程式均由四個部組成

  1.  識別部 (IDENTIFICATION DIVISOION)

   IDENTIFICATION      DIVISION.

   PROGRAM-ID.         ACC91500.

   *REMARK.             [傳票(明細)ACCASP-維護]

   做為該檔的基本識別,如程式名稱,作者等。

  1. 設備部 (ENVIRONEMNT DIVISION)

   ENVIRONMENT         DIVISION.

CONFIGURATION       SECTION.

SOURCE-COMPUTER.    IBM-PC.

OBJECT-COMPUTER.    IBM-PC.

INPUT-OUTPUT        SECTION.

FILE-CONTROL.

COPY        "SYSTEM.SEL".

COPY        "ACCASP.SEL".

   其中【COPY        "ACCASP.SEL" 表示會參考FMT目錄 裡的ACCASP.SEL

    並且該ACCASP.ISF 的主鍵為ACCASP-PKEY,如下所示,有色字體為COBOL保留字。

   SELECT  ACCASP-F

   ASSIGN  TO       RANDOM  "ACCASP.ISF"

   ORGANIZATION    IS      INDEXED

   ACCESS  MODE    IS      DYNAMIC

   RECORD  KEY     IS      ACCASP-PKEY

   FILE      STATUS  IS      F-STATUS.

 

  1. 資料部 (DATA DIVISION)

       DATA               DIVISION.

       FILE                SECTION.

       COPY               "SYSTEM.FD".

       COPY                "ACCASP.FD".

       WORKING-STORAGE     SECTION.

       01  F-REC.

           05  F-PKEY.

               10  F-PKEY1.

                   15  F-K012.

                       20  F-K01              PIC  X(04).

                       20  F-K02              PIC  X(08).

                   15  F-K03                  PIC  X(04).

               10  F-PKEY2.

                   15  F-K045.

                       20  F-K04              PIC  X(06).

                       20  F-K05              PIC  9(03).

                   15  F-K06                  PIC  9(03).

           05  F-01                           PIC  X(08).

           05  F-02                           PIC  X(01).

       主要做為資料讀取的宣告與變數宣告,其中【COPY  "ACCASP.FD".】為參考FMT目錄裡的ACCASP.FD,在早期儲存檔案為 索引循序檔(Index Sequential File),為一連串數字所組成,所以需要一個索引檔去參照資料檔,定義該數字的意義。我們將ACCASP.FD打開後會看到如下:

       FD  ACCBAL-F

           LABEL   RECORD  IS      STANDARD

           DATA    RECORD  IS      ACCBAL-REC.

      *01  ACCASP-REC.              傳票資料檔(DETAIL) - AKEY

      *    05  ACCASP-PKEY.

      *        10  ACCASP-PKEY1.

      *            15  ACCASP-K012.

      *                20  ACCASP-K01              PIC  X(04).科目

      *                20  ACCASP-K02              PIC  X(08).子目

      *            15  ACCASP-K03                  PIC  X(04).部門

      *        10  ACCASP-PKEY2.                              傳票號碼

      *            15  ACCASP-K045.

      *                20  ACCASP-K04              PIC  X(06).年月日

      *                20  ACCASP-K05              PIC  9(03).流水號

      *            15  ACCASP-K06                  PIC  9(03).序號

      *    05  ACCASP-01                           PIC  X(08).立沖帳碼

      *    05  ACCASP-02                           PIC  X(01).狀態 /A/D/P/ /

      *    05  FILLER                              PIC  X(02).

      *    05  ACCASP-99                           PIC  9(04) COMP-1.  

COBOL 變數定義中, 01 在階層中會大於 05 05又大於 10,以此類推,在ACCASP.ISF檔案中,

主鍵為ACCASP-PKEY. ACCASP-PKEY.又分成  ACCASP-PKEY1. ACCASP-PKEY2. 二組主鍵,而ACCASP-PKEY1.又分成ACCASP-PKEY1. ACCASP-K03,因此為三維表格的概念,在COBOL變數定義中,通常以表格概念去宣告,一層就是一維表格,二層就是二維表格,以此類推。

 

  1. 程序部 (PROCEDURE DIVISION)

程序部,為一隻COBOL程式,主要程式撰寫的地方,其中,程式均由0000段開始再往下撰寫,其中

段的開頭通常為 1000-ADD. 結尾都會加上 1000-EXIT-ADD. 來區分 1000-ADD段的起始和結尾。

:

       1000-ADD.

           PERFORM  7000-KEY        THRU    7000-EXIT-KEY.

           IF ( ESC-KEY OR F2 OR F3 OR F4 )

                   GO      TO              1000-EXIT-ADD.

           MOVE    0                       TO      YY.

           PERFORM 7000-ITEM       THRU    7000-EXIT-ITEM.

           IF ( ESC-KEY OR F2 OR F3 OR F4 )

                   GO      TO              1000-EXIT-ADD.

           IF ( F10 )

                   NEXT    SENTENCE

           ELSE

           IF ( F8 )

                   PERFORM 8100-WRITE-ACCASP.

           PERFORM 9000-INITIAL-BUF.

           PERFORM 9000-CLEAR-SCREEN.

           GO      TO                      1000-ADD.

       1000-EXIT-ADD.

           EXIT.

    進入1000-ADD 段後會執行 7000-KEY 7000-EXIT-KEY. 之間的程式

    執行完再執行          

   IF ( ESC-KEY OR F2 OR F3 OR F4 ) GO      TO     1000-EXIT-ADD.

   以此類推。

 

 此外,程式中有時也會需要執行共用函數,像: PERFORM C900-WIN-MESSAGE

 C900-WIN-MESSAGE 會在 FMT目錄中的SYSTEM.SEC裡,執行

       C900-WIN-MESSAGE.

           PERFORM C900-DISPLAY-SPACE.

           MOVE    "CA-ERROR"              TO      C-LINK-PRG1.

           MOVE    17                      TO      C-LINK-ROW.

           MOVE    14                      TO      C-LINK-COL.

           MOVE    56                      TO      C-LINK-SIZE.

           MOVE    6                       TO      C-LINK-LINES.

           CALL    "SYS/CA-SCRN1"          USING   C-LINK-SCR1.

           CANCEL  "SYS/CA-SCRN1".

           DISPLAY "[ 錯誤訊息 ]" LINE 1 POSITION 23 REVERSE COLOR P-DX.

           DISPLAY L-WINDOW-MSG   LINE 3 POSITION 3  COLOR P-DM.

           DISPLAY " Enter 繼續 .... "  LINE 5 POSITION 19

                                           BLINK COLOR P-DM.

           ACCEPT  OMITTED         LINE 5 POSITION 38 TAB NO BEEP.

           CLOSE   WINDOW  C-LINK-SSAVE.這段程式。

 

希望有幫助到一些需要COBO概念的朋友們。

arrow
arrow
    全站熱搜

    YCH 發表在 痞客邦 留言(2) 人氣()