Cobol-string-handling

提供:Dev Guides
移動先:案内検索

COBOL-文字列処理

COBOLの文字列処理ステートメントは、文字列に対して複数の機能操作を実行するために使用されます。 以下は、文字列処理ステートメントです-

  • 調べる
  • ひも
  • 紐を外す

調べる

Inspect verbは、ストリング内の文字をカウントまたは置換するために使用されます。 文字列操作は、英数字、数値、またはアルファベットの値に対して実行できます。 検査操作は左から右に実行されます。 文字列操作に使用されるオプションは次のとおりです-

集計

集計オプションは、文字列の文字をカウントするために使用されます。

構文

以下は、集計オプションの構文です-

INSPECT input-string
TALLYING output-count FOR ALL CHARACTERS

使用されるパラメータは-

  • 入力文字列-文字がカウントされる文字列。
  • 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.

上記のCOBOLプログラムを実行する JCL

//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.

上記のCOBOLプログラムを実行する JCL

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

上記のプログラムをコンパイルして実行すると、次の結果が生成されます-

OLD STRING : ABCDACDADEAAAFF
NEW STRING : XBCDXCDXDEXXXFF

ひも

文字列動詞は、文字列を連結するために使用されます。 STRINGステートメントを使用すると、2つ以上の文字列を組み合わせて長い文字列を作成できます。 「区切り」句は必須です。

構文

以下は、文字列動詞の構文です-

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:新しい連結文字列の長さをカウントするために使用されます
  • 区切り文字は、文字列の終わりを指定します
  • ポインターとオーバーフローはオプションです

IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.

DATA DIVISION.
   WORKING-STORAGE SECTION.
   01 WS-STRING PIC A(30).
   01 WS-STR1 PIC A(15) VALUE 'finddevguides'.
   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 : WelcomeTofinddevguides
WS-COUNT : 25

紐を外す

Unstring verbは、1つのストリングを複数のサブストリングに分割するために使用されます。 Delimited By句は必須です。

構文

以下は、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.

IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.

DATA DIVISION.
   WORKING-STORAGE SECTION.
   01 WS-STRING PIC A(30) VALUE 'WELCOME TO finddevguides'.
   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 : finddevguides