MainframeMaster

COBOL Tutorial

COBOL AUTOTERMINATE Clause

The AUTOTERMINATE clause in COBOL controls automatic field termination behavior during screen input operations. It determines when user input in a field should be automatically terminated without requiring explicit action.

Key Purpose

AUTOTERMINATE automates field completion when certain conditions are met, improving user experience and reducing the need for explicit termination keys in screen-based applications.

Basic Syntax

cobol
1
2
3
4
5
6
7
8
SCREEN SECTION. 01 SCREEN-NAME. 05 FIELD-NAME PIC X(10) LINE 5 COL 10 AUTOTERMINATE USING WS-INPUT-FIELD. ACCEPT SCREEN-NAME WITH AUTOTERMINATE.

Fundamental Concepts

1. Automatic Termination Behavior

AUTOTERMINATE causes input fields to automatically complete when the field is full or specific termination conditions are met:

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
WORKING-STORAGE SECTION. 01 WS-CUSTOMER-CODE PIC X(6). 01 WS-PRODUCT-ID PIC 9(8). 01 WS-AMOUNT PIC 9(7)V99. SCREEN SECTION. 01 INPUT-SCREEN. 05 BLANK SCREEN. 05 LINE 5 COL 10 VALUE "Customer Code: ". 05 PIC X(6) LINE 5 COL 25 USING WS-CUSTOMER-CODE AUTOTERMINATE. 05 LINE 7 COL 10 VALUE "Product ID: ". 05 PIC 9(8) LINE 7 COL 25 USING WS-PRODUCT-ID AUTOTERMINATE. 05 LINE 9 COL 10 VALUE "Amount: ". 05 PIC ZZZ,ZZ9.99 LINE 9 COL 25 USING WS-AMOUNT AUTOTERMINATE. PROCEDURE DIVISION. ACCEPT INPUT-SCREEN.

2. Field Length Termination

When AUTOTERMINATE is specified, input automatically terminates when the field reaches its maximum length:

cobol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
WORKING-STORAGE SECTION. 01 WS-STATE-CODE PIC XX. *> 2 characters 01 WS-ZIP-CODE PIC 9(5). *> 5 digits 01 WS-PHONE-AREA PIC 9(3). *> 3 digits SCREEN SECTION. 01 ADDRESS-SCREEN. 05 LINE 5 COL 10 VALUE "State: ". 05 PIC XX LINE 5 COL 17 USING WS-STATE-CODE AUTOTERMINATE. *> Auto-terminates after 2 chars 05 LINE 6 COL 10 VALUE "ZIP: ". 05 PIC 9(5) LINE 6 COL 15 USING WS-ZIP-CODE AUTOTERMINATE. *> Auto-terminates after 5 digits 05 LINE 7 COL 10 VALUE "Area Code: ". 05 PIC 9(3) LINE 7 COL 21 USING WS-PHONE-AREA AUTOTERMINATE. *> Auto-terminates after 3 digits

3. Interaction with AUTO-SKIP

AUTOTERMINATE works in conjunction with AUTO-SKIP to provide seamless field navigation:

cobol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
SCREEN SECTION. 01 SEQUENTIAL-INPUT. 05 BLANK SCREEN. 05 LINE 5 COL 10 VALUE "Enter 3-digit code: ". 05 PIC 999 LINE 5 COL 30 USING WS-CODE AUTOTERMINATE AUTO-SKIP. *> Moves to next field automatically 05 LINE 6 COL 10 VALUE "Enter department: ". 05 PIC X(4) LINE 6 COL 30 USING WS-DEPT AUTOTERMINATE AUTO-SKIP. 05 LINE 7 COL 10 VALUE "Enter level: ". 05 PIC 99 LINE 7 COL 30 USING WS-LEVEL AUTOTERMINATE.

Common Use Cases

1. Data Entry Forms

AUTOTERMINATE is particularly useful in data entry applications where fields have fixed lengths:

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
WORKING-STORAGE SECTION. 01 WS-EMPLOYEE-DATA. 05 WS-EMP-ID PIC 9(6). 05 WS-SSN PIC 9(9). 05 WS-DEPT-CODE PIC X(3). 05 WS-SALARY PIC 9(6)V99. SCREEN SECTION. 01 EMPLOYEE-ENTRY. 05 BLANK SCREEN. 05 LINE 1 COL 25 VALUE "EMPLOYEE DATA ENTRY" HIGHLIGHT. 05 LINE 3 COL 5 VALUE "Employee ID (6 digits): ". 05 PIC 9(6) LINE 3 COL 30 USING WS-EMP-ID AUTOTERMINATE AUTO-SKIP REQUIRED. 05 LINE 4 COL 5 VALUE "SSN (9 digits): ". 05 PIC 9(9) LINE 4 COL 30 USING WS-SSN AUTOTERMINATE AUTO-SKIP REQUIRED. 05 LINE 5 COL 5 VALUE "Department Code: ". 05 PIC XXX LINE 5 COL 30 USING WS-DEPT-CODE AUTOTERMINATE AUTO-SKIP. 05 LINE 6 COL 5 VALUE "Salary: $". 05 PIC ZZZ,ZZ9.99 LINE 6 COL 30 USING WS-SALARY AUTOTERMINATE. PROCEDURE DIVISION. MAIN-PROCESSING. ACCEPT EMPLOYEE-ENTRY IF WS-EMP-ID = ZEROS DISPLAY "Employee ID is required" GO TO MAIN-PROCESSING END-IF.

2. Code Entry Systems

Perfect for systems that require specific code formats:

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
WORKING-STORAGE SECTION. 01 WS-TRANSACTION-CODES. 05 WS-STORE-CODE PIC 9(4). 05 WS-REGISTER-NUM PIC 99. 05 WS-TRANS-CODE PIC X(3). 05 WS-CASHIER-ID PIC 9(5). SCREEN SECTION. 01 TRANSACTION-ENTRY. 05 BLANK SCREEN. 05 LINE 2 COL 20 VALUE "TRANSACTION CODE ENTRY" HIGHLIGHT. 05 LINE 4 COL 5 VALUE "Store Code (4 digits): ". 05 PIC 9999 LINE 4 COL 28 USING WS-STORE-CODE AUTOTERMINATE AUTO-SKIP. 05 LINE 5 COL 5 VALUE "Register (2 digits): ". 05 PIC 99 LINE 5 COL 28 USING WS-REGISTER-NUM AUTOTERMINATE AUTO-SKIP. 05 LINE 6 COL 5 VALUE "Transaction Type: ". 05 PIC XXX LINE 6 COL 28 USING WS-TRANS-CODE AUTOTERMINATE AUTO-SKIP. 05 LINE 7 COL 5 VALUE "Cashier ID: ". 05 PIC 99999 LINE 7 COL 28 USING WS-CASHIER-ID AUTOTERMINATE. PROCEDURE DIVISION. TRANSACTION-PROCESSING. ACCEPT TRANSACTION-ENTRY PERFORM VALIDATE-CODES IF VALID-ENTRY PERFORM PROCESS-TRANSACTION ELSE DISPLAY "Invalid codes entered. Please retry." GO TO TRANSACTION-PROCESSING END-IF.

3. Numeric Input Validation

AUTOTERMINATE ensures numeric fields receive exactly the expected number of digits:

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
WORKING-STORAGE SECTION. 01 WS-NUMERIC-INPUTS. 05 WS-YEAR PIC 9(4). 05 WS-MONTH PIC 99. 05 WS-DAY PIC 99. 05 WS-HOUR PIC 99. 05 WS-MINUTE PIC 99. SCREEN SECTION. 01 DATE-TIME-ENTRY. 05 BLANK SCREEN. 05 LINE 3 COL 20 VALUE "DATE/TIME ENTRY" HIGHLIGHT. 05 LINE 5 COL 5 VALUE "Year (YYYY): ". 05 PIC 9999 LINE 5 COL 20 USING WS-YEAR AUTOTERMINATE AUTO-SKIP. 05 LINE 6 COL 5 VALUE "Month (MM): ". 05 PIC 99 LINE 6 COL 20 USING WS-MONTH AUTOTERMINATE AUTO-SKIP. 05 LINE 7 COL 5 VALUE "Day (DD): ". 05 PIC 99 LINE 7 COL 20 USING WS-DAY AUTOTERMINATE AUTO-SKIP. 05 LINE 8 COL 5 VALUE "Hour (24-hour): ". 05 PIC 99 LINE 8 COL 20 USING WS-HOUR AUTOTERMINATE AUTO-SKIP. 05 LINE 9 COL 5 VALUE "Minute: ". 05 PIC 99 LINE 9 COL 20 USING WS-MINUTE AUTOTERMINATE. PROCEDURE DIVISION. DATE-TIME-PROCESSING. ACCEPT DATE-TIME-ENTRY PERFORM VALIDATE-DATE-TIME IF VALID-DATE-TIME PERFORM PROCESS-DATE-TIME ELSE DISPLAY "Invalid date/time entered" GO TO DATE-TIME-PROCESSING END-IF.

Advanced Features

1. Conditional AUTOTERMINATE

Using AUTOTERMINATE with conditional logic for different field behaviors:

cobol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
WORKING-STORAGE SECTION. 01 WS-ENTRY-MODE PIC X VALUE 'A'. 88 AUTOMATIC-MODE VALUE 'A'. 88 MANUAL-MODE VALUE 'M'. 01 WS-INPUT-FIELD PIC X(10). SCREEN SECTION. 01 CONDITIONAL-SCREEN. 05 BLANK SCREEN. 05 LINE 5 COL 10 VALUE "Input Field: ". 05 CONDITIONAL-FIELD PIC X(10) LINE 5 COL 25 USING WS-INPUT-FIELD. PROCEDURE DIVISION. CONDITIONAL-PROCESSING. IF AUTOMATIC-MODE ACCEPT CONDITIONAL-FIELD WITH AUTOTERMINATE ELSE ACCEPT CONDITIONAL-FIELD END-IF.

2. Mixed Field Types

Combining different field types with AUTOTERMINATE for complex 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
WORKING-STORAGE SECTION. 01 WS-CUSTOMER-RECORD. 05 WS-CUST-ID PIC 9(8). 05 WS-CUST-TYPE PIC X. 05 WS-CREDIT-LIMIT PIC 9(7)V99. 05 WS-DISCOUNT-PCT PIC 99V99. 05 WS-STATUS-CODE PIC XX. SCREEN SECTION. 01 CUSTOMER-SCREEN. 05 BLANK SCREEN. 05 LINE 1 COL 25 VALUE "CUSTOMER MAINTENANCE" HIGHLIGHT. 05 LINE 3 COL 5 VALUE "Customer ID: ". 05 PIC 99999999 LINE 3 COL 20 USING WS-CUST-ID AUTOTERMINATE AUTO-SKIP REQUIRED. 05 LINE 4 COL 5 VALUE "Type [R/C/P]: ". 05 PIC X LINE 4 COL 20 USING WS-CUST-TYPE AUTOTERMINATE AUTO-SKIP. 05 LINE 5 COL 5 VALUE "Credit Limit: $". 05 PIC ZZZ,ZZZ.99 LINE 5 COL 20 USING WS-CREDIT-LIMIT AUTOTERMINATE AUTO-SKIP. 05 LINE 6 COL 5 VALUE "Discount %: ". 05 PIC 99.99 LINE 6 COL 20 USING WS-DISCOUNT-PCT AUTOTERMINATE AUTO-SKIP. 05 LINE 7 COL 5 VALUE "Status: ". 05 PIC XX LINE 7 COL 20 USING WS-STATUS-CODE AUTOTERMINATE.

Best Practices

Recommended Practices

  • Use AUTOTERMINATE for fixed-length fields that benefit from automatic completion
  • Combine with AUTO-SKIP for smooth field-to-field navigation
  • Apply to numeric fields where exact digit count is required
  • Use with code entry fields for improved user efficiency
  • Test thoroughly to ensure user experience meets expectations

Common Pitfalls

  • Avoid using AUTOTERMINATE on fields where users might need to enter shorter values
  • Don't combine with fields that require flexible input lengths
  • Be careful with edited numeric fields and decimal alignment
  • Consider user expectations for field completion behavior
  • Test with various input scenarios to prevent user confusion

Performance Considerations

1. Screen Processing Efficiency

AUTOTERMINATE can improve data entry efficiency by reducing keystrokes:

cobol
1
2
3
4
5
6
7
8
9
10
11
* Efficient code entry with AUTOTERMINATE SCREEN SECTION. 01 EFFICIENT-ENTRY. 05 PIC 9(4) USING WS-CODE-1 AUTOTERMINATE AUTO-SKIP. 05 PIC 9(4) USING WS-CODE-2 AUTOTERMINATE AUTO-SKIP. 05 PIC 9(4) USING WS-CODE-3 AUTOTERMINATE AUTO-SKIP. 05 PIC 9(4) USING WS-CODE-4 AUTOTERMINATE. * User types: 1234567890123456 * Result: WS-CODE-1=1234, WS-CODE-2=5678, * WS-CODE-3=9012, WS-CODE-4=3456

2. Input Validation

AUTOTERMINATE helps ensure consistent field lengths for validation:

cobol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
WORKING-STORAGE SECTION. 01 WS-VALIDATION-FLAGS. 05 WS-VALID-LENGTH PIC X VALUE 'Y'. PROCEDURE DIVISION. VALIDATE-INPUT. * AUTOTERMINATE ensures exact field length ACCEPT CUSTOMER-ID-FIELD * No need to check field length - guaranteed by AUTOTERMINATE IF WS-CUSTOMER-ID NUMERIC PERFORM PROCESS-CUSTOMER ELSE DISPLAY "Customer ID must be numeric" GO TO GET-CUSTOMER-ID END-IF.

Related COBOL Features

AUTO-SKIP

Automatic field navigation after completion

REQUIRED

Mandatory field input validation

ACCEPT Statement

Input handling and screen processing

SCREEN SECTION

Screen layout and field definition

Frequently Asked Questions

Q: When should I use AUTOTERMINATE?

Use AUTOTERMINATE for fixed-length fields where automatic completion improves user efficiency, such as codes, IDs, dates, and other structured data.

Q: Can AUTOTERMINATE be used with variable-length fields?

AUTOTERMINATE is most effective with fixed-length fields. For variable-length fields, users typically need explicit control over when input terminates.

Q: How does AUTOTERMINATE interact with function keys?

Function keys can still terminate input before the field is full, overriding the AUTOTERMINATE behavior when explicitly pressed by the user.

Q: Does AUTOTERMINATE work with all field types?

AUTOTERMINATE works with most field types but is most beneficial with numeric and fixed-format alphanumeric fields where exact length is important.

Practical Exercises

Exercise 1: Code Entry System

Create a screen that accepts a 6-digit product code and a 3-character department code using AUTOTERMINATE.

cobol
1
2
3
4
5
6
7
8
* Your task: Complete the screen definition WORKING-STORAGE SECTION. 01 WS-PRODUCT-CODE PIC 9(6). 01 WS-DEPT-CODE PIC XXX. SCREEN SECTION. 01 CODE-ENTRY-SCREEN. * Add your AUTOTERMINATE field definitions here

Exercise 2: Date Input Form

Design a date entry form with separate fields for month (2 digits), day (2 digits), and year (4 digits) using AUTOTERMINATE and AUTO-SKIP.

Summary

The COBOL AUTOTERMINATE clause is a powerful screen handling feature that automatically terminates field input when the field reaches its maximum length. It's particularly valuable in data entry applications where fixed-length fields are common, such as code entry systems, numeric inputs, and structured data forms. When combined with AUTO-SKIP, AUTOTERMINATE creates smooth, efficient user interfaces that require minimal keystrokes and provide consistent input behavior. Understanding when and how to use AUTOTERMINATE effectively can significantly improve the user experience of screen-based COBOL applications.