[程式語言 COBOL 8X 介紹]

一、語言構成
 可使用字符
  1.數字 0-9
  2.英文字母與空白 a-z A-Z 大小寫表示相同意義
  3.運算符號 + - * / = < > ** (乘方)
  4.其他符號 $ . , ; " ' ( ) :
 保留字
 程式師自撰字
  a-z A-Z - 所構成
  長度 1-30 字,需含一個英文字母;但程序部段名可全為數字
  - 不可出現在第一或最後一字
  大小寫表示相同意義,一般習慣上用大寫
 定字(區分為非數值型定字 Nonnumeric Literals,數值型定字 Numeric Literals
 比擬常數 Figurative Constants)
 層次號碼 01-49,44,77,88
  層次越低用越大的層次號碼定義
  66 表示 renames 資料項
  77 表示 Independent Items 沒有隸屬關係的資料項
  88 表示 Conditional Items 條件資料項
 PIC 字串
  文字型 A ALPHABETIC :PIC AAAAAAAA OR A(8)
  數值型 9 NUMERIC :PIC 99999 OR 9(5)
  文數型 X ALPHAMUMERIC :PIC XXXXX OR X(5)
  編輯型 EDITED PIC :PIC $$$,$$9 OR PIC A(10)
 語法格式符號說明
  1.英文字大寫為保留字,加底線為關鍵字,未畫底線為選用字。
  2.加 [] 為選擇性段落
  3.加 {} 為必選其中之一
  4.加 {{}} 其中可重複選擇
  5. = < > 皆為必寫字符
  6.... 表可重複前引項目

二、基本架構
 由識別部 IDENTIFICATION DIVISION.
  設備部 ENVIRONMENT DIVISION.
  資料部 DATA DIVISION.
  程序部 PROCEDURE DIVISION.
 所構成
三、程式撰寫
  1-6 序號 空白
  7 特殊標記 * 表註解
   - 連接上行
   D 於除錯宣告下發生作用
   / 列印時作跳頁控制用
  8-11 A 區 部名DIVISION,節名SECTION,段名,FD,01,77 皆由此區起頭
  12-72 B 區 段的內容,述句內容
  73-80 R 區 程式標示用
四、COBOL 四部
  4.1 識別部 IDENTIFICATION DIVISION.
   語法:
    ID DIVISION.
    PROGRAM-ID. 檔案名.
    [AUTHOR.]
    [INSTALLATION.]
    [DATE-WRITTEN.]
    [DATE-COMPILED.]
    [SECURITY.]
    [REMARKS.]

  4.2 設備部 ENVIRONMENT DIVISION. note:英文大寫表關鍵字
   語法: 小寫 選用字
    ENVIRONMENT DIVISION. 中文 設計師自用字
    [CONFIGURATION SECTION.]
    [INPUT-OUTPUT SECTION.]
    [FILE-CONTROL.]
    [I-O-CONTROL.]
   檔案控制段
    FILE-CONTROL.
    SELECT 資料檔名 ASSIGN TO 操作方式 外部檔名
    [ORGANIZATION 子句]
    [ACCESS 子句]
    [RECORD key 子句]
    [file STATUS 子句]
     note: SELECT �� 設定外部資料檔名
        ASSIGN �� 為指定資料檔名所在的媒介體
   操作方式�� 檔案操作方式,如INPUT,OUTPUT,RANDOM,PRINT,PRINTER
    INPUT-OUTPUT
    ORGANIZATION is { BINARY } SEQUENTIAL. �� 描述資料檔結構
    { LINE }

  4.3 資料部 DATA DIVISION.
   語法:
    DATA DIVISION.
    [FILE SECTION.] //檔案節 描述資料檔中每一記錄的資料名稱,形式及長度
    [WORKING-STORAGE SECTION.] //工作暫存節 處理過程中暫時所需的資料項
    [LINKAGE SECTION.] //連接節 程式間所需傳輸的各項資料
    [SCREEN SECTION.] //螢幕節 螢幕上各項資料的名稱位置及相關特性

  4.4 程序部 PROCEDURE DIVISION.
    處理邏輯所需的 COBOL 敘述,分段不分節。

五、資料部
  5.1 檔案節 FILE SECTION.
   包含描述檔案層次的檔案描述句(FILE DESCRIPTION ENTRY)
   描述記錄內容的記錄描述句(RECORD DESCRIPTION ENTRY)

  5.1.1 檔案描述句
    FD 內部檔名 // FD FILE DESCRIPTION
    [LABEL RECORD 子句]
    [RECORD contains 子句]
    [BLOCK contains 子句]
    * [DATA RECORD 子句]
     內部檔名�� 簡稱檔案名稱,為程式師自設字。
     需於 ENVIRONMENT DIVISION.中 INPUT-OUTPUT SECTION.中 FILE-CONTROL.內以 SELECT 定義。
  語法詳介:
   LABEL { RECORD is } { OMITTED | STANDARD }
   { RECORDS are }
   // OMITTED 不使用標籤記錄
   // STANDARD使用電腦標準標籤記錄

   RECORD contains 整數 [characters]
   // 每一邏輯記錄的長度

   BLOCK contains 整數 { RECORDS | characters }
   // 每一 block 所含邏輯記錄或字元個數

   * DATA { RECORD is | RECORDS are } 資料名稱-1,...
   // 記錄名稱,但本項可省略不寫

  5.1.2 記錄描述句
   99 { 資料名稱 | FILLER } [ { PICTURE | PIC } pic-string 子句 ]
   [ VALUE 子句 ] [ REDEFINES 子句 ]
   [ OCCURS 子句 ] [ USAGE 子句 ]
   [ BLANK WHEN ZERO 子句 ]
   // 99 層次號碼
   // 資料名稱 FIELD NAME
   // FILLER 共用資料名稱

   PIC pic-string
   // pic-string 格式:
   1. 數值形 9 0-9 每一 '9' 佔 1 BYTE
   V 實數資料中小數點位置 不佔記憶體空間
   S 實數資料中含有正負號值 不佔記憶體空間

   資料名稱-1 REDEFINES 資料名稱-2
   // 不同資料名稱含有相同值,共用同一位址。

   OCCURS // 定義表格維數

   BLANK WHEN ZERO // 將資料項目為零時,以空白取代

   USAGE // 指定資料項目的儲存方式,預設值為 DISPLAY
   標準儲存格式,每一數字 1 BYTE,原 ASCII 碼儲存格式

   VALUE 定字 //適用於獨立項目或是條件名稱(88)中給定變數初值
   //一般來說不能出現在 FILE SECTION. 中

  5.2 工作暫存節 WORKING-STORAGE SECTION.
   任何不屬於檔案資料,而為系統處理所需的資料名稱或其他暫時性的資料名稱都必須在此節定義。

六、範例 假設以福利站的庫存做示範:

輸入檔格記錄式 輸出檔格式
1-4 號碼 1-4 編號
5-24 名稱 7-26 名稱
25-29 進價 29-33 上月庫存
29-33 銷價 36-44 上月庫存金額
47-51 本月進貨
54-61 本月進貨金額
64-68 本月銷貨
71-78 本月銷貨金額
81-85 本月庫存
88-95 本月庫存金額
98-105 進銷差價
*程式開始
ID DIVISION.
PROGRAM-ID. STOCK.

ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT IMPORT-FILE ASSIGN TO INPUT "ITEM.DAT".
SELECT REPORT-FILE ASSIGN TO OUTPUT "SALES.DAT".
*資料部
DATA DIVISION.
*檔案描述節
FILE SECTION.
*檔案描述句
FD IMPORT-FILE.
*記錄描述句
01 ITEM-RECORD.
05 ITEM-NO PIC 9(4).
05 ITEM-NAME PIC X(20).
05 IMPORT-PRICE PIC 9(2)V9(2).
05 SALE-PRICE PIC 9(2)V9(2).
FD REPORT-FILE.
01 SALE-COUNT.
05 ITEM-NO PIC 9(4).
05 ITEM-NAME PIC X(20).
05 LAST-STOCK PIC 9(5).
05 LAST-STOCK-COUNT PIC 9(6)V9(2).
05 THIS-IMPORT PIC 9(5).
05 THIS-IMPORT-COUNT PIC 9(6)V9(2).
05 THIS-SALE PIC 9(5).
05 THIS-SALE-COUNT PIC 9(6)V9(2).
05 THIS-STOCK PIC 9(5).
05 THIS-STOCK-COUNT PIC 9(6)V9(2).
*程序部
PROCEDURE DIVISION.
MAIN.
.
.
.