The INSPECT statement represents a sophisticated character-level analysis and manipulation mechanism within COBOL programming environments, providing comprehensive string processing capabilities that enable precise character counting, selective replacement operations, and advanced text transformation. This statement embodies the principles of flexible data manipulation by supporting pattern matching, character conversion, and conditional processing while maintaining data integrity, ensuring efficient string operations, and facilitating robust text processing across enterprise applications requiring sophisticated data validation, format standardization, and comprehensive character-level operations with optimal performance and reliable execution characteristics.
1234567891011121314151617181920212223242526272829303132333435363738394041*> INSPECT TALLYING - Count character occurrences INSPECT identifier-1 TALLYING { counter-1 FOR { ALL | LEADING | CHARACTERS } literal-1 } [BEFORE|AFTER] INITIAL literal-2 *> INSPECT REPLACING - Replace characters/strings INSPECT identifier-1 REPLACING { ALL | LEADING | FIRST } literal-1 BY literal-2 [BEFORE|AFTER] INITIAL literal-3 *> INSPECT CONVERTING - Character translation INSPECT identifier-1 CONVERTING literal-1 TO literal-2 [BEFORE|AFTER] INITIAL literal-3 *> Combined operations INSPECT identifier-1 TALLYING counter-1 FOR ALL literal-1 REPLACING ALL literal-2 BY literal-3 *> Basic examples 01 WS-TEXT-FIELD PIC X(50) VALUE "Hello World 123". 01 WS-COUNTER PIC 9(3) VALUE 0. PROCEDURE DIVISION. *> Count all 'l' characters INSPECT WS-TEXT-FIELD TALLYING WS-COUNTER FOR ALL "l" *> Result: WS-COUNTER = 3 *> Replace all spaces with dashes INSPECT WS-TEXT-FIELD REPLACING ALL " " BY "-" *> Result: "Hello-World-123" *> Convert lowercase to uppercase INSPECT WS-TEXT-FIELD CONVERTING "abcdefghijklmnopqrstuvwxyz" TO "ABCDEFGHIJKLMNOPQRSTUVWXYZ" *> Result: "HELLO-WORLD-123" *> Count digits MOVE 0 TO WS-COUNTER INSPECT WS-TEXT-FIELD TALLYING WS-COUNTER FOR ALL "0123456789" *> Result: WS-COUNTER = 3
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443IDENTIFICATION DIVISION. PROGRAM-ID. INSPECT-DEMONSTRATION. DATA DIVISION. WORKING-STORAGE SECTION. 01 WS-TEST-DATA. 05 WS-CUSTOMER-NAME PIC X(30) VALUE "John P. Smith Jr.". 05 WS-PHONE-NUMBER PIC X(15) VALUE "(555) 123-4567". 05 WS-EMAIL-ADDRESS PIC X(50) VALUE "john.smith@company.com". 05 WS-PRODUCT-CODE PIC X(12) VALUE "ABC-123-XYZ". 05 WS-DESCRIPTION PIC X(100) VALUE "High-Quality Product with Multiple Features". 01 WS-VALIDATION-DATA. 05 WS-CREDIT-CARD PIC X(20) VALUE "1234-5678-9012-3456". 05 WS-SSN PIC X(11) VALUE "123-45-6789". 05 WS-ZIP-CODE PIC X(10) VALUE "12345-6789". 05 WS-INPUT-DATA PIC X(100). 01 WS-COUNTERS. 05 WS-CHAR-COUNT PIC 9(4) VALUE 0. 05 WS-DIGIT-COUNT PIC 9(3) VALUE 0. 05 WS-ALPHA-COUNT PIC 9(3) VALUE 0. 05 WS-SPACE-COUNT PIC 9(3) VALUE 0. 05 WS-SPECIAL-COUNT PIC 9(3) VALUE 0. 05 WS-DASH-COUNT PIC 9(2) VALUE 0. 05 WS-DOT-COUNT PIC 9(2) VALUE 0. 01 WS-FORMATTING-WORK. 05 WS-FORMATTED-PHONE PIC X(15). 05 WS-FORMATTED-SSN PIC X(11). 05 WS-CLEAN-DATA PIC X(100). 05 WS-UPPERCASE-DATA PIC X(100). 05 WS-LOWERCASE-DATA PIC X(100). 01 WS-VALIDATION-RESULTS. 05 WS-VALID-EMAIL PIC X VALUE 'N'. 88 EMAIL-VALID VALUE 'Y'. 88 EMAIL-INVALID VALUE 'N'. 05 WS-VALID-PHONE PIC X VALUE 'N'. 88 PHONE-VALID VALUE 'Y'. 88 PHONE-INVALID VALUE 'N'. 05 WS-VALID-CARD PIC X VALUE 'N'. 88 CARD-VALID VALUE 'Y'. 88 CARD-INVALID VALUE 'N'. 01 WS-CONVERSION-TABLES. 05 WS-LOWERCASE-CHARS PIC X(26) VALUE "abcdefghijklmnopqrstuvwxyz". 05 WS-UPPERCASE-CHARS PIC X(26) VALUE "ABCDEFGHIJKLMNOPQRSTUVWXYZ". 05 WS-DIGITS PIC X(10) VALUE "0123456789". 05 WS-SPECIAL-CHARS PIC X(20) VALUE "!@#$%^&*()_+-=[]{}|;:,.<>?". PROCEDURE DIVISION. MAIN-PROCESSING. PERFORM DEMONSTRATE-TALLYING PERFORM DEMONSTRATE-REPLACING PERFORM DEMONSTRATE-CONVERTING PERFORM DEMONSTRATE-COMBINED-OPERATIONS PERFORM DEMONSTRATE-DATA-VALIDATION PERFORM DEMONSTRATE-DATA-FORMATTING PERFORM DEMONSTRATE-ADVANCED-TECHNIQUES STOP RUN. DEMONSTRATE-TALLYING. DISPLAY "=== INSPECT TALLYING DEMONSTRATIONS ===" *> Count specific characters DISPLAY "Original customer name: '" WS-CUSTOMER-NAME "'" MOVE 0 TO WS-SPACE-COUNT INSPECT WS-CUSTOMER-NAME TALLYING WS-SPACE-COUNT FOR ALL " " DISPLAY "Number of spaces: " WS-SPACE-COUNT MOVE 0 TO WS-DOT-COUNT INSPECT WS-CUSTOMER-NAME TALLYING WS-DOT-COUNT FOR ALL "." DISPLAY "Number of periods: " WS-DOT-COUNT *> Count leading characters MOVE 0 TO WS-CHAR-COUNT INSPECT WS-CUSTOMER-NAME TALLYING WS-CHAR-COUNT FOR LEADING "J" DISPLAY "Leading 'J' characters: " WS-CHAR-COUNT *> Count characters before a delimiter MOVE 0 TO WS-CHAR-COUNT INSPECT WS-CUSTOMER-NAME TALLYING WS-CHAR-COUNT FOR ALL "o" BEFORE INITIAL " " DISPLAY "Letter 'o' before first space: " WS-CHAR-COUNT *> Count total characters (non-space) MOVE 0 TO WS-CHAR-COUNT INSPECT WS-CUSTOMER-NAME TALLYING WS-CHAR-COUNT FOR CHARACTERS DISPLAY "Total character positions: " WS-CHAR-COUNT DISPLAY SPACES. DEMONSTRATE-REPLACING. DISPLAY "=== INSPECT REPLACING DEMONSTRATIONS ===" *> Phone number formatting MOVE WS-PHONE-NUMBER TO WS-FORMATTED-PHONE DISPLAY "Original phone: '" WS-FORMATTED-PHONE "'" *> Remove parentheses and spaces INSPECT WS-FORMATTED-PHONE REPLACING ALL "(" BY SPACES INSPECT WS-FORMATTED-PHONE REPLACING ALL ")" BY SPACES INSPECT WS-FORMATTED-PHONE REPLACING ALL " " BY SPACES DISPLAY "After removing brackets: '" WS-FORMATTED-PHONE "'" *> Replace dashes with dots INSPECT WS-FORMATTED-PHONE REPLACING ALL "-" BY "." DISPLAY "With dots instead of dashes: '" WS-FORMATTED-PHONE "'" *> Replace first occurrence only MOVE WS-PRODUCT-CODE TO WS-CLEAN-DATA DISPLAY "Original product code: '" WS-CLEAN-DATA "'" INSPECT WS-CLEAN-DATA REPLACING FIRST "-" BY "_" DISPLAY "After replacing first dash: '" WS-CLEAN-DATA "'" *> Replace all occurrences MOVE WS-PRODUCT-CODE TO WS-CLEAN-DATA INSPECT WS-CLEAN-DATA REPLACING ALL "-" BY "_" DISPLAY "After replacing all dashes: '" WS-CLEAN-DATA "'" *> Conditional replacement (before initial character) MOVE WS-EMAIL-ADDRESS TO WS-CLEAN-DATA DISPLAY "Original email: '" WS-CLEAN-DATA "'" INSPECT WS-CLEAN-DATA REPLACING ALL "." BY "_" BEFORE INITIAL "@" DISPLAY "Dots to underscores before @: '" WS-CLEAN-DATA "'" DISPLAY SPACES. DEMONSTRATE-CONVERTING. DISPLAY "=== INSPECT CONVERTING DEMONSTRATIONS ===" *> Convert to uppercase MOVE WS-CUSTOMER-NAME TO WS-UPPERCASE-DATA DISPLAY "Original: '" WS-UPPERCASE-DATA "'" INSPECT WS-UPPERCASE-DATA CONVERTING WS-LOWERCASE-CHARS TO WS-UPPERCASE-CHARS DISPLAY "Uppercase: '" WS-UPPERCASE-DATA "'" *> Convert to lowercase MOVE WS-DESCRIPTION TO WS-LOWERCASE-DATA DISPLAY "Original description: '" WS-DESCRIPTION "'" INSPECT WS-LOWERCASE-DATA CONVERTING WS-UPPERCASE-CHARS TO WS-LOWERCASE-CHARS DISPLAY "Lowercase: '" WS-LOWERCASE-DATA "'" *> Character substitution with custom table MOVE "HELLO WORLD 123" TO WS-CLEAN-DATA DISPLAY "Before substitution: '" WS-CLEAN-DATA "'" INSPECT WS-CLEAN-DATA CONVERTING "HELO WRD123" TO "helo_wrd456" DISPLAY "After substitution: '" WS-CLEAN-DATA "'" *> Convert special characters MOVE "Price: $19.99 (Tax: 5%)" TO WS-CLEAN-DATA DISPLAY "Before symbol conversion: '" WS-CLEAN-DATA "'" INSPECT WS-CLEAN-DATA CONVERTING "$()%" TO "SDPX" DISPLAY "After symbol conversion: '" WS-CLEAN-DATA "'" DISPLAY SPACES. DEMONSTRATE-COMBINED-OPERATIONS. DISPLAY "=== COMBINED INSPECT OPERATIONS ===" *> Count and replace in one operation MOVE WS-PHONE-NUMBER TO WS-FORMATTED-PHONE MOVE 0 TO WS-DASH-COUNT DISPLAY "Phone before processing: '" WS-FORMATTED-PHONE "'" INSPECT WS-FORMATTED-PHONE TALLYING WS-DASH-COUNT FOR ALL "-" REPLACING ALL "-" BY "." DISPLAY "Dashes found: " WS-DASH-COUNT DISPLAY "Phone after processing: '" WS-FORMATTED-PHONE "'" *> Multiple tallying operations MOVE WS-DESCRIPTION TO WS-CLEAN-DATA MOVE 0 TO WS-ALPHA-COUNT MOVE 0 TO WS-SPACE-COUNT MOVE 0 TO WS-DASH-COUNT INSPECT WS-CLEAN-DATA TALLYING WS-ALPHA-COUNT FOR ALL WS-UPPERCASE-CHARS TALLYING WS-SPACE-COUNT FOR ALL " " TALLYING WS-DASH-COUNT FOR ALL "-" DISPLAY "Analysis of description:" DISPLAY " Uppercase letters: " WS-ALPHA-COUNT DISPLAY " Spaces: " WS-SPACE-COUNT DISPLAY " Dashes: " WS-DASH-COUNT DISPLAY SPACES. DEMONSTRATE-DATA-VALIDATION. DISPLAY "=== DATA VALIDATION WITH INSPECT ===" PERFORM VALIDATE-EMAIL-FORMAT PERFORM VALIDATE-PHONE-FORMAT PERFORM VALIDATE-CREDIT-CARD-FORMAT DISPLAY "Validation Results:" IF EMAIL-VALID DISPLAY " Email: VALID" ELSE DISPLAY " Email: INVALID" END-IF IF PHONE-VALID DISPLAY " Phone: VALID" ELSE DISPLAY " Phone: INVALID" END-IF IF CARD-VALID DISPLAY " Credit Card: VALID" ELSE DISPLAY " Credit Card: INVALID" END-IF DISPLAY SPACES. VALIDATE-EMAIL-FORMAT. *> Check for @ symbol MOVE 0 TO WS-CHAR-COUNT INSPECT WS-EMAIL-ADDRESS TALLYING WS-CHAR-COUNT FOR ALL "@" IF WS-CHAR-COUNT = 1 *> Check for . after @ MOVE 0 TO WS-DOT-COUNT INSPECT WS-EMAIL-ADDRESS TALLYING WS-DOT-COUNT FOR ALL "." AFTER INITIAL "@" IF WS-DOT-COUNT >= 1 SET EMAIL-VALID TO TRUE ELSE SET EMAIL-INVALID TO TRUE END-IF ELSE SET EMAIL-INVALID TO TRUE END-IF. VALIDATE-PHONE-FORMAT. *> Count digits in phone number MOVE 0 TO WS-DIGIT-COUNT INSPECT WS-PHONE-NUMBER TALLYING WS-DIGIT-COUNT FOR ALL WS-DIGITS IF WS-DIGIT-COUNT = 10 SET PHONE-VALID TO TRUE ELSE SET PHONE-INVALID TO TRUE END-IF. VALIDATE-CREDIT-CARD-FORMAT. *> Count digits (should be 16) MOVE 0 TO WS-DIGIT-COUNT INSPECT WS-CREDIT-CARD TALLYING WS-DIGIT-COUNT FOR ALL WS-DIGITS *> Count dashes (should be 3) MOVE 0 TO WS-DASH-COUNT INSPECT WS-CREDIT-CARD TALLYING WS-DASH-COUNT FOR ALL "-" IF WS-DIGIT-COUNT = 16 AND WS-DASH-COUNT = 3 SET CARD-VALID TO TRUE ELSE SET CARD-INVALID TO TRUE END-IF. DEMONSTRATE-DATA-FORMATTING. DISPLAY "=== DATA FORMATTING WITH INSPECT ===" PERFORM FORMAT-SSN PERFORM FORMAT-PHONE-NUMBER PERFORM CLEAN-INPUT-DATA DISPLAY "Formatted SSN: '" WS-FORMATTED-SSN "'" DISPLAY "Formatted Phone: '" WS-FORMATTED-PHONE "'" DISPLAY "Cleaned Data: '" WS-CLEAN-DATA "'" DISPLAY SPACES. FORMAT-SSN. *> Remove existing formatting MOVE WS-SSN TO WS-FORMATTED-SSN INSPECT WS-FORMATTED-SSN REPLACING ALL "-" BY SPACES *> Add standard formatting (XXX-XX-XXXX) INSPECT WS-FORMATTED-SSN REPLACING FIRST SPACES BY "-" AFTER INITIAL " " INSPECT WS-FORMATTED-SSN REPLACING FIRST SPACES BY "-" AFTER INITIAL " ". FORMAT-PHONE-NUMBER. *> Start with clean phone number MOVE "(555) 123-4567" TO WS-FORMATTED-PHONE *> Convert to XXX.XXX.XXXX format INSPECT WS-FORMATTED-PHONE REPLACING ALL "(" BY SPACES INSPECT WS-FORMATTED-PHONE REPLACING ALL ")" BY SPACES INSPECT WS-FORMATTED-PHONE REPLACING ALL " " BY SPACES INSPECT WS-FORMATTED-PHONE REPLACING ALL "-" BY "." *> Clean up extra spaces INSPECT WS-FORMATTED-PHONE REPLACING ALL " " BY " ". CLEAN-INPUT-DATA. *> Simulate user input with extra spaces and mixed case MOVE " Hello World 123 " TO WS-CLEAN-DATA *> Remove leading spaces INSPECT WS-CLEAN-DATA REPLACING LEADING " " BY LOW-VALUES *> Replace multiple spaces with single space INSPECT WS-CLEAN-DATA REPLACING ALL " " BY " " INSPECT WS-CLEAN-DATA REPLACING ALL " " BY " " *> Convert to standard case INSPECT WS-CLEAN-DATA CONVERTING WS-LOWERCASE-CHARS TO WS-UPPERCASE-CHARS. DEMONSTRATE-ADVANCED-TECHNIQUES. DISPLAY "=== ADVANCED INSPECT TECHNIQUES ===" PERFORM ADVANCED-STRING-ANALYSIS PERFORM CONDITIONAL-CHARACTER-PROCESSING PERFORM PATTERN-MATCHING-SIMULATION DISPLAY "Advanced processing completed" DISPLAY SPACES. ADVANCED-STRING-ANALYSIS. DISPLAY "Advanced String Analysis:" MOVE "Product-Code: ABC-123-XYZ (Version 2.1)" TO WS-INPUT-DATA DISPLAY " Analyzing: '" WS-INPUT-DATA "'" *> Count different character types MOVE 0 TO WS-ALPHA-COUNT MOVE 0 TO WS-DIGIT-COUNT MOVE 0 TO WS-SPECIAL-COUNT INSPECT WS-INPUT-DATA TALLYING WS-ALPHA-COUNT FOR ALL WS-UPPERCASE-CHARS INSPECT WS-INPUT-DATA TALLYING WS-DIGIT-COUNT FOR ALL WS-DIGITS INSPECT WS-INPUT-DATA TALLYING WS-SPECIAL-COUNT FOR ALL ".-():/" DISPLAY " Uppercase letters: " WS-ALPHA-COUNT DISPLAY " Digits: " WS-DIGIT-COUNT DISPLAY " Special characters: " WS-SPECIAL-COUNT. CONDITIONAL-CHARACTER-PROCESSING. DISPLAY "Conditional Character Processing:" MOVE "First-Part|Second-Part|Third-Part" TO WS-INPUT-DATA DISPLAY " Before: '" WS-INPUT-DATA "'" *> Replace characters only before first delimiter INSPECT WS-INPUT-DATA REPLACING ALL "-" BY "_" BEFORE INITIAL "|" DISPLAY " After conditional replace: '" WS-INPUT-DATA "'" *> Count characters after specific point MOVE 0 TO WS-CHAR-COUNT INSPECT WS-INPUT-DATA TALLYING WS-CHAR-COUNT FOR ALL "a" AFTER INITIAL "|" DISPLAY " Letter 'a' after first |: " WS-CHAR-COUNT. PATTERN-MATCHING-SIMULATION. DISPLAY "Pattern Matching Simulation:" *> Simulate finding patterns using INSPECT MOVE "Error-Code-404-Not-Found" TO WS-INPUT-DATA DISPLAY " Checking: '" WS-INPUT-DATA "'" *> Check for error pattern MOVE 0 TO WS-CHAR-COUNT INSPECT WS-INPUT-DATA TALLYING WS-CHAR-COUNT FOR ALL "Error" IF WS-CHAR-COUNT > 0 DISPLAY " Pattern 'Error' found" *> Extract error code (simulate) MOVE 0 TO WS-DIGIT-COUNT INSPECT WS-INPUT-DATA TALLYING WS-DIGIT-COUNT FOR ALL WS-DIGITS AFTER INITIAL "Code-" DISPLAY " Digits after 'Code-': " WS-DIGIT-COUNT ELSE DISPLAY " No error pattern found" END-IF. *> Utility paragraphs for advanced processing DATA-SANITIZATION. DISPLAY "=== DATA SANITIZATION ===" *> Remove potentially harmful characters MOVE "UserInput" TO WS-INPUT-DATA DISPLAY "Before sanitization: " WS-INPUT-DATA INSPECT WS-INPUT-DATA REPLACING ALL "<" BY "[" INSPECT WS-INPUT-DATA REPLACING ALL ">" BY "]" INSPECT WS-INPUT-DATA REPLACING ALL "'" BY "" INSPECT WS-INPUT-DATA REPLACING ALL '"' BY "" DISPLAY "After sanitization: " WS-INPUT-DATA. PERFORMANCE-OPTIMIZATION. DISPLAY "=== PERFORMANCE OPTIMIZATION TIPS ===" *> Single INSPECT with multiple operations is more efficient MOVE "Sample Data 123 with Various Characters!" TO WS-INPUT-DATA *> Efficient: Combined operations MOVE 0 TO WS-ALPHA-COUNT MOVE 0 TO WS-DIGIT-COUNT MOVE 0 TO WS-SPACE-COUNT INSPECT WS-INPUT-DATA TALLYING WS-ALPHA-COUNT FOR ALL WS-UPPERCASE-CHARS TALLYING WS-DIGIT-COUNT FOR ALL WS-DIGITS TALLYING WS-SPACE-COUNT FOR ALL " " REPLACING ALL "!" BY "." DISPLAY "Combined operation results:" DISPLAY " Alpha: " WS-ALPHA-COUNT DISPLAY " Digits: " WS-DIGIT-COUNT DISPLAY " Spaces: " WS-SPACE-COUNT DISPLAY " Modified data: " WS-INPUT-DATA. ERROR-HANDLING-WITH-INSPECT. DISPLAY "=== ERROR HANDLING PATTERNS ===" *> Validate data before processing MOVE "Test Data" TO WS-INPUT-DATA IF WS-INPUT-DATA NOT = SPACES PERFORM PROCESS-VALID-DATA ELSE DISPLAY "Error: Empty input data" END-IF. PROCESS-VALID-DATA. *> Safe processing with validation MOVE 0 TO WS-CHAR-COUNT INSPECT WS-INPUT-DATA TALLYING WS-CHAR-COUNT FOR CHARACTERS IF WS-CHAR-COUNT > 0 DISPLAY "Processing " WS-CHAR-COUNT " characters" INSPECT WS-INPUT-DATA CONVERTING WS-LOWERCASE-CHARS TO WS-UPPERCASE-CHARS DISPLAY "Result: " WS-INPUT-DATA ELSE DISPLAY "No valid characters to process" END-IF.
1234567891011121314151617181901 WS-EMAIL PIC X(50). 01 WS-AT-COUNT PIC 9(2). 01 WS-DOT-COUNT PIC 9(2). PROCEDURE DIVISION. MOVE "user@domain.com" TO WS-EMAIL *> Count @ symbols (should be exactly 1) INSPECT WS-EMAIL TALLYING WS-AT-COUNT FOR ALL "@" *> Count dots after @ (should be at least 1) INSPECT WS-EMAIL TALLYING WS-DOT-COUNT FOR ALL "." AFTER INITIAL "@" IF WS-AT-COUNT = 1 AND WS-DOT-COUNT >= 1 DISPLAY "Valid email format" ELSE DISPLAY "Invalid email format" END-IF.
123456789101112131415161701 WS-INPUT-DATA PIC X(100). 01 WS-CLEAN-DATA PIC X(100). PROCEDURE DIVISION. MOVE " Hello World " TO WS-INPUT-DATA MOVE WS-INPUT-DATA TO WS-CLEAN-DATA *> Remove leading spaces INSPECT WS-CLEAN-DATA REPLACING LEADING " " BY LOW-VALUES *> Replace multiple spaces with single space INSPECT WS-CLEAN-DATA REPLACING ALL " " BY " " *> Convert to uppercase INSPECT WS-CLEAN-DATA CONVERTING "abcdefghijklmnopqrstuvwxyz" TO "ABCDEFGHIJKLMNOPQRSTUVWXYZ".
What are the three main types of INSPECT operations?
Answer: The three main INSPECT operations are TALLYING (counting character occurrences), REPLACING (substituting characters or strings), and CONVERTING (character-to-character translation using conversion tables).
How do BEFORE and AFTER INITIAL clauses affect INSPECT operations?
Answer: BEFORE INITIAL limits the operation to characters appearing before the first occurrence of a specified character, while AFTER INITIAL limits the operation to characters appearing after the first occurrence of a specified character.
When should you use CONVERTING instead of REPLACING?
Answer: Use CONVERTING when you need to translate multiple characters according to a mapping table (like case conversion). Use REPLACING when you need to substitute specific character strings or when the replacement doesn't follow a simple one-to-one character mapping.