MainframeMaster

COBOL Tutorial

COBOL REMOVAL Clause - Quick Reference

Progress0 of 0 lessons

Overview

The REMOVAL clause is used in INSPECT statements to remove specific characters from string data. It enables data cleaning and string manipulation by eliminating unwanted characters while shifting remaining characters to fill the gaps.

Purpose and Usage

  • Data cleaning - Remove unwanted characters from strings
  • String manipulation - Eliminate specific characters
  • Format standardization - Clean up data formats
  • Character filtering - Remove specific character types
  • Input validation - Clean input data before processing

String Manipulation Concept

Original: "H e l l o W o r l d"
REMOVAL ALL SPACES
Result: "HelloWorld"
Characters shift left, spaces fill right

REMOVAL eliminates characters and shifts remaining data left.

Syntax

The REMOVAL clause follows specific syntax patterns within INSPECT statements and can be combined with various qualifiers.

Basic Syntax

cobol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
* Basic REMOVAL clause syntax INSPECT data-name REMOVAL ALL character * With different qualifiers INSPECT data-name REMOVAL LEADING character INSPECT data-name REMOVAL FIRST character * Complete example INSPECT TEXT-FIELD REMOVAL ALL SPACES * With multiple characters INSPECT TEXT-FIELD REMOVAL ALL ".,;" * With TALLYING INSPECT TEXT-FIELD TALLYING counter FOR ALL character REMOVAL ALL character * Combined with REPLACING INSPECT TEXT-FIELD REMOVAL ALL SPACES REPLACING ALL "A" BY "X"

REMOVAL can be used with ALL, LEADING, and FIRST qualifiers.

REMOVAL vs REPLACING Comparison

ClauseActionString Length
REMOVALDeletes charactersReduces effective length
REPLACINGSubstitutes charactersMaintains length
BothDelete then substituteReduces then maintains

Qualifier Options

cobol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
* ALL - Remove all occurrences INSPECT TEXT-FIELD REMOVAL ALL SPACES * LEADING - Remove only leading occurrences INSPECT TEXT-FIELD REMOVAL LEADING SPACES * FIRST - Remove only the first occurrence INSPECT TEXT-FIELD REMOVAL FIRST SPACE * Multiple characters INSPECT TEXT-FIELD REMOVAL ALL ".,;:!" * Single character INSPECT TEXT-FIELD REMOVAL ALL "A" * Numeric characters INSPECT TEXT-FIELD REMOVAL ALL "9" * Alphabetic characters INSPECT TEXT-FIELD REMOVAL ALL "A"

Different qualifiers control which characters are removed.

Practical Examples

These examples demonstrate how to use the REMOVAL clause effectively in different data cleaning scenarios.

Phone Number Cleaning

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
IDENTIFICATION DIVISION. PROGRAM-ID. PHONE-CLEANER. DATA DIVISION. WORKING-STORAGE SECTION. 01 PHONE-NUMBER PIC X(20) VALUE "(555) 123-4567". 01 CLEANED-PHONE PIC X(20). 01 REMOVAL-COUNT PIC 9(2). PROCEDURE DIVISION. MAIN-PROCESS. * Copy original phone number MOVE PHONE-NUMBER TO CLEANED-PHONE * Remove all formatting characters INSPECT CLEANED-PHONE TALLYING REMOVAL-COUNT FOR ALL "(" REMOVAL ALL "(" INSPECT CLEANED-PHONE TALLYING REMOVAL-COUNT FOR ALL ")" REMOVAL ALL ")" INSPECT CLEANED-PHONE TALLYING REMOVAL-COUNT FOR ALL "-" REMOVAL ALL "-" INSPECT CLEANED-PHONE TALLYING REMOVAL-COUNT FOR ALL SPACES REMOVAL ALL SPACES * Display results DISPLAY "Original: " PHONE-NUMBER DISPLAY "Cleaned: " CLEANED-PHONE DISPLAY "Characters removed: " REMOVAL-COUNT STOP RUN. * Alternative: Remove all non-numeric characters at once PROCEDURE DIVISION. CLEAN-PHONE-ALT. MOVE PHONE-NUMBER TO CLEANED-PHONE * Remove all non-numeric characters INSPECT CLEANED-PHONE REMOVAL ALL "(" INSPECT CLEANED-PHONE REMOVAL ALL ")" INSPECT CLEANED-PHONE REMOVAL ALL "-" INSPECT CLEANED-PHONE REMOVAL ALL SPACES DISPLAY "Cleaned phone: " CLEANED-PHONE.

REMOVAL is perfect for cleaning formatted phone numbers.

Address Data Cleaning

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
* Clean address data by removing extra spaces 01 ADDRESS-FIELD PIC X(50) VALUE "123 Main Street Suite 100". 01 CLEANED-ADDRESS PIC X(50). PROCEDURE DIVISION. CLEAN-ADDRESS. MOVE ADDRESS-FIELD TO CLEANED-ADDRESS * Remove multiple consecutive spaces PERFORM UNTIL NO-MORE-DOUBLE-SPACES INSPECT CLEANED-ADDRESS REPLACING ALL " " BY " " END-PERFORM * Remove leading spaces INSPECT CLEANED-ADDRESS REMOVAL LEADING SPACES * Remove trailing spaces (by replacing with single space then removing) INSPECT CLEANED-ADDRESS REPLACING CHARACTERS BY SPACES BEFORE INITIAL " " INSPECT CLEANED-ADDRESS REMOVAL LEADING SPACES DISPLAY "Original: " ADDRESS-FIELD DISPLAY "Cleaned: " CLEANED-ADDRESS. * Check for double spaces NO-MORE-DOUBLE-SPACES. IF CLEANED-ADDRESS CONTAINS " " MOVE "N" TO FLAG ELSE MOVE "Y" TO FLAG END-IF.

REMOVAL helps clean up address formatting issues.

Currency Amount Cleaning

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
* Remove currency symbols and formatting 01 CURRENCY-AMOUNT PIC X(15) VALUE "$1,234.56". 01 CLEANED-AMOUNT PIC X(15). 01 NUMERIC-AMOUNT PIC 9(7)V99. PROCEDURE DIVISION. CLEAN-CURRENCY. MOVE CURRENCY-AMOUNT TO CLEANED-AMOUNT * Remove currency symbols and formatting INSPECT CLEANED-AMOUNT REMOVAL ALL "$" INSPECT CLEANED-AMOUNT REMOVAL ALL "," INSPECT CLEANED-AMOUNT REMOVAL ALL SPACES * Convert to numeric MOVE CLEANED-AMOUNT TO NUMERIC-AMOUNT DISPLAY "Original: " CURRENCY-AMOUNT DISPLAY "Cleaned: " CLEANED-AMOUNT DISPLAY "Numeric: " NUMERIC-AMOUNT * Alternative: Remove all non-numeric characters except decimal point PROCEDURE DIVISION. CLEAN-CURRENCY-ALT. MOVE CURRENCY-AMOUNT TO CLEANED-AMOUNT * Remove common currency symbols INSPECT CLEANED-AMOUNT REMOVAL ALL "$" INSPECT CLEANED-AMOUNT REMOVAL ALL "€" INSPECT CLEANED-AMOUNT REMOVAL ALL "£" INSPECT CLEANED-AMOUNT REMOVAL ALL "¥" * Remove thousands separators INSPECT CLEANED-AMOUNT REMOVAL ALL "," INSPECT CLEANED-AMOUNT REMOVAL ALL "." * Keep only digits and decimal point * (This requires more complex logic with REPLACING)

REMOVAL is essential for cleaning currency formatting.

Text Data Cleaning

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
* Clean text data by removing unwanted characters 01 TEXT-DATA PIC X(100) VALUE "Hello, World! This is a test...". 01 CLEANED-TEXT PIC X(100). 01 REMOVAL-STATS. 05 SPACES-REMOVED PIC 9(3). 05 PUNCT-REMOVED PIC 9(3). PROCEDURE DIVISION. CLEAN-TEXT. MOVE TEXT-DATA TO CLEANED-TEXT * Remove punctuation marks INSPECT CLEANED-TEXT TALLYING PUNCT-REMOVED FOR ALL "," REMOVAL ALL "," INSPECT CLEANED-TEXT TALLYING PUNCT-REMOVED FOR ALL "!" REMOVAL ALL "!" INSPECT CLEANED-TEXT TALLYING PUNCT-REMOVED FOR ALL "." REMOVAL ALL "." * Remove extra spaces INSPECT CLEANED-TEXT TALLYING SPACES-REMOVED FOR ALL SPACES REMOVAL ALL SPACES DISPLAY "Original: " TEXT-DATA DISPLAY "Cleaned: " CLEANED-TEXT DISPLAY "Punctuation removed: " PUNCT-REMOVED DISPLAY "Spaces removed: " SPACES-REMOVED * Remove control characters PROCEDURE DIVISION. REMOVE-CONTROL-CHARS. MOVE TEXT-DATA TO CLEANED-TEXT * Remove common control characters INSPECT CLEANED-TEXT REMOVAL ALL X"09" * Tab INSPECT CLEANED-TEXT REMOVAL ALL X"0A" * Line feed INSPECT CLEANED-TEXT REMOVAL ALL X"0D" * Carriage return INSPECT CLEANED-TEXT REMOVAL ALL X"00" * Null DISPLAY "Control characters removed: " CLEANED-TEXT.

REMOVAL helps clean text data by eliminating unwanted characters.

Performance and Best Practices

Understanding performance implications and best practices ensures efficient use of the REMOVAL clause.

Performance Considerations

  • String length impact - Longer strings require more processing
  • Character frequency - More frequent characters increase processing time
  • Multiple REMOVAL operations - Each INSPECT requires separate processing
  • Memory usage - String manipulation requires temporary storage
  • Compiler optimization - Some compilers optimize INSPECT operations

Optimization Strategies

StrategyBenefitImplementation
Combine operationsReduce INSPECT callsUse multiple clauses in one INSPECT
Use TALLYINGTrack removal countsCombine TALLYING with REMOVAL
Pre-validate dataAvoid unnecessary operationsCheck if characters exist before REMOVAL
Optimize field sizesReduce memory usageUse appropriate field lengths
Batch processingProcess multiple recordsApply REMOVAL to record arrays

Best Practices

  • Use appropriate qualifiers - Choose ALL, LEADING, or FIRST based on needs
  • Combine related operations - Use multiple clauses in single INSPECT
  • Validate input data - Check data before applying REMOVAL
  • Track removal counts - Use TALLYING to monitor operations
  • Test with various inputs - Verify behavior with different data
  • Document character sets - Clearly specify which characters are removed

Common Pitfalls to Avoid

PitfallProblemSolution
Removing needed charactersData lossCarefully specify character sets
Multiple INSPECT callsPoor performanceCombine operations when possible
Not tracking removalsUnknown data changesUse TALLYING to count removals
Incorrect qualifiersWrong characters removedTest with sample data
Field size issuesData truncationEnsure adequate field sizes

REMOVAL Clause Quick Reference

UsageSyntaxExample
Remove all occurrencesINSPECT field REMOVAL ALL charINSPECT TEXT REMOVAL ALL SPACES
Remove leadingINSPECT field REMOVAL LEADING charINSPECT TEXT REMOVAL LEADING SPACES
Remove firstINSPECT field REMOVAL FIRST charINSPECT TEXT REMOVAL FIRST SPACE
With TALLYINGINSPECT field TALLYING counter REMOVAL ALL charINSPECT TEXT TALLYING COUNT REMOVAL ALL SPACES
Multiple charactersINSPECT field REMOVAL ALL "chars"INSPECT TEXT REMOVAL ALL ".,;"

Test Your Knowledge

1. What is the primary purpose of the REMOVAL clause in COBOL?

  • To delete files
  • To remove characters from strings
  • To remove records from files
  • To remove memory

2. In which statement is the REMOVAL clause most commonly used?

  • MOVE
  • INSPECT
  • STRING
  • UNSTRING

3. What happens when a REMOVAL clause is executed?

  • Characters are deleted from the string
  • Characters are replaced with spaces
  • Characters are moved to another field
  • Characters are counted

4. What is the relationship between REMOVAL and REPLACING in INSPECT statements?

  • They are the same thing
  • REMOVAL deletes, REPLACING substitutes
  • REMOVAL is faster than REPLACING
  • They cannot be used together

5. Which of the following is a valid REMOVAL clause usage?

  • REMOVAL ALL SPACES
  • REMOVAL LEADING SPACES
  • REMOVAL FIRST SPACE
  • All of the above

Frequently Asked Questions