Data structures organize data items hierarchically using level numbers to create logical groupings and relationships. Learn to design effective data structures with group items, elementary items, arrays, and tables.
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152WORKING-STORAGE SECTION. 01 HIERARCHICAL-DATA-STRUCTURE. 05 EMPLOYEE-MASTER-RECORD. *> Level 01 - Root level 10 EMPLOYEE-IDENTIFICATION. *> Level 05 - Major group 15 EMPLOYEE-ID PIC 9(6). 15 EMPLOYEE-SSN PIC 9(9). 15 EMPLOYEE-DEPARTMENT-CODE PIC X(3). 10 EMPLOYEE-PERSONAL-INFO. *> Level 05 - Major group 15 EMPLOYEE-NAME. 20 EMPLOYEE-FIRST-NAME PIC X(15). 20 EMPLOYEE-LAST-NAME PIC X(20). 20 EMPLOYEE-MIDDLE-INITIAL PIC X. 15 EMPLOYEE-ADDRESS. 20 EMPLOYEE-STREET PIC X(30). 20 EMPLOYEE-CITY PIC X(20). 20 EMPLOYEE-STATE PIC X(2). 20 EMPLOYEE-ZIP PIC X(10). 10 EMPLOYEE-WORK-INFO. *> Level 05 - Major group 15 EMPLOYEE-POSITION PIC X(20). 15 EMPLOYEE-SALARY PIC 9(7)V99. 15 EMPLOYEE-HIRE-DATE PIC 9(8). PROCEDURE DIVISION. PERFORM DEMONSTRATE-HIERARCHICAL-STRUCTURE DEMONSTRATE-HIERARCHICAL-STRUCTURE. MOVE 123456 TO EMPLOYEE-ID MOVE 123456789 TO EMPLOYEE-SSN MOVE 'IT' TO EMPLOYEE-DEPARTMENT-CODE MOVE 'JOHN' TO EMPLOYEE-FIRST-NAME MOVE 'SMITH' TO EMPLOYEE-LAST-NAME MOVE 'A' TO EMPLOYEE-MIDDLE-INITIAL MOVE '123 MAIN STREET' TO EMPLOYEE-STREET MOVE 'NEW YORK' TO EMPLOYEE-CITY MOVE 'NY' TO EMPLOYEE-STATE MOVE '10001' TO EMPLOYEE-ZIP MOVE 'SOFTWARE ENGINEER' TO EMPLOYEE-POSITION MOVE 75000.00 TO EMPLOYEE-SALARY MOVE 20230101 TO EMPLOYEE-HIRE-DATE DISPLAY 'Hierarchical Data Structure demonstration:' DISPLAY 'Employee ID: ' EMPLOYEE-ID DISPLAY 'Employee Name: ' EMPLOYEE-NAME DISPLAY 'Full Name: ' EMPLOYEE-FIRST-NAME ' ' EMPLOYEE-LAST-NAME DISPLAY 'Address: ' EMPLOYEE-ADDRESS DISPLAY 'Street: ' EMPLOYEE-STREET DISPLAY 'City: ' EMPLOYEE-CITY DISPLAY 'Position: ' EMPLOYEE-POSITION DISPLAY 'Salary: ' EMPLOYEE-SALARY.
Create hierarchical data structures using level numbers (01, 05, 10, 15, 20) to organize data in logical groups. Higher numbers represent subgroups within larger groups, creating clear data relationships.
1234567891011121314151617181920212223242526272829303132333435363738394041WORKING-STORAGE SECTION. 01 GROUP-AND-ELEMENTARY-ITEMS. 05 CUSTOMER-RECORD. *> Group item (no PICTURE) 10 CUSTOMER-ID PIC 9(6). *> Elementary item 10 CUSTOMER-NAME PIC X(30). *> Elementary item 10 CUSTOMER-ADDRESS. *> Group item (no PICTURE) 15 CUSTOMER-STREET PIC X(30). *> Elementary item 15 CUSTOMER-CITY PIC X(20). *> Elementary item 15 CUSTOMER-STATE PIC X(2). *> Elementary item 15 CUSTOMER-ZIP PIC X(10). *> Elementary item 10 CUSTOMER-FINANCIAL-INFO. *> Group item (no PICTURE) 15 CUSTOMER-BALANCE PIC 9(9)V99. *> Elementary item 15 CUSTOMER-CREDIT-LIMIT PIC 9(9)V99. *> Elementary item 15 CUSTOMER-PAYMENT-TERMS PIC X(10). *> Elementary item PROCEDURE DIVISION. PERFORM DEMONSTRATE-GROUP-ELEMENTARY-ITEMS DEMONSTRATE-GROUP-ELEMENTARY-ITEMS. MOVE 123456 TO CUSTOMER-ID MOVE 'JANE DOE' TO CUSTOMER-NAME MOVE '456 OAK AVENUE' TO CUSTOMER-STREET MOVE 'CHICAGO' TO CUSTOMER-CITY MOVE 'IL' TO CUSTOMER-STATE MOVE '60601' TO CUSTOMER-ZIP MOVE 2500.75 TO CUSTOMER-BALANCE MOVE 5000.00 TO CUSTOMER-CREDIT-LIMIT MOVE 'NET30' TO CUSTOMER-PAYMENT-TERMS DISPLAY 'Group and Elementary Items demonstration:' DISPLAY 'Customer Record: ' CUSTOMER-RECORD DISPLAY 'Customer ID: ' CUSTOMER-ID DISPLAY 'Customer Name: ' CUSTOMER-NAME DISPLAY 'Customer Address: ' CUSTOMER-ADDRESS DISPLAY 'Customer Street: ' CUSTOMER-STREET DISPLAY 'Customer City: ' CUSTOMER-CITY DISPLAY 'Customer Financial Info: ' CUSTOMER-FINANCIAL-INFO DISPLAY 'Customer Balance: ' CUSTOMER-BALANCE DISPLAY 'Customer Credit Limit: ' CUSTOMER-CREDIT-LIMIT.
Group items contain other data items and have no PICTURE clause, while elementary items are the lowest level with PICTURE clauses. Use group items to organize related data and elementary items for actual data storage.
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556WORKING-STORAGE SECTION. 01 ARRAYS-AND-TABLES. 05 CUSTOMER-TABLE OCCURS 100 TIMES INDEXED BY CUSTOMER-INDEX. 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 INDEXED BY MONTH-INDEX. 10 MONTHLY-SALES-AMOUNT PIC 9(9)V99. 10 MONTHLY-SALES-COUNT PIC 9(6). 10 MONTHLY-SALES-DATE PIC 9(8). 05 STATE-TAX-RATE-TABLE OCCURS 50 TIMES INDEXED BY STATE-INDEX. 10 STATE-TAX-RATE-CODE PIC X(2). 10 STATE-TAX-RATE-PERCENTAGE PIC 9(3)V99. 10 STATE-TAX-RATE-DESCRIPTION PIC X(20). PROCEDURE DIVISION. PERFORM DEMONSTRATE-ARRAYS-TABLES DEMONSTRATE-ARRAYS-TABLES. DISPLAY 'Arrays and Tables demonstration:' *> Initialize customer table MOVE 1 TO CUSTOMER-INDEX MOVE 123456 TO CUSTOMER-TABLE-ID(CUSTOMER-INDEX) MOVE 'JOHN SMITH' TO CUSTOMER-TABLE-NAME(CUSTOMER-INDEX) MOVE 1500.50 TO CUSTOMER-TABLE-BALANCE(CUSTOMER-INDEX) *> Initialize monthly sales array MOVE 1 TO MONTH-INDEX MOVE 25000.75 TO MONTHLY-SALES-AMOUNT(MONTH-INDEX) MOVE 150 TO MONTHLY-SALES-COUNT(MONTH-INDEX) MOVE 20230101 TO MONTHLY-SALES-DATE(MONTH-INDEX) *> Initialize state tax rate table MOVE 1 TO STATE-INDEX MOVE 'NY' TO STATE-TAX-RATE-CODE(STATE-INDEX) MOVE 8.25 TO STATE-TAX-RATE-PERCENTAGE(STATE-INDEX) MOVE 'NEW YORK STATE' TO STATE-TAX-RATE-DESCRIPTION(STATE-INDEX) DISPLAY 'Customer Table Entry:' DISPLAY ' ID: ' CUSTOMER-TABLE-ID(CUSTOMER-INDEX) DISPLAY ' Name: ' CUSTOMER-TABLE-NAME(CUSTOMER-INDEX) DISPLAY ' Balance: ' CUSTOMER-TABLE-BALANCE(CUSTOMER-INDEX) DISPLAY 'Monthly Sales Entry:' DISPLAY ' Amount: ' MONTHLY-SALES-AMOUNT(MONTH-INDEX) DISPLAY ' Count: ' MONTHLY-SALES-COUNT(MONTH-INDEX) DISPLAY ' Date: ' MONTHLY-SALES-DATE(MONTH-INDEX) DISPLAY 'State Tax Rate Entry:' DISPLAY ' Code: ' STATE-TAX-RATE-CODE(STATE-INDEX) DISPLAY ' Percentage: ' STATE-TAX-RATE-PERCENTAGE(STATE-INDEX) DISPLAY ' Description: ' STATE-TAX-RATE-DESCRIPTION(STATE-INDEX).
Create arrays and tables using the OCCURS clause with INDEXED BY for efficient access. Use tables for structured data storage and arrays for sequential data processing with index-based access.
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162WORKING-STORAGE SECTION. 01 COMPLEX-DATA-STRUCTURES. 05 COMPANY-STRUCTURE. 10 COMPANY-HEADER. 15 COMPANY-ID PIC 9(6). 15 COMPANY-NAME PIC X(50). 15 COMPANY-ADDRESS PIC X(100). 10 DEPARTMENT-TABLE OCCURS 10 TIMES INDEXED BY DEPT-INDEX. 15 DEPARTMENT-ID PIC X(3). 15 DEPARTMENT-NAME PIC X(30). 15 DEPARTMENT-MANAGER PIC X(30). 15 EMPLOYEE-TABLE OCCURS 50 TIMES INDEXED BY EMP-INDEX. 20 EMPLOYEE-ID PIC 9(6). 20 EMPLOYEE-NAME PIC X(30). 20 EMPLOYEE-POSITION PIC X(20). 20 EMPLOYEE-SALARY PIC 9(7)V99. 10 COMPANY-FINANCIAL-INFO. 15 TOTAL-EMPLOYEES PIC 9(4). 15 TOTAL-PAYROLL PIC 9(12)V99. 15 COMPANY-REVENUE PIC 9(12)V99. PROCEDURE DIVISION. PERFORM DEMONSTRATE-COMPLEX-STRUCTURES DEMONSTRATE-COMPLEX-STRUCTURES. DISPLAY 'Complex Data Structures demonstration:' *> Initialize company header MOVE 100001 TO COMPANY-ID MOVE 'ACME CORPORATION' TO COMPANY-NAME MOVE '123 BUSINESS PARK DRIVE' TO COMPANY-ADDRESS *> Initialize first department MOVE 1 TO DEPT-INDEX MOVE 'IT' TO DEPARTMENT-ID(DEPT-INDEX) MOVE 'INFORMATION TECHNOLOGY' TO DEPARTMENT-NAME(DEPT-INDEX) MOVE 'JANE MANAGER' TO DEPARTMENT-MANAGER(DEPT-INDEX) *> Initialize first employee in IT department MOVE 1 TO EMP-INDEX MOVE 200001 TO EMPLOYEE-ID(DEPT-INDEX, EMP-INDEX) MOVE 'JOHN DEVELOPER' TO EMPLOYEE-NAME(DEPT-INDEX, EMP-INDEX) MOVE 'SOFTWARE ENGINEER' TO EMPLOYEE-POSITION(DEPT-INDEX, EMP-INDEX) MOVE 75000.00 TO EMPLOYEE-SALARY(DEPT-INDEX, EMP-INDEX) *> Initialize company financial info MOVE 1 TO TOTAL-EMPLOYEES MOVE 75000.00 TO TOTAL-PAYROLL MOVE 1000000.00 TO COMPANY-REVENUE DISPLAY 'Company Structure:' DISPLAY ' Company ID: ' COMPANY-ID DISPLAY ' Company Name: ' COMPANY-NAME DISPLAY ' Department: ' DEPARTMENT-NAME(DEPT-INDEX) DISPLAY ' Manager: ' DEPARTMENT-MANAGER(DEPT-INDEX) DISPLAY ' Employee: ' EMPLOYEE-NAME(DEPT-INDEX, EMP-INDEX) DISPLAY ' Position: ' EMPLOYEE-POSITION(DEPT-INDEX, EMP-INDEX) DISPLAY ' Salary: ' EMPLOYEE-SALARY(DEPT-INDEX, EMP-INDEX) DISPLAY ' Total Employees: ' TOTAL-EMPLOYEES DISPLAY ' Total Payroll: ' TOTAL-PAYROLL.
Create complex data structures with nested tables and multiple levels of organization. Use hierarchical structures to represent real-world relationships like company-department-employee structures.
123456789101112131415161718192021222324252627282930313233343536373839404142WORKING-STORAGE SECTION. 01 DATA-STRUCTURE-DESIGN-PRINCIPLES. 05 DESIGN-PRINCIPLES. 10 LOGICAL-ORGANIZATION PIC X(20) VALUE 'LOGICAL'. 10 CLEAR-HIERARCHY PIC X(20) VALUE 'HIERARCHICAL'. 10 EFFICIENT-ACCESS PIC X(20) VALUE 'EFFICIENT'. 10 MAINTAINABLE-DESIGN PIC X(20) VALUE 'MAINTAINABLE'. 05 DESIGN-GUIDELINES. 10 MEANINGFUL-NAMES PIC X(30) VALUE 'USE MEANINGFUL NAMES'. 10 CONSISTENT-LEVELS PIC X(30) VALUE 'MAINTAIN CONSISTENT LEVELS'. 10 APPROPRIATE-SIZES PIC X(30) VALUE 'CHOOSE APPROPRIATE SIZES'. 05 DESIGN-BENEFITS. 10 IMPROVED-READABILITY PIC X(30) VALUE 'IMPROVED READABILITY'. 10 EASIER-MAINTENANCE PIC X(30) VALUE 'EASIER MAINTENANCE'. 10 BETTER-PERFORMANCE PIC X(30) VALUE 'BETTER PERFORMANCE'. PROCEDURE DIVISION. PERFORM DEMONSTRATE-DESIGN-PRINCIPLES DEMONSTRATE-DESIGN-PRINCIPLES. DISPLAY 'Data Structure Design Principles demonstration:' DISPLAY 'Design Principles:' DISPLAY ' Logical Organization: ' LOGICAL-ORGANIZATION DISPLAY ' Clear Hierarchy: ' CLEAR-HIERARCHY DISPLAY ' Efficient Access: ' EFFICIENT-ACCESS DISPLAY ' Maintainable Design: ' MAINTAINABLE-DESIGN DISPLAY 'Design Guidelines:' DISPLAY ' Names: ' MEANINGFUL-NAMES DISPLAY ' Levels: ' CONSISTENT-LEVELS DISPLAY ' Sizes: ' APPROPRIATE-SIZES DISPLAY 'Design Benefits:' DISPLAY ' Readability: ' IMPROVED-READABILITY DISPLAY ' Maintenance: ' EASIER-MAINTENANCE DISPLAY ' Performance: ' BETTER-PERFORMANCE DISPLAY 'Design Principles Summary:' DISPLAY '1. Organize data logically' DISPLAY '2. Create clear hierarchies' DISPLAY '3. Enable efficient access' DISPLAY '4. Design for maintainability' DISPLAY '5. Use meaningful names' DISPLAY '6. Maintain consistent level numbering'.
Follow design principles for effective data structures: logical organization, clear hierarchy, efficient access, maintainable design, meaningful names, and consistent level numbering for better code quality.
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849WORKING-STORAGE SECTION. 01 DATA-STRUCTURE-PERFORMANCE. 05 PERFORMANCE-METRICS. 10 ACCESS-TIME PIC 9(6). *> Access time in microseconds 10 MEMORY-USAGE PIC 9(8). *> Memory usage in bytes 10 EFFICIENCY-RATING PIC 9(3)V99. *> Efficiency percentage 05 OPTIMIZATION-TECHNIQUES. 10 GROUPING-STRATEGY PIC X(20) VALUE 'LOGICAL GROUPING'. 10 INDEXING-STRATEGY PIC X(20) VALUE 'EFFICIENT INDEXING'. 10 MEMORY-ALIGNMENT PIC X(20) VALUE 'PROPER ALIGNMENT'. 05 PERFORMANCE-TARGETS. 10 TARGET-ACCESS-TIME PIC 9(6) VALUE 100. 10 TARGET-MEMORY-USAGE PIC 9(8) VALUE 1000000. 10 TARGET-EFFICIENCY PIC 9(3)V99 VALUE 95.00. PROCEDURE DIVISION. PERFORM DEMONSTRATE-PERFORMANCE-CONSIDERATIONS DEMONSTRATE-PERFORMANCE-CONSIDERATIONS. DISPLAY 'Data Structure Performance demonstration:' MOVE 50 TO ACCESS-TIME MOVE 500000 TO MEMORY-USAGE COMPUTE EFFICIENCY-RATING = 92.50 DISPLAY 'Performance Metrics:' DISPLAY ' Access Time: ' ACCESS-TIME ' microseconds' DISPLAY ' Memory Usage: ' MEMORY-USAGE ' bytes' DISPLAY ' Efficiency Rating: ' EFFICIENCY-RATING '%' DISPLAY 'Optimization Techniques:' DISPLAY ' Grouping: ' GROUPING-STRATEGY DISPLAY ' Indexing: ' INDEXING-STRATEGY DISPLAY ' Alignment: ' MEMORY-ALIGNMENT DISPLAY 'Performance Targets:' DISPLAY ' Target Access Time: ' TARGET-ACCESS-TIME ' microseconds' DISPLAY ' Target Memory Usage: ' TARGET-MEMORY-USAGE ' bytes' DISPLAY ' Target Efficiency: ' TARGET-EFFICIENCY '%' IF ACCESS-TIME <= TARGET-ACCESS-TIME DISPLAY 'Access time target achieved' END-IF IF MEMORY-USAGE <= TARGET-MEMORY-USAGE DISPLAY 'Memory usage target achieved' END-IF IF EFFICIENCY-RATING >= TARGET-EFFICIENCY DISPLAY 'Efficiency target achieved' END-IF.
Consider performance when designing data structures: optimize access time, minimize memory usage, achieve high efficiency ratings, use logical grouping, efficient indexing, and proper memory alignment.
12345678910111213141516171819202122232425262728293031323334353637383940414243WORKING-STORAGE SECTION. 01 DATA-STRUCTURE-BEST-PRACTICES. 05 PRACTICE-GUIDELINES. 10 CLEAR-DOCUMENTATION PIC X(30) VALUE 'CLEAR DOCUMENTATION'. 10 CONSISTENT-NAMING PIC X(30) VALUE 'CONSISTENT NAMING'. 10 APPROPRIATE-SIZING PIC X(30) VALUE 'APPROPRIATE SIZING'. 10 EFFICIENT-ORGANIZATION PIC X(30) VALUE 'EFFICIENT ORGANIZATION'. 05 IMPLEMENTATION-STANDARDS. 10 STANDARD-LEVELS PIC X(20) VALUE 'STANDARD LEVELS'. 10 MEANINGFUL-PREFIXES PIC X(20) VALUE 'MEANINGFUL PREFIXES'. 10 LOGICAL-GROUPING PIC X(20) VALUE 'LOGICAL GROUPING'. 05 MAINTENANCE-CONSIDERATIONS. 10 EASY-MODIFICATION PIC X(30) VALUE 'EASY MODIFICATION'. 10 CLEAR-RELATIONSHIPS PIC X(30) VALUE 'CLEAR RELATIONSHIPS'. 10 SCALABLE-DESIGN PIC X(30) VALUE 'SCALABLE DESIGN'. PROCEDURE DIVISION. PERFORM DEMONSTRATE-BEST-PRACTICES DEMONSTRATE-BEST-PRACTICES. DISPLAY 'Data Structure Best Practices demonstration:' DISPLAY 'Practice Guidelines:' DISPLAY ' Documentation: ' CLEAR-DOCUMENTATION DISPLAY ' Naming: ' CONSISTENT-NAMING DISPLAY ' Sizing: ' APPROPRIATE-SIZING DISPLAY ' Organization: ' EFFICIENT-ORGANIZATION DISPLAY 'Implementation Standards:' DISPLAY ' Levels: ' STANDARD-LEVELS DISPLAY ' Prefixes: ' MEANINGFUL-PREFIXES DISPLAY ' Grouping: ' LOGICAL-GROUPING DISPLAY 'Maintenance Considerations:' DISPLAY ' Modification: ' EASY-MODIFICATION DISPLAY ' Relationships: ' CLEAR-RELATIONSHIPS DISPLAY ' Design: ' SCALABLE-DESIGN DISPLAY 'Best Practices Summary:' DISPLAY '1. Document data structures clearly' DISPLAY '2. Use consistent naming conventions' DISPLAY '3. Choose appropriate field sizes' DISPLAY '4. Organize data efficiently' DISPLAY '5. Use standard level numbering' DISPLAY '6. Design for easy maintenance' DISPLAY '7. Plan for future scalability'.
Follow best practices for data structures: clear documentation, consistent naming, appropriate sizing, efficient organization, standard level numbering, easy maintenance, and scalable design for long-term success.