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.
REMOVAL eliminates characters and shifts remaining data left.
The REMOVAL clause follows specific syntax patterns within INSPECT statements and can be combined with various qualifiers.
123456789101112131415161718192021* 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.
Clause | Action | String Length |
---|---|---|
REMOVAL | Deletes characters | Reduces effective length |
REPLACING | Substitutes characters | Maintains length |
Both | Delete then substitute | Reduces then maintains |
1234567891011121314151617181920* 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.
These examples demonstrate how to use the REMOVAL clause effectively in different data cleaning scenarios.
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950IDENTIFICATION 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.
123456789101112131415161718192021222324252627282930313233* 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.
1234567891011121314151617181920212223242526272829303132333435363738* 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.
12345678910111213141516171819202122232425262728293031323334353637383940414243444546* 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.
Understanding performance implications and best practices ensures efficient use of the REMOVAL clause.
Strategy | Benefit | Implementation |
---|---|---|
Combine operations | Reduce INSPECT calls | Use multiple clauses in one INSPECT |
Use TALLYING | Track removal counts | Combine TALLYING with REMOVAL |
Pre-validate data | Avoid unnecessary operations | Check if characters exist before REMOVAL |
Optimize field sizes | Reduce memory usage | Use appropriate field lengths |
Batch processing | Process multiple records | Apply REMOVAL to record arrays |
Pitfall | Problem | Solution |
---|---|---|
Removing needed characters | Data loss | Carefully specify character sets |
Multiple INSPECT calls | Poor performance | Combine operations when possible |
Not tracking removals | Unknown data changes | Use TALLYING to count removals |
Incorrect qualifiers | Wrong characters removed | Test with sample data |
Field size issues | Data truncation | Ensure adequate field sizes |
Usage | Syntax | Example |
---|---|---|
Remove all occurrences | INSPECT field REMOVAL ALL char | INSPECT TEXT REMOVAL ALL SPACES |
Remove leading | INSPECT field REMOVAL LEADING char | INSPECT TEXT REMOVAL LEADING SPACES |
Remove first | INSPECT field REMOVAL FIRST char | INSPECT TEXT REMOVAL FIRST SPACE |
With TALLYING | INSPECT field TALLYING counter REMOVAL ALL char | INSPECT TEXT TALLYING COUNT REMOVAL ALL SPACES |
Multiple characters | INSPECT field REMOVAL ALL "chars" | INSPECT TEXT REMOVAL ALL ".,;" |
1. What is the primary purpose of the REMOVAL clause in COBOL?
2. In which statement is the REMOVAL clause most commonly used?
3. What happens when a REMOVAL clause is executed?
4. What is the relationship between REMOVAL and REPLACING in INSPECT statements?
5. Which of the following is a valid REMOVAL clause usage?
Understanding the INSPECT statement for string manipulation.
Using REPLACING clause for character substitution.
Using TALLYING to count characters in INSPECT.
Complete guide to string operations in COBOL.
Data validation techniques in COBOL.