VALUE is a COBOL clause used in the DATA DIVISION to assign initial values to data items. It allows you to initialize variables, constants, and data structures with default values at compile time, ensuring data items have predictable starting values.
VALUE clause syntax and usage patterns for different data types and scenarios.
12345678910111213141516IDENTIFICATION DIVISION. PROGRAM-ID. VALUE-EXAMPLE. DATA DIVISION. WORKING-STORAGE SECTION. 01 CUSTOMER-DATA. 05 CUSTOMER-ID PIC 9(6) VALUE 123456. 05 CUSTOMER-NAME PIC X(30) VALUE "JOHN DOE". 05 CUSTOMER-STATUS PIC X(1) VALUE "A". 05 CUSTOMER-BALANCE PIC 9(8)V99 VALUE 1000.50. PROCEDURE DIVISION. DISPLAY "Customer ID: " CUSTOMER-ID DISPLAY "Customer Name: " CUSTOMER-NAME DISPLAY "Customer Status: " CUSTOMER-STATUS DISPLAY "Customer Balance: " CUSTOMER-BALANCE STOP RUN.
Basic usage of VALUE to initialize data items with default values.
123456789101112131415161718IDENTIFICATION DIVISION. PROGRAM-ID. VALUE-FIGURATIVE. DATA DIVISION. WORKING-STORAGE SECTION. 01 INITIALIZATION-DATA. 05 EMPTY-STRING PIC X(10) VALUE SPACES. 05 ZERO-NUMBER PIC 9(5) VALUE ZEROS. 05 HIGH-VALUE-FIELD PIC X(5) VALUE HIGH-VALUES. 05 LOW-VALUE-FIELD PIC X(5) VALUE LOW-VALUES. 05 QUOTE-STRING PIC X(10) VALUE QUOTES. PROCEDURE DIVISION. DISPLAY "Empty String: '" EMPTY-STRING "'" DISPLAY "Zero Number: " ZERO-NUMBER DISPLAY "High Value Field: " HIGH-VALUE-FIELD DISPLAY "Low Value Field: " LOW-VALUE-FIELD DISPLAY "Quote String: " QUOTE-STRING STOP RUN.
Using VALUE with COBOL figurative constants for common initialization patterns.
12345678910111213141516171819IDENTIFICATION DIVISION. PROGRAM-ID. VALUE-GROUP. DATA DIVISION. WORKING-STORAGE SECTION. 01 TRANSACTION-RECORD. 05 TRANSACTION-ID PIC 9(8) VALUE 0. 05 TRANSACTION-DATE PIC 9(8) VALUE 20240101. 05 TRANSACTION-TYPE PIC X(2) VALUE "CR". 05 TRANSACTION-AMOUNT PIC 9(8)V99 VALUE 0.00. 05 TRANSACTION-STATUS PIC X(1) VALUE "P". PROCEDURE DIVISION. DISPLAY "Transaction Record:" DISPLAY " ID: " TRANSACTION-ID DISPLAY " Date: " TRANSACTION-DATE DISPLAY " Type: " TRANSACTION-TYPE DISPLAY " Amount: " TRANSACTION-AMOUNT DISPLAY " Status: " TRANSACTION-STATUS STOP RUN.
Using VALUE to initialize individual fields within a group item structure.
Initialize numeric data items.
1201 NUMERIC-FIELD PIC 9(3) VALUE 123. 01 DECIMAL-FIELD PIC 9(5)V99 VALUE 123.45.
Initialize alphanumeric data items.
1201 TEXT-FIELD PIC X(20) VALUE "Hello World". 01 CHAR-FIELD PIC X(1) VALUE "A".
Use predefined COBOL constants.
12301 SPACE-FIELD PIC X(10) VALUE SPACES. 01 ZERO-FIELD PIC 9(5) VALUE ZEROS. 01 HIGH-FIELD PIC X(5) VALUE HIGH-VALUES.
Initialize edited numeric fields.
1201 DOLLAR-FIELD PIC $9(6).99 VALUE $1234.56. 01 COMMA-FIELD PIC 9(3),9(3) VALUE 123,456.
Data Type | Syntax | Example |
---|---|---|
Numeric | PIC 9(n) VALUE number | PIC 9(3) VALUE 123 |
Alphanumeric | PIC X(n) VALUE "text" | PIC X(10) VALUE "HELLO" |
Figurative | PIC X(n) VALUE SPACES | PIC X(5) VALUE ZEROS |
Decimal | PIC 9(n)V99 VALUE number | PIC 9(5)V99 VALUE 123.45 |
1. What is the primary purpose of VALUE in COBOL?
2. Where is VALUE typically used in a COBOL program?
3. What types of values can be assigned using VALUE?
4. How does VALUE differ from MOVE?
5. What is a figurative constant in COBOL?