COBOL

  • DIVISIONS:部
  • SEIONS:節
  • Paragraphs:段
  • Sentences:句子
  • Entry:描述句
  • Clauses:子句
  • Constants:常數
  • Characters:字母

程式格式&語法

  • 指示區(第七格)
  • A區(第8格到11格):部名、節名、段名必須從A區寫起,單獨寫一行
  • B區(第12格到72格):一般敘述從B區寫起
  • 轉型:WITH CONVERT

  • 編碼:BIG-5
    • 英文:1byte
    • 中文:2byte

  • 呼叫副程式

    • CALL 副程式
    • CANCEL
      • 副程式
        • GOBACK
  • 開啟檔案

    • OPEN
      • INPUT
      • OUTPUT:檔案不存在(STATUS:35)才能用,不然會把原本檔案蓋掉,資料會不見
      • I-O
    • CLOSE

程式結構
  • 1.識別部(IDENTIFICATION DIVISION):不分節,僅分成數段。

  • 2.環境部(ENVIRONMENT DIVISION):
    • 配置節或稱機型節(Configuration-SECTION)
      • SOURCE-COMPUTER(原始電腦段):說明電腦要在哪一種電腦執行編譯的工作
      • OBJECT-COMPUTER(目的電腦段):說明程式被編譯後所產生目的程式在哪一種電腦機型執行
      • SPECIAL-NAMES:用來將使用者定義名稱指定給系統
    • 輸出入節(INPUT-OUPUT-SECTION): 說明這個程式要用到的輸出入設備或檔案
      • INPUT:
        • 循序檔(Sequential File)
          • 行循序檔(LINE SEQUENTIAL)
          • 二元循序檔(BINARY SEQUENTIAL)
        • 索引循序檔(Indexed Sequential File):資料紀錄均按某一鍵值由小到大、依升序存放。有一個索引目錄(Index)用以記載資料的儲存位置
        • 相關檔(Relative File)
      • OUTPUT:
        • FILE-CONTROL:*用以描述所有資料檔的名稱及組織,在程式裡所用到的每一個檔案均須在此段中用select子句描述
        • I-O-CONTROL:用來記錄RERUN的時間與位置,共同緩衝區的檔案及多數個檔在磁帶的位置

  • 3.資料部(DATA DIVISION)
    • 檔案節:*FILE SECTION,描述該程式所使用到的輸入和輸出檔,必須在環境部裡已經設定
      • 檔案描述(FD file-name):由A區寫起
      • 區段長度子句(Block Contains Clause):可省略,說明檔案中一個資料區段含幾個字符或幾個紀錄,預設512個字符
      • 記錄長度紫劇(Record Contains Clause):可省略,
        • 定長記錄(Fixed Length):檔案裡每個記錄的長度都相同
        • 變長記錄(Variable Length)
      • 標籤記錄子句(Label Record Clause):不可省略,長度都為80,ANSI規定
        • 外部標籤(Exteranl Label):可由作業人員以肉眼判別
        • 內部標籤(Internal Label):電腦判別用
          • 檔頭標籤(Header Label):檔案識別字符串、資料錄存日期、保存日期等資料
          • 檔尾標籤(Trailer Label):檔案終了字符、錄寫的串數等資料
      • 資料記錄子句(Data Record Clause):可省略,替檔案的每一種記錄格式取一個名稱
      • 記錄描述(Record Description):說明記錄內,每一資料項目的從屬關係及資料項目的類別與長度
        • 層次號碼(level number):描述該記錄內群體項目與基本項目之間的從屬關係,號碼排列由01~49,越小層次越高
          • 最高層次:01,由A區開始
          • 02~48,由B區開始
        • 資料項目名稱(Data Item Name):每一個層次號碼後要有一個資料項目名稱
        • 格式(PICTURE或PIC):
          • 資料項目的類別
            • 文字(Alphabetic):A
            • 文數字(Alphanumeric):X
            • 數字(Numeric):9,S與V不佔記憶體空間
              • "S":代表允許有正負值存在
              • "V":代表小數點位置
              • "Z":碰到0變空白,只有在最前面有效
              • "$":小數點會不見,例如:$9999V99 VALUE 1250.99,其顯示為$125099
          • 資料項目的長度
    • 工作區節:WORKING-STORAGE SECTION,有一些額外的位置存放與城市有關的資料
      • 獨立資料項目(Independent data item):不隸屬於其他資料項目,也不包含其他資料項目,可利用77層次號碼來設定獨立資料項目。
    • 連結節:LINKAGE SECTION,用來描述主程式與副程式之間所要傳遞的資料
    • 編報節:REPORT SECTION,用來描述要利用報表編報常規(Report Writer Facility)來產生的報表內容和報表格式等
    • 螢幕節:SEREEN SECTION,用來控制螢幕輸入與輸出格式,MS-COBOL中可使用

  • 4.處理程序部(PROCEDURE DIVISION)
    • 程式結構:部名、節名、段名都要由A區寫起,各敘述則由B區寫起
      PROCEDURE DIVISION. 部名
      [section-name-1 SECTION.] 節名
      pargraph-name-1. 段名

      statement-1.
      statement-1. --敘述
      pargraph-name-2. --段名
      statement-2.
      statement-2. --敘述
    • 指令種類

      • 運算敘述(Arithmetic statements)
        • ADD(加)
        • SUBTRACT(減)
        • MULTIPLY(乘)
        • DIVIDE(除)
        • COMPUTE(計算)
      • 資料整理敘述(Data manipulation statements)
        • MOVE(搬移)
        • INSPECT(檢查)
        • STRING(字串串接)
        • UNSTRING(分解字串)
      • 處理控制程序轉移敘述(Sequence control statements)
        • GO TO(無條件轉移)
        • PERFORM(履行敘述)
        • STOP(停止)
      • 料搬入、搬出敘述(Input/Ouput statements)
        • OPEN(開起)
        • READ(讀入)
        • ACCEPT(接收)
        • CLOSE(關閉)
        • WRITE(寫出)
        • DISPLAY(顯示)
      • 條件敘述(Conditional statement)
        • IF(假如敘述)