You are on page 1of 3

IDENTIFICATION DIVISION.

PROGRAM-ID. IMSPGM01.
*------------------------------------------------------------*
* DESCRIPTION: THIS PROGRAM READS TRANSACTIONS FROM LINE *
* SEQUENTIAL FILE AND INSERTS THEM IN TO INVENTORY DATABASE *
*------------------------------------------------------------*
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT INPUT-FILE ASSIGN TO INDD
ACCESS IS SEQUENTIAL
ORGANIZATION IS SEQUENTIAL
FILE STATUS IS IN-FILE-FS.
DATA DIVISION.
FILE SECTION.
FD INPUT-FILE.
COPY INVINPUT.
*01 INVENTORY-MASTER-RECORD.
WORKING-STORAGE SECTION.
* ---------------------------------------------------------*
* FLAGS AND SWITCHES *
* ---------------------------------------------------------*
01 FLAGS-AND-SWITCHES.
05 END-OF-FILE-SWITCH PIC X.
88 AT-END VALUE 'Y'.
88 NOT-AT-END VALUE 'N'.
* ---------------------------------------------------------*
* DLI-FUNCTION CODES *
* ---------------------------------------------------------*
01 DLI-FUNCTION-CODES.
05 ISRT PIC X(04) VALUE 'ISRT'.
*COPY DLIFUNCT.
* ---------------------------------------------------------*
* COBOL-SEGEMNTS *
* ---------------------------------------------------------*
01 SEGMENT-IO-AREA PIC X(131).
* ---------------------------------------------------------*
* APPLICATION DATABASE SSA *
* ---------------------------------------------------------*
01 UNQUAL-SSA PIC X(09).
* ---------------------------------------------------------*
* COUNTERS *
* ---------------------------------------------------------*
01 WS-COUNTERS.
05 WS-INPUT-RECS-CNT PIC S9(07) COMP-3.
05 WS-ERROR-RECS-CNT PIC S9(07) COMP-3.
05 WS-LOADED-RECS-CNT PIC S9(07) COMP-3.

01 WS-PARA-NAME PIC X(20).


* ---------------------------------------------------------*
* COPYBOOKS *
* ---------------------------------------------------------*
COPY VENDRSEG.
COPY ITEMSSEG.
COPY STLOCSEG.
77 IN-FILE-FS PIC X(02).
LINKAGE SECTION.
COPY INVENPCB.
*INVENTORY-PCB-MASK.
PROCEDURE DIVISION USING INVENTORY-PCB-MASK.
000-MAIN.
* ENTRY 'DLITCBL' USING INVENTORY-PCB-MASK
DISPLAY 'IPCB-STATUS-CODE:' IPCB-STATUS-CODE
IF IPCB-STATUS-CODE = ' '
DISPLAY 'IPCB-KEY-LENGTH:' IPCB-KEY-LENGTH
DISPLAY 'IPCB-NUMB-SENS-SEGS:' IPCB-NUMB-SENS-SEGS
DISPLAY 'IPCB-KEY:' IPCB-KEY
END-IF
MOVE '000-MAIN' TO WS-PARA-NAME.
* PERFORM 800-DEBUG.

PERFORM 300-HOUSEKEEPING
THRU 300-HOUSEKEEPING-EXIT

PERFORM 500-MAINLINE-PROCESSING
THRU 500-MAINLINE-PROCESSING-EXIT
UNTIL AT-END

PERFORM 700-CLEAN-UP
THRU 700-CLEAN-UP-EXIT.

* PERFORM 999-GOBACK.

300-HOUSEKEEPING.
MOVE '300-HOUSEKEEPING' TO WS-PARA-NAME
* PERFORM 800-DEBUG
OPEN INPUT INPUT-FILE.
300-HOUSEKEEPING-EXIT. EXIT.

500-MAINLINE-PROCESSING.
MOVE '500-MAINLINE-PROCESSING' TO WS-PARA-NAME
* PERFORM 800-DEBUG

PERFORM 530-READ-DATA
THRU 530-READ-DATA-EXIT

PERFORM 550-PREPARE-LOAD-DATA
THRU 550-PREPARE-LOAD-DATA-EXIT

PERFORM 560-ISRT-INVDB
THRU 560-ISRT-INVDB-EXIT.
500-MAINLINE-PROCESSING-EXIT. EXIT.

530-READ-DATA.
MOVE '530-READ-DATA' TO WS-PARA-NAME
* PERFORM 800-DEBUG

READ INPUT-FILE
AT END
SET AT-END TO TRUE
GO TO 500-MAINLINE-PROCESSING-EXIT
END-READ.
530-READ-DATA-EXIT. EXIT.

550-PREPARE-LOAD-DATA.
MOVE '550-PREPARE-LOAD-DATA' TO WS-PARA-NAME
* PERFORM 800-DEBUG

INITIALIZE SEGMENT-IO-AREA
MOVE DATA-AREA TO SEGMENT-IO-AREA
DISPLAY 'DATA-AREA:' DATA-AREA
DISPLAY 'SEGMENT-IO-AREA:' SEGMENT-IO-AREA
DISPLAY 'TRANSACTION-CODE:' TRANSACTION-CODE

EVALUATE TRANSACTION-CODE
WHEN 'V'
MOVE 'VENDRSEG' TO UNQUAL-SSA
WHEN 'I'
MOVE 'ITEMSSEG' TO UNQUAL-SSA
WHEN 'S'
MOVE 'STLOCSEG' TO UNQUAL-SSA
END-EVALUATE.
550-PREPARE-LOAD-DATA-EXIT. EXIT.

560-ISRT-INVDB.
MOVE '560-ISRT-INVDB' TO WS-PARA-NAME
DISPLAY 'WS-PARA-NAME:' WS-PARA-NAME
* PERFORM 800-DEBUG
CALL 'CBLTDLI' USING ISRT
INVENTORY-PCB-MASK
SEGMENT-IO-AREA
UNQUAL-SSA
DISPLAY 'IPCB-DBD-NAME:' IPCB-DBD-NAME
DISPLAY 'IPCB-SEGMENT-LEVEL:' IPCB-SEGMENT-LEVEL
DISPLAY 'IPCB-STATUS-CODE:' IPCB-STATUS-CODE
DISPLAY 'IPCB-PROC-OPTIONS:' IPCB-PROC-OPTIONS
DISPLAY 'IPCB-SEGMENT-NAME:' IPCB-SEGMENT-NAME
DISPLAY 'IPCB-KEY-LENGTH:' IPCB-KEY-LENGTH
DISPLAY 'IPCB-NUMB-SENS-SEGS:' IPCB-NUMB-SENS-SEGS
DISPLAY 'IPCB-KEY:' IPCB-KEY
IF IPCB-STATUS-CODE = ' '
DISPLAY 'IPCB-STATUS-CODE:' IPCB-STATUS-CODE
DISPLAY 'SUCESSFULLY INSERTED :' SEGMENT-IO-AREA
ELSE
DISPLAY 'INSERT FAILED :' SEGMENT-IO-AREA
DISPLAY 'DLI STATUS CODE :' IPCB-STATUS-CODE
END-IF.
560-ISRT-INVDB-EXIT. EXIT.

700-CLEAN-UP.
MOVE '700-CLEAN-UP' TO WS-PARA-NAME
* PERFORM 800-DEBUG
CLOSE INPUT-FILE.
700-CLEAN-UP-EXIT. EXIT.

You might also like