COBOL數據類型
數據分區是用來定義在該程序中使用的變量。爲了描述COBOL數據,必須瞭解下列術語:
- 數據名稱
- 等級數
- 圖片子句
- 值子句
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)
等級數
級別數是用來指定數據的記錄中的級別。它們被用於基本事項和基件之間進行區分。基本項目可以分組以創建組的項目。
級別數
描述
01
記錄描述項
02 to 49
分組初級項目
66
重命名子句項目
77
項目不能被細分
88
條件名稱項
- 基本項目不能再分。級別數,數據名稱,圖片子句和值子句(可選)用於描述基本項目。
- 分組項目由一個或多個基本項目。級別數,數據名稱和值子句(可選)用於描述組項目。分組級別數總是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
圖片子句
圖片子句用來定義下列項目:
- 數據類型可以是數字,字母或字母數字。數字只包含數字0到9字母組成的字母A到Z和空格。字母數字組成的數字,字母和特殊字符。
- 標誌可用於數字數據。它可以是+或 - 。
- 小數點位置可用於數字數據。假定位置是小數點的位置和不包括在數據中。
- 長度限定所使用的數據項的字節數。
在PIC子句中使用的符號
符號
描述
9
數字
A
字母
X
字母數字
V
隱式小數點
S
符號
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子句:
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