Program structure in COBOL refers to the organization and layout of COBOL programs, including the four main divisions and their proper organization. Understanding program structure concepts is fundamental to COBOL programming as it determines program organization, readability, and maintainability. Proper program structure ensures efficient development, debugging, and maintenance of COBOL applications.
Program structure in COBOL encompasses the organization of program components including divisions, sections, paragraphs, and statements. The hierarchical structure provides clear organization and separation of concerns. Understanding these concepts is essential for building well-organized, maintainable COBOL programs that follow industry standards and best practices.
The IDENTIFICATION DIVISION identifies the program and provides metadata about the program including program name, author, installation, and other identification information.
1234567891011121314151617181920212223242526272829303132333435IDENTIFICATION DIVISION. PROGRAM-ID. CUSTOMER-PROCESSING. AUTHOR. JOHN SMITH. INSTALLATION. MAINFRAME-CENTER. DATE-WRITTEN. 2024-01-15. DATE-COMPILED. 2024-01-15. SECURITY. CONFIDENTIAL. *> Program Description *> This program processes customer data and generates reports *> Version: 1.0 *> Last Modified: 2024-01-15 ENVIRONMENT DIVISION. CONFIGURATION SECTION. SOURCE-COMPUTER. IBM-Z15. OBJECT-COMPUTER. IBM-Z15. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT CUSTOMER-FILE ASSIGN TO 'CUSTOMER.DAT'. DATA DIVISION. FILE SECTION. FD CUSTOMER-FILE. 01 CUSTOMER-RECORD PIC X(100). WORKING-STORAGE SECTION. 01 PROGRAM-CONTROLS. 05 PROCESSING-FLAG PIC X(1) VALUE 'N'. PROCEDURE DIVISION. MAIN-PROGRAM. DISPLAY 'Customer Processing Program Started' STOP RUN.
The IDENTIFICATION DIVISION provides essential program metadata and identification information. It includes program name, author, dates, and security information for proper program documentation.
The ENVIRONMENT DIVISION describes the computer environment and file specifications, including source computer, object computer, and file control specifications.
12345678910111213141516171819202122232425262728293031ENVIRONMENT DIVISION. CONFIGURATION SECTION. SOURCE-COMPUTER. IBM-Z15 WITH DEBUGGING MODE. OBJECT-COMPUTER. IBM-Z15. MEMORY SIZE 32M. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT INPUT-FILE ASSIGN TO 'INPUT.DAT' ORGANIZATION IS SEQUENTIAL ACCESS MODE IS SEQUENTIAL FILE STATUS IS INPUT-STATUS. SELECT OUTPUT-FILE ASSIGN TO 'OUTPUT.DAT' ORGANIZATION IS SEQUENTIAL ACCESS MODE IS SEQUENTIAL FILE STATUS IS OUTPUT-STATUS. I-O-CONTROL. APPLY WRITE-ONLY ON OUTPUT-FILE. DATA DIVISION. WORKING-STORAGE SECTION. 01 FILE-CONTROLS. 05 INPUT-STATUS PIC XX VALUE '00'. 05 OUTPUT-STATUS PIC XX VALUE '00'. PROCEDURE DIVISION. FILE-OPERATIONS. DISPLAY 'Environment Division Example' STOP RUN.
The ENVIRONMENT DIVISION specifies the computer environment and file configurations. It includes source/object computer specifications and file control definitions for I/O operations.
The DATA DIVISION defines all data used in the program, including file records, working storage variables, and linkage parameters.
12345678910111213141516171819202122232425262728293031DATA DIVISION. FILE SECTION. FD CUSTOMER-FILE. 01 CUSTOMER-RECORD. 05 CUSTOMER-ID PIC 9(5). 05 CUSTOMER-NAME PIC X(20). 05 CUSTOMER-BALANCE PIC 9(8)V99. WORKING-STORAGE SECTION. 01 PROGRAM-VARIABLES. 05 RECORD-COUNT PIC 9(6) VALUE 0. 05 TOTAL-BALANCE PIC 9(10)V99 VALUE 0. 05 PROCESSING-FLAG PIC X(1) VALUE 'N'. 88 PROCESSING-ACTIVE VALUE 'Y'. 88 PROCESSING-INACTIVE VALUE 'N'. 01 CONSTANTS. 05 MAX-RECORDS PIC 9(4) VALUE 1000. 05 MIN-BALANCE PIC 9(6)V99 VALUE 100.00. LINKAGE SECTION. 01 PROGRAM-PARAMETERS. 05 INPUT-PARAMETER PIC X(20). 05 OUTPUT-PARAMETER PIC X(20). 05 RETURN-CODE PIC 9(2). PROCEDURE DIVISION USING PROGRAM-PARAMETERS. DATA-PROCESSING. DISPLAY 'Data Division Example' DISPLAY 'Processing flag: ' PROCESSING-FLAG STOP RUN.
The DATA DIVISION organizes all data definitions including file records, working storage variables, constants, and linkage parameters. Proper data organization is essential for program clarity and maintainability.
The PROCEDURE DIVISION contains the program logic organized into sections and paragraphs. It implements the program's business logic and processing flow.
123456789101112131415161718192021222324252627282930313233343536PROCEDURE DIVISION. MAIN-PROGRAM. DISPLAY 'Main Program Started' PERFORM INITIALIZATION PERFORM PROCESS-DATA PERFORM FINALIZATION STOP RUN. INITIALIZATION. DISPLAY 'Initializing Program' MOVE 0 TO RECORD-COUNT MOVE 0 TO TOTAL-BALANCE SET PROCESSING-ACTIVE TO TRUE DISPLAY 'Initialization Complete'. PROCESS-DATA. DISPLAY 'Processing Data' PERFORM VARYING RECORD-INDEX FROM 1 BY 1 UNTIL RECORD-INDEX > MAX-RECORDS PERFORM PROCESS-SINGLE-RECORD END-PERFORM DISPLAY 'Data Processing Complete'. PROCESS-SINGLE-RECORD. ADD 1 TO RECORD-COUNT ADD 100.00 TO TOTAL-BALANCE DISPLAY 'Processed record: ' RECORD-COUNT. FINALIZATION. DISPLAY 'Finalizing Program' DISPLAY 'Total records processed: ' RECORD-COUNT DISPLAY 'Total balance: ' TOTAL-BALANCE SET PROCESSING-INACTIVE TO TRUE DISPLAY 'Finalization Complete'.
The PROCEDURE DIVISION implements program logic using sections and paragraphs. It follows structured programming principles with clear flow control and modular organization.
COBOL programs use a hierarchical structure with divisions at the top level, followed by sections, paragraphs, and statements. This structure provides clear organization and logical flow.
12345678910111213141516171819202122232425262728PROCEDURE DIVISION. MAIN-PROGRAM. DISPLAY 'Hierarchical Structure Example' PERFORM SECTION-A PERFORM SECTION-B STOP RUN. SECTION-A SECTION. PARAGRAPH-A1. DISPLAY 'Section A - Paragraph A1' PERFORM PARAGRAPH-A2. PARAGRAPH-A2. DISPLAY 'Section A - Paragraph A2' PERFORM PARAGRAPH-A3. PARAGRAPH-A3. DISPLAY 'Section A - Paragraph A3'. SECTION-B SECTION. PARAGRAPH-B1. DISPLAY 'Section B - Paragraph B1' PERFORM PARAGRAPH-B2. PARAGRAPH-B2. DISPLAY 'Section B - Paragraph B2'.
Hierarchical structure organizes programs into logical levels: divisions contain sections, sections contain paragraphs, and paragraphs contain statements. This provides clear organization and logical flow.
Modular design breaks programs into smaller, manageable modules using paragraphs and sections. This approach improves readability, maintainability, and reusability.
123456789101112131415161718192021222324252627282930313233PROCEDURE DIVISION. MAIN-PROGRAM. DISPLAY 'Modular Design Example' PERFORM INITIALIZATION-MODULE PERFORM DATA-PROCESSING-MODULE PERFORM REPORT-GENERATION-MODULE PERFORM CLEANUP-MODULE STOP RUN. INITIALIZATION-MODULE. DISPLAY 'Initialization Module' PERFORM OPEN-FILES PERFORM INITIALIZE-VARIABLES PERFORM VALIDATE-INPUT. DATA-PROCESSING-MODULE. DISPLAY 'Data Processing Module' PERFORM READ-INPUT-DATA PERFORM PROCESS-RECORDS PERFORM CALCULATE-TOTALS. REPORT-GENERATION-MODULE. DISPLAY 'Report Generation Module' PERFORM GENERATE-HEADER PERFORM GENERATE-DETAIL-LINES PERFORM GENERATE-FOOTER. CLEANUP-MODULE. DISPLAY 'Cleanup Module' PERFORM CLOSE-FILES PERFORM RESET-VARIABLES.
Modular design organizes programs into logical modules, each handling specific functionality. This approach improves code organization, testing, and maintenance.
Structured programming uses clear control flow with sequence, selection, and iteration constructs. This approach improves program readability and maintainability.
1234567891011121314151617181920212223242526272829303132333435363738394041PROCEDURE DIVISION. STRUCTURED-PROGRAMMING-EXAMPLE. DISPLAY 'Structured Programming Example' *> Sequence - Sequential execution PERFORM STEP-1 PERFORM STEP-2 PERFORM STEP-3 *> Selection - Conditional execution IF PROCESSING-FLAG = 'Y' PERFORM ACTIVE-PROCESSING ELSE PERFORM INACTIVE-PROCESSING END-IF *> Iteration - Repetitive execution PERFORM VARYING COUNTER FROM 1 BY 1 UNTIL COUNTER > 10 PERFORM PROCESS-ITERATION END-PERFORM STOP RUN. STEP-1. DISPLAY 'Step 1: Initialization'. STEP-2. DISPLAY 'Step 2: Data Processing'. STEP-3. DISPLAY 'Step 3: Finalization'. ACTIVE-PROCESSING. DISPLAY 'Active processing mode'. INACTIVE-PROCESSING. DISPLAY 'Inactive processing mode'. PROCESS-ITERATION. DISPLAY 'Processing iteration: ' COUNTER.
Structured programming uses clear control structures: sequence for sequential execution, selection for conditional execution, and iteration for repetitive execution.
Data-driven programming uses data structures to control program flow and behavior. This approach makes programs more flexible and easier to modify.
1234567891011121314151617181920212223242526272829303132333435363738394041DATA DIVISION. WORKING-STORAGE SECTION. 01 PROCESSING-TABLE. 05 PROCESSING-ENTRY OCCURS 5 TIMES. 10 PROCESS-TYPE PIC X(10). 10 PROCESS-FLAG PIC X(1). 10 PROCESS-ROUTINE PIC X(20). PROCEDURE DIVISION. DATA-DRIVEN-EXAMPLE. DISPLAY 'Data-Driven Programming Example' *> Initialize processing table MOVE 'VALIDATE' TO PROCESS-TYPE(1) MOVE 'Y' TO PROCESS-FLAG(1) MOVE 'VALIDATE-DATA' TO PROCESS-ROUTINE(1) MOVE 'PROCESS' TO PROCESS-TYPE(2) MOVE 'Y' TO PROCESS-FLAG(2) MOVE 'PROCESS-DATA' TO PROCESS-ROUTINE(2) *> Process based on data table PERFORM VARYING TABLE-INDEX FROM 1 BY 1 UNTIL TABLE-INDEX > 5 IF PROCESS-FLAG(TABLE-INDEX) = 'Y' PERFORM EXECUTE-PROCESS-ROUTINE END-IF END-PERFORM STOP RUN. EXECUTE-PROCESS-ROUTINE. DISPLAY 'Executing: ' PROCESS-ROUTINE(TABLE-INDEX) EVALUATE PROCESS-TYPE(TABLE-INDEX) WHEN 'VALIDATE' PERFORM VALIDATE-DATA WHEN 'PROCESS' PERFORM PROCESS-DATA WHEN OTHER DISPLAY 'Unknown process type' END-EVALUATE.
Data-driven programming uses data structures to control program behavior, making programs more flexible and easier to modify without changing program logic.