COBOL - Xử lý chuỗi

Các câu lệnh xử lý chuỗi trong COBOL được sử dụng để thực hiện nhiều hoạt động chức năng trên chuỗi. Sau đây là các câu lệnh xử lý chuỗi:

  • Inspect
  • String
  • Unstring

Quan sát

Kiểm tra động từ được sử dụng để đếm hoặc thay thế các ký tự trong một chuỗi. Các phép toán chuỗi có thể được thực hiện trên các giá trị chữ và số, số hoặc chữ cái. Các hoạt động kiểm tra được thực hiện từ trái sang phải. Các tùy chọn được sử dụng cho các hoạt động chuỗi như sau:

Kiểm đếm

Tùy chọn đếm được sử dụng để đếm các ký tự chuỗi.

Syntax

Sau đây là cú pháp của tùy chọn Kiểm đếm:

INSPECT input-string
TALLYING output-count FOR ALL CHARACTERS

Các tham số được sử dụng là -

  • input-string - Chuỗi có các ký tự được đếm.
  • output-count - Mục dữ liệu để chứa số lượng ký tự.

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 CHARACTER.
   DISPLAY "WS-CNT1 : "WS-CNT1.
   INSPECT WS-STRING TALLYING WS-CNT2 FOR ALL 'A'.
   DISPLAY "WS-CNT2 : "WS-CNT2
   
STOP RUN.

JCL để thực hiện chương trình COBOL trên.

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

Khi bạn biên dịch và thực thi chương trình trên, nó tạo ra kết quả sau:

WS-CNT1 : 15
WS-CNT2 : 06

Thay thế

Tùy chọn thay thế được sử dụng để thay thế các ký tự chuỗi.

Syntax

Sau đây là cú pháp của tùy chọn Thay thế:

INSPECT input-string REPLACING ALL char1 BY char2.

Tham số được sử dụng là -

  • input-string - Chuỗi có các ký tự được thay thế từ char1 sang 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 để thực hiện chương trình COBOL trên.

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

Khi bạn biên dịch và thực thi chương trình trên, nó tạo ra kết quả sau:

OLD STRING : ABCDACDADEAAAFF
NEW STRING : XBCDXCDXDEXXXFF

Chuỗi

Động từ chuỗi được sử dụng để nối các chuỗi. Sử dụng câu lệnh STRING, hai hoặc nhiều chuỗi ký tự có thể được kết hợp để tạo thành một chuỗi dài hơn. Điều khoản 'Delimited By' là bắt buộc.

Syntax

Sau đây là cú pháp của động từ chuỗi:

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.

Sau đây là chi tiết của các tham số được sử dụng:

  • ws-string1 và ws-string2: Các chuỗi đầu vào được nối
  • ws-string: Chuỗi đầu ra
  • ws-count: Được sử dụng để đếm độ dài của chuỗi được nối mới
  • Phân cách chỉ định phần cuối của chuỗi
  • Con trỏ và Tràn là tùy chọn

Example

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 để thực hiện chương trình COBOL ở trên -

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

Khi bạn biên dịch và thực thi chương trình trên, nó tạo ra kết quả sau:

WS-STRING : WelcomeToTutorialspoint       
WS-COUNT : 25

Tháo dây

Động từ Unstring được sử dụng để chia một chuỗi thành nhiều chuỗi con. Điều khoản Delimited By là bắt buộc.

Syntax

Sau đây là cú pháp của Unstring verb:

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 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 để thực hiện chương trình COBOL ở trên -

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

Khi bạn biên dịch và thực thi chương trình trên, nó tạo ra kết quả sau:

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