COBOL - 字符串处理

  • 简述

    COBOL 中的字符串处理语句用于对字符串执行多种功能操作。以下是字符串处理语句 -
    • Inspect
    • String
    • Unstring
  • Inspect

    Inspect动词用于计算或替换字符串中的字符。可以对字母数字、数字或字母值执行字符串操作。Inspect操作从左到右执行。用于字符串操作的选项如下 -

    统计

    Tallying 选项用于对字符串字符进行计数。
    语法
    以下是 Tallying 选项的语法 -
    
    INSPECT input-string
    TALLYING output-count FOR ALL CHARACTERS
    
    使用的参数是 -
    • input-string - 要计算其字符的字符串。
    • output-count - 保存字符数的数据项。
    例如
    
    IDENTIFICATION DIVISION.
    PROGRAM-ID. HELLO.
    DATA DIVISION.
       WORKING-STORAGE SECTION.
       01 WS-CNT1 PIC 9(2) VALUE 0.
       01 WS-CNT2 PIC 9(2) VALUE 0.
       01 WS-STRING PIC X(15) VALUE 'ABCDACDADEAAAFF'.
       
    PROCEDURE DIVISION.
       INSPECT WS-STRING TALLYING WS-CNT1 FOR CHARACTER.
       DISPLAY "WS-CNT1 : "WS-CNT1.
       INSPECT WS-STRING TALLYING WS-CNT2 FOR ALL 'A'.
       DISPLAY "WS-CNT2 : "WS-CNT2
       
    STOP RUN.
    
    JCL执行上述 COBOL 程序。
    
    //SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
    //STEP1 EXEC PGM = HELLO
    
    当您编译并执行上述程序时,它会产生以下结果 -
    
    WS-CNT1 : 15
    WS-CNT2 : 06
    

    更换

    替换选项用于替换字符串字符。
    语法
    以下是替换选项的语法 -
    
    INSPECT input-string REPLACING ALL char1 BY char2.
    
    使用的参数是 -
    • input-string− 要将其字符从char1 替换为char2 的字符串。
    例如
    
    IDENTIFICATION DIVISION.
    PROGRAM-ID. HELLO.
    DATA DIVISION.
       WORKING-STORAGE SECTION.
       01 WS-STRING PIC X(15) VALUE 'ABCDACDADEAAAFF'.
    PROCEDURE DIVISION.
       DISPLAY "OLD STRING : "WS-STRING.
       INSPECT WS-STRING REPLACING ALL 'A' BY 'X'.
       DISPLAY "NEW STRING : "WS-STRING.
       
    STOP RUN.
    
    JCL执行上述 COBOL 程序。
    
    //SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
    //STEP1 EXEC PGM = HELLO
    
    当您编译并执行上述程序时,它会产生以下结果 -
    
    OLD STRING : ABCDACDADEAAAFF
    NEW STRING : XBCDXCDXDEXXXFF
    
  • String

    字符串动词用于连接字符串。使用 STRING 语句,可以将两个或多个字符串组合成一个更长的字符串。'Delimited By' 子句是强制性的。
    语法
    以下是字符串动词的语法 -
    
    STRING ws-string1 DELIMITED BY SPACE
       ws-string2 DELIMITED BY SIZE
       INTO ws-destination-string
       WITH POINTER ws-count
       ON OVERFLOW DISPLAY message1
       NOT ON OVERFLOW DISPLAY message2
    END-STRING.
    
    以下是使用参数的详细信息 -
    • ws-string1 和 ws-string2 :要连接的输入字符串
    • ws-string : 输出字符串
    • ws-count :用于计算新连接字符串的长度
    • Delimited 指定字符串的结尾
    • 指针和溢出是可选的
    例如
    
    IDENTIFICATION DIVISION.
    PROGRAM-ID. HELLO.
    DATA DIVISION.
       WORKING-STORAGE SECTION.
       01 WS-STRING PIC A(30).
       01 WS-STR1 PIC A(15) VALUE 'Tutorialspoint'.
       01 WS-STR2 PIC A(7) VALUE 'Welcome'.
       01 WS-STR3 PIC A(7) VALUE 'To AND'.
       01 WS-COUNT PIC 99 VALUE 1.
    PROCEDURE DIVISION.
       STRING WS-STR2 DELIMITED BY SIZE
          WS-STR3 DELIMITED BY SPACE
          WS-STR1 DELIMITED BY SIZE
          INTO WS-STRING 
          WITH POINTER WS-COUNT
          ON OVERFLOW DISPLAY 'OVERFLOW!' 
       END-STRING.
       
       DISPLAY 'WS-STRING : 'WS-STRING.
       DISPLAY 'WS-COUNT : 'WS-COUNT.
    STOP RUN.
    
    JCL执行上述 COBOL 程序 -
    
    //SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
    //STEP1 EXEC PGM = HELLO
    
    当您编译并执行上述程序时,它会产生以下结果 -
    
    WS-STRING : WelcomeToTutorialspoint       
    WS-COUNT : 25
    
  • Unstring

    Unstring动词用于将一个字符串拆分为多个子字符串。Delimited By 子句是强制性的。
    语法
    以下是 Unstring 动词的语法 -
    
    UNSTRING ws-string DELIMITED BY SPACE
    INTO ws-str1, ws-str2
    WITH POINTER ws-count
    ON OVERFLOW DISPLAY message
    NOT ON OVERFLOW DISPLAY message
    END-UNSTRING.
    
    例如
    
    IDENTIFICATION DIVISION.
    PROGRAM-ID. HELLO.
    DATA DIVISION.
       WORKING-STORAGE SECTION.
       01 WS-STRING PIC A(30) VALUE 'WELCOME TO TUTORIALSPOINT'.
       01 WS-STR1 PIC A(7).
       01 WS-STR2 PIC A(2).
       01 WS-STR3 PIC A(15).
       01 WS-COUNT PIC 99 VALUE 1.
    PROCEDURE DIVISION.
       UNSTRING WS-STRING DELIMITED BY SPACE
          INTO WS-STR1, WS-STR2, WS-STR3
       END-UNSTRING.
       
       DISPLAY 'WS-STR1 : 'WS-STR1.
       DISPLAY 'WS-STR2 : 'WS-STR2.
       DISPLAY 'WS-STR3 : 'WS-STR3.
       
    STOP RUN.
    
    JCL执行上述 COBOL 程序 -
    
    //SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
    //STEP1 EXEC PGM = HELLO
    
    当您编译并执行上述程序时,它会产生以下结果 -
    
    WS-STR1 : WELCOME
    WS-STR2 : TO
    WS-STR3 : TUTORIALSPOINT