COBOL - Gestione delle stringhe

Le istruzioni di gestione delle stringhe in COBOL vengono utilizzate per eseguire più operazioni funzionali sulle stringhe. Di seguito sono riportate le istruzioni per la gestione delle stringhe:

  • Inspect
  • String
  • Unstring

Ispezionare

Il verbo Inspect viene utilizzato per contare o sostituire i caratteri in una stringa. Le operazioni sulle stringhe possono essere eseguite su valori alfanumerici, numerici o alfabetici. Le operazioni di ispezione vengono eseguite da sinistra a destra. Le opzioni utilizzate per le operazioni sulle stringhe sono le seguenti:

Conteggio

L'opzione di conteggio viene utilizzata per contare i caratteri della stringa.

Syntax

Di seguito è riportata la sintassi dell'opzione Tallying:

INSPECT input-string
TALLYING output-count FOR ALL CHARACTERS

I parametri utilizzati sono:

  • input-string - La stringa i cui caratteri devono essere contati.
  • output-count - Elemento di dati per contenere il conteggio dei caratteri.

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 per eseguire il programma COBOL di cui sopra.

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

Quando compili ed esegui il programma sopra, produce il seguente risultato:

WS-CNT1 : 15
WS-CNT2 : 06

Sostituzione

L'opzione di sostituzione viene utilizzata per sostituire i caratteri della stringa.

Syntax

Di seguito è riportata la sintassi dell'opzione Sostituzione:

INSPECT input-string REPLACING ALL char1 BY char2.

Il parametro utilizzato è -

  • input-string - La stringa i cui caratteri devono essere sostituiti da char1 a 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 per eseguire il programma COBOL di cui sopra.

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

Quando compili ed esegui il programma sopra, produce il seguente risultato:

OLD STRING : ABCDACDADEAAAFF
NEW STRING : XBCDXCDXDEXXXFF

Corda

Il verbo String viene utilizzato per concatenare le stringhe. Utilizzando l'istruzione STRING, è possibile combinare due o più stringhe di caratteri per formare una stringa più lunga. La clausola "Delimitato da" è obbligatoria.

Syntax

Di seguito è riportata la sintassi del verbo 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.

Di seguito sono riportati i dettagli dei parametri utilizzati:

  • ws-string1 e ws-string2: stringhe di input da concatenare
  • ws-string: stringa di output
  • ws-count: usato per contare la lunghezza della nuova stringa concatenata
  • Delimitato specifica la fine della stringa
  • Il puntatore e l'overflow sono opzionali

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 per eseguire il programma COBOL di cui sopra -

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

Quando compili ed esegui il programma sopra, produce il seguente risultato:

WS-STRING : WelcomeToTutorialspoint       
WS-COUNT : 25

Unstring

Il verbo Unstring viene utilizzato per dividere una stringa in più sottostringhe. La clausola Delimitato da è obbligatoria.

Syntax

Di seguito è riportata la sintassi del verbo 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 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 per eseguire il programma COBOL di cui sopra -

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

Quando compili ed esegui il programma sopra, produce il seguente risultato:

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