鍍金池/ 教程/ Java/ COBOL字符串處理
COBOL循環(huán)語句
COBOL數(shù)據(jù)布局
COBOL基本語法
COBOL條件語句
COBOL程序結(jié)構(gòu)
COBOL環(huán)境安裝
COBOL數(shù)據(jù)類型
COBOL教程
COBOL字符串處理
COBOL基本動(dòng)詞

COBOL字符串處理

在COBOL語言字符串處理語句用于對(duì)字符串執(zhí)行多的功能操作。以下是字符串處理語句:

  • 檢查
  • 字符串
  • 非字符串

檢查

檢查動(dòng)詞是用來計(jì)數(shù)或字符串中的字符替換。字符串操作可以在字母,數(shù)字或字母進(jìn)行。檢查操作是從左至右的字符進(jìn)行。是用于字符串操作的選項(xiàng)如下:

清點(diǎn)

清點(diǎn)選項(xiàng)用于計(jì)數(shù)字符串的字符。

語法

以下是tallying選項(xiàng)語法理:

INSPECT input-string
TALLYING output-count FOR ALL CHARACTERS

以下是使用的參數(shù)的詳細(xì)信息:

  • 輸入字符串:字符串的字符進(jìn)行計(jì)數(shù)
  • 輸出計(jì)數(shù):數(shù)據(jù)項(xiàng)保持的字符計(jì)數(shù)

例子

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執(zhí)行以上COBOL程序。

//SAMPLE JOB(TESTJCL,XXXXXX),CLASS=A,MSGCLASS=C
//STEP1 EXEC PGM=HELLO

當(dāng)編譯并執(zhí)行上面的程序它會(huì)產(chǎn)生以下結(jié)果:

WS-CNT1 : 15
WS-CNT2 : 06

替換

替換選項(xiàng)用于替換的字符串的字符。

語法

以下是替換選項(xiàng)的語法:

INSPECT input-string REPLACING ALL char1 BY char2.

以下是使用的參數(shù)的詳細(xì)信息:

  • 輸入字符串:字符串的字符將被從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執(zhí)行以上COBOL程序。

//SAMPLE JOB(TESTJCL,XXXXXX),CLASS=A,MSGCLASS=C
//STEP1 EXEC PGM=HELLO

當(dāng)編譯并執(zhí)行上面的程序它會(huì)產(chǎn)生以下結(jié)果:

OLD STRING : ABCDACDADEAAAFF
NEW STRING : XBCDXCDXDEXXXFF

字符串

串動(dòng)詞是用來連接字符串。使用STRING語句,字符的兩個(gè)或更多個(gè)字符串可以被組合以形成一個(gè)更長的字符串。分隔的By子句是強(qiáng)制性的。

語法

以下是動(dòng)詞的字符串的語法:

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.

以下是使用的參數(shù)的詳細(xì)信息:

  • ws-string1 和 ws-string2 : 要連接的輸入字符串
  • ws-string : 輸出字符串
  • ws-count : 用來計(jì)算新的連接字符串的長度
  • 分隔符的指定字符串的末尾
  • 指針和溢出是可選的

例子

IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 WS-STRING PIC A(30).
01 WS-STR1 PIC A(15) VALUE 'Yiibai'.
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執(zhí)行以上COBOL程序。

//SAMPLE JOB(TESTJCL,XXXXXX),CLASS=A,MSGCLASS=C
//STEP1 EXEC PGM=HELLO

當(dāng)編譯并執(zhí)行上面的程序它會(huì)產(chǎn)生以下結(jié)果:

WS-STRING : WelcomeToYiibai       
WS-COUNT : 25

Unstring

Unstring動(dòng)詞是用來分割一個(gè)字符串中為多個(gè)子字符串。分隔的By子句是強(qiáng)制性的。

語法

以下是Unstring動(dòng)詞的語法:

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執(zhí)行以上COBOL程序。

//SAMPLE JOB(TESTJCL,XXXXXX),CLASS=A,MSGCLASS=C
//STEP1 EXEC PGM=HELLO

當(dāng)編譯并執(zhí)行上面的程序它會(huì)產(chǎn)生以下結(jié)果:

WS-STR1 : WELCOME
WS-STR2 : TO
WS-STR3 : TUTORIALSPOINT