MainframeMaster

COBOL Tutorial

COBOL TERMINAL - Quick Reference

Progress0 of 0 lessons

Overview

The TERMINAL feature in COBOL provides terminal input/output operations and user interface capabilities. It enables programs to handle interactive user input, manage screen displays, and create user-friendly terminal-based applications.

Purpose and Usage

  • Terminal I/O - Handle user input and output operations
  • Screen management - Control screen display and layout
  • Cursor positioning - Position cursor at specific locations
  • User interface - Create interactive forms and menus
  • Input validation - Validate user input at the terminal

TERMINAL vs Standard DISPLAY

Standard DISPLAY: Simple output to terminal
TERMINAL: Advanced screen handling and user interaction
Result: Enhanced user interface capabilities

TERMINAL provides advanced features beyond basic DISPLAY operations.

Syntax and Usage

TERMINAL operations are implemented in the PROCEDURE DIVISION using specialized constructs for terminal input/output and screen management.

Basic TERMINAL Syntax

cobol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
* Basic TERMINAL syntax examples PROCEDURE DIVISION. * Terminal output with positioning DISPLAY "Welcome to the System" AT LINE 1 COLUMN 1 DISPLAY "Enter your name: " AT LINE 3 COLUMN 1 * Terminal input with validation ACCEPT USER-NAME FROM TERMINAL IF USER-NAME = SPACES DISPLAY "Name cannot be blank" AT LINE 5 COLUMN 1 END-IF * Screen clearing and formatting DISPLAY SPACES AT LINE 1 COLUMN 1 ERASE EOL DISPLAY "Processing..." AT LINE 10 COLUMN 30 * Cursor positioning MOVE 5 TO CURSOR-LINE MOVE 10 TO CURSOR-COLUMN DISPLAY SPACE AT LINE CURSOR-LINE COLUMN CURSOR-COLUMN

Basic TERMINAL operations for screen handling and user interaction.

Complete TERMINAL Program Example

cobol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
* Complete COBOL program demonstrating TERMINAL usage IDENTIFICATION DIVISION. PROGRAM-ID. TERMINAL-DEMO. ENVIRONMENT DIVISION. CONFIGURATION SECTION. DATA DIVISION. WORKING-STORAGE SECTION. 01 USER-INPUT. 05 USER-NAME PIC X(30). 05 USER-AGE PIC 9(3). 05 USER-EMAIL PIC X(50). 01 SCREEN-CONTROL. 05 CURSOR-LINE PIC 9(2). 05 CURSOR-COLUMN PIC 9(2). 05 SCREEN-STATUS PIC X. 01 MENU-CHOICE PIC X. PROCEDURE DIVISION. MAIN-LOGIC. PERFORM INITIALIZE-SCREEN PERFORM DISPLAY-MENU PERFORM PROCESS-MENU-CHOICE STOP RUN. INITIALIZE-SCREEN. * Clear screen and set up display DISPLAY SPACES AT LINE 1 COLUMN 1 ERASE SCREEN DISPLAY "=== TERMINAL APPLICATION ===" AT LINE 1 COLUMN 20 DISPLAY "============================" AT LINE 2 COLUMN 20. DISPLAY-MENU. * Display main menu DISPLAY "1. Enter User Information" AT LINE 4 COLUMN 5 DISPLAY "2. Display User Information" AT LINE 5 COLUMN 5 DISPLAY "3. Exit" AT LINE 6 COLUMN 5 DISPLAY "Enter your choice (1-3): " AT LINE 8 COLUMN 5. PROCESS-MENU-CHOICE. * Get user choice and process ACCEPT MENU-CHOICE FROM TERMINAL EVALUATE MENU-CHOICE WHEN "1" PERFORM ENTER-USER-INFO WHEN "2" PERFORM DISPLAY-USER-INFO WHEN "3" PERFORM EXIT-PROGRAM WHEN OTHER PERFORM INVALID-CHOICE END-EVALUATE. ENTER-USER-INFO. * Clear screen for user input DISPLAY SPACES AT LINE 1 COLUMN 1 ERASE SCREEN DISPLAY "=== USER INFORMATION ENTRY ===" AT LINE 1 COLUMN 15 * Get user name DISPLAY "Enter your name: " AT LINE 3 COLUMN 5 ACCEPT USER-NAME FROM TERMINAL * Get user age DISPLAY "Enter your age: " AT LINE 5 COLUMN 5 ACCEPT USER-AGE FROM TERMINAL * Get user email DISPLAY "Enter your email: " AT LINE 7 COLUMN 5 ACCEPT USER-EMAIL FROM TERMINAL * Confirm input DISPLAY "Information saved successfully!" AT LINE 10 COLUMN 5 DISPLAY "Press any key to continue..." AT LINE 12 COLUMN 5 ACCEPT SCREEN-STATUS FROM TERMINAL. DISPLAY-USER-INFO. * Display user information DISPLAY SPACES AT LINE 1 COLUMN 1 ERASE SCREEN DISPLAY "=== USER INFORMATION ===" AT LINE 1 COLUMN 20 DISPLAY "Name: " USER-NAME AT LINE 3 COLUMN 5 DISPLAY "Age: " USER-AGE AT LINE 5 COLUMN 5 DISPLAY "Email: " USER-EMAIL AT LINE 7 COLUMN 5 DISPLAY "Press any key to continue..." AT LINE 10 COLUMN 5 ACCEPT SCREEN-STATUS FROM TERMINAL. INVALID-CHOICE. DISPLAY "Invalid choice. Please try again." AT LINE 10 COLUMN 5 DISPLAY "Press any key to continue..." AT LINE 12 COLUMN 5 ACCEPT SCREEN-STATUS FROM TERMINAL. EXIT-PROGRAM. DISPLAY "Thank you for using the application!" AT LINE 10 COLUMN 5 DISPLAY "Goodbye!" AT LINE 12 COLUMN 5.

The program demonstrates comprehensive terminal interaction capabilities.

Advanced TERMINAL Usage

cobol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
* Advanced TERMINAL usage with screen management PROCEDURE DIVISION. ADVANCED-TERMINAL-OPERATIONS. PERFORM SETUP-ADVANCED-SCREEN PERFORM HANDLE-USER-INTERACTION PERFORM CLEANUP-SCREEN. SETUP-ADVANCED-SCREEN. * Set up advanced screen layout DISPLAY SPACES AT LINE 1 COLUMN 1 ERASE SCREEN DISPLAY "╔══════════════════════════════════════════╗" AT LINE 1 COLUMN 1 DISPLAY "║ ADVANCED TERMINAL APP ║" AT LINE 2 COLUMN 1 DISPLAY "╠══════════════════════════════════════════╣" AT LINE 3 COLUMN 1 DISPLAY "║ ║" AT LINE 4 COLUMN 1 DISPLAY "║ ║" AT LINE 5 COLUMN 1 DISPLAY "║ ║" AT LINE 6 COLUMN 1 DISPLAY "║ ║" AT LINE 7 COLUMN 1 DISPLAY "║ ║" AT LINE 8 COLUMN 1 DISPLAY "╚══════════════════════════════════════════╝" AT LINE 9 COLUMN 1. HANDLE-USER-INTERACTION. * Position cursor and get input MOVE 5 TO CURSOR-LINE MOVE 5 TO CURSOR-COLUMN DISPLAY "Enter data: " AT LINE CURSOR-LINE COLUMN CURSOR-COLUMN * Get user input with validation ACCEPT USER-INPUT FROM TERMINAL * Validate input IF USER-INPUT = SPACES DISPLAY "Error: Input cannot be blank" AT LINE 10 COLUMN 5 DISPLAY "Press any key to retry..." AT LINE 11 COLUMN 5 ACCEPT SCREEN-STATUS FROM TERMINAL PERFORM HANDLE-USER-INTERACTION END-IF. CLEANUP-SCREEN. * Clean up screen before exit DISPLAY SPACES AT LINE 1 COLUMN 1 ERASE SCREEN DISPLAY "Application completed successfully!" AT LINE 10 COLUMN 10.

Advanced TERMINAL usage with sophisticated screen management.

Common Use Cases

TERMINAL is essential in various scenarios where interactive user interfaces and terminal-based applications are required.

Interactive Forms

cobol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
* Interactive forms using TERMINAL IDENTIFICATION DIVISION. PROGRAM-ID. INTERACTIVE-FORMS. DATA DIVISION. WORKING-STORAGE SECTION. 01 FORM-DATA. 05 CUSTOMER-NAME PIC X(30). 05 CUSTOMER-ADDRESS PIC X(50). 05 CUSTOMER-PHONE PIC X(15). 05 CUSTOMER-EMAIL PIC X(40). PROCEDURE DIVISION. MAIN-LOGIC. PERFORM DISPLAY-FORM-HEADER PERFORM GET-CUSTOMER-NAME PERFORM GET-CUSTOMER-ADDRESS PERFORM GET-CUSTOMER-PHONE PERFORM GET-CUSTOMER-EMAIL PERFORM CONFIRM-ENTRY STOP RUN. DISPLAY-FORM-HEADER. DISPLAY SPACES AT LINE 1 COLUMN 1 ERASE SCREEN DISPLAY "=== CUSTOMER INFORMATION FORM ===" AT LINE 1 COLUMN 10 DISPLAY "==================================" AT LINE 2 COLUMN 10. GET-CUSTOMER-NAME. DISPLAY "Customer Name: " AT LINE 4 COLUMN 5 ACCEPT CUSTOMER-NAME FROM TERMINAL IF CUSTOMER-NAME = SPACES DISPLAY "Name is required!" AT LINE 15 COLUMN 5 PERFORM GET-CUSTOMER-NAME END-IF. GET-CUSTOMER-ADDRESS. DISPLAY "Customer Address: " AT LINE 6 COLUMN 5 ACCEPT CUSTOMER-ADDRESS FROM TERMINAL. GET-CUSTOMER-PHONE. DISPLAY "Customer Phone: " AT LINE 8 COLUMN 5 ACCEPT CUSTOMER-PHONE FROM TERMINAL. GET-CUSTOMER-EMAIL. DISPLAY "Customer Email: " AT LINE 10 COLUMN 5 ACCEPT CUSTOMER-EMAIL FROM TERMINAL. CONFIRM-ENTRY. DISPLAY "Review your information:" AT LINE 12 COLUMN 5 DISPLAY "Name: " CUSTOMER-NAME AT LINE 13 COLUMN 5 DISPLAY "Address: " CUSTOMER-ADDRESS AT LINE 14 COLUMN 5 DISPLAY "Phone: " CUSTOMER-PHONE AT LINE 15 COLUMN 5 DISPLAY "Email: " CUSTOMER-EMAIL AT LINE 16 COLUMN 5.

Interactive forms use TERMINAL for user data entry and validation.

Menu-Driven Applications

cobol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
* Menu-driven application using TERMINAL IDENTIFICATION DIVISION. PROGRAM-ID. MENU-APPLICATION. DATA DIVISION. WORKING-STORAGE SECTION. 01 MENU-SELECTION PIC X. 01 CONTINUE-FLAG PIC X VALUE 'Y'. PROCEDURE DIVISION. MAIN-LOGIC. PERFORM UNTIL CONTINUE-FLAG = 'N' PERFORM DISPLAY-MAIN-MENU PERFORM GET-MENU-SELECTION PERFORM PROCESS-SELECTION END-PERFORM STOP RUN. DISPLAY-MAIN-MENU. DISPLAY SPACES AT LINE 1 COLUMN 1 ERASE SCREEN DISPLAY "╔══════════════════════════════════════════╗" AT LINE 1 COLUMN 1 DISPLAY "║ MAIN MENU ║" AT LINE 2 COLUMN 1 DISPLAY "╠══════════════════════════════════════════╣" AT LINE 3 COLUMN 1 DISPLAY "║ 1. File Operations ║" AT LINE 4 COLUMN 1 DISPLAY "║ 2. Data Processing ║" AT LINE 5 COLUMN 1 DISPLAY "║ 3. Report Generation ║" AT LINE 6 COLUMN 1 DISPLAY "║ 4. System Configuration ║" AT LINE 7 COLUMN 1 DISPLAY "║ 5. Exit ║" AT LINE 8 COLUMN 1 DISPLAY "╚══════════════════════════════════════════╝" AT LINE 9 COLUMN 1 DISPLAY "Enter your choice (1-5): " AT LINE 11 COLUMN 5. GET-MENU-SELECTION. ACCEPT MENU-SELECTION FROM TERMINAL. PROCESS-SELECTION. EVALUATE MENU-SELECTION WHEN "1" PERFORM FILE-OPERATIONS WHEN "2" PERFORM DATA-PROCESSING WHEN "3" PERFORM REPORT-GENERATION WHEN "4" PERFORM SYSTEM-CONFIGURATION WHEN "5" MOVE 'N' TO CONTINUE-FLAG WHEN OTHER PERFORM INVALID-SELECTION END-EVALUATE. FILE-OPERATIONS. DISPLAY "File Operations selected" AT LINE 13 COLUMN 5 DISPLAY "Press any key to continue..." AT LINE 14 COLUMN 5 ACCEPT MENU-SELECTION FROM TERMINAL. DATA-PROCESSING. DISPLAY "Data Processing selected" AT LINE 13 COLUMN 5 DISPLAY "Press any key to continue..." AT LINE 14 COLUMN 5 ACCEPT MENU-SELECTION FROM TERMINAL. REPORT-GENERATION. DISPLAY "Report Generation selected" AT LINE 13 COLUMN 5 DISPLAY "Press any key to continue..." AT LINE 14 COLUMN 5 ACCEPT MENU-SELECTION FROM TERMINAL. SYSTEM-CONFIGURATION. DISPLAY "System Configuration selected" AT LINE 13 COLUMN 5 DISPLAY "Press any key to continue..." AT LINE 14 COLUMN 5 ACCEPT MENU-SELECTION FROM TERMINAL. INVALID-SELECTION. DISPLAY "Invalid selection. Please try again." AT LINE 13 COLUMN 5 DISPLAY "Press any key to continue..." AT LINE 14 COLUMN 5 ACCEPT MENU-SELECTION FROM TERMINAL.

Menu-driven applications use TERMINAL for user navigation and selection.

Data Entry Applications

cobol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
* Data entry application using TERMINAL IDENTIFICATION DIVISION. PROGRAM-ID. DATA-ENTRY-APP. DATA DIVISION. WORKING-STORAGE SECTION. 01 EMPLOYEE-RECORD. 05 EMP-ID PIC 9(6). 05 EMP-NAME PIC X(30). 05 EMP-DEPT PIC X(20). 05 EMP-SALARY PIC 9(8)V99. 01 ENTRY-STATUS PIC X. PROCEDURE DIVISION. MAIN-LOGIC. PERFORM UNTIL ENTRY-STATUS = 'Q' PERFORM DISPLAY-ENTRY-SCREEN PERFORM GET-EMPLOYEE-DATA PERFORM VALIDATE-EMPLOYEE-DATA PERFORM SAVE-EMPLOYEE-DATA PERFORM ASK-CONTINUE END-PERFORM STOP RUN. DISPLAY-ENTRY-SCREEN. DISPLAY SPACES AT LINE 1 COLUMN 1 ERASE SCREEN DISPLAY "=== EMPLOYEE DATA ENTRY ===" AT LINE 1 COLUMN 15 DISPLAY "============================" AT LINE 2 COLUMN 15. GET-EMPLOYEE-DATA. DISPLAY "Employee ID: " AT LINE 4 COLUMN 5 ACCEPT EMP-ID FROM TERMINAL DISPLAY "Employee Name: " AT LINE 6 COLUMN 5 ACCEPT EMP-NAME FROM TERMINAL DISPLAY "Department: " AT LINE 8 COLUMN 5 ACCEPT EMP-DEPT FROM TERMINAL DISPLAY "Salary: " AT LINE 10 COLUMN 5 ACCEPT EMP-SALARY FROM TERMINAL. VALIDATE-EMPLOYEE-DATA. IF EMP-ID = 0 DISPLAY "Error: Invalid Employee ID" AT LINE 12 COLUMN 5 END-IF IF EMP-NAME = SPACES DISPLAY "Error: Name is required" AT LINE 13 COLUMN 5 END-IF IF EMP-SALARY <= 0 DISPLAY "Error: Invalid salary" AT LINE 14 COLUMN 5 END-IF. SAVE-EMPLOYEE-DATA. DISPLAY "Employee data saved successfully!" AT LINE 16 COLUMN 5. ASK-CONTINUE. DISPLAY "Enter another employee? (Y/N/Q): " AT LINE 18 COLUMN 5 ACCEPT ENTRY-STATUS FROM TERMINAL.

Data entry applications use TERMINAL for structured data input and validation.

Best Practices and Tips

Following these best practices ensures effective use of TERMINAL in COBOL applications for better user experience and interface design.

TERMINAL Best Practices

  • Design user-friendly interfaces - Create clear, intuitive screen layouts
  • Implement input validation - Validate user input to prevent errors
  • Use consistent formatting - Maintain consistent screen layouts and styling
  • Handle errors gracefully - Provide clear error messages and recovery options
  • Provide navigation help - Include clear instructions and help information
  • Test with different terminals - Ensure compatibility across different terminal types

Screen Design Guidelines

AspectGuidelineExample
LayoutUse consistent positioning and spacingLabels at column 5, input at column 20
HeadersClear titles and section headers"=== CUSTOMER ENTRY FORM ==="
PromptsClear, descriptive prompts"Enter customer name: "
Error MessagesSpecific, helpful error messages"Name cannot be blank"
NavigationClear menu options and instructions"Press any key to continue..."

Input Validation Strategies

  • Required field validation - Check for empty or blank inputs
  • Data type validation - Ensure correct data types (numeric, alphabetic)
  • Range validation - Check values within acceptable ranges
  • Format validation - Validate specific formats (email, phone)
  • Business rule validation - Apply business-specific validation rules
  • Error recovery - Provide options to retry or correct input

TERMINAL Quick Reference

AspectDescriptionExample
LocationPROCEDURE DIVISIONIn terminal I/O operations
OutputDISPLAY with positioningDISPLAY "Text" AT LINE 5 COLUMN 10
InputACCEPT from terminalACCEPT variable FROM TERMINAL
Screen ControlClear and format screenDISPLAY SPACES ERASE SCREEN
Cursor ControlPosition cursor on screenAT LINE 10 COLUMN 15

Test Your Knowledge

1. What is the primary purpose of TERMINAL in COBOL?

  • To define arithmetic operations
  • To handle terminal input/output operations and user interface interactions
  • To control file operations
  • To define data types

2. Where is TERMINAL typically used in a COBOL program?

  • In the DATA DIVISION for terminal data definitions
  • In the PROCEDURE DIVISION for terminal I/O operations
  • In the ENVIRONMENT DIVISION for system configuration
  • In the IDENTIFICATION DIVISION

3. What types of operations can TERMINAL handle?

  • Only file operations
  • Only database operations
  • Terminal input/output, screen handling, user interface, and interactive operations
  • Only mathematical calculations

4. How does TERMINAL differ from standard DISPLAY operations?

  • They are identical in function
  • TERMINAL provides more advanced screen handling and user interaction capabilities
  • TERMINAL only works with numeric data
  • Standard DISPLAY is more advanced than TERMINAL

5. Which of the following is a common use of TERMINAL?

  • File sorting operations
  • Interactive user interfaces, screen forms, and terminal-based applications
  • Database operations
  • Mathematical calculations

Frequently Asked Questions