Sie sind auf Seite 1von 2

DATA DIVISION.

WORKING-STORAGE SECTION.

01 STR-VALUE-IN PIC X(1000).


01 STR-LENGTH-IN PIC 9(05) BINARY.
01 STR-VALUE-OUT PIC X(1000).
01 STR-LENGTH-OUT PIC 9(05) BINARY.
01 STR-HANDLING-COUNTERS.
05 STR-SUB01 PIC 9(05) BINARY.
05 STR-TRAILING-SPACES PIC 9(05) BINARY.
05 STR-LEADING-SPACES PIC 9(05) BINARY.
05 STR-START PIC 9(05) BINARY.
01 STR-HANDLING-SWITCHES.
05 GRAPH-FOUND-SW PIC X(01).
88 GRAPH-FOUND VALUE '1'.
88 GRAPH-NOT-FOUND VALUE '2'.

PROCEDURE DIVISION.

MOVE Whatever
TO STR-VALUE-IN.
MOVE FUNCTION LENGTH (Whatever)
TO STR-LENGTH-IN.
PERFORM 5200-RTRIM.
MOVE STR-VALUE-OUT (1:STR-LENGTH-OUT)
TO Wherever.

MOVE Whatever
TO STR-VALUE-IN.
MOVE FUNCTION LENGTH (Whatever)
TO STR-LENGTH-IN.
PERFORM 5100-LTRIM.
MOVE STR-VALUE-OUT (1:STR-LENGTH-OUT)
TO Wherever.

MOVE Whatever
TO STR-VALUE-IN.
MOVE FUNCTION LENGTH (Whatever)
TO STR-LENGTH-IN.
PERFORM 5300-TRIM.
MOVE STR-VALUE-OUT (1:STR-LENGTH-OUT)
TO Wherever.

5100-LTRIM.
* This resembles the VB function LTrim
* It removes any leading value less than or equal to space
* ASCII decimal 0 (Null) through ASCII decimal 32 (Space)
PERFORM 5910-COMMON-TRIM-BEGIN.
PERFORM 5930-TRIM-LEADING-SPACES.
PERFORM 5990-COMMON-TRIM-END.

5200-RTRIM.
* This resembles the VB function RTrim
* It removes any trailing value less than or equal to space
* ASCII decimal 0 (Null) through ASCII decimal 32 (Space)
PERFORM 5910-COMMON-TRIM-BEGIN.
PERFORM 5950-TRIM-TRAILING-SPACES.
PERFORM 5990-COMMON-TRIM-END.
5300-TRIM.
* This resembles the VB function Trim
* It removes any leading or trailing value less than or equal to space
* ASCII decimal 0 (Null) through ASCII decimal 32 (Space)
PERFORM 5910-COMMON-TRIM-BEGIN.
PERFORM 5930-TRIM-LEADING-SPACES.
PERFORM 5950-TRIM-TRAILING-SPACES.
PERFORM 5990-COMMON-TRIM-END.

5910-COMMON-TRIM-BEGIN.
MOVE LOW-VALUES
TO STR-HANDLING-COUNTERS.
MOVE SPACES
TO STR-HANDLING-SWITCHES.
MOVE 1
TO STR-START.
MOVE STR-LENGTH-IN
TO STR-LENGTH-OUT.

5930-TRIM-LEADING-SPACES.
SET GRAPH-NOT-FOUND TO TRUE.
PERFORM
VARYING STR-SUB01 FROM 1 BY 1
UNTIL STR-SUB01 > STR-LENGTH-IN
OR GRAPH-FOUND
IF (STR-VALUE-IN (STR-SUB01:1) > SPACES)
MOVE STR-SUB01
TO STR-START
SUBTRACT 1 FROM STR-SUB01
GIVING STR-LEADING-SPACES
SUBTRACT STR-LEADING-SPACES
FROM STR-LENGTH-OUT
SET GRAPH-FOUND TO TRUE
END-IF
END-PERFORM

5950-TRIM-TRAILING-SPACES.
SET GRAPH-NOT-FOUND TO TRUE.
PERFORM
VARYING STR-SUB01 FROM STR-LENGTH-IN BY -1
UNTIL STR-SUB01 < 1
OR GRAPH-FOUND
IF (STR-VALUE-IN (STR-SUB01:1) > SPACES)
SUBTRACT STR-SUB01 FROM STR-LENGTH-IN
GIVING STR-TRAILING-SPACES
SUBTRACT STR-TRAILING-SPACES
FROM STR-LENGTH-OUT
SET GRAPH-FOUND TO TRUE
END-IF
END-PERFORM

5990-COMMON-TRIM-END.
MOVE STR-VALUE-IN (STR-START:STR-LENGTH-OUT)
TO STR-VALUE-OUT.

Das könnte Ihnen auch gefallen