COBOL
An example of the Compress function coded in COBOL is shown in the following figure.
DATA DIVISION.
FILE SECTION.
FD INPUT1 RECORDING MODE F
LABEL RECORDS OMITTED
BLOCK 0 RECORDS.
01 IN-RECORD1.
02 IN-KEY1 PIC X(10).
02 IN-DATA1 PIC X(128).
FD OUTPUT1 RECORDING MODE V
LABEL RECORDS OMITTED
BLOCK 0 RECORDS.
01 OUT-RECORD1.
02 OUT-LL1 PIC S9(4) USAGE IS COMP.
02 OUT-DATA OCCURS 138 TIMES
DEPENDING ON OUT-LL1.
03 OUT-BYTE PIC X.
WORKING-STORAGE SECTION.
01 COMPRESS-FUNCTION PIC S9(5) VALUE ZERO COMP.
01 EXPAND-FUNCTION PIC S9(5) VALUE +4 COMP.
01 OPEN-FUNCTION PIC S9(5) VALUE +12 COMP.
01 CLOSE-FUNCTION PIC S9(5) VALUE +16 COMP.
01 FILENAME PIC X(8) 'XXXXXXXX'.
01 RECNAME PIC X(8) 'XXXXXXXX'.
01 ANCHOR1 PIC S9(5) VALUE ZERO COMP.
PROCEDURE DIVISION.
OPEN INPUT INPUT1.
OPEN OUTPUT OUTPUT1.
CALL 'DPICALL' USING OPEN-FUNCTION
FILENAME
IN-RECORD1
OUT-RECORD1
ANCHOR1.
READ-RECORD.
READ INPUT1 AT END GO TO CLOSE-FILES.
CALL 'DPICALL' USING COMPRESS-FUNCTION
RECNAME
IN-RECORD1
OUT-RECORD1
ANCHOR1.
WRITE OUT-RECORD1.
GO TO READ-RECORD.
CLOSE-FILES.
CLOSE 'DPICALL' USING CLOSE-FUNCTION
FILENAME
IN-RECORD1
OUT-RECORD1
ANCHOR1.
FILE SECTION.
FD INPUT1 RECORDING MODE F
LABEL RECORDS OMITTED
BLOCK 0 RECORDS.
01 IN-RECORD1.
02 IN-KEY1 PIC X(10).
02 IN-DATA1 PIC X(128).
FD OUTPUT1 RECORDING MODE V
LABEL RECORDS OMITTED
BLOCK 0 RECORDS.
01 OUT-RECORD1.
02 OUT-LL1 PIC S9(4) USAGE IS COMP.
02 OUT-DATA OCCURS 138 TIMES
DEPENDING ON OUT-LL1.
03 OUT-BYTE PIC X.
WORKING-STORAGE SECTION.
01 COMPRESS-FUNCTION PIC S9(5) VALUE ZERO COMP.
01 EXPAND-FUNCTION PIC S9(5) VALUE +4 COMP.
01 OPEN-FUNCTION PIC S9(5) VALUE +12 COMP.
01 CLOSE-FUNCTION PIC S9(5) VALUE +16 COMP.
01 FILENAME PIC X(8) 'XXXXXXXX'.
01 RECNAME PIC X(8) 'XXXXXXXX'.
01 ANCHOR1 PIC S9(5) VALUE ZERO COMP.
PROCEDURE DIVISION.
OPEN INPUT INPUT1.
OPEN OUTPUT OUTPUT1.
CALL 'DPICALL' USING OPEN-FUNCTION
FILENAME
IN-RECORD1
OUT-RECORD1
ANCHOR1.
READ-RECORD.
READ INPUT1 AT END GO TO CLOSE-FILES.
CALL 'DPICALL' USING COMPRESS-FUNCTION
RECNAME
IN-RECORD1
OUT-RECORD1
ANCHOR1.
WRITE OUT-RECORD1.
GO TO READ-RECORD.
CLOSE-FILES.
CLOSE 'DPICALL' USING CLOSE-FUNCTION
FILENAME
IN-RECORD1
OUT-RECORD1
ANCHOR1.
An example of the Expand function coded in COBOL is shown in the following figure.
DATA DIVISION.
FILE SECTION.
FD OUTPUT1 RECORDING MODE F
LABEL RECORDS OMITTED
BLOCK 0 RECORDS.
01 OUT-RECORD1.
02 OUT-KEY1 PIC X(10).
02 OUT-DATA1 PIC X(128).
FD INPUT1 RECORDING MODE V
RECORD CONTAINS 10 TO 140 CHARS
LABEL RECORDS OMITTED
BLOCK 0 RECORDS.
01 IN-RECORD1.
02 IN-LL1 PIC S9(4) USAGE IS COMP.
02 IN-DATA OCCURS 138 TIMES
DEPENDING ON IN-LL1.
03 IN-BYTE. PIC X.
WORKING-STORAGE SECTION.
01 COMPRESS-FUNCTION PIC S9(5) VALUE ZERO COMP.
01 EXPAND-FUNCTION PIC S9(5) VALUE +4 COMP.
01 OPEN-FUNCTION PIC S9(5) VALUE +12 COMP.
01 CLOSE-FUNCTION PIC S9(5) VALUE +16 COMP.
01 FILENAME PIC X(8) 'XXXXXXXX'.
01 RECNAME PIC X(8) 'XXXXXXXX'.
01 ANCHOR1 PIC S9(5) VALUE ZERO COMP.
PROCEDURE DIVISION.
OPEN INPUT INPUT1.
OPEN OUTPUT OUTPUT1.
CALL 'DPICALL' USING OPEN-FUNCTION
FILENAME
IN-RECORD1
OUT-RECORD1
ANCHOR1.
READ-RECORD.
READ INPUT1 AT END GO TO CLOSE-FILES.
CALL 'DPICALL' USING EXPAND-FUNCTION
RECNAME
IN-RECORD1
OUT-RECORD1
ANCHOR1.
WRITE OUT-RECORD1.
GO TO READ-RECORD.
CLOSE-FILES.
CLOSE 'DPICALL' USING CLOSE-FUNCTION
FILENAME
IN-RECORD1
OUT-RECORD1
ANCHOR1.
FILE SECTION.
FD OUTPUT1 RECORDING MODE F
LABEL RECORDS OMITTED
BLOCK 0 RECORDS.
01 OUT-RECORD1.
02 OUT-KEY1 PIC X(10).
02 OUT-DATA1 PIC X(128).
FD INPUT1 RECORDING MODE V
RECORD CONTAINS 10 TO 140 CHARS
LABEL RECORDS OMITTED
BLOCK 0 RECORDS.
01 IN-RECORD1.
02 IN-LL1 PIC S9(4) USAGE IS COMP.
02 IN-DATA OCCURS 138 TIMES
DEPENDING ON IN-LL1.
03 IN-BYTE. PIC X.
WORKING-STORAGE SECTION.
01 COMPRESS-FUNCTION PIC S9(5) VALUE ZERO COMP.
01 EXPAND-FUNCTION PIC S9(5) VALUE +4 COMP.
01 OPEN-FUNCTION PIC S9(5) VALUE +12 COMP.
01 CLOSE-FUNCTION PIC S9(5) VALUE +16 COMP.
01 FILENAME PIC X(8) 'XXXXXXXX'.
01 RECNAME PIC X(8) 'XXXXXXXX'.
01 ANCHOR1 PIC S9(5) VALUE ZERO COMP.
PROCEDURE DIVISION.
OPEN INPUT INPUT1.
OPEN OUTPUT OUTPUT1.
CALL 'DPICALL' USING OPEN-FUNCTION
FILENAME
IN-RECORD1
OUT-RECORD1
ANCHOR1.
READ-RECORD.
READ INPUT1 AT END GO TO CLOSE-FILES.
CALL 'DPICALL' USING EXPAND-FUNCTION
RECNAME
IN-RECORD1
OUT-RECORD1
ANCHOR1.
WRITE OUT-RECORD1.
GO TO READ-RECORD.
CLOSE-FILES.
CLOSE 'DPICALL' USING CLOSE-FUNCTION
FILENAME
IN-RECORD1
OUT-RECORD1
ANCHOR1.
Related topic
Tip: For faster searching, add an asterisk to the end of your partial query. Example: cert*