Exemple – INSPECT FUNCTION REVERSE

Voici plusieurs exemples de programme utilisant le INSPECT FUNCTION REVERSE :

Exemple 1

IDENTIFICATION DIVISION.
PROGRAM-ID. CARACTERES.
DATA DIVISION. 
WORKING-STORAGE SECTION.
01  WS-AUXILIARES.
    05  WS-FIN       PIC 9(09)  VALUE 0.
    05  WS-IND       PIC 9(09)  VALUE 1.
    05  WS-TAILLE    PIC 9(09)  VALUE 0.
    05  WS-TAILLE-1  PIC 9(09)  VALUE 0.
    05  WS-RESULTAT  PIC 9(09)  VALUE 0.
    05  WS-CHAMP     PIC X(30)  VALUE 'LA COMMUNAUTE'.

PROCEDURE DIVISION.

INSPECT FUNCTION REVERSE (WS-CHAMP) 
        TALLYING WS-TAILLE-1 FOR LEADING SPACES

DISPLAY 'Nombre de blancs après le dernier caractère significatif '
DISPLAY 'WS-TAILLE-1 - ' WS-TAILLE-1.

COMPUTE WS-RESULTAT = FUNCTION LENGTH (WS-CHAMP)
MOVE 0 TO WS-FIN WS-TAILLE
PERFORM VARYING WS-IND FROM 1 BY 1 
     UNTIL WS-IND GREATER THAN WS-RESULTAT
     IF WS-CHAMP(WS-IND:1) NOT EQUAL SPACES
        ADD 1 TO WS-TAILLE
     END-IF
END-PERFORM

DISPLAY 'Nombre de caractères dans le champ'
DISPLAY 'WS-TAILLE   - ' WS-TAILLE.
STOP RUN.

Resultat de test:

Nombre de blancs après le dernier caractère significatif 
WS-TAILLE-1 - 000000017

Nombre de caractères dans le champ
WS-TAILLE   - 000000012

Exemple 2

IDENTIFICATION DIVISION.
PROGRAM-ID. CARACTERES.
DATA DIVISION. 
WORKING-STORAGE SECTION.
01  WS-AUXILIARES.
    05  WS-FIN       PIC 9(09)  VALUE 0.
    05  WS-IND       PIC 9(09)  VALUE 1.
    05  WS-TAILLE    PIC 9(09)  VALUE 0.
    05  WS-TAILLE-1  PIC 9(09)  VALUE 0.
    05  WS-RESULTAT  PIC 9(09)  VALUE 0.
    05  WS-CHAMP     PIC X(50)  VALUE 'LA COMMUNAUTE DU COBOL'.

PROCEDURE DIVISION.

INSPECT FUNCTION REVERSE (WS-CHAMP) 
        TALLYING WS-TAILLE-1 FOR LEADING SPACES

DISPLAY 'Nombre de blancs après le dernier caractère significatif  '
DISPLAY 'WS-TAILLE-1 - ' WS-TAILLE-1.

COMPUTE WS-RESULTAT = FUNCTION LENGTH (WS-CHAMP)
MOVE 0 TO WS-FIN WS-TAILLE
PERFORM VARYING WS-IND FROM 1 BY 1 
     UNTIL WS-IND GREATER THAN WS-RESULTAT
     IF WS-CHAMP(WS-IND:1) NOT EQUAL SPACES
        ADD 1 TO WS-TAILLE
     END-IF
END-PERFORM

DISPLAY 'Nombre de caractères dans le champ'
DISPLAY 'WS-TAILLE   - ' WS-TAILLE.
STOP RUN.

Resultat de test:

Nombre de blancs après le dernier caractère significatif  
WS-TAILLE-1 - 000000028

Nombre de caractères dans le champ
WS-TAILLE   - 000000020

Exemple 3

IDENTIFICATION DIVISION.
PROGRAM-ID. CARACTERES.
DATA DIVISION. 
WORKING-STORAGE SECTION.
01  WS-AUXILIARES.
    05  WS-FIN       PIC 9(09)  VALUE 0.
    05  WS-IND       PIC 9(09)  VALUE 1.
    05  WS-TAILLE    PIC 9(09)  VALUE 0.
    05  WS-TAILLE-1  PIC 9(09)  VALUE 0.
    05  WS-RESULTAT  PIC 9(09)  VALUE 0.
    05  WS-CHAMP     PIC X(50)  VALUE 'LA C O M M U N A U T E DU COBOL'.

PROCEDURE DIVISION.

INSPECT FUNCTION REVERSE (WS-CHAMP) 
        TALLYING WS-TAILLE-1 FOR LEADING SPACES

DISPLAY 'Nombre de blancs après le dernier caractère significatif  '
DISPLAY 'WS-TAILLE-1 - ' WS-TAILLE-1.

COMPUTE WS-RESULT = FUNCTION LENGTH (WS-CHAMP)
MOVE 0 TO WS-FIN WS-TAILLE
PERFORM VARYING WS-IND FROM 1 BY 1 
     UNTIL WS-IND GREATER THAN WS-RESULT
     IF WS-CHAMP(WS-IND:1) NOT EQUAL SPACES
        ADD 1 TO WS-TAILLE
     END-IF
END-PERFORM

DISPLAY 'Nombre de caractères dans le champ'
DISPLAY 'WS-TAILLE   - ' WS-TAILLE.
STOP RUN.

Resultat de test:

Nombre de blancs après le dernier caractère significatif 
WS-TAILLE-1 - 000000019

Nombre de caractères dans le champ
WS-TAILLE   - 000000020

Exemple 4

IDENTIFICATION DIVISION.
PROGRAM-ID. CARACTERES.
DATA DIVISION. 
WORKING-STORAGE SECTION.
01  WS-AUXILIARES.
    05  WS-FIN       PIC 9(09)  VALUE 0.
    05  WS-IND       PIC 9(09)  VALUE 1.
    05  WS-TAILLE    PIC 9(09)  VALUE 0.
    05  WS-TAILLE-1  PIC 9(09)  VALUE 0.
    05  WS-RESULTAT  PIC 9(09)  VALUE 0.
    05  WS-CHAMP     PIC X(50)  VALUE 'LA COMM DU COBOL'.

PROCEDURE DIVISION.

INSPECT FUNCTION REVERSE (WS-CHAMP) 
        TALLYING WS-TAILLE-1 FOR LEADING SPACES

DISPLAY 'Nombre de blancs après le dernier caractère significatif  '
DISPLAY 'WS-TAILLE-1 - ' WS-TAILLE-1.

COMPUTE WS-RESULTAT = FUNCTION LENGTH (WS-CHAMP)
MOVE 0 TO WS-FIN WS-TAILLE
PERFORM VARYING WS-IND FROM 1 BY 1 
     UNTIL WS-IND GREATER THAN WS-RESULTAT
     IF WS-CHAMP(WS-IND:1) NOT EQUAL SPACES
        ADD 1 TO WS-TAILLE
     END-IF
END-PERFORM

DISPLAY 'Nombre de caractères dans le champ'
DISPLAY 'WS-TAILLE   - ' WS-TAILLE.
STOP RUN.

Resultat de test:

Nombre de blancs après le dernier caractère significatif 
WS-TAILLE-1 - 000000034

Nombre de caractères dans le champ
WS-TAILLE   - 000000013

Exemple 5

IDENTIFICATION DIVISION.
PROGRAM-ID. CARACTERES.
DATA DIVISION. 
WORKING-STORAGE SECTION.
01  WS-AUXILIARES.
    05  WS-TAILLE    PIC 9(09)  VALUE 0.
    05  WS-TAILLE-1  PIC 9(09)  VALUE 0.
    05  WS-RESULTAT  PIC 9(09)  VALUE 0.
    05  WS-CHAMP     PIC X(30)  VALUE 'LA COMMUNAUTE        '.

PROCEDURE DIVISION.

INSPECT FUNCTION REVERSE (WS-CHAMP) 
        TALLYING WS-TAILLE-1 FOR LEADING SPACES

DISPLAY 'Nombre de blancs après le dernier caractère significatif  '
DISPLAY 'WS-TAILLE-1 - ' WS-TAILLE-1.
COMPUTE WS-RESULTAT = FUNCTION LENGTH (WS-CHAMP)
COMPUTE WS-RESULTAT = WS-RESULTAT - WS-TAILLE-1
DISPLAY 'Quantité de données jusqu'au dernier caractère significatif' 
DISPLAY 'WS-RESULTAT  - ' WS-RESULTAT
DISPLAY 'WS-CHAMP     - ' WS-CAMPO  (1:WS-RESULT)

STOP RUN.

Resultat de test:

Nombre de blancs après le dernier caractère significatif  
WS-TAILLE-1 - 000000017

Quantité de données jusqu'au dernier caractère significatif 
WS-RESULTAT  - 000000013
WS-CHAMP     - LA COMMUNAUTE