COBOL Pass‑Thru INMOD
IDENTIFICATION DIVISION.
PROGRAM-ID. INMOD2.
AUTHOR. STV.
INSTALLATION. TERADATA.
DATE-WRITTEN.
DATE-COMPILED.
SECURITY. OPEN.
REMARKS.
THIS PROGRAM IS AN EXAMPLE OF A COBOL INMOD ROUTINE
WHICH RECEIVES A RECORD FROM TPump THEN MODIFIES OR
REJECTS IT.
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
SOURCE-COMPUTER. IBM-370.
OBJECT-COMPUTER. IBM-370.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 COUNTROWS PICTURE S9(4) COMP VALUE +0.
01 REJROWS PICTURE S9(4) COMP VALUE +0.
01 INSROWS PICTURE S9(4) COMP VALUE +0.
01 I PICTURE S9(4) COMP.
01 MATCHFLAG PIC 9.
88 NOTMATCH VALUE 0.
88 MATCH VALUE 1.
LINKAGE SECTION.
01 STRUCT-1.
02 RETURN-INDICATE PIC S9(9) COMP.
02 RECORD-LEN PIC S9(9) COMP.
02 RECORD-BODY OCCURS 80 TIMES.
03 DATA-AREA1 PIC X.
01 STRUCT-2.
02 SEQ-NUMBER PIC S9(9) COMP.
02 PARM-LIST.
05 PARM-LENGTH PIC S9(4) COMP.
05 PARM-STRING OCCURS 80 TIMES.
07 PARM-DATA PIC X.
PROCEDURE DIVISION USING STRUCT-1, STRUCT-2.
BEGIN.
MAIN.
DISPLAY “================================================”
IF RETURN-INDICATE = 6 THEN
DISPLAY “INMOD2 CALLED - RETURN CODE 6 ”
PERFORM INITIALIZE
GOBACK
ELSE
IF RETURN-INDICATE = 7 THEN
DISPLAY “INMOD2 CALLED - RETURN CODE 7 ”
PERFORM PROCESS-RECORD
GOBACK
ELSE
IF RETURN-INDICATE = 5 THEN
DISPLAY “INMOD2 CALLED - RETURN CODE 5 ”
PERFORM FINALIZE
GOBACK
ELSE
DISPLAY “BLKEXIT CALLED - RETURN CODE X ”
MOVE 0 TO RETURN-INDICATE.
GOBACK.
INITIALIZE.
MOVE 0 TO COUNTROWS INSROWS REJROWS.
MOVE 0 TO RETURN-INDICATE.
PROCESS-RECORD.
ADD 1 TO COUNTROWS.
MOVE 0 TO RETURN-INDICATE. MOVE 1 TO I.
MOVE 1 TO MATCHFLAG.
PERFORM COMPARE UNTIL (I > PARM-LENGTH) OR (NOTMATCH).
IF NOTMATCH THEN
DISPLAY “REJECTED”
ADD 1 TO REJROWS
MOVE 0 TO RECORD-LEN
ELSE
DISPLAY “ACCEPTED”
ADD 1 TO INSROWS.
COMPARE.
IF (RECORD-BODY(I) = PARM-STRING(I)) THEN
NEXT SENTENCE
ELSE
MOVE 0 TO MATCHFLAG.
ADD 1 TO I.
FINALIZE.
MOVE 0 TO RETURN-INDICATE.
DISPLAY “NUMBER OF TOTAL RECORDS = ” COUNTROWS.
DISPLAY “NUMBER OF REJECTED RECORDS = ” REJROWS.
DISPLAY “NUMBER OF ACCEPTED RECORDS = ” INSROWS.
GOBACK.