Professional Documents
Culture Documents
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.
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.