Data names are identifiers used to name data items, variables, and data structures in COBOL programs. Learn naming conventions, rules, and best practices for creating meaningful and maintainable data names.
12345678910111213WORKING-STORAGE SECTION. 01 VALID-DATA-NAMES. 05 CUSTOMER-ID PIC 9(6). *> Valid: starts with letter 05 CUSTOMER-NAME PIC X(30). *> Valid: contains hyphen 05 ACCOUNT-BALANCE PIC 9(9)V99. *> Valid: descriptive name 05 TRANSACTION-COUNT PIC 9(4). *> Valid: meaningful name 05 DATE-OF-BIRTH PIC 9(8). *> Valid: clear purpose *> Invalid data names (commented out): *> 05 123-INVALID PIC 9(6). *> Invalid: starts with digit *> 05 CUSTOMER-NAME- PIC X(30). *> Invalid: ends with hyphen *> 05 -INVALID-NAME PIC X(20). *> Invalid: starts with hyphen *> 05 PERFORM PIC X(10). *> Invalid: reserved word
Follow COBOL data name rules: start with a letter, use only letters/digits/hyphens, 1-30 characters, no reserved words, and don't start/end with hyphens. Use descriptive names that clearly indicate purpose.
123456789101112131415161718WORKING-STORAGE SECTION. 01 NAMING-CONVENTIONS. 05 INPUT-DATA. 10 INPUT-CUSTOMER-ID PIC 9(6). 10 INPUT-CUSTOMER-NAME PIC X(30). 10 INPUT-TRANSACTION-AMOUNT PIC 9(9)V99. 05 OUTPUT-DATA. 10 OUTPUT-CUSTOMER-ID PIC 9(6). 10 OUTPUT-CUSTOMER-NAME PIC X(30). 10 OUTPUT-TOTAL-BALANCE PIC 9(9)V99. 05 WORK-VARIABLES. 10 WS-COUNTER PIC 9(4). 10 WS-TEMP-AMOUNT PIC 9(9)V99. 10 WS-FLAG PIC X. 05 CONSTANTS. 10 C-MAX-RECORDS PIC 9(4) VALUE 1000. 10 C-COMPANY-NAME PIC X(20) VALUE 'ACME CORP'. 10 C-DEFAULT-STATUS PIC X VALUE 'A'.
Use consistent naming conventions with prefixes: INPUT- for input data, OUTPUT- for output data, WS- for work variables, C- for constants. This improves code readability and maintainability.
1234567891011121314151617181920WORKING-STORAGE SECTION. 01 DESCRIPTIVE-NAMES. 05 CUSTOMER-MASTER-RECORD. 10 CUSTOMER-UNIQUE-IDENTIFIER PIC 9(6). 10 CUSTOMER-FULL-NAME PIC X(50). 10 CUSTOMER-ACCOUNT-BALANCE PIC 9(9)V99. 10 CUSTOMER-ACCOUNT-STATUS PIC X. 88 CUSTOMER-ACCOUNT-ACTIVE VALUE 'A'. 88 CUSTOMER-ACCOUNT-INACTIVE VALUE 'I'. 10 CUSTOMER-LAST-TRANSACTION-DATE PIC 9(8). 10 CUSTOMER-CREDIT-LIMIT PIC 9(9)V99. PROCEDURE DIVISION. DISPLAY 'Customer ID: ' CUSTOMER-UNIQUE-IDENTIFIER DISPLAY 'Customer Name: ' CUSTOMER-FULL-NAME DISPLAY 'Account Balance: ' CUSTOMER-ACCOUNT-BALANCE IF CUSTOMER-ACCOUNT-ACTIVE DISPLAY 'Account is active' END-IF.
Use descriptive data names that clearly indicate the data's purpose and context. Include relevant qualifiers like CUSTOMER-, ACCOUNT-, TRANSACTION- to make names self-documenting and meaningful.
1234567891011121314151617181920212223242526WORKING-STORAGE SECTION. 01 GROUP-AND-ELEMENTARY-NAMES. 05 EMPLOYEE-INFORMATION. *> Group item name 10 EMPLOYEE-ID PIC 9(6). *> Elementary item name 10 EMPLOYEE-PERSONAL-DATA. *> Sub-group name 15 EMPLOYEE-FIRST-NAME PIC X(15). 15 EMPLOYEE-LAST-NAME PIC X(20). 15 EMPLOYEE-MIDDLE-INITIAL PIC X. 10 EMPLOYEE-WORK-DATA. *> Sub-group name 15 EMPLOYEE-DEPARTMENT PIC X(10). 15 EMPLOYEE-POSITION PIC X(20). 15 EMPLOYEE-SALARY PIC 9(7)V99. 10 EMPLOYEE-ADDRESS-DATA. *> Sub-group name 15 EMPLOYEE-STREET-ADDRESS PIC X(30). 15 EMPLOYEE-CITY PIC X(20). 15 EMPLOYEE-STATE PIC X(2). 15 EMPLOYEE-ZIP-CODE PIC X(10). PROCEDURE DIVISION. *> Access group items DISPLAY 'Employee: ' EMPLOYEE-PERSONAL-DATA DISPLAY 'Work Info: ' EMPLOYEE-WORK-DATA *> Access elementary items DISPLAY 'ID: ' EMPLOYEE-ID DISPLAY 'Name: ' EMPLOYEE-FIRST-NAME ' ' EMPLOYEE-LAST-NAME.
Name group items to represent logical data groupings and elementary items to represent individual data fields. Use hierarchical naming to show relationships between data items.
123456789101112131415161718192021FILE SECTION. FD CUSTOMER-MASTER-FILE *> File name LABEL RECORDS ARE STANDARD RECORDING MODE IS F. 01 CUSTOMER-MASTER-RECORD. *> Record name 05 CUSTOMER-RECORD-HEADER. 10 CUSTOMER-RECORD-TYPE PIC X VALUE 'C'. 10 CUSTOMER-RECORD-SIZE PIC 9(4). 05 CUSTOMER-RECORD-DATA. 10 CUSTOMER-RECORD-ID PIC 9(6). 10 CUSTOMER-RECORD-NAME PIC X(30). 10 CUSTOMER-RECORD-BALANCE PIC 9(9)V99. FD TRANSACTION-DETAIL-FILE *> File name LABEL RECORDS ARE STANDARD RECORDING MODE IS F. 01 TRANSACTION-DETAIL-RECORD. *> Record name 05 TRANSACTION-RECORD-ID PIC 9(8). 05 TRANSACTION-RECORD-DATE PIC 9(8). 05 TRANSACTION-RECORD-AMOUNT PIC 9(9)V99. 05 TRANSACTION-RECORD-DESCRIPTION PIC X(50).
Use descriptive names for files and records that indicate their purpose and content. Include file type indicators like MASTER, DETAIL, SUMMARY, and record type indicators like HEADER, DATA, TRAILER.
1234567891011121314151617181920212223242526272829WORKING-STORAGE SECTION. 01 CONDITION-NAMES. 05 ACCOUNT-STATUS PIC X. 88 ACCOUNT-STATUS-ACTIVE VALUE 'A'. 88 ACCOUNT-STATUS-INACTIVE VALUE 'I'. 88 ACCOUNT-STATUS-SUSPENDED VALUE 'S'. 88 ACCOUNT-STATUS-CLOSED VALUE 'C'. 05 TRANSACTION-TYPE PIC X. 88 TRANSACTION-TYPE-DEPOSIT VALUE 'D'. 88 TRANSACTION-TYPE-WITHDRAWAL VALUE 'W'. 88 TRANSACTION-TYPE-TRANSFER VALUE 'T'. 88 TRANSACTION-TYPE-FEE VALUE 'F'. 05 CUSTOMER-GRADE PIC 9. 88 CUSTOMER-GRADE-PREMIUM VALUE 9 8. 88 CUSTOMER-GRADE-STANDARD VALUE 7 6 5. 88 CUSTOMER-GRADE-BASIC VALUE 4 3 2 1. PROCEDURE DIVISION. IF ACCOUNT-STATUS-ACTIVE DISPLAY 'Account is active' END-IF IF TRANSACTION-TYPE-DEPOSIT DISPLAY 'Processing deposit' END-IF IF CUSTOMER-GRADE-PREMIUM DISPLAY 'Premium customer' END-IF.
Use meaningful condition names (88-levels) that clearly describe the condition being tested. Include the data item name as a prefix and use descriptive suffixes for different values.
1234567891011121314151617181920WORKING-STORAGE SECTION. 01 ARRAY-AND-TABLE-NAMES. 05 CUSTOMER-TABLE OCCURS 100 TIMES. 10 CUSTOMER-TABLE-ID PIC 9(6). 10 CUSTOMER-TABLE-NAME PIC X(30). 10 CUSTOMER-TABLE-BALANCE PIC 9(9)V99. 05 MONTHLY-SALES-ARRAY OCCURS 12 TIMES. 10 MONTHLY-SALES-AMOUNT PIC 9(9)V99. 10 MONTHLY-SALES-COUNT PIC 9(6). 05 STATE-TAX-RATE-TABLE OCCURS 50 TIMES. 10 STATE-TAX-RATE-CODE PIC X(2). 10 STATE-TAX-RATE-PERCENTAGE PIC 9(3)V99. PROCEDURE DIVISION. *> Access array elements MOVE 1000.50 TO MONTHLY-SALES-AMOUNT(1) MOVE 1500.75 TO MONTHLY-SALES-AMOUNT(2) DISPLAY 'January sales: ' MONTHLY-SALES-AMOUNT(1) DISPLAY 'February sales: ' MONTHLY-SALES-AMOUNT(2).
Use descriptive names for arrays and tables that indicate their purpose and content. Include TABLE or ARRAY in the name and use meaningful suffixes for array elements.
123456789101112131415161718LINKAGE SECTION. 01 PARAMETER-AND-LINKAGE-NAMES. 05 INPUT-PARAMETER-AREA. 10 INPUT-PARAMETER-LENGTH PIC S9(4) COMP. 10 INPUT-PARAMETER-DATA PIC X(100). 05 OUTPUT-PARAMETER-AREA. 10 OUTPUT-PARAMETER-RETURN-CODE PIC 9(4). 10 OUTPUT-PARAMETER-MESSAGE PIC X(50). 05 SHARED-DATA-AREA. 10 SHARED-DATA-CUSTOMER-ID PIC 9(6). 10 SHARED-DATA-CUSTOMER-NAME PIC X(30). 10 SHARED-DATA-CUSTOMER-BALANCE PIC 9(9)V99. PROCEDURE DIVISION USING INPUT-PARAMETER-AREA OUTPUT-PARAMETER-AREA SHARED-DATA-AREA. DISPLAY 'Input parameter length: ' INPUT-PARAMETER-LENGTH DISPLAY 'Shared customer ID: ' SHARED-DATA-CUSTOMER-ID.
Use clear names for parameters and linkage data that indicate their purpose and direction. Include INPUT-, OUTPUT-, SHARED- prefixes to clarify data flow and usage.
1234567891011121314151617181920212223WORKING-STORAGE SECTION. 01 DATA-NAME-BEST-PRACTICES. 05 PROGRAM-CONSTANTS. 10 C-MAXIMUM-RECORD-COUNT PIC 9(4) VALUE 1000. 10 C-MINIMUM-BALANCE-THRESHOLD PIC 9(9)V99 VALUE 100.00. 10 C-DEFAULT-INTEREST-RATE PIC 9(3)V99 VALUE 5.25. 05 PROGRAM-VARIABLES. 10 WS-RECORD-COUNTER PIC 9(6) VALUE 0. 10 WS-TOTAL-AMOUNT PIC 9(9)V99 VALUE 0. 10 WS-PROCESSING-FLAG PIC X VALUE 'N'. 88 WS-PROCESSING-COMPLETE VALUE 'Y'. 05 BUSINESS-DATA. 10 CUSTOMER-ACCOUNT-NUMBER PIC 9(8). 10 CUSTOMER-ACCOUNT-BALANCE PIC 9(9)V99. 10 CUSTOMER-ACCOUNT-INTEREST-RATE PIC 9(3)V99. PROCEDURE DIVISION. *> Use meaningful names that describe business purpose MOVE C-MINIMUM-BALANCE-THRESHOLD TO WS-TOTAL-AMOUNT IF CUSTOMER-ACCOUNT-BALANCE > C-MINIMUM-BALANCE-THRESHOLD DISPLAY 'Account meets minimum balance requirement' END-IF.
Follow best practices: use meaningful names that describe business purpose, maintain consistent naming conventions, avoid abbreviations that reduce clarity, and group related data with common prefixes.
12345678910111213141516171819202122WORKING-STORAGE SECTION. 01 COMMON-NAMING-PATTERNS. 05 FILE-NAMES. 10 CUSTOMER-MASTER-FILE PIC X(20). 10 TRANSACTION-DETAIL-FILE PIC X(20). 10 REPORT-OUTPUT-FILE PIC X(20). 05 RECORD-NAMES. 10 CUSTOMER-MASTER-RECORD PIC X(20). 10 TRANSACTION-DETAIL-RECORD PIC X(20). 10 REPORT-HEADER-RECORD PIC X(20). 05 FIELD-NAMES. 10 CUSTOMER-ID-FIELD PIC X(20). 10 TRANSACTION-AMOUNT-FIELD PIC X(20). 10 REPORT-DATE-FIELD PIC X(20). 05 WORK-VARIABLES. 10 WS-FILE-STATUS PIC X(20). 10 WS-RECORD-COUNT PIC X(20). 10 WS-TOTAL-AMOUNT PIC X(20). 05 CONSTANTS. 10 C-MAX-RECORDS PIC X(20). 10 C-DEFAULT-VALUE PIC X(20). 10 C-ERROR-MESSAGE PIC X(20).
Use common naming patterns: FILE- for file names, RECORD- for record names, FIELD- for field names, WS- for work variables, C- for constants. This creates consistent and predictable naming throughout programs.