MainframeMaster

COBOL Tutorial

COBOL BLANK Clause

The BLANK clause in COBOL is a powerful screen formatting and data manipulation feature used primarily in screen handling, report generation, and interactive applications to control field clearing, screen presentation, and data initialization. This clause provides essential functionality for creating professional user interfaces, managing screen real estate efficiently, controlling field visibility, and ensuring clean data presentation in both batch and interactive COBOL applications where screen formatting and field management are critical for user experience and data integrity.

Understanding BLANK Clause

The BLANK clause is used in screen section definitions and display operations to control how fields appear on the screen. It can clear existing field contents, provide visual separation, or initialize fields to a blank state for data entry operations.

Key Uses:

  • BLANK WHEN ZERO - Hide zero values in numeric displays
  • BLANK SCREEN - Clear entire screen for new displays
  • BLANK LINE - Clear specific screen lines
  • Field initialization and clearing operations
  • Professional screen formatting and presentation
cobol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
SCREEN SECTION. 01 MAIN-SCREEN. 05 BLANK SCREEN. 05 LINE 1 COL 20 VALUE "CUSTOMER INFORMATION SYSTEM". 05 LINE 3 COL 10 VALUE "Customer ID:". 05 LINE 3 COL 23 PIC 9(6) TO CUSTOMER-ID. 05 LINE 4 COL 10 VALUE "Name:". 05 LINE 4 COL 23 PIC X(30) TO CUSTOMER-NAME. 05 LINE 5 COL 10 VALUE "Balance:". 05 LINE 5 COL 23 PIC Z(8).99 BLANK WHEN ZERO TO BALANCE-AMT. PROCEDURE DIVISION. DISPLAY-CUSTOMER-SCREEN. DISPLAY MAIN-SCREEN. ACCEPT MAIN-SCREEN.

BLANK WHEN ZERO Implementation

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
*> Professional numeric field formatting DATA DIVISION. WORKING-STORAGE SECTION. 01 FINANCIAL-REPORT. 05 ACCOUNT-BALANCE PIC S9(8)V99 COMP-3. 05 INTEREST-EARNED PIC S9(6)V99 COMP-3. 05 FEES-CHARGED PIC S9(5)V99 COMP-3. 05 NET-AMOUNT PIC S9(8)V99 COMP-3. 01 REPORT-DISPLAY-FIELDS. 05 DISP-BALANCE PIC Z(8).99 BLANK WHEN ZERO. 05 DISP-INTEREST PIC Z(6).99 BLANK WHEN ZERO. 05 DISP-FEES PIC Z(5).99 BLANK WHEN ZERO. 05 DISP-NET PIC Z(8).99 BLANK WHEN ZERO. SCREEN SECTION. 01 FINANCIAL-SCREEN. 05 BLANK SCREEN. 05 LINE 2 COL 25 VALUE "FINANCIAL SUMMARY REPORT". 05 LINE 4 COL 10 VALUE "Account Balance:". 05 LINE 4 COL 30 FROM DISP-BALANCE. 05 LINE 5 COL 10 VALUE "Interest Earned:". 05 LINE 5 COL 30 FROM DISP-INTEREST. 05 LINE 6 COL 10 VALUE "Fees Charged:". 05 LINE 6 COL 30 FROM DISP-FEES. 05 LINE 8 COL 10 VALUE "Net Amount:". 05 LINE 8 COL 30 FROM DISP-NET HIGHLIGHT. PROCEDURE DIVISION. DISPLAY-FINANCIAL-REPORT. *> Move data to display fields MOVE ACCOUNT-BALANCE TO DISP-BALANCE. MOVE INTEREST-EARNED TO DISP-INTEREST. MOVE FEES-CHARGED TO DISP-FEES. MOVE NET-AMOUNT TO DISP-NET. *> Display formatted screen DISPLAY FINANCIAL-SCREEN. *> Example output - zero values don't display *> Account Balance: 1,234.56 *> Interest Earned: (blank if zero) *> Fees Charged: 25.00 *> Net Amount: 1,209.56

Screen Management and Clearing

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
*> Advanced screen management techniques SCREEN SECTION. 01 MENU-SCREEN. 05 BLANK SCREEN. 05 LINE 1 COL 30 VALUE "MAIN MENU" HIGHLIGHT. 05 LINE 3 COL 20 VALUE "1. Customer Management". 05 LINE 4 COL 20 VALUE "2. Order Processing". 05 LINE 5 COL 20 VALUE "3. Reports". 05 LINE 6 COL 20 VALUE "4. System Administration". 05 LINE 8 COL 20 VALUE "Enter choice (1-4):". 05 LINE 8 COL 40 PIC 9 TO MENU-CHOICE. 01 ERROR-MESSAGE-SCREEN. 05 LINE 20 COL 10 VALUE "ERROR: Invalid selection!". 05 LINE 21 COL 10 VALUE "Press any key to continue...". 01 CONFIRMATION-SCREEN. 05 LINE 15 COL 20 VALUE "Are you sure? (Y/N):". 05 LINE 15 COL 42 PIC X TO CONFIRM-FLAG. PROCEDURE DIVISION. MAIN-MENU-LOOP. PERFORM UNTIL MENU-CHOICE = 4 DISPLAY MENU-SCREEN ACCEPT MENU-CHOICE EVALUATE MENU-CHOICE WHEN 1 PERFORM CUSTOMER-MANAGEMENT WHEN 2 PERFORM ORDER-PROCESSING WHEN 3 PERFORM REPORTS-MENU WHEN 4 PERFORM EXIT-CONFIRMATION WHEN OTHER PERFORM DISPLAY-ERROR-MESSAGE END-EVALUATE END-PERFORM. DISPLAY-ERROR-MESSAGE. DISPLAY ERROR-MESSAGE-SCREEN. ACCEPT DUMMY-FIELD. *> Screen automatically blanks on next DISPLAY. CLEAR-SPECIFIC-LINES. *> Clear lines 15-20 for new messages PERFORM VARYING LINE-NUM FROM 15 BY 1 UNTIL LINE-NUM > 20 DISPLAY SPACES AT LINE LINE-NUM COL 1 END-PERFORM. EXIT-CONFIRMATION. DISPLAY CONFIRMATION-SCREEN. ACCEPT CONFIRM-FLAG. IF CONFIRM-FLAG = 'Y' OR 'y' MOVE 4 TO MENU-CHOICE ELSE *> Clear confirmation message DISPLAY SPACES AT LINE 15 COL 1 END-IF.

Data Entry Form with Field Clearing

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
*> Professional data entry form with field management DATA DIVISION. WORKING-STORAGE SECTION. 01 CUSTOMER-RECORD. 05 CUST-ID PIC 9(6). 05 CUST-NAME PIC X(30). 05 CUST-ADDRESS PIC X(40). 05 CUST-PHONE PIC X(12). 05 CREDIT-LIMIT PIC 9(7)V99. 05 CURRENT-BALANCE PIC S9(7)V99. 01 DISPLAY-FIELDS. 05 DISP-CREDIT-LIMIT PIC Z(7).99 BLANK WHEN ZERO. 05 DISP-BALANCE PIC Z(7).99- BLANK WHEN ZERO. 01 VALIDATION-FLAGS. 05 VALID-ID PIC X VALUE 'N'. 05 VALID-NAME PIC X VALUE 'N'. 05 VALID-PHONE PIC X VALUE 'N'. SCREEN SECTION. 01 CUSTOMER-ENTRY-SCREEN. 05 BLANK SCREEN. 05 LINE 2 COL 25 VALUE "CUSTOMER DATA ENTRY". 05 LINE 4 COL 5 VALUE "Customer ID:". 05 LINE 4 COL 18 PIC 9(6) TO CUST-ID REQUIRED. 05 LINE 5 COL 5 VALUE "Name:". 05 LINE 5 COL 18 PIC X(30) TO CUST-NAME REQUIRED. 05 LINE 6 COL 5 VALUE "Address:". 05 LINE 6 COL 18 PIC X(40) TO CUST-ADDRESS. 05 LINE 7 COL 5 VALUE "Phone:". 05 LINE 7 COL 18 PIC X(12) TO CUST-PHONE. 05 LINE 8 COL 5 VALUE "Credit Limit:". 05 LINE 8 COL 18 PIC Z(7).99 TO CREDIT-LIMIT. 05 LINE 9 COL 5 VALUE "Current Balance:". 05 LINE 9 COL 22 FROM DISP-BALANCE. 01 VALIDATION-MESSAGES. 05 LINE 15 COL 5 VALUE "Validation Messages:" FOREGROUND-COLOR 4. 05 LINE 16 COL 5 PIC X(60) FROM ERROR-MESSAGE FOREGROUND-COLOR 4. PROCEDURE DIVISION. CUSTOMER-DATA-ENTRY. PERFORM UNTIL ALL-DATA-VALID PERFORM CLEAR-ENTRY-FIELDS PERFORM DISPLAY-ENTRY-FORM PERFORM VALIDATE-CUSTOMER-DATA IF NOT ALL-DATA-VALID PERFORM DISPLAY-VALIDATION-ERRORS DISPLAY "Press Enter to continue..." AT LINE 20 COL 5 ACCEPT DUMMY-FIELD END-IF END-PERFORM. CLEAR-ENTRY-FIELDS. MOVE ZEROS TO CUST-ID. MOVE SPACES TO CUST-NAME. MOVE SPACES TO CUST-ADDRESS. MOVE SPACES TO CUST-PHONE. MOVE ZEROS TO CREDIT-LIMIT. MOVE ZEROS TO CURRENT-BALANCE. MOVE SPACES TO ERROR-MESSAGE. DISPLAY-ENTRY-FORM. MOVE CREDIT-LIMIT TO DISP-CREDIT-LIMIT. MOVE CURRENT-BALANCE TO DISP-BALANCE. DISPLAY CUSTOMER-ENTRY-SCREEN. ACCEPT CUSTOMER-ENTRY-SCREEN. VALIDATE-CUSTOMER-DATA. MOVE 'Y' TO VALID-ID VALID-NAME VALID-PHONE. IF CUST-ID = ZEROS MOVE 'N' TO VALID-ID STRING "Customer ID required. " DELIMITED BY SIZE INTO ERROR-MESSAGE END-STRING END-IF. IF CUST-NAME = SPACES MOVE 'N' TO VALID-NAME STRING ERROR-MESSAGE DELIMITED BY " " "Customer name required. " DELIMITED BY SIZE INTO ERROR-MESSAGE END-STRING END-IF. DISPLAY-VALIDATION-ERRORS. IF ERROR-MESSAGE NOT = SPACES DISPLAY VALIDATION-MESSAGES END-IF.

Best Practices

  • Use BLANK WHEN ZERO for professional numeric display formatting
  • Always clear screens before displaying new content
  • Provide visual feedback for data entry validation
  • Use consistent screen layouts across your application
  • Clear error messages after user acknowledgment
  • Consider user experience when designing screen flows

Common BLANK Applications

  • Financial Reports: Hide zero balances and amounts for cleaner presentation
  • Data Entry Forms: Clear fields between entries for fresh data input
  • Menu Systems: Clear screens for navigation and user guidance
  • Error Handling: Clear previous error messages before showing new ones
  • Status Displays: Show only relevant non-zero status indicators

Frequently Asked Questions

Q: What's the difference between BLANK SCREEN and BLANK LINE?

BLANK SCREEN clears the entire screen before displaying new content, while BLANK LINE clears only a specific line or range of lines. Use BLANK SCREEN for complete screen refreshes and BLANK LINE for selective clearing of specific areas.

Q: How does BLANK WHEN ZERO affect data storage?

BLANK WHEN ZERO only affects display formatting, not data storage. The actual numeric value remains unchanged in memory; only the screen presentation shows blanks instead of zeros. This is purely a visual formatting feature.

Q: Can I use BLANK with all data types?

BLANK WHEN ZERO works with numeric fields only. For character fields, you can move SPACES to clear them, or use screen positioning to display spaces over existing content. The BLANK SCREEN clause works regardless of data types.