數(shù)據(jù)部(Data Division)是用來定義程序中使用的變量。為了描述COBOL中的數(shù)據(jù),必須了解以下術(shù)語:
Data Name(數(shù)據(jù)名稱)
Level Number(級(jí)數(shù))
Picture Clause(圖片子句)
Value Clause(值子句)
01 TOTAL-STUDENTS PIC9(5) VALUE '125'. | | | | | | | | | | | | Level Number Data Name Picture Clause Value Clause
數(shù)據(jù)名稱必須在數(shù)據(jù)部中定義,然后才能在過程部中使用。它們必須有一個(gè)用戶自定義的名稱;不能使用保留詞。數(shù)據(jù)名為存儲(chǔ)實(shí)際數(shù)據(jù)的存儲(chǔ)單元提供引用。它們可以是基本類型或組類型。
例
下面的示例顯示有效和無效的數(shù)據(jù)名稱:
Valid: WS-NAME TOTAL-STUDENTS A100 100B Invalid: MOVE (Reserved Words) COMPUTE (Reserved Words) 100 (No Alphabet) 100+B (+ is not allowed)
級(jí)數(shù)是用于指定記錄中的數(shù)據(jù)級(jí)別。它們用于區(qū)分基本項(xiàng)和組項(xiàng)。基本項(xiàng)可以組合在一起創(chuàng)建組項(xiàng)。
級(jí)數(shù) | 描述 |
---|---|
01 | 記錄描述條目 |
02至49 | 組項(xiàng)和基本項(xiàng) |
66 | 重命子句項(xiàng) |
77 | 不能被細(xì)分項(xiàng) |
88 | 條件名稱條目 |
Elementary items基本項(xiàng)目 不能進(jìn)一步細(xì)分。級(jí)數(shù),數(shù)據(jù)名稱,圖片子句和值子句(可選)用于描述基本項(xiàng)。
Group items組項(xiàng)目 由一個(gè)或多個(gè)基本項(xiàng)組成。級(jí)數(shù),數(shù)據(jù)名稱和值子句(可選)用于描述組項(xiàng)。組級(jí)數(shù)始終為01。
例
下面的示例演示Elementary items和Group items:
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
圖片子句用于定義以下項(xiàng)目:
數(shù)據(jù)類型:可以是數(shù)字,字母或字母數(shù)字。數(shù)字類型僅由數(shù)字0到9組成。字母類型由字母A到Z和空格組成。字母數(shù)字類型由數(shù)字,字母和特殊字符組成。
符號(hào):可以與數(shù)字?jǐn)?shù)據(jù)一起使用。它可以是+或-。
小數(shù)點(diǎn)位置:可與數(shù)字?jǐn)?shù)據(jù)一起使用。假設(shè)位置是小數(shù)點(diǎn)的位置,而不包括在數(shù)據(jù)中。
長度:定義數(shù)據(jù)項(xiàng)使用的字節(jié)數(shù)。
在圖片子句中使用的符號(hào):
符號(hào) | 描述 |
---|---|
9 | 數(shù)字 |
A | 字母 |
X | 字母數(shù)字 |
V | 隱式小數(shù) |
S | 符號(hào) |
P | 假定小數(shù) |
例
下面的例子說明了如何使用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執(zhí)行上述COBOL程序:
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS=A,MSGCLASS=C //STEP1 EXEC PGM=HELLO
當(dāng)你編譯和執(zhí)行上面的程序,會(huì)產(chǎn)生以下結(jié)果:
WS-NUM1 : +000.00 WS-NUM2 : .000000 WS-NUM3 : -123.45 WS-NAME : ABCDEF WS-ID : A121$
值子句是一個(gè)可選子句,用于初始化數(shù)據(jù)項(xiàng)。該值可以是數(shù)字文字,字母數(shù)字文字,或象征常數(shù)。它可以與組項(xiàng)和基本項(xiàng)一起使用。
例
下面的例子顯示值子句的使用:
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執(zhí)行上述COBOL程序:
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS=A,MSGCLASS=C //STEP1 EXEC PGM=HELLO
當(dāng)你編譯和執(zhí)行上面的程序,會(huì)產(chǎn)生以下結(jié)果:
WS-NUM1 : 03.5 WS-NAME : ABCD WS-ID : 00
更多建議: