COBOL - 資料型別



資料部用於定義程式中使用的變數。要描述 COBOL 中的資料,必須瞭解以下術語:

  • 資料名
  • 級別號
  • PICTURE 子句
  • VALUE 子句
01            TOTAL-STUDENTS            PIC9(5)            VALUE '125'.
|                    |                    |                    |
|                    |                    |                    |
|                    |                    |                    | 
Level Number     Data Name           Picture Clause       Value Clause

資料名

在過程部使用資料名之前,必須在資料部中定義它們。它們必須具有使用者定義的名稱;不能使用保留字。資料名引用儲存實際資料的記憶體位置。它們可以是基本型別或組型別。

示例

以下示例顯示有效和無效的資料名:

Valid:
   WS-NAME
   TOTAL-STUDENTS
   A100
   100B

Invalid:
   MOVE            (Reserved Words)
   COMPUTE         (Reserved Words)
   100             (No Alphabet)
   100+B           (+ is not allowed) 

級別號

級別號用於指定記錄中資料的級別。它們用於區分基本項和組項。基本項可以組合在一起以建立組項。

序號 級別號和描述
1

01

記錄描述項

2

02 到 49

組項和基本項

3

66

重新命名子句項

4

77

不能細分的項

5

88

條件名項

  • 基本項不能進一步細分。級別號、資料名、PICTURE 子句和 VALUE 子句(可選)用於描述基本項。

  • 組項包含一個或多個基本項。級別號、資料名和 VALUE 子句(可選)用於描述組項。組級別號始終為 01。

示例

以下示例顯示組項和基本項:

DATA DIVISION.
WORKING-STORAGE SECTION.
01 WS-NAME    PIC X(25).                               ---> ELEMENTARY ITEM 
01 WS-CLASS   PIC 9(2)  VALUE  '10'.                   ---> ELEMENTARY ITEM

01 WS-ADDRESS.                                         ---> GROUP ITEM   
   05 WS-HOUSE-NUMBER    PIC 9(3).                     ---> ELEMENTARY ITEM
   05 WS-STREET          PIC X(15).                    ---> ELEMENTARY ITEM
   05 WS-CITY            PIC X(15).                    ---> ELEMENTARY ITEM
   05 WS-COUNTRY         PIC X(15)  VALUE 'INDIA'.     ---> ELEMENTARY ITEM

PICTURE 子句

PICTURE 子句用於定義以下項:

  • 資料型別可以是數值型、字母型或字母數字型。數值型僅包含數字 0 到 9。字母型包含字母 A 到 Z 和空格。字母數字型包含數字、字母和特殊字元。

  • 符號可用於數值資料。它可以是 + 或 –。

  • 小數點位置可用於數值資料。假定位置是小數點的位置,不包含在資料中。

  • 長度定義資料項使用的位元組數。

PICTURE 子句中使用的符號:

序號 符號和描述
1

9

數值型

2

A

字母型

3

X

字母數字型

4

V

隱式小數

5

S

符號

6

P

假定小數

示例

以下示例顯示 PIC 子句的使用:

IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.

DATA DIVISION.
   WORKING-STORAGE SECTION.
   01 WS-NUM1 PIC S9(3)V9(2).
   01 WS-NUM2 PIC PPP999.
   01 WS-NUM3 PIC S9(3)V9(2) VALUE -123.45.
   01 WS-NAME PIC A(6) VALUE 'ABCDEF'.
   01 WS-ID PIC X(5) VALUE 'A121$'.

PROCEDURE DIVISION.
   DISPLAY "WS-NUM1 : "WS-NUM1.
   DISPLAY "WS-NUM2 : "WS-NUM2.
   DISPLAY "WS-NUM3 : "WS-NUM3.
   DISPLAY "WS-NAME : "WS-NAME.
   DISPLAY "WS-ID : "WS-ID.
STOP RUN.

JCL 用於執行上述 COBOL 程式:

//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEP1 EXEC PGM = HELLO

編譯並執行上述程式後,將產生以下結果:

WS-NUM1 : +000.00
WS-NUM2 : .000000
WS-NUM3 : -123.45
WS-NAME : ABCDEF
WS-ID : A121$

VALUE 子句

VALUE 子句是一個可選子句,用於初始化資料項。值可以是數值文字、字母數字文字或文字常量。它可以與組項和基本項一起使用。

示例

以下示例顯示 VALUE 子句的使用:

IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.

DATA DIVISION.
   WORKING-STORAGE SECTION.
   01 WS-NUM1 PIC 99V9 VALUE IS 3.5.
   01 WS-NAME PIC A(6) VALUE 'ABCD'.
   01 WS-ID PIC 99 VALUE ZERO.

PROCEDURE DIVISION.
   DISPLAY "WS-NUM1 : "WS-NUM1.
   DISPLAY "WS-NAME : "WS-NAME.
   DISPLAY "WS-ID   : "WS-ID.
STOP RUN.

JCL 用於執行上述 COBOL 程式:

//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEP1 EXEC PGM = HELLO

編譯並執行上述程式後,將產生以下結果:

WS-NUM1 : 03.5
WS-NAME : ABCD
WS-ID   : 00
廣告