字符串处理( String Handling)
优质
小牛编辑
131浏览
2023-12-01
COBOL中的字符串处理语句用于对字符串执行多个功能操作。 以下是字符串处理语句 -
- Inspect
- String
- Unstring
Inspect
Inspect verb用于计算或替换字符串中的字符。 可以对字母数字,数字或字母值执行字符串操作。 检查操作从左到右执行。 用于字符串操作的选项如下 -
Tallying
Tallying选项用于计算字符串字符。
Syntax
以下是Tallying选项的语法 -
INSPECT input-string
TALLYING output-count FOR ALL CHARACTERS
使用的参数是 -
- input-string - 要计算其字符的字符串。
- output-count - 保存字符数的数据项。
Example
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 ALL CHARACTERS.
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
更换(Replacing)
替换选项用于替换字符串字符。
Syntax
以下是更换选项的语法 -
INSPECT input-string REPLACING ALL char1 BY char2.
使用的参数是 -
input-string - 要将字符从char1替换为char2的字符串。
Example
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'条款是强制性的。
Syntax
以下是String动词的语法 -
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指定字符串的结尾
- 指针和溢出是可选的
Example
IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 WS-STRING PIC A(30).
01 WS-STR1 PIC A(15) VALUE 'IoWiki'.
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 : WelcomeToIoWiki
WS-COUNT : 25
Unstring
Unstring动词用于将一个字符串拆分为多个子字符串。 定界条款是强制性的。
Syntax
以下是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.
Example
IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 WS-STRING PIC A(30) VALUE 'WELCOME TO IOWIKI'.
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 : IOWIKI