Você está na página 1de 86

SUBJECT: NVALUSA.LIBR.SAMS.

WC6811()
IDENTIFICATION DIVISION.
PROGRAM-ID.
WC6811.
AUTHOR.
SATISH KUMAR RAGHUPATHY.
INSTALLATION. WAL-MART STORES
DATE-WRITTEN. 01/29/08.
DATE-COMPILED.
******************************************************************
******************** COMPILE OPTION CE 114 ***********************
************ 'COBOLMQ' LANGUAGE CODE MUST BE USED ****************
******************************************************************
*----------------------------------------------------------------*
*!!!!!!!!!!!!!!!!!!!-SPECIAL INSTRUCTIONS-!!!!!!!!!!!!!!!!!!!!!!!*
*----------------------------------------------------------------*
***** CURRENTLY YOU MUST DO A 'CE' COMPILE AND ADD 'SP' TO *******
***** STEP002, WHICH IS THE CICS PRE-COMPILER STEP.
*******
***** CHANGE : PARM='COBOL2,DLI,CICS'
*******
*****
TO : PARM='COBOL2,DLI,CICS,SP'
*******
***** LANGUAGE CODE 'MODMOVE' MUST BE USED IN LIBRARIAN TO *******
***** INSTALL THE PROGRAM. THIS IS BECAUSE NO LANGUAGE CODE*******
***** EXISTS TO SUPPORT MQSERIES AND CICS SYSTEM COMMANDS *******
***** (COMBINATION OF COBOLMQ AND TSPL LANGUAGE CODES)
*******
***** MAKE SURE THE VERSION YOU WANT IN PRODUCTION IS IN *******
***** WM.TESTLINK BEFORE INSTALLING.
*******
*----------------------------------------------------------------*
*!!!!!!!!!!!!!!!!!!!-SPECIAL INSTRUCTIONS-!!!!!!!!!!!!!!!!!!!!!!!*
*----------------------------------------------------------------*
******************************************************************
**TITLE: ITEM LEGACY UPDATE FOR HOST SYSTEMS
**
**
**
**TRAN-ID: WLU0
**
**
**
**PURPOSE: UPDATE LEGACY HOST SYSTEMS WITH ITEM DATA
**
**
FROM DB2 GOLD.
**
**
**
**PROGRAM DESC : THIS TRANSACTION READS ROWS FROM
**
**
THE PUBLISH_PENDING TABLE, DETERMINES LEGACY **
**
DATABASES TO BE UPDATED AND UPDATES THEM
**
**
ACCORDING TO THE BUSINESS RULES.
**
**
**
**ERROR LOGGING: IF ERRORS ARE ENCOUNTERED, THEY ARE REPORTED **
**
IN A DB2 TABLE: PUBLISH_PENDG_ERR.
**
**
LAST_UPDATE_TS HOLDS THE TIMESTAMP OF WHEN
**
**
THE MESSAGE WAS WRITTEN TO THE TABLE.
**
**
**
**
SEVERE ERRORS ARE ALSO WRITTEN TO
**
**
A TSQ: ITEM@@1_WLU0ERRQ
**
**
WHERE @@ = COUNTRY CODE
**
**
AND SENT TO THE HOST ON-CALL PAGER: MDSE1
**
**
**
**------------------- SPECIAL CONSIDERATIONS -------------------**
**
**
** 1. WC6811 WILL RESTART ITSELF AGAIN AND AGAIN
**
**
AND SHOULD ONLY STOP IF THE CICS REGION IS
**
**
STOPPED OR IF IT IS TURNED OFF THROUGH THE
**
**
PARM DB2 TABLE. DATA PROCESSING CAN BE STOPPED
**
**
OR EXECUTION OF THE PROGRAM CAN BE STOPPED BY
**
**
SETTING THE PARM. THIS CAN BE ACCOMPLISHED THRU
**
**
THE SCREEN WLUP.
**
**
(SEE A000000-INITIAL AND A000100-SLCT-PARM)
**

0203030405-

0505050505-

**
**
**------------------- SPECIAL CONSIDERATIONS -------------------**
**
**
******************************************************************
**
PROGRAM CHANGE HISTORY
**
******************************************************************
**
**
** REV DATE
CHG-ID DESCRIPTION
**
** --- -------- ------- ----------------------------------------**
** 00 01-29-08 SRAGHUP CLONED IT681 & INSTALLED
**
** 01 06-12-08 DVASTIN BACK OUT CLONE OF IT681 CHANGES
**
** 02 06-13-08 RJHA
FIX ISSUES FOR SIGNING_DESC
**
** 03 07-23-08 DVASTIN BACK OUT TO THIS VERSION W/O QUEUES FOR **
**
IT715
**
** 04 07-30-08 SPARACH ADDED CODE TO CALICULATE I2A PALLET QTY **
** 05 10-20-08 RJHA
ADDED CALL TO PRICING ROUTINE WC6812
**
******************************************************************
ENVIRONMENT DIVISION.
DATA DIVISION.
******************************************************************
WORKING-STORAGE SECTION.
******************************************************************
01 WS-MESSAGES.
03 WS-WHEN-MSG.
05 FILLER
PIC X(21)
VALUE 'WC6811 COMPILE DATE: '.
05 WS-WHEN-DT
PIC X(8).
05 FILLER
PIC X(7)
VALUE ' TIME: '.
05 WS-WHEN-TM
PIC X(8).
03 WS-OLD-MSG
PIC X(27)
VALUE 'PUBLISH PENDING ROW TOO OLD'.
03 WS-CC-MSG.
05 WS-CC-MSG1
PIC X(38)
VALUE 'UNABLE TO GET COUNTRY CODE. TSENV RC= '.
05 WS-CC-MSG2
PIC 99.
03 WS-MQ-MSG.
05 WS-MQ-MSG1
PIC X(40)
VALUE 'FAIL MCLANE FEED TO WCV504 COMP CODE = '.
05 WS-MQ-CODE
PIC X(9).
03 WS-IMS-MSG.
05 WS-IMS-TXT
PIC X(44).
05 FILLER
PIC X(10)
VALUE 'DIBSTAT = '.
05 WS-IMS-STAT
PIC X(2).
03 WS-DB2-MSG.
05 WS-DB2-TXT
PIC X(44).
05 FILLER
PIC X(10)
VALUE ' SQLCODE ='.
05 WS-DB2-CODE
PIC --------9.
03 WS-WC6811-MSG.
05 FILLER
PIC X(15)
VALUE ' RETURN CODE = '.
05 WS-RET-CODE
PIC --------9.
05 WS-RET-TXT
PIC X(165).
03 WS-ABND-MSG.
05 FILLER
PIC X(12)
VALUE 'ERR IN PARA '.
05 WS-ABND-PARA
PIC X(30).
05 WS-ABND-DIBSTAT
PIC X(12).

05 WS-ABND-ABCODE REDEFINES WS-ABND-DIBSTAT PIC X(12).


03 WS-BEEP-MESSAGE-RPT
PIC X(44)
VALUE 'UNABLE TO WRITE TO ERROR LOG TABLE
'.
03 WS-BEEP-MESSAGE-ICE
PIC X(44)
VALUE 'WLU0 NOT ABLE TO PUT ON ICE
'.
03 WS-BEEP-MESSAGE.
05 BM-ID
PIC X(10) VALUE 'WC6811-01E'.
05 FILLER
PIC X(01) VALUE SPACE.
05 BM-TYPE
PIC X(03) VALUE SPACES.
05 FILLER
PIC X(01) VALUE SPACE.
05 BM-REGION
PIC X(08) VALUE SPACES.
05 FILLER
PIC X(01) VALUE SPACE.
05 BM-CC
PIC X(02) VALUE SPACES.
05 FILLER
PIC X(01) VALUE SPACE.
05 BM-CODE
PIC X(09).
05 BM-CODE-OUT REDEFINES BM-CODE PIC --------9.
05 FILLER
PIC X(01) VALUE SPACE.
05 BM-MESSAGE
PIC X(54) VALUE SPACES.
03 WS-CICS-MESSAGE.
05 FILLER
PIC X(9) VALUE ' *WC6811*'.
05 FILLER
PIC X(01) VALUE SPACE.
05 WS-CICS-MSG-YY
PIC 9(02) VALUE ZEROS.
05 WS-CICS-MSG-MM
PIC 9(02) VALUE ZEROS.
05 WS-CICS-MSG-DD
PIC 9(02) VALUE ZEROS.
05 FILLER
PIC X(01) VALUE '/'.
05 WS-CICS-MSG-HR
PIC 9(02) VALUE ZEROS.
05 WS-CICS-MSG-MN
PIC 9(02) VALUE ZEROS.
05 FILLER
PIC X(01) VALUE SPACE.
05 WS-CICS-MSG-CODE
PIC --------9 VALUE ZEROES.
05 FILLER
PIC X(01) VALUE SPACES.
05 WS-CICS-MSG-AREA
PIC X(37) VALUE SPACES.
05 FILLER
PIC X
VALUE SPACES.
05 WS-CICS-MSG-KEY
PIC X(10) VALUE SPACES.
05 FILLER
PIC X(02) VALUE SPACES.
03 WS-PPER-ERR-MSG.
05 FILLER
PIC X(6) VALUE 'ITEM: '.
05 WS-PPER-ITEM-NBR
PIC 9(9).
05 FILLER
PIC X(8) VALUE ' TABLE: '.
05 WS-PPER-TABLE-NAME
PIC X(18).
05 FILLER
PIC X(9) VALUE ' LOG_TS: '.
05 WS-PPER-LOG-TS
PIC X(26).
05 FILLER
PIC X(13)
VALUE ' ERROR_DESC: '.
05 WS-PPER-ERROR-DESC
PIC X(63).
05 FILLER
PIC X(9) VALUE ' REGION: '.
05 WS-PPER-CICS-REGION
PIC X(8).
05 FILLER
PIC X(14)
VALUE ' LST_UPDT_TS: '.
05 WS-PPER-LAST-UPDATE-TS PIC X(26).
05 FILLER
PIC X(15)
VALUE ' LST_UPDT_PGM: '.
05 WS-PPER-LAST-UPDATE-PGM PIC X(10).
05 FILLER
PIC X(9) VALUE ' DC_NBR: '.
05 WS-PPER-DC-NBR
PIC 9(9).
05 FILLER
PIC X(16)
VALUE ' CROSS_REF_NBR: '.
05 WS-PPER-CROSS-REF-NBR PIC 9(9).
05 FILLER
PIC X(12) VALUE ' ASSRT_NBR: '.
05 WS-PPER-ASSORTMENT-NBR PIC 9(9).

0504-

01 WS-TSQ-NAMES.
03 WS-ERR-TSQ.
05 FILLER
05 WS-ERR-CC
05 WS-ERR-SIZE
05 FILLER
05 WS-ERR-TRAN
05 FILLER

PIC
PIC
PIC
PIC
PIC
PIC

X(4)
X(2)
X(1)
X(1)
X(4)
X(4)

01 WS-GLOBAL-ENQ.
03 FILLER
03 WS-ENQ-CC
03 WS-ENQ-BUS
03 FILLER
03 WS-ENQ-TRANID
03 FILLER

PIC
PIC
PIC
PIC
PIC
PIC

X(8) VALUE
X(2).
X(3).
X
VALUE
X(4) VALUE
X(8) VALUE

01 DSNTIAR-ERR-MSG.
03 DSNTIAR-MSG-LEN
PIC
03 DSNTIAR-MSG-TXT
PIC
INDEXED BY DSNTIAR-ERR-IDX.
01 DSNTIAR-LRECL-LEN
PIC
01 DSNTIAR-RETURN-CODE
PIC
01 WS-LINK-WC6812
PIC
01 WS-DEFAULT-WORK-FIELDS.
03 WS-TEMP-I2A-PALLET-QTY
03 WS-WHEN-COMP
03 PCB-POS
03 ABS-TIME
03 WS-REGION
03 WS-CICS-MSG-LENGTH
03 WS-CICS-STATUS
03 WS-START-CODE
03 WS-START-MSG
03 WS-NOTHING
03 WS-RSTRT-SEC
03 WS-RSTRT-MIN
03 WS-CICS-RESP
03 WS-CICS-ABCODE
03 WS-RETRY-CNT
03 WS-RETRY-MAX
03 WS-911-RETRY-CNT
03 WS-911-RETRY-MAX
03 WS-DATE.
05 WS-CENTURY
05 WS-YEAR
05 FILLER
05 WS-MONTH
05 FILLER
05 WS-DAY
05 FILLER
05 WS-HOUR
05 FILLER
05 WS-MIN
05 FILLER
03 SYS-DATE.
05 SYS-CC
05 SYS-YY
05 FILLER

VALUE
VALUE
VALUE
VALUE
VALUE
VALUE

'ITEM'.
'XX'.
'1'.
'_'.
'WLU0'.
'ERRQ'.
'CICSGRS_'.
'_'.
'WLU0'.
'_ITEMFLE'.

S9(4) COMP VALUE +1728.


X(72) OCCURS 24 TIMES
S9(8) COMP VALUE +72.
S9(4) COMP.
X(08) VALUE 'WC6812 '.

PIC
PIC
PIC
PIC
PIC
PIC
PIC
PIC
PIC
PIC
PIC
PIC
PIC
PIC
PIC
PIC
PIC
PIC

S9(04)
X(16).
S9(4)
S9(15)
X(8)
S9(04)
S9(08)
X(2)
X(14)
X(01)
S9(08)
S9(08)
S9(08)
X(4)
S9(4)
S9(4)
S9(4)
S9(4)

PIC
PIC
PIC
PIC
PIC
PIC
PIC
PIC
PIC
PIC
PIC

99.
99.
X.
99.
X.
99.
X.
99.
X.
99.
X(10).

COMP VALUE ZERO.


COMP.
COMP-3 VALUE ZEROS.
VALUE SPACES.
COMP.
COMP
VALUE +0.
VALUE SPACE.
VALUE 'WC6811 STARTED'.
VALUE SPACE.
COMP
VALUE +5.
COMP
VALUE +5.
COMP SYNC VALUE +0.
VALUE SPACES.
COMP VALUE 0.
COMP VALUE 10.
COMP VALUE 0.
COMP VALUE 10.

PIC 9(2).
PIC 9(2).
PIC X.

05 SYS-MM
PIC 9(2).
05 FILLER
PIC X.
05 SYS-DD
PIC 9(2).
03 SYS-TIME.
05 SYS-HR
PIC 9(02).
05 FILLER
PIC X.
05 SYS-MN
PIC 9(02).
05 FILLER
PIC X.
05 SYS-SC
PIC 9(02).
03 TMP-DB2-DATE.
05 TMP-DB2-CCYY.
10 TMP-DB2-CC
PIC 99.
10 TMP-DB2-YY
PIC 99.
05 FILLER
PIC X VALUE '-'.
05 TMP-DB2-MM
PIC 99.
05 FILLER
PIC X VALUE '-'.
05 TMP-DB2-DD
PIC 99.
03 WS-LAST-UPDATE-TS.
05 WS-LAST-UPDATE-DATE.
10 LU-CNTRY
PIC X(2) VALUE '00'.
10 LU-YEAR
PIC X(2) VALUE '00'.
10 FILLER
PIC X
VALUE '-'.
10 LU-MONTH
PIC X(2) VALUE '00'.
10 FILLER
PIC X
VALUE '-'.
10 LU-DAY
PIC X(2) VALUE '00'.
05 FILLER
PIC X
VALUE '-'.
05 WS-LAST-TIME.
10 LU-HOURS
PIC X(2) VALUE '00'.
10 FILLER
PIC X
VALUE '.'.
10 LU-MINS
PIC X(2) VALUE '00'.
10 FILLER
PIC X
VALUE '.'.
10 LU-SECS
PIC X(2) VALUE '00'.
05 FILLER
PIC X
VALUE '.'.
05 LU-SUBSECS
PIC X(6) VALUE '000000'.
03 WS-MMDDYY.
05 WS-MM
05 WS-DD
05 WS-YY

PIC 99.
PIC 99.
PIC 99.

01 CURRENT-DATE.
03 CD-CCYYMMDD.
05 CD-CC
PIC 99.
05 CD-YYMMDD.
07 CD-YY
PIC 99.
07 CD-MM
PIC 99.
07 CD-DD
PIC 99.
05 CURR-DATE-6 REDEFINES CD-YYMMDD PIC 9(6).
03 CURR-DATE-8
REDEFINES CD-CCYYMMDD PIC 9(8).
01 CURRENT-DATE-FMT2.
03 FILLER
03 CD-YYMMDD

PIC X(1) VALUE '0'.


PIC X(6) VALUE SPACES.

01 CURRENT-TIME.
03 CT-HHMMSSSS.
05 CT-HHMM.
07 CT-HH
PIC 99.
07 CT-MM
PIC 99.
05 CURR-TIME-4 REDEFINES CT-HHMM

PIC 9(4).

05 FILLER

PIC X(4).

01 HOLD-DATE.
03 HOLD-DATE-CYYMMDD.
05 HOLD-CC
05 HOLD-YMD.
07 HOLD-YMD-YY
07 HOLD-YMD-MM
07 HOLD-YMD-DD
03 HOLD-DATE-7 REDEFINES
HOLD-DATE-CYYMMDD

PIC X(1) VALUE '9'.


PIC X(02) VALUE SPACES.
PIC X(02) VALUE SPACES.
PIC X(02) VALUE SPACES.
PIC 9(7).

01 HOLD-DATE-CCYYMMDD.
03 HOLD-CYMD.
05 HOLD-CYMD-CC
PIC
05 HOLD-CYMD-YY
PIC
05 HOLD-CYMD-MM
PIC
05 HOLD-CYMD-DD
PIC
03 HOLD-DATE-8
REDEFINES
PIC

X(02) VALUE
X(02) VALUE
X(02) VALUE
X(02) VALUE
HOLD-CYMD
9(8).

01 HOLD-DATE-MMDDYY.
03 HOLD-MDY.
05 HOLD-MDY-MM
PIC
05 HOLD-MDY-DD
PIC
05 HOLD-MDY-YY
PIC
03 HOLD-DATE-6
REDEFINES
PIC

X(02) VALUE SPACES.


X(02) VALUE SPACES.
X(02) VALUE SPACES.
HOLD-MDY
9(6).

SPACES.
SPACES.
SPACES.
SPACES.

01 HOLD-FIELDS.
03 HOLD-I2B5-LICENSE-FLAG
PIC X
VALUE SPACE.
03 HOLD-I2B5-EFF-PERCENT
PIC S999V99 COMP-3 VALUE +0.
03 HOLD-I2B5-EFF-BEGIN-DATE PIC S9(7) COMP-3 VALUE +0.
03 HOLD-I2B5-EFF-END-DATE PIC S9(7) COMP-3 VALUE +0.
01 WS-WORK-FIELDS.
03 WS-SAVE-TIME-PERIOD
03 WS-TIME-PERIOD
03 WS-TIME-PERIOD-NULL
03 WS-COMMIT-LIMIT
03 WS-COMMIT-LIMIT-NULL
03 WS-ROW-CNT
03 WS-MIN-TS
03 WS-DLET-PUBPEND-TS
03 WS-CHANGE-TYPE-CODE
03 WS-VNDR-NAME
03 WS-HOLD-MQSQ
03 WS-HOLD-MQUN
03 WS-UPC-CODE-NUM
03 WS-OLD-UPC-CODE-NUM
03 WS-NUMERIC2
03 WS-NUMERIC6
03 WS-UP-RCD-NBR
03 WS-KNOWN-TABLES
88 KNOWN-TBL
01 WS-FLAGS-N-SWITCHES.
03 DB2-DONE-SW
03 FOUND-SW
03 PUBPEND-SW

PIC S9(9) COMP


PIC S9(9) COMP
PIC S9(4) COMP.
PIC S9(4) COMP
PIC S9(4) COMP.
PIC S9(4) COMP
PIC X(26).
PIC X(26).
PIC X(01).
PIC X(30) VALUE
PIC X(30).
PIC X(31).
PIC 9(13) VALUE
PIC 9(13) VALUE
PIC 9(2) VALUE
PIC 9(6) VALUE
PIC 9(2) VALUE
PIC X(18).
VALUES '< TBD

VALUE 0.
VALUE 0.
VALUE 0.
VALUE 0.

SPACES.
ZERO.
ZERO.
ZERO.
ZERO.
ZERO.
>'.

PIC X VALUE 'N'.


PIC X VALUE 'N'.
PIC X VALUE 'N'.

0101010101-

03
03
03
03
03
03
03
03
03
03
03
03
03
03
03
03
03
03
03
03

PUBPEND-OPEN-SW
DUP-ISRT
UPC-ITEM-SW
UPC-FOUND-SW
MIN-TS-SET-SW
WS-911-SW
I2B5-SW
DONE-ALL-UPC-SW
I2A-UPC-CHANGED-SW
REVIEW-DAY-SW
VENDOR-FND-SW
EOF-PUBPEND
EOF-UPCITEM
EOF-I2A5
EOF-I2B5
EFF-DT-CHG-SW
EXP-DT-CHG-SW
EFF-PCT-CHG-SW
LICENSE-CHG-SW
CA-MCLANE-WAREHOUSE-SW
88 CA-MCLANE-WAREHOUSE
88 CA-NOT-MCLANE-WAREHOUSE

PIC
PIC
PIC
PIC
PIC
PIC
PIC
PIC
PIC
PIC
PIC
PIC
PIC
PIC
PIC
PIC
PIC
PIC
PIC
PIC

X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X

VALUE
VALUE
VALUE
VALUE
VALUE
VALUE
VALUE
VALUE
VALUE
VALUE
VALUE
VALUE
VALUE
VALUE
VALUE
VALUE
VALUE
VALUE
VALUE
VALUE
VALUE
VALUE

'N'.
'N'.
'N'.
'N'.
'N'.
'N'.
'N'.
'N'.
'N'.
'N'.
'N'.
'N'.
'N'.
'N'.
'N'.
'N'.
'N'.
'N'.
'N'.
'N'.
'Y'.
'N'.

01 VN-NUM.
02 VEND-NUM
PIC 9(9).
02 FILLER REDEFINES VEND-NUM.
03 VN-NUMB
PIC 9(6).
03 VN-DPSUB.
05 VN-DP PIC 99.
05 VN-SUB PIC 9.
01 WS-MCLANE-ITEM.
05 I2A-SEGMENT-AREA
05 CA-MQ-FLAG
05 CA-RETURN-CODE COMP
05 CA-STAT
05 CA-TIMESTAMP
05 CA-ACTION
05 CA-MSG-AREA
05 WHSE-NUM-TAB.
07 WHSE-NUM OCCURS 10

PIC
PIC
PIC
PIC
PIC
PIC
PIC

X(400)
X(01)
S9(09)
9(2)
X(26)
X(01)
X(40)

TIMES

VALUE
VALUE
VALUE
VALUE
VALUE
VALUE
VALUE

SPACES.
' '.
ZEROES.
ZEROES.
SPACES.
SPACES.
SPACES.

PIC 9(5).

01 UPC-ITEM-TABLE.
03 UIT-NBR-OF-UPC
PIC S9(3) COMP VALUE 0.
03 UIT-UPCS OCCURS 240 TIMES INDEXED BY UPC-IDX.
05 UIT-UPC-NBR
PIC 9(13) VALUE ZEROES.
01 ITEM-NULLS.
05 I-NULL-ITEM-ORD-EFF-DATE
05 I-NULL-ITEM-EXPIRE-DATE
05 I-NULL-DESTINATION-CODE
05 I-NULL-ITEM2-DESC
05 I-NULL-SHLFLBL1-COLR-DESC
05 I-NULL-SHLFLBL2-SIZE-DESC
05 I-NULL-INFRM-REORD-TYP-CD
05 I-NULL-WHSE-ALIGN-TYPE-CD
05 I-NULL-VNPK-WEIGHT-QTY
05 I-NULL-VNPK-CUBE-QTY
05 I-NULL-VNDR-MIN-ORD-QTY
05 I-NULL-WHPK-CUBE-QTY

PIC
PIC
PIC
PIC
PIC
PIC
PIC
PIC
PIC
PIC
PIC
PIC

S9(04)
S9(04)
S9(04)
S9(04)
S9(04)
S9(04)
S9(04)
S9(04)
S9(04)
S9(04)
S9(04)
S9(04)

COMP.
COMP.
COMP.
COMP.
COMP.
COMP.
COMP.
COMP.
COMP.
COMP.
COMP.
COMP.

0404-

05
05
05
05
05
05
05
05
05

I-NULL-WHPK-WEIGHT-QTY
I-NULL-WHSE-MAX-ORDER-QTY
I-NULL-WHPK-CALC-MTHD-CD
I-NULL-VNDR-INCRM-ORD-QTY
I-NULL-ACCTG-DEPT-NBR
I-NULL-RESERVE-MDSE-CODE
I-NULL-PRESN-UNIT-QTY
I-NULL-PALLET-TI-QTY-CD
I-NULL-PALLET-HI-QTY-CD

PIC
PIC
PIC
PIC
PIC
PIC
PIC
PIC
PIC

S9(04)
S9(04)
S9(04)
S9(04)
S9(04)
S9(04)
S9(04)
S9(04)
S9(04)

COMP.
COMP.
COMP.
COMP.
COMP.
COMP.
COMP.
COMP.
COMP.

01 ITEM-DC-NULLS.
05 IDC-NULL-CANCEL-WHN-OUT-DT
05 IDC-NULL-LAST-RCVD-DATE

PIC S9(04) COMP.


PIC S9(04) COMP.

01 CLUB-ITEM-NULLS.
05 CLB-NULL-LINK-ITEM-NBR
05 CLB-NULL-UNIT-RETAIL-CHG-DT
05 CLB-NULL-CANCEL-WHN-OUT-DT
05 CLB-NULL-CNCL-UNIT-RTL-AMT
05 CLB-NULL-LEAD-TIME-QTY

PIC
PIC
PIC
PIC
PIC

01 CLUB-INVT-NULLS.
05 CLB-NULL-LAST-RCVD-DATE
05 CLB-NULL-NEG-ON-HAND-DATE

PIC S9(04) COMP.


PIC S9(04) COMP.

01 ITEM-LEASE-SUPP-NULLS.
05 LSE-NULL-LEASE-SALES-PCT
05 LSE-NULL-LEASE-EXP-DATE

PIC S9(04) COMP.


PIC S9(04) COMP.

01 PUBLISH-PENDG-ERR-NULLS.
05 PE-NULL-DC-NBR
05 PE-NULL-CROSS-REF-NBR
05 PE-NULL-ASSORTMENT-NBR

PIC S9(04) COMP VALUE -1.


PIC S9(04) COMP VALUE -1.
PIC S9(04) COMP VALUE -1.

01 PUBLISH-PENDING-NULLS.
05 PP-NULL-DEPT-NBR
05 PP-NULL-SUBCLASS-NBR
05 PP-NULL-FINELINE-NBR
05 PP-NULL-MDSE-CATG-NBR
05 PP-NULL-MDSE-SUBCATG-NBR
05 PP-NULL-PRODUCT-NBR
05 PP-NULL-CONSUMER-ITEM-NBR
05 PP-NULL-ITEM-NBR
05 PP-NULL-VAR-TYPE-ID
05 PP-NULL-VAR-ID
05 PP-NULL-DC-NBR
05 PP-NULL-CROSS-REF-NBR
05 PP-NULL-ASSORTMENT-NBR
05 PP-NULL-SEQ-NBR

PIC
PIC
PIC
PIC
PIC
PIC
PIC
PIC
PIC
PIC
PIC
PIC
PIC
PIC

01010101-

01 I2A5-SSA-Q.
05 SSA-I2A5-KEY
05 SSA-I2A5-SEQ
05 FILLER

0101010101-

01 INIT-I2A5-UP-SEGMENT.
03 INIT-I2A5-UP-SEG-LTH
03 INIT-I2A5-UP-KEY
03 INIT-I2A5UP-LST-CHG.
05 INIT-I2A5UP-LST-CHG-FLAG

PIC X(8)
PIC 9(2)
PIC X(2)

S9(04)
S9(04)
S9(04)
S9(04)
S9(04)

S9(04)
S9(04)
S9(04)
S9(04)
S9(04)
S9(04)
S9(04)
S9(04)
S9(04)
S9(04)
S9(04)
S9(04)
S9(04)
S9(04)

VALUE 'UPCNO
VALUE ZERO.
VALUE ' '.

COMP.
COMP.
COMP.
COMP.
COMP.

COMP.
COMP.
COMP.
COMP.
COMP.
COMP.
COMP.
COMP.
COMP.
COMP.
COMP.
COMP.
COMP.
COMP.
'.

PIC S9(4) COMP VALUE 0.


PIC X(12) VALUE SPACES.
PIC X

VALUE 'N'.

01010101010101010101010101010101-

05-

05 INIT-I2A5UP-LST-CHG-DATE.
07 INIT-I2A5UP-LST-CHG-CT PIC 9
VALUE 0.
07 INIT-I2A5UP-LST-CHG-YR PIC 99
VALUE 0.
07 INIT-I2A5UP-LST-CHG-MO PIC 99
VALUE 0.
07 INIT-I2A5UP-LST-CHG-DA PIC 99
VALUE 0.
05 INIT-I2A5UP-LST-CHG-TIME.
07 INIT-I2A5UP-LST-CHG-HR PIC 99
VALUE 0.
07 INIT-I2A5UP-LST-CHG-MI PIC 99
VALUE 0.
05 INIT-I2A5UP-LST-CHG-INIT PIC XXX VALUE SPACES.
05 INIT-I2A5UP-LST-CHG-TERM PIC X(4) VALUE SPACES.
03 INIT-I2A5UP-NBR-OCCURS
PIC S999 COMP-3 VALUE +0.
03 INIT-I2A5UP-FIL020
PIC X(5) VALUE SPACES.
03 INIT-I2A5-UP-TAB OCCURS 20 TIMES
INDEXED BY I-I2A5-UP-IDX.
05 INIT-I2A5-UP-NBR
PIC X(13) VALUE SPACES.
05 INIT-I2A5-UP-FIL040
PIC X(5) VALUE SPACES.
******************************************************************
**
COPY BOOKS
**
******************************************************************
COPY I2ACC.
COPY I2A5UPCC.
COPY WCI2BCC.
COPY I2B5CC.
COPY I2CCC.
COPY I2PCC.
COPY V1ACC.
COPY V1DCC.
COPY V1PCC.
COPY MQUNCC.
COPY MQSQCC.
COPY TSENV1C.
COPY WC6812CC.
*****************************************************************
** COPYBOOK FOR DATE VARIABLES
*
*****************************************************************
01 WMDATE-PARMS.
COPY WMDATEC.
***********************************************************
*
DB2 TABLE INCLUDES
*
***********************************************************
*---------------------------------------------------------*
*
PARM
*
*---------------------------------------------------------*
EXEC SQL
INCLUDE SPARM000
END-EXEC.
*---------------------------------------------------------*
*
PUBLISH_PENDING
*
*---------------------------------------------------------*
EXEC SQL
INCLUDE SPUBPEN0
END-EXEC.
*---------------------------------------------------------*
*
PUBLISH_COMPLETE
*
*---------------------------------------------------------*
EXEC SQL
INCLUDE SPUBCOM0
END-EXEC.
*---------------------------------------------------------*

010101-

*
PUBLISH_PENDG_ERR
*
*---------------------------------------------------------*
EXEC SQL
INCLUDE SPUBPER0
END-EXEC.
*---------------------------------------------------------*
*
ITEM
*
*---------------------------------------------------------*
EXEC SQL
INCLUDE SITEMTB0
END-EXEC.
*---------------------------------------------------------*
*
ITEM_LOG
*
*---------------------------------------------------------*
EXEC SQL
INCLUDE SITMLOG0
END-EXEC.
*---------------------------------------------------------*
*
ITEM_DC_LOG
*
*---------------------------------------------------------*
EXEC SQL
INCLUDE SITDCLO0
END-EXEC.
*---------------------------------------------------------*
*
UPC_ITEM
*
*---------------------------------------------------------*
EXEC SQL
INCLUDE S0002300
END-EXEC.
*---------------------------------------------------------*
*
UPC_ITEM_LOG
*
*---------------------------------------------------------*
EXEC SQL
INCLUDE S0002400
END-EXEC.
*---------------------------------------------------------*
*
CLUB_ITEM_LOG
*
*---------------------------------------------------------*
EXEC SQL
INCLUDE SCLITLG0
END-EXEC.
*---------------------------------------------------------*
*
CLUB_ITEM_INVT_LOG
*
*---------------------------------------------------------*
EXEC SQL
INCLUDE SCITINL0
END-EXEC.
*---------------------------------------------------------*
*
ITEM_LSE_SUPP_LOG
*
*---------------------------------------------------------*
EXEC SQL
INCLUDE SILSLOG0
END-EXEC.
*---------------------------------------------------------*
*
ITEM_LEGACY_XREF
*
*---------------------------------------------------------*
EXEC SQL
INCLUDE SITCHDI0
END-EXEC.
*---------------------------------------------------------*

*
INF_VNDR_CNTL_SAMS
*
*---------------------------------------------------------*
EXEC SQL
INCLUDE SIVCSAM0
END-EXEC.
*---------------------------------------------------------*
*
S_REVW_CYCLE
*
*---------------------------------------------------------*
EXEC SQL
INCLUDE SSREVWC0
END-EXEC.
*---------------------------------------------------------*
*
DB2 COMMUNICATIONS AREA
*
*---------------------------------------------------------*
EXEC SQL
INCLUDE SQLCA
END-EXEC.
*---------------------------------------------------------*
*
PUBLISH_PENDING CURSOR
*
*---------------------------------------------------------*
EXEC SQL
DECLARE PUBPEND
CURSOR WITH HOLD FOR
SELECT A.TABLE_NAME
,A.TRIGGER_TS
,A.CHANGE_TYPE_CODE
,A.DEPT_NBR
,A.SUBCLASS_NBR
,A.FINELINE_NBR
,A.MDSE_CATG_NBR
,A.MDSE_SUBCATG_NBR
,A.PRODUCT_NBR
,A.CONSUMER_ITEM_NBR
,A.ITEM_NBR
,A.VAR_TYPE_ID
,A.VAR_ID
,A.DC_NBR
,A.CROSS_REF_NBR
,A.ASSORTMENT_NBR
,A.SEQ_NBR
,COALESCE (B.LEGACY_ITEM_NBR,0)
FROM PUBLISH_PENDING A
LEFT JOIN ITEM_LEGACY_XREF B ON A.ITEM_NBR = B.ITEM_NBR
WHERE A.TRIGGER_TS > :PUBLISH-PENDING-DATA.TRIGGER-TS
ORDER BY A.TRIGGER_TS ASC
FOR FETCH ONLY
END-EXEC.
*---------------------------------------------------------*
* CURSOR FOR UPC_ITEM TABLE
*
*---------------------------------------------------------*
EXEC SQL DECLARE UPCITEM CURSOR WITH HOLD FOR
SELECT UPC_NBR
,LAST_CHANGE_USERID
,CURRENT TIMESTAMP
FROM UPC_ITEM
WHERE ITEM_NBR = :UPC-ITEM-DATA.ITEM-NBR
AND UPC_NBR <> :ITEM-DATA.UPC-NBR
END-EXEC.
******************************************************************
PROCEDURE DIVISION.

******************************************************************
PERFORM A000000-INITIAL
MOVE 1 TO WS-RETRY-CNT
MOVE 'N' TO DB2-DONE-SW
PERFORM X000400-FETCH-PUB-PEND
UNTIL DB2-DONE-SW = 'Y'
PERFORM A005000-PROCESS-PUBPEND
UNTIL EOF-PUBPEND = 'Y'
PERFORM R400000-COMMIT-DATA
MOVE 'N' TO DB2-DONE-SW
MOVE 1 TO WS-RETRY-CNT
PERFORM X000500-CLOSE-PUBPEND
UNTIL DB2-DONE-SW = 'Y'
PERFORM D200000-TERM-PSB
PERFORM R100000-RESTART-SEC
PERFORM R200000-RETURN.
******************************************************************
**
DO INITIAL STARTUP PROCESSING
**
******************************************************************
A000000-INITIAL.
MOVE 'A000000-INITIAL' TO WS-ABND-PARA.
MOVE WHEN-COMPILED TO WS-WHEN-COMP.
MOVE WS-WHEN-COMP(1:8) TO WS-WHEN-DT
MOVE WS-WHEN-COMP(9:8) TO WS-WHEN-TM
EXEC CICS
HANDLE ABEND LABEL (D999999-HANDLE-ABEND)
END-EXEC.
*-----------------------------------------------------------*
* CHECK SYSTEM STATUS. IF CICS IS STARTING UP OR SHUTTING *
* DOWN, RESTART AND/OR RETURN.
*
*-----------------------------------------------------------*
EXEC CICS INQUIRE SYSTEM
CICSSTATUS( WS-CICS-STATUS )
END-EXEC.
IF WS-CICS-STATUS = DFHVALUE( STARTUP )
PERFORM R100050-RESTART-MIN
PERFORM R200000-RETURN
ELSE
IF WS-CICS-STATUS = DFHVALUE( FIRSTQUIESCE )
OR WS-CICS-STATUS = DFHVALUE( FINALQUIESCE )
PERFORM R200000-RETURN
END-IF
END-IF.
*-----------------------------------------------------------*
* IF STARTED FROM A TERMINAL SEND TEXT AND FREE THE SCREEN *
*-----------------------------------------------------------*
EXEC CICS ASSIGN
STARTCODE (WS-START-CODE)
APPLID(WS-REGION)

END-EXEC.
IF WS-START-CODE = 'TD'
EXEC CICS
SEND TEXT FROM(WS-START-MSG)
LENGTH(LENGTH OF WS-START-MSG)
END-EXEC
PERFORM R100000-RESTART-SEC
PERFORM R200000-RETURN
ELSE
EXEC CICS
RETRIEVE INTO(WS-NOTHING)
RESP(WS-CICS-RESP)
END-EXEC
END-IF.
EXEC CICS
ASKTIME ABSTIME(ABS-TIME)
END-EXEC.
EXEC CICS
FORMATTIME ABSTIME (ABS-TIME)
TIME
(SYS-TIME)
TIMESEP ('.')
YYYYMMDD(SYS-DATE)
DATESEP ('-')
END-EXEC.
MOVE
MOVE
MOVE
MOVE
MOVE
MOVE

SYS-YY
SYS-MM
SYS-DD
SYS-HR
SYS-MN
80

TO
TO
TO
TO
TO
TO

WS-CICS-MSG-YY.
WS-CICS-MSG-MM.
WS-CICS-MSG-DD.
WS-CICS-MSG-HR.
WS-CICS-MSG-MN.
WS-CICS-MSG-LENGTH.

ACCEPT CURRENT-DATE FROM DATE YYYYMMDD.


ACCEPT CURRENT-TIME FROM TIME.
MOVE 'WC6811' TO LAST-UPDATE-PGM-ID OF PUBLISH-PENDG-ERR-DATA
MOVE 0
TO ITEM-NBR
OF PUBLISH-PENDG-ERR-DATA
MOVE WS-REGION TO CICS-REGION-ID
OF PUBLISH-PENDG-ERR-DATA
BM-REGION
MOVE SPACES TO TABLE-NAME
OF PUBLISH-PENDG-ERR-DATA
STRING SYS-DATE, '-', SYS-TIME, '.000001'
DELIMITED BY SIZE
INTO LOG-TS OF PUBLISH-PENDG-ERR-DATA
PERFORM A000500-GET-TSENV.
**-- THIS ENQ COMMAND CHECKS TO MAKE SURE THAT AN WLU0 IS NOT
**-- ALREADY RUNNING AS AN ACTIVE TASK. IF NOT ACTIVE, IT WILL
**-- CONTINUE, OTHERWISE START UP AGAIN IN 5 MINUTES.
EXEC CICS ENQ
RESOURCE
LENGTH
RESP
TASK
NOSUSPEND
END-EXEC.

(WS-GLOBAL-ENQ)
(LENGTH OF WS-GLOBAL-ENQ)
(WS-CICS-RESP)

IF WS-CICS-RESP = DFHRESP(ENQBUSY)
PERFORM R100050-RESTART-MIN
PERFORM R200000-RETURN
END-IF.
EXEC CICS
DELETEQ TS QNAME(WS-ERR-TSQ)
RESP (WS-CICS-RESP)
END-EXEC.
EXEC CICS
WRITEQ TS QNAME(WS-ERR-TSQ)
FROM(WS-WHEN-MSG)
LENGTH(LENGTH OF WS-WHEN-MSG)
RESP(WS-CICS-RESP)
END-EXEC.
PERFORM A001000-PARM-PROCESS.
MOVE 1 TO WS-RETRY-CNT
MOVE 'N' TO DB2-DONE-SW
MOVE '2008-01-01-00.01.01.000001'
TO TRIGGER-TS OF PUBLISH-PENDING-DATA
PERFORM X000000-OPEN-PUB-PEND-CURS
UNTIL DB2-DONE-SW = 'Y'.
PERFORM D000000-SCHED-PSB.
******************************************************************
** READ DATA FROM PARM TBL TO VERIFY THE START/STOP STATUS OF **
** THE P2BRIDGE
**
******************************************************************
A001000-PARM-PROCESS.
MOVE 'A001000-PARM-PROCESS' TO WS-ABND-PARA.
MOVE 2 TO PARM-TYPE-CODE OF PARM-DATA
MOVE 'P2BRIDGE' TO PROCESS-NAME OF PARM-DATA
MOVE 0
TO WS-TIME-PERIOD
MOVE 1 TO WS-RETRY-CNT
MOVE 'N' TO DB2-DONE-SW
PERFORM A001100-SLCT-PARM
UNTIL DB2-DONE-SW = 'Y'
IF PARM-NAME OF PARM-DATA NOT = 'RUN'
IF PUBPEND-OPEN-SW = 'Y'
MOVE 'N' TO DB2-DONE-SW
MOVE 1 TO WS-RETRY-CNT
PERFORM X000500-CLOSE-PUBPEND
UNTIL DB2-DONE-SW = 'Y'
END-IF
MOVE 'WC6811 TURNED OFF'
TO TABLE-NAME OF PUBLISH-PENDG-ERR-DATA
WS-CICS-MSG-AREA
MOVE 'WC6811 TURNED OFF: DATA WILL NOT BE PROCESSED'
TO WS-DB2-TXT
MOVE SQLCODE TO WS-DB2-CODE
MOVE WS-DB2-MSG TO ERROR-DESC-TEXT
MOVE LENGTH OF WS-DB2-MSG TO ERROR-DESC-LEN
PERFORM R700000-WRITE-TSQ-ERROR

MOVE 1 TO WS-RETRY-CNT
MOVE 'N' TO DB2-DONE-SW
PERFORM X000100-ISRT-PUB-PENDG-ERR
UNTIL DB2-DONE-SW = 'Y'
IF STATUS-CODE OF PARM-DATA = 'Y'
PERFORM R100050-RESTART-MIN
PERFORM R200000-RETURN
END-IF
END-IF.
IF STATUS-CODE OF PARM-DATA NOT = 'Y'
IF PUBPEND-OPEN-SW = 'Y'
MOVE 'N' TO DB2-DONE-SW
MOVE 1 TO WS-RETRY-CNT
PERFORM X000500-CLOSE-PUBPEND
UNTIL DB2-DONE-SW = 'Y'
END-IF
MOVE 'PROCESS STOPPING'
TO TABLE-NAME OF PUBLISH-PENDG-ERR-DATA
WS-CICS-MSG-AREA
MOVE 'WC6811 RUN STOPPED DUE TO PARM TABLE VALUE'
TO WS-DB2-TXT
MOVE SQLCODE TO WS-DB2-CODE
MOVE WS-DB2-MSG TO ERROR-DESC-TEXT
MOVE LENGTH OF WS-DB2-MSG TO ERROR-DESC-LEN
PERFORM R700000-WRITE-TSQ-ERROR
MOVE 1 TO WS-RETRY-CNT
MOVE 'N' TO DB2-DONE-SW
PERFORM X000100-ISRT-PUB-PENDG-ERR
UNTIL DB2-DONE-SW = 'Y'
PERFORM R200000-RETURN
END-IF.
IF WS-TIME-PERIOD = WS-SAVE-TIME-PERIOD
IF MIN-TS-SET-SW = 'N'
MOVE 1 TO WS-RETRY-CNT
MOVE 'N' TO DB2-DONE-SW
PERFORM A001200-SET-MIN-TS
UNTIL DB2-DONE-SW = 'Y'
END-IF
ELSE
MOVE 1 TO WS-RETRY-CNT
MOVE 'N' TO DB2-DONE-SW
PERFORM A001200-SET-MIN-TS
UNTIL DB2-DONE-SW = 'Y'
END-IF.
MOVE WS-TIME-PERIOD TO WS-SAVE-TIME-PERIOD.
******************************************************************
** CHECK PARM TABLE TO SEE IF THIS PROGRAM SHOULD BE
**
** PROCESSING DATA.
**
** ALSO GET THE TIME PERIOD TO SET THE MINIMUM TIMESTAMP.
**
** TIME PERIOD IS STORED IN THE STORE_NBR FIELD OF PARM TABLE. **
******************************************************************
A001100-SLCT-PARM.
MOVE 'A001100-SLCT-PARM' TO WS-ABND-PARA.
EXEC SQL
SELECT PARM_NAME
,STATUS_CODE
,STORE_NBR

,MDSE_CATG_NBR
INTO :PARM-DATA.PARM-NAME
,:PARM-DATA.STATUS-CODE
,:WS-TIME-PERIOD
:WS-TIME-PERIOD-NULL
,:WS-COMMIT-LIMIT
:WS-COMMIT-LIMIT-NULL
FROM PARM
WHERE PROCESS_NAME = :PARM-DATA.PROCESS-NAME
AND PARM_TYPE_CODE = :PARM-DATA.PARM-TYPE-CODE
WITH UR
END-EXEC.
EVALUATE SQLCODE
WHEN 0
MOVE 'Y' TO DB2-DONE-SW
IF WS-TIME-PERIOD-NULL < 0
MOVE 120 TO WS-TIME-PERIOD
END-IF
IF WS-COMMIT-LIMIT-NULL < 0
MOVE 1
TO WS-COMMIT-LIMIT
END-IF
WHEN +100
MOVE 'PROCESS STOPPING'
TO TABLE-NAME OF PUBLISH-PENDG-ERR-DATA
WS-CICS-MSG-AREA
MOVE 'WC6811 RUN STOPPED - NO ROW IN PARM TABLE'
TO WS-DB2-TXT
MOVE SQLCODE TO WS-DB2-CODE
MOVE WS-DB2-MSG TO ERROR-DESC-TEXT
MOVE LENGTH OF WS-DB2-MSG TO ERROR-DESC-LEN
PERFORM R700000-WRITE-TSQ-ERROR
MOVE 1 TO WS-RETRY-CNT
MOVE 'N' TO DB2-DONE-SW
PERFORM X000100-ISRT-PUB-PENDG-ERR
UNTIL DB2-DONE-SW = 'Y'
PERFORM R200000-RETURN
WHEN -913
IF WS-RETRY-CNT <= WS-RETRY-MAX
ADD 1 TO WS-RETRY-CNT
ELSE
MOVE 'FAIL TO SELECT FROM PARM TABLE '
TO WS-DB2-TXT BM-MESSAGE
MOVE SQLCODE
TO WS-DB2-CODE BM-CODE-OUT
PERFORM E100000-LOG-ERR-AND-EXIT
END-IF
WHEN OTHER
MOVE 'FAIL TO SELECT FROM PARM TABLE '
TO WS-DB2-TXT BM-MESSAGE
MOVE SQLCODE
TO WS-DB2-CODE BM-CODE-OUT
PERFORM E100000-LOG-ERR-AND-EXIT
END-EVALUATE.
******************************************************************
** SET THE MINIMUM TIMESTAMP FOR WHICH A ROW CAN BE PROCESSED **
** FROM THE PUBLISH_PENDING TABLE.
**
******************************************************************
A001200-SET-MIN-TS.

MOVE 'A001200-SET-MIN-TS' TO WS-ABND-PARA.


EXEC SQL
SET :WS-MIN-TS = CURRENT TIMESTAMP :WS-TIME-PERIOD MINUTES
END-EXEC.
EVALUATE SQLCODE
WHEN 0
MOVE 'Y' TO DB2-DONE-SW MIN-TS-SET-SW
WHEN OTHER
MOVE 'FAIL TO SET MIN TIMESTAMP '
TO WS-DB2-TXT BM-MESSAGE
MOVE SQLCODE
TO WS-DB2-CODE BM-CODE-OUT
PERFORM E100000-LOG-ERR-AND-EXIT
END-EVALUATE.
******************************************************************
** THIS PARAGRAPH GETS THE COUNTRY-CODE TO PLUG INTO THE
**
**
MQSERIES QUEUE NAMES.
**
******************************************************************
A000500-GET-TSENV.
MOVE 'A000500-GET-TSENV ' TO WS-ABND-PARA.
INITIALIZE TSENV-REQUEST-AREA.
EXEC CICS LINK PROGRAM (WS-LINK-TSENVAR)
COMMAREA (TSENV-REQUEST-AREA)
LENGTH (LENGTH OF TSENV-REQUEST-AREA)
END-EXEC.
IF TSENV-RETURN-CODE EQUAL ZERO
IF TSENV-TEST
MOVE TSENV-COUNTRY-CODE TO BM-CC WS-ERR-CC WS-ENQ-CC
ELSE
MOVE TSENV-COUNTRY-CODE TO BM-CC WS-ERR-CC WS-ENQ-CC
END-IF
ELSE
MOVE TSENV-RETURN-CODE TO WS-CC-MSG2
MOVE WS-CC-MSG TO ERROR-DESC-TEXT
MOVE LENGTH OF WS-CC-MSG TO ERROR-DESC-LEN
MOVE 1 TO WS-RETRY-CNT
MOVE 'N' TO DB2-DONE-SW
PERFORM X000100-ISRT-PUB-PENDG-ERR
UNTIL DB2-DONE-SW = 'Y'
PERFORM R100050-RESTART-MIN
PERFORM R200000-RETURN
END-IF.
MOVE TSENV-BUS-UNIT

TO WS-ENQ-BUS.

******************************************************************
** THIS PARAGRAPH ANALYZES THE TABLE_NAME AND
** EXECUTES CORRESPONDING CODE TO UPDATE THE LEGACY HOST SYSTEM.
******************************************************************
A005000-PROCESS-PUBPEND.
MOVE 'A005000-PROCESS-PUBPEND' TO WS-ABND-PARA.
IF PP-NULL-ITEM-NBR >= 0
MOVE ITEM-NBR OF PUBLISH-PENDING-DATA
TO ITEM-NBR OF PUBLISH-PENDG-ERR-DATA
ELSE

MOVE 0 TO ITEM-NBR OF PUBLISH-PENDG-ERR-DATA


END-IF
MOVE TABLE-NAME OF PUBLISH-PENDING-DATA
TO TABLE-NAME OF PUBLISH-PENDG-ERR-DATA
MOVE TRIGGER-TS OF PUBLISH-PENDING-DATA
TO LOG-TS OF PUBLISH-PENDG-ERR-DATA
MOVE PP-NULL-DC-NBR TO PE-NULL-DC-NBR
IF PP-NULL-DC-NBR >= 0
MOVE DC-NBR OF PUBLISH-PENDING-DATA
TO DC-NBR OF PUBLISH-PENDG-ERR-DATA
END-IF.
MOVE -1
MOVE -1

TO PE-NULL-CROSS-REF-NBR
TO PE-NULL-ASSORTMENT-NBR

MOVE 'Y' TO PUBPEND-SW


IF TABLE-NAME OF PUBLISH-PENDING-DATA = 'UPC_ITEM'
MOVE TRIGGER-TS OF PUBLISH-PENDING-DATA
TO WS-DLET-PUBPEND-TS
MOVE 1 TO WS-RETRY-CNT
MOVE 'N' TO DB2-DONE-SW
PERFORM X000050-SLCT-PUBPEND
UNTIL DB2-DONE-SW = 'Y'
END-IF.
IF PUBPEND-SW = 'Y'
IF TRIGGER-TS OF PUBLISH-PENDING-DATA >= WS-MIN-TS
PERFORM A005001-PROCESS-ROW
ELSE
MOVE WS-OLD-MSG TO ERROR-DESC-TEXT
MOVE LENGTH OF WS-OLD-MSG TO ERROR-DESC-LEN
MOVE 1 TO WS-RETRY-CNT
MOVE 'N' TO DB2-DONE-SW
PERFORM X000100-ISRT-PUB-PENDG-ERR
UNTIL DB2-DONE-SW = 'Y'
END-IF
END-IF.
MOVE 1 TO WS-RETRY-CNT
MOVE 'N' TO DB2-DONE-SW
PERFORM X000200-ISRT-PUBCOMP
UNTIL DB2-DONE-SW = 'Y'.
IF TABLE-NAME OF PUBLISH-PENDING-DATA = 'UPC_ITEM'
IF PUBPEND-SW = 'Y'
MOVE 1 TO WS-RETRY-CNT
MOVE 'N' TO DB2-DONE-SW
PERFORM X000350-DLET-PUBPEND-UPCITEM
UNTIL DB2-DONE-SW = 'Y'
END-IF
ELSE
MOVE 1 TO WS-RETRY-CNT
MOVE 'N' TO DB2-DONE-SW
PERFORM X000300-DLET-PUBPEND
UNTIL DB2-DONE-SW = 'Y'
END-IF.

ADD 1 TO WS-ROW-CNT.
IF WS-ROW-CNT >= WS-COMMIT-LIMIT
PERFORM R400000-COMMIT-DATA
PERFORM D200000-TERM-PSB
PERFORM A001000-PARM-PROCESS
PERFORM D000000-SCHED-PSB
END-IF.
MOVE 1 TO WS-RETRY-CNT
MOVE 'N' TO DB2-DONE-SW
PERFORM X000400-FETCH-PUB-PEND
UNTIL DB2-DONE-SW = 'Y'.
******************************************************************
** PROCESS THE ROW FETCHED FROM PUBPEND CURSOR
******************************************************************
A005001-PROCESS-ROW.
MOVE 'A005001-PROCESS-ROW' TO WS-ABND-PARA.

01010101-

IF LEGACY-ITEM-NBR OF ITEM-LEGACY-XREF-DATA > 0


EVALUATE TABLE-NAME OF PUBLISH-PENDING-DATA
WHEN 'ITEM'
IF PP-NULL-ITEM-NBR >= 0
PERFORM A100000-PROCESS-ITEM
END-IF
WHEN 'ITEM_DC'
IF PP-NULL-ITEM-NBR >= 0
AND PP-NULL-DC-NBR >= 0
PERFORM A200000-PROCESS-DC
END-IF
WHEN 'CLUB_ITEM'
IF PP-NULL-ITEM-NBR >= 0
AND PP-NULL-DC-NBR >= 0
PERFORM A300000-PROCESS-CLUB
END-IF
WHEN 'CLUB_ITEM_INVT'
IF PP-NULL-ITEM-NBR >= 0
AND PP-NULL-DC-NBR >= 0
PERFORM A400000-PROCESS-CLUB-INVT
END-IF
WHEN 'UPC_ITEM'
IF PP-NULL-ITEM-NBR >= 0
PERFORM A500000-PROCESS-UPC
END-IF
WHEN 'ITEM_LEASE_SUPP'
IF PP-NULL-ITEM-NBR >= 0
PERFORM A600000-PROCESS-ITEM-LEASE
END-IF
WHEN OTHER
MOVE TABLE-NAME OF PUBLISH-PENDING-DATA
TO WS-KNOWN-TABLES
IF KNOWN-TBL
CONTINUE
ELSE
MOVE 'INVALID TABLE NAME ' TO ERROR-DESC-TEXT
MOVE 19 TO ERROR-DESC-LEN
MOVE 1 TO WS-RETRY-CNT
MOVE 'N' TO DB2-DONE-SW
PERFORM X000100-ISRT-PUB-PENDG-ERR

UNTIL DB2-DONE-SW = 'Y'


END-IF
END-EVALUATE
ELSE
MOVE 'LEGACY ITEM # NOT FOUND ' TO ERROR-DESC-TEXT
MOVE 24 TO ERROR-DESC-LEN
PERFORM E000000-LOG-ERROR
END-IF.
******************************************************************
** THIS PARAGRAPH EXECUTES THE CODE TO UPDATE/INSERT/DELETE
**
** LEGACY HOST ITEM INFO DEPENDING ON THE CHANGE TYPE CODE
**
******************************************************************
A100000-PROCESS-ITEM.
MOVE 'A100000-PROCESS-ITEM' TO WS-ABND-PARA.
MOVE
TO
MOVE
TO

ITEM-NBR
ITEM-NBR
TRIGGER-TS
LOG-TS

OF
OF
OF
OF

PUBLISH-PENDING-DATA
ITEM-LOG-DATA
PUBLISH-PENDING-DATA
ITEM-LOG-DATA.

MOVE 1 TO WS-RETRY-CNT
MOVE 'N' TO DB2-DONE-SW
PERFORM A100500-SLCT-ITEM-LOG
UNTIL DB2-DONE-SW = 'Y'
MOVE LEGACY-ITEM-NBR OF ITEM-LEGACY-XREF-DATA
TO I2A-KEY-SAMS
PERFORM D300000-GU-I2A
IF FOUND-SW = 'N'
IF CHANGE-TYPE-CODE OF PUBLISH-PENDING-DATA = 'U'
MOVE 'I' TO CHANGE-TYPE-CODE OF PUBLISH-PENDING-DATA
END-IF
ELSE
IF CHANGE-TYPE-CODE OF PUBLISH-PENDING-DATA = 'I'
MOVE 'U' TO CHANGE-TYPE-CODE OF PUBLISH-PENDING-DATA
END-IF
END-IF.
EVALUATE CHANGE-TYPE-CODE OF PUBLISH-PENDING-DATA
WHEN 'I'
PERFORM A101000-INSERT-ITEM
WHEN 'U'
PERFORM A102000-UPDATE-ITEM
WHEN OTHER
MOVE 'INVALID CHANGE TYPE FOR ITEM ' TO ERROR-DESC-TEXT
MOVE LENGTH OF WS-OLD-MSG TO ERROR-DESC-LEN
MOVE 1 TO WS-RETRY-CNT
MOVE 'N' TO DB2-DONE-SW
PERFORM X000100-ISRT-PUB-PENDG-ERR
UNTIL DB2-DONE-SW = 'Y'
END-EVALUATE.

TEST *
TEST *

IF TSENV-COUNTRY-CODE = 'US'
IF CA-MCLANE-WAREHOUSE
PERFORM A104000-APPLY-MCLANES
IF TSENV-PROD
PERFORM A105000-CREATE-MCLANES-FEED
END-IF

END-IF
END-IF.
******************************************************************
** APPLY MCLANE INFORMATION
**
******************************************************************
A104000-APPLY-MCLANES.
MOVE 'A104000-APPLY-MCLANES' TO WS-ABND-PARA.
MOVE
MOVE
MOVE
MOVE

I2A-SEGMENT
ALL ZEROES
'6071'
'T'

TO
TO
TO
TO

I2A-SEGMENT-AREA.
WHSE-NUM-TAB.
WHSE-NUM (1).
CA-ACTION.

MOVE 1 TO WS-RETRY-CNT
MOVE 'N' TO DB2-DONE-SW
PERFORM A104050-GET-TIMESTAMP
UNTIL DB2-DONE-SW = 'Y'.
******************************************************************
** GET CURRENT TIMESTAMP FOR MCLANE FEED
**
******************************************************************
A104050-GET-TIMESTAMP.
MOVE 'A104050-GET-TIMESTAMP' TO WS-ABND-PARA.
EXEC SQL
SET :CA-TIMESTAMP = CURRENT TIMESTAMP
END-EXEC.
EVALUATE SQLCODE
WHEN 0
MOVE 'Y' TO DB2-DONE-SW
WHEN OTHER
MOVE 'FAIL TO SET MCLANE TIMESTAMP ' TO WS-DB2-TXT
MOVE SQLCODE TO WS-DB2-CODE
MOVE WS-DB2-MSG TO ERROR-DESC-TEXT
MOVE LENGTH OF WS-DB2-MSG TO ERROR-DESC-LEN
PERFORM E000000-LOG-ERROR
END-EVALUATE.
******************************************************************
** LINK TO WCV504 PASSING PARAMETER LIST
**
******************************************************************
A105000-CREATE-MCLANES-FEED.
MOVE 'A105000-CREATE-MCLANES-FEED' TO WS-ABND-PARA.
EXEC CICS
LINK PROGRAM('WCV504')
COMMAREA(WS-MCLANE-ITEM)
LENGTH(LENGTH OF WS-MCLANE-ITEM)
END-EXEC.
IF CA-MQ-FLAG = ' '
CONTINUE
ELSE
MOVE CA-RETURN-CODE
MOVE 'MQS'
MOVE WS-BEEP-MESSAGE-RPT
MOVE WS-MQ-MSG
MOVE LENGTH OF WS-MQ-MSG

TO
TO
TO
TO
TO

BM-CODE WS-MQ-CODE
BM-TYPE
BM-MESSAGE
ERROR-DESC-TEXT
ERROR-DESC-LEN

PERFORM R600000-SEND-PAGE
PERFORM E000000-LOG-ERROR
END-IF.
******************************************************************
** SELECT FROM ITEM TABLE
**
******************************************************************
A100500-SLCT-ITEM-LOG.
MOVE 'A100500-SLCT-ITEM-LOG' TO WS-ABND-PARA.
EXEC SQL
SELECT ITEM_NBR
,MDS_FAM_ID
,VENDOR_STOCK_ID
,DEPT_NBR
,SUBCLASS_NBR
,UPC_NBR
,ITEM_STATUS_CODE
,ITEM_CREATE_DT
,ITEM_ORD_EFF_DATE
,ITEM_EXPIRE_DATE
,ITEM_TYPE_CODE
,REPL_SUBTYPE_CODE
,VARIABLE_WT_IND
,BACKRM_SCALE_IND
,TEMP_SENSITIVE_IND
,DESTINATION_CODE
,BASE_RETAIL_UOM_CD
,CANNED_ORDER_IND
,ITEM_SCANNABLE_IND
,SHELF_LBL_RQMT_IND
,ITEM1_DESC
,ITEM2_DESC
,UPC_DESC
,SHLFLBL1_COLR_DESC
,SHLFLBL2_SIZE_DESC
,MBM_CODE
,ITEM_RPLNSHBL_IND
,INFRM_REORD_TYP_CD
,WHSE_ALIGN_TYPE_CD
,CANCEL_WHN_OUT_IND
,VNPK_CSPK_CODE
,VNPK_QTY
,VNPK_WEIGHT_QTY
,VNPK_CUBE_QTY
,VNDR_MIN_ORD_QTY
,WHPK_SELL_AMT
,WHPK_QTY
,WHPK_CUBE_QTY
,WHPK_WEIGHT_QTY
,WHSE_MAX_ORDER_QTY
,WHPK_CALC_MTHD_CD
,CONVEYABLE_IND
,VENDOR_NBR
,VENDOR_DEPT_NBR
,VENDOR_SEQ_NBR
,GUAR_SALES_IND
,SIGNING_DESC
,VNDR_INCRM_ORD_QTY
,NEVER_OUT_IND

010404-

,ACCTG_DEPT_NBR
,RESERVE_MDSE_CODE
,PRESN_UNIT_QTY
,SUPP_DISPLAY_IND
,SELL_QTY
,SELL_UOM_CODE
,PROMPT_PRICE_IND
,LAST_UPDATE_USERID
,PALLET_TI_QTY
,PALLET_HI_QTY
INTO :ITEM-LOG-DATA.ITEM-NBR
,:ITEM-LOG-DATA.MDS-FAM-ID
,:ITEM-LOG-DATA.VENDOR-STOCK-ID
,:ITEM-LOG-DATA.DEPT-NBR
,:ITEM-LOG-DATA.SUBCLASS-NBR
,:ITEM-LOG-DATA.UPC-NBR
,:ITEM-LOG-DATA.ITEM-STATUS-CODE
,:ITEM-LOG-DATA.ITEM-CREATE-DT
,:ITEM-LOG-DATA.ITEM-ORD-EFF-DATE
:I-NULL-ITEM-ORD-EFF-DATE
,:ITEM-LOG-DATA.ITEM-EXPIRE-DATE
:I-NULL-ITEM-EXPIRE-DATE
,:ITEM-LOG-DATA.ITEM-TYPE-CODE
,:ITEM-LOG-DATA.REPL-SUBTYPE-CODE
,:ITEM-LOG-DATA.VARIABLE-WT-IND
,:ITEM-LOG-DATA.BACKRM-SCALE-IND
,:ITEM-LOG-DATA.TEMP-SENSITIVE-IND
,:ITEM-LOG-DATA.DESTINATION-CODE
:I-NULL-DESTINATION-CODE
,:ITEM-LOG-DATA.BASE-RETAIL-UOM-CD
,:ITEM-LOG-DATA.CANNED-ORDER-IND
,:ITEM-LOG-DATA.ITEM-SCANNABLE-IND
,:ITEM-LOG-DATA.SHELF-LBL-RQMT-IND
,:ITEM-LOG-DATA.ITEM1-DESC
,:ITEM-LOG-DATA.ITEM2-DESC
:I-NULL-ITEM2-DESC
,:ITEM-LOG-DATA.UPC-DESC
,:ITEM-LOG-DATA.SHLFLBL1-COLR-DESC
:I-NULL-SHLFLBL1-COLR-DESC
,:ITEM-LOG-DATA.SHLFLBL2-SIZE-DESC
:I-NULL-SHLFLBL2-SIZE-DESC
,:ITEM-LOG-DATA.MBM-CODE
,:ITEM-LOG-DATA.ITEM-RPLNSHBL-IND
,:ITEM-LOG-DATA.INFRM-REORD-TYP-CD
:I-NULL-INFRM-REORD-TYP-CD
,:ITEM-LOG-DATA.WHSE-ALIGN-TYPE-CD
:I-NULL-WHSE-ALIGN-TYPE-CD
,:ITEM-LOG-DATA.CANCEL-WHN-OUT-IND
,:ITEM-LOG-DATA.VNPK-CSPK-CODE
,:ITEM-LOG-DATA.VNPK-QTY
,:ITEM-LOG-DATA.VNPK-WEIGHT-QTY
:I-NULL-VNPK-WEIGHT-QTY
,:ITEM-LOG-DATA.VNPK-CUBE-QTY
:I-NULL-VNPK-CUBE-QTY
,:ITEM-LOG-DATA.VNDR-MIN-ORD-QTY
:I-NULL-VNDR-MIN-ORD-QTY
,:ITEM-LOG-DATA.WHPK-SELL-AMT
,:ITEM-LOG-DATA.WHPK-QTY
,:ITEM-LOG-DATA.WHPK-CUBE-QTY
:I-NULL-WHPK-CUBE-QTY

0104040404-

,:ITEM-LOG-DATA.WHPK-WEIGHT-QTY
:I-NULL-WHPK-WEIGHT-QTY
,:ITEM-LOG-DATA.WHSE-MAX-ORDER-QTY
:I-NULL-WHSE-MAX-ORDER-QTY
,:ITEM-LOG-DATA.WHPK-CALC-MTHD-CD
:I-NULL-WHPK-CALC-MTHD-CD
,:ITEM-LOG-DATA.CONVEYABLE-IND
,:ITEM-LOG-DATA.VENDOR-NBR
,:ITEM-LOG-DATA.VENDOR-DEPT-NBR
,:ITEM-LOG-DATA.VENDOR-SEQ-NBR
,:ITEM-LOG-DATA.GUAR-SALES-IND
,:ITEM-LOG-DATA.SIGNING-DESC
,:ITEM-LOG-DATA.VNDR-INCRM-ORD-QTY
:I-NULL-VNDR-INCRM-ORD-QTY
,:ITEM-LOG-DATA.NEVER-OUT-IND
,:ITEM-LOG-DATA.ACCTG-DEPT-NBR
:I-NULL-ACCTG-DEPT-NBR
,:ITEM-LOG-DATA.RESERVE-MDSE-CODE
:I-NULL-RESERVE-MDSE-CODE
,:ITEM-LOG-DATA.PRESN-UNIT-QTY
:I-NULL-PRESN-UNIT-QTY
,:ITEM-LOG-DATA.SUPP-DISPLAY-IND
,:ITEM-LOG-DATA.SELL-QTY
,:ITEM-LOG-DATA.SELL-UOM-CODE
,:ITEM-LOG-DATA.PROMPT-PRICE-IND
,:ITEM-LOG-DATA.LAST-UPDATE-USERID
,:ITEM-LOG-DATA.PALLET-TI-QTY
:I-NULL-PALLET-TI-QTY-CD
,:ITEM-LOG-DATA.PALLET-HI-QTY
:I-NULL-PALLET-HI-QTY-CD
FROM ITEM_LOG
WHERE ITEM_NBR = :ITEM-LOG-DATA.ITEM-NBR
AND LOG_TS = :ITEM-LOG-DATA.LOG-TS
END-EXEC.
EVALUATE SQLCODE
WHEN 0
MOVE 'Y' TO DB2-DONE-SW
WHEN +100
MOVE 'ITEM_LOG ROW NOT FOUND' TO WS-DB2-TXT
MOVE SQLCODE TO WS-DB2-CODE
MOVE WS-DB2-MSG TO ERROR-DESC-TEXT
MOVE LENGTH OF WS-DB2-MSG TO ERROR-DESC-LEN
PERFORM E000000-LOG-ERROR
WHEN -911
IF WS-911-RETRY-CNT <= WS-911-RETRY-MAX
ADD 1 TO WS-911-RETRY-CNT
MOVE '-911 ON ITEM_LOG ' TO WS-DB2-TXT
MOVE SQLCODE TO WS-DB2-CODE
MOVE WS-DB2-MSG TO ERROR-DESC-TEXT
MOVE LENGTH OF WS-DB2-MSG TO ERROR-DESC-LEN
MOVE 'Y' TO WS-911-SW
PERFORM E000000-LOG-ERROR
ELSE
MOVE 'SELECT ERROR ON ITEM_LOG '
TO WS-DB2-TXT BM-MESSAGE
MOVE SQLCODE
TO WS-DB2-CODE BM-CODE-OUT
PERFORM E100000-LOG-ERR-AND-EXIT
END-IF

WHEN -913
IF WS-RETRY-CNT <= WS-RETRY-MAX
ADD 1 TO WS-RETRY-CNT
ELSE
MOVE 'SELECT ERROR ON ITEM_LOG '
TO WS-DB2-TXT BM-MESSAGE
MOVE SQLCODE
TO WS-DB2-CODE BM-CODE-OUT
PERFORM E100000-LOG-ERR-AND-EXIT
END-IF
WHEN OTHER
MOVE 'SELECT ERROR ON ITEM_LOG '
TO WS-DB2-TXT BM-MESSAGE
MOVE SQLCODE
TO WS-DB2-CODE BM-CODE-OUT
PERFORM E100000-LOG-ERR-AND-EXIT
END-EVALUATE.
*
******************************************************************
** PROCESS TO INSERT AN ITEM
**
******************************************************************
A101000-INSERT-ITEM.
MOVE 'A101000-INSERT-ITEM' TO WS-ABND-PARA.

010101-

INITIALIZE I2A-SEGMENT
PERFORM A101050-MOVE-DEFAULT-I2A-DATA
PERFORM A101100-MOVE-I2A-DATA
IF SIGNING-DESC OF ITEM-LOG-DATA > SPACES
PERFORM A101200-MOVE-I2P-DATA
PERFORM D301500-ISRT-I2A-I2P
ELSE
PERFORM D301000-ISRT-I2A
END-IF.

0101-

MOVE I2A-UPC-CODE-NUM TO WS-UPC-CODE-NUM.


PERFORM A101120-PROCESS-MQUN-SEGMENT.

02-

*
******************************************************************
** PROCESS TO UPDATE AN ITEM
**
******************************************************************
A102000-UPDATE-ITEM.
MOVE 'A102000-UPDATE-ITEM' TO WS-ABND-PARA.

020101010101-

PERFORM A101100-MOVE-I2A-DATA
PERFORM D302000-REPL-I2A
PERFORM D400000-GNP-I2P
PERFORM A101200-MOVE-I2P-DATA
IF FOUND-SW = 'Y'
PERFORM D401000-REPL-I2P
ELSE
IF SIGNING-DESC OF ITEM-LOG-DATA > SPACES
PERFORM D402000-ISRT-I2P
END-IF
END-IF.
PERFORM D303000-GNP-I2B5
IF EOF-I2B5 = 'N'
PERFORM A102100-VERIFY-PRICE-FLAG
END-IF.

0101010101-

IF I2A-UPC-CHANGED-SW = 'Y'
PERFORM A500000-PROCESS-UPC
MOVE I2A-UPC-CODE-NUM TO WS-UPC-CODE-NUM
PERFORM A101120-PROCESS-MQUN-SEGMENT
END-IF.
*
******************************************************************
** THIS PARAGRAPH MOVES THE ITEM_LOG TABLE COLUMNS TO THE
**
** CORRESPONDING FIELDS ON THE I2A-SEGMENT
**
******************************************************************
A101050-MOVE-DEFAULT-I2A-DATA.
MOVE 'A101050-MOVE-DEFAULT-I2A-DATA' TO WS-ABND-PARA.
MOVE ZEROS TO I2A-COST-PRICE-EF-DATE
I2A-TAX-CODE
I2A-UNIT-RETAIL
I2A-VNDR-PACK-COST
I2A-WHSE-PACK-COST
MOVE SPACE TO I2A-STOCK-STATUS
I2A-DSD-FLAG
MOVE 'N' TO I2A-FOOD-STAMP
I2A-SEND-STORE-NET
I2A-SEND-UPC-SERIES1
MOVE '0' TO I2A-MULTI-CYCLE-FLAG.
******************************************************************
** THIS PARAGRAPH MOVES THE ITEM_LOG TABLE COLUMNS TO THE
**
** CORRESPONDING FIELDS ON THE I2A-SEGMENT
**
******************************************************************
A101100-MOVE-I2A-DATA.
MOVE 'A101100-MOVE-I2A-DATA' TO WS-ABND-PARA.
MOVE LEGACY-ITEM-NBR
MOVE VENDOR-STOCK-ID
MOVE DEPT-NBR
MOVE WS-NUMERIC2
MOVE SUBCLASS-NBR
MOVE WS-NUMERIC2

OF ITEM-LEGACY-XREF-DATA
TO I2A-KEY-SAMS.
OF ITEM-LOG-DATA
TO I2A-VNDR-STK-NO.
OF ITEM-LOG-DATA
TO WS-NUMERIC2.
TO I2A-CATEGORY.
OF ITEM-LOG-DATA
TO WS-NUMERIC2.
TO I2A-SUBCATEGORY.

IF CHANGE-TYPE-CODE OF PUBLISH-PENDING-DATA = 'U'


MOVE 'N'
TO I2A-UPC-CHANGED-SW
IF I2A-UPC-CODE-NUM NOT = UPC-NBR OF ITEM-LOG-DATA
MOVE I2A-UPC-CODE-NUM
TO WS-OLD-UPC-CODE-NUM
MOVE 'Y'
TO I2A-UPC-CHANGED-SW
MOVE UPC-NBR
OF ITEM-LOG-DATA
TO I2A-UPC-CODE-NUM
PERFORM A101121-VERIFY-AND-DLET-MQUN
END-IF
ELSE
MOVE UPC-NBR
OF ITEM-LOG-DATA
TO I2A-UPC-CODE-NUM
END-IF.
MOVE ITEM-STATUS-CODE

OF ITEM-LOG-DATA
TO I2A-STATUS.

IF ITEM-CREATE-DT OF ITEM-LOG-DATA NOT = '0001-01-01'


MOVE ITEM-CREATE-DT
OF ITEM-LOG-DATA
TO WMD-CAL-DATE
MOVE 'A'
TO WMD-FUNCT
CALL 'WMDATE' USING WMDATE-PARMS
IF WMD-STAT = SPACES
MOVE WMD-YMD
TO I2A-NEW-ITEM-DATE
ELSE
MOVE SPACES
TO I2A-NEW-ITEM-DATE
END-IF
ELSE
MOVE SPACES
TO I2A-NEW-ITEM-DATE
END-IF.
IF I-NULL-ITEM-ORD-EFF-DATE NOT = -1
MOVE ITEM-ORD-EFF-DATE OF ITEM-LOG-DATA
TO WMD-CAL-DATE
MOVE 'A'
TO WMD-FUNCT
CALL 'WMDATE' USING WMDATE-PARMS
IF WMD-STAT = SPACES
MOVE WMD-YMD
TO I2A-ITEM-EF-DATE
ELSE
MOVE SPACES
TO I2A-ITEM-EF-DATE
END-IF
ELSE
MOVE SPACES
TO I2A-ITEM-EF-DATE
END-IF.
IF I-NULL-ITEM-EXPIRE-DATE NOT = -1
MOVE ITEM-EXPIRE-DATE
OF ITEM-LOG-DATA
TO WMD-CAL-DATE
MOVE 'A'
TO WMD-FUNCT
CALL 'WMDATE' USING WMDATE-PARMS
IF WMD-STAT = SPACES
MOVE WMD-YMD
TO I2A-ITEM-EXPIRE-DATE
ELSE
MOVE '999999'
TO I2A-ITEM-EXPIRE-DATE
END-IF
ELSE
MOVE '999999'
TO I2A-ITEM-EXPIRE-DATE
END-IF.
MOVE REPL-SUBTYPE-CODE
MOVE ITEM-TYPE-CODE
MOVE WS-NUMERIC2

OF ITEM-LOG-DATA
TO I2A-REPLEN-SUB-TYPE.
OF ITEM-LOG-DATA
TO WS-NUMERIC2.
TO I2A-ITEM-TYPE.

IF I-NULL-RESERVE-MDSE-CODE NOT = -1
IF RESERVE-MDSE-CODE OF ITEM-LOG-DATA = 9
MOVE 'Y'
TO I2A-RESERVE-MDSE-CODE
ELSE
MOVE RESERVE-MDSE-CODE
OF ITEM-LOG-DATA
TO I2A-RESERVE-MDSE-CODE
END-IF
ELSE
MOVE ZERO
TO I2A-RESERVE-MDSE-CODE
END-IF.

IF BACKRM-SCALE-IND OF ITEM-LOG-DATA = 'Y'


MOVE 'B'
TO I2A-SCALE-ITM-FLG
ELSE
IF VARIABLE-WT-IND OF ITEM-LOG-DATA = 'Y'
MOVE 'Y'
TO I2A-SCALE-ITM-FLG
ELSE
MOVE 'N'
TO I2A-SCALE-ITM-FLG
END-IF
END-IF.
MOVE TEMP-SENSITIVE-IND OF ITEM-LOG-DATA
TO I2A-TEMP-ITEM.
IF I-NULL-DESTINATION-CODE NOT = -1
MOVE DESTINATION-CODE OF ITEM-LOG-DATA
TO I2A-HYPER-FLAG
ELSE
MOVE '0'
TO I2A-HYPER-FLAG
END-IF.
MOVE BASE-RETAIL-UOM-CD OF ITEM-LOG-DATA
TO I2A-UNIT-OF-MEAS.
MOVE CANNED-ORDER-IND
OF ITEM-LOG-DATA
TO I2A-CAN-ORD-FLAG.
MOVE ITEM-SCANNABLE-IND OF ITEM-LOG-DATA
TO I2A-POINT-OF-SALE.
MOVE SHELF-LBL-RQMT-IND OF ITEM-LOG-DATA
TO I2A-SHF-LBL-PRNT.
MOVE ITEM1-DESC
OF ITEM-LOG-DATA
TO I2A-DESC1.
IF I-NULL-ITEM2-DESC NOT = -1
MOVE ITEM2-DESC
OF ITEM-LOG-DATA
TO I2A-DESC2
ELSE
MOVE SPACES
TO I2A-DESC2
END-IF.
IF I-NULL-SHLFLBL1-COLR-DESC NOT = -1
MOVE SHLFLBL1-COLR-DESC OF ITEM-LOG-DATA
TO I2A-COLOR
ELSE
MOVE SPACES
TO I2A-COLOR
END-IF.
IF I-NULL-SHLFLBL2-SIZE-DESC NOT = -1
MOVE SHLFLBL2-SIZE-DESC OF ITEM-LOG-DATA
TO I2A-SIZE
ELSE
MOVE SPACES
TO I2A-SIZE
END-IF.
MOVE UPC-DESC
MOVE MBM-CODE
MOVE ITEM-RPLNSHBL-IND

OF ITEM-LOG-DATA
TO I2A-UPC-DESC.
OF ITEM-LOG-DATA
TO I2A-MBM-CODE.
OF ITEM-LOG-DATA
TO I2A-O-B-CODE

IF I-NULL-INFRM-REORD-TYP-CD NOT = -1

MOVE INFRM-REORD-TYP-CD OF ITEM-LOG-DATA


TO I2A-INFOREM-REORDER
ELSE
MOVE SPACES
TO I2A-INFOREM-REORDER
END-IF.
IF I-NULL-WHSE-ALIGN-TYPE-CD NOT = -1
MOVE WHSE-ALIGN-TYPE-CD OF ITEM-LOG-DATA
TO I2A-WH-ALIGN
ELSE
MOVE SPACES
TO I2A-WH-ALIGN
END-IF.
MOVE CANCEL-WHN-OUT-IND OF ITEM-LOG-DATA
TO I2A-CANCEL-WHEN-OUT.
MOVE VNPK-CSPK-CODE
OF ITEM-LOG-DATA
TO I2A-MASTER-PACK-CODE.
MOVE VNPK-QTY
OF ITEM-LOG-DATA
TO I2A-VNDR-PACK-QTY.
IF I-NULL-VNPK-WEIGHT-QTY NOT = -1
MOVE VNPK-WEIGHT-QTY
OF ITEM-LOG-DATA
TO I2A-VNDR-PACK-WGT
ELSE
MOVE 0
TO I2A-VNDR-PACK-WGT
END-IF.
IF I-NULL-VNPK-CUBE-QTY NOT = -1
IF VNPK-CUBE-QTY OF ITEM-LOG-DATA > 99.9
MOVE 99.9
TO I2A-VNDR-PACK-CUBE
ELSE
MOVE VNPK-CUBE-QTY
OF ITEM-LOG-DATA
TO I2A-VNDR-PACK-CUBE
END-IF
ELSE
MOVE 0
TO I2A-VNDR-PACK-CUBE
END-IF.
IF I-NULL-VNDR-MIN-ORD-QTY NOT = -1
MOVE VNDR-MIN-ORD-QTY OF ITEM-LOG-DATA
TO I2A-MIN-ORD-QTY
ELSE
MOVE 0
TO I2A-MIN-ORD-QTY
END-IF.
MOVE WHPK-SELL-AMT
MOVE WHPK-QTY

OF ITEM-LOG-DATA
TO I2A-WHSE-PACK-SELL.
OF ITEM-LOG-DATA
TO I2A-WHSE-PACK-QTY.

IF I-NULL-WHPK-WEIGHT-QTY NOT = -1
MOVE WHPK-WEIGHT-QTY
OF ITEM-LOG-DATA
TO I2A-WHSE-PACK-WGT
ELSE
MOVE 0
TO I2A-WHSE-PACK-WGT
END-IF.
IF I-NULL-WHPK-CUBE-QTY NOT = -1
IF WHPK-CUBE-QTY OF ITEM-LOG-DATA > 99.9
MOVE 99.9
TO I2A-WHSE-PACK-CUBE

ELSE
MOVE WHPK-CUBE-QTY
END-IF
ELSE
MOVE 0
END-IF.

OF ITEM-LOG-DATA
TO I2A-WHSE-PACK-CUBE
TO I2A-WHSE-PACK-CUBE

IF I-NULL-WHSE-MAX-ORDER-QTY NOT = -1
MOVE WHSE-MAX-ORDER-QTY OF ITEM-LOG-DATA
TO I2A-MAX-ORD-QTY
ELSE
MOVE 0
TO I2A-MAX-ORD-QTY
END-IF.
IF I-NULL-WHPK-CALC-MTHD-CD NOT = -1
MOVE WHPK-CALC-MTHD-CD OF ITEM-LOG-DATA
TO I2A-AVG-WHSE-CODE
ELSE
MOVE 'A'
TO I2A-AVG-WHSE-CODE
END-IF.
MOVE CONVEYABLE-IND
MOVE VENDOR-NBR
MOVE VN-NUMB
MOVE VENDOR-DEPT-NBR
MOVE VN-DP
MOVE VENDOR-SEQ-NBR
MOVE VN-SUB

OF ITEM-LOG-DATA
TO I2A-CONVEY-CODE
OF ITEM-LOG-DATA
TO VN-NUMB
TO I2A-REMIT
OF ITEM-LOG-DATA
TO VN-DP
TO I2A-DP
I2A-ORDER-DEPT
OF ITEM-LOG-DATA
TO VN-SUB
TO I2A-SUBSEQ

IF I2A-REMIT = ('074455' OR '104021' OR '104031' OR


'104043' OR '378633' OR '489174' OR '489164')
MOVE 'Y' TO I2A-SAMS-SMDC
ELSE
MOVE 'N' TO I2A-SAMS-SMDC
END-IF.
MOVE GUAR-SALES-IND
MOVE NEVER-OUT-IND
IF I-NULL-ACCTG-DEPT-NBR
MOVE ACCTG-DEPT-NBR
MOVE WS-NUMERIC2
ELSE
MOVE '00'
END-IF.
IF I-NULL-PRESN-UNIT-QTY
MOVE PRESN-UNIT-QTY
ELSE
MOVE 0

OF ITEM-LOG-DATA
TO I2A-GUARANTEED-SALE
OF ITEM-LOG-DATA
TO I2A-NEVER-OUT
NOT = -1
OF ITEM-LOG-DATA
TO WS-NUMERIC2
TO I2A-ACCNTG-DEPT
TO I2A-ACCNTG-DEPT
NOT = -1
OF ITEM-LOG-DATA
TO I2A-PRESENTATION-QTY
TO I2A-PRESENTATION-QTY

END-IF.
MOVE SUPP-DISPLAY-IND

OF ITEM-LOG-DATA
TO I2A-SAMS-CNTL-LABEL

IF I-NULL-VNDR-INCRM-ORD-QTY NOT = -1
MOVE VNDR-INCRM-ORD-QTY OF ITEM-LOG-DATA
TO I2A-WH-PAL-QTY
ELSE
MOVE 0
TO I2A-WH-PAL-QTY
END-IF.
MOVE SELL-QTY
MOVE SELL-UOM-CODE
04040404040404040404-

OF ITEM-LOG-DATA
TO I2A-SERVING-QTY
OF ITEM-LOG-DATA
TO I2A-SERVING-DESC.

MOVE ZEROS TO WS-TEMP-I2A-PALLET-QTY.


IF I-NULL-PALLET-TI-QTY-CD NOT = -1 AND
I-NULL-PALLET-HI-QTY-CD NOT = -1
COMPUTE WS-TEMP-I2A-PALLET-QTY =
(VNPK-QTY
OF ITEM-LOG-DATA *
PALLET-TI-QTY OF ITEM-LOG-DATA *
PALLET-HI-QTY OF ITEM-LOG-DATA)
MOVE WS-TEMP-I2A-PALLET-QTY TO I2A-PALLET-QTY
ELSE
MOVE ZEROS TO I2A-PALLET-QTY
END-IF.
IF (I2A-SERVING-QTY > +0 AND
I2A-SERVING-DESC > SPACE)
MOVE 'Y' TO I2A-SIGN-FLAG
ELSE
MOVE 'N' TO I2A-SIGN-FLAG
END-IF.
MOVE VEND-NUM
TO VENDOR-NBR OF INF-VNDR-CNTL-SAMS-DATA
MOVE 1 TO WS-RETRY-CNT
MOVE 'N' TO DB2-DONE-SW
PERFORM A101101-GET-REVW-CYCLE-CODE
UNTIL DB2-DONE-SW = 'Y'.
IF VENDOR-FND-SW = 'Y'
MOVE 1 TO WS-RETRY-CNT
MOVE 'N' TO DB2-DONE-SW
PERFORM A101102-GET-REVW-ALPHA-CODE
UNTIL DB2-DONE-SW = 'Y'
IF REVIEW-DAY-SW = 'Y'
MOVE REVIEW-ALPHA-CODE OF S-REVW-CYCLE-DATA
TO I2A-REBUY-DAY-OF-WEEK
MOVE GROUP-MGR-INIT OF INF-VNDR-CNTL-SAMS-DATA
TO I2A-VENDOR-GMI
END-IF
END-IF.
PERFORM A101102-GET-VNDR-NAME
MOVE WS-VNDR-NAME TO I2A-VNDR-NAME.
MOVE LAST-UPDATE-USERID OF ITEM-LOG-DATA
TO I2A-MAINT-INITIALS.
MOVE 'Y'
TO I2A-MAINT-CODE.

MOVE CURR-DATE-6 TO I2A-DATE-LAST-MAINT.


PERFORM A101110-PROCESS-MQSQ-SEGMENT.
******************************************************************
** THIS PARAGRAPH EXECUTES THE CODE TO GET REVW CYCLE CODE
T**
******************************************************************
A101101-GET-REVW-CYCLE-CODE.
MOVE 'A101101-GET-REVW-CYCLE-CODE' TO WS-ABND-PARA.
EXEC SQL
SELECT S_REVW_CYCLE_CODE
,IFNULL(GROUP_MGR_INIT,' ')
INTO :INF-VNDR-CNTL-SAMS-DATA.S-REVW-CYCLE-CODE
,:INF-VNDR-CNTL-SAMS-DATA.GROUP-MGR-INIT
FROM INF_VNDR_CNTL_SAMS
WHERE VENDOR_NBR = :INF-VNDR-CNTL-SAMS-DATA.VENDOR-NBR
AND DC_NBR = 0
END-EXEC.
EVALUATE SQLCODE
WHEN 0
MOVE 'Y' TO DB2-DONE-SW VENDOR-FND-SW
WHEN +100
MOVE 'Y' TO DB2-DONE-SW
MOVE 'N' TO VENDOR-FND-SW
WHEN -911
IF WS-911-RETRY-CNT <= WS-911-RETRY-MAX
ADD 1 TO WS-911-RETRY-CNT
MOVE '-911 ON INF_VNDR_CNTL_SAMS' TO WS-DB2-TXT
MOVE SQLCODE TO WS-DB2-CODE
MOVE WS-DB2-MSG TO ERROR-DESC-TEXT
MOVE LENGTH OF WS-DB2-MSG TO ERROR-DESC-LEN
MOVE 'Y' TO WS-911-SW
PERFORM E000000-LOG-ERROR
ELSE
MOVE 'SELECT ERROR ON INF_VNDR_CNTL_SAMS'
TO WS-DB2-TXT BM-MESSAGE
MOVE SQLCODE
TO WS-DB2-CODE BM-CODE-OUT
PERFORM E100000-LOG-ERR-AND-EXIT
END-IF
WHEN -913
IF WS-RETRY-CNT <= WS-RETRY-MAX
ADD 1 TO WS-RETRY-CNT
ELSE
MOVE 'SELECT ERROR ON INF_VNDR_CNTL_SAMS'
TO WS-DB2-TXT BM-MESSAGE
MOVE SQLCODE
TO WS-DB2-CODE BM-CODE-OUT
PERFORM E100000-LOG-ERR-AND-EXIT
END-IF
WHEN OTHER
MOVE 'SELECT ERROR ON INF_VNDR_CNTL_SAMS'
TO WS-DB2-TXT BM-MESSAGE
MOVE SQLCODE
TO WS-DB2-CODE BM-CODE-OUT
PERFORM E100000-LOG-ERR-AND-EXIT
END-EVALUATE.
******************************************************************

** CONVERT REVW CYCLE CODE TO REVW ALPHA CODE


T**
******************************************************************
A101102-GET-REVW-ALPHA-CODE.
MOVE 'A101102-GET-REVW-ALPHA-CODE' TO WS-ABND-PARA.
EXEC SQL
SELECT
INTO
FROM
WHERE

REVIEW_ALPHA_CODE
:S-REVW-CYCLE-DATA.REVIEW-ALPHA-CODE
S_REVW_CYCLE
REVIEW_CYCLE_CODE
= :INF-VNDR-CNTL-SAMS-DATA.S-REVW-CYCLE-CODE

END-EXEC
EVALUATE SQLCODE
WHEN 0
MOVE 'Y' TO DB2-DONE-SW REVIEW-DAY-SW
WHEN +100
MOVE 'Y' TO DB2-DONE-SW
MOVE 'N' TO REVIEW-DAY-SW
WHEN -911
IF WS-911-RETRY-CNT <= WS-911-RETRY-MAX
ADD 1 TO WS-911-RETRY-CNT
MOVE '-911 ON S_REVW_CYCLE' TO WS-DB2-TXT
MOVE SQLCODE TO WS-DB2-CODE
MOVE WS-DB2-MSG TO ERROR-DESC-TEXT
MOVE LENGTH OF WS-DB2-MSG TO ERROR-DESC-LEN
MOVE 'Y' TO WS-911-SW
PERFORM E000000-LOG-ERROR
ELSE
MOVE 'SELECT ERROR ON S_REVW_CYCLE'
TO WS-DB2-TXT BM-MESSAGE
MOVE SQLCODE
TO WS-DB2-CODE BM-CODE-OUT
PERFORM E100000-LOG-ERR-AND-EXIT
END-IF
WHEN -913
IF WS-RETRY-CNT <= WS-RETRY-MAX
ADD 1 TO WS-RETRY-CNT
ELSE
MOVE 'SELECT ERROR ON S_REVW_CYCLE'
TO WS-DB2-TXT BM-MESSAGE
MOVE SQLCODE
TO WS-DB2-CODE BM-CODE-OUT
PERFORM E100000-LOG-ERR-AND-EXIT
END-IF
WHEN OTHER
MOVE 'SELECT ERROR ON S_REVW_CYCLE'
TO WS-DB2-TXT BM-MESSAGE
MOVE SQLCODE
TO WS-DB2-CODE BM-CODE-OUT
PERFORM E100000-LOG-ERR-AND-EXIT
END-EVALUATE.
******************************************************************
** GET UNIQUE ON V1E TO GET VENDOR NAME & ALSO SET MCLANE IND **
** IF THE ITEM HAS GROCERY FLAG
**
******************************************************************
A101102-GET-VNDR-NAME.
MOVE 'A101102-GET-VNDR-NAME' TO WS-ABND-PARA.

MOVE VENDOR-NBR
OF ITEM-LOG-DATA TO VN-NUMB.
MOVE VENDOR-DEPT-NBR OF ITEM-LOG-DATA TO VN-DP.
MOVE VENDOR-SEQ-NBR OF ITEM-LOG-DATA TO VN-SUB.
MOVE VN-NUMB TO V1A-KEY.
MOVE VN-DPSUB TO V1D-KEY.
PERFORM D700000-GU-V1A-V1D.
IF V1D-PO-ADDR-KEY = '0'
MOVE V1A-REMIT-NAME TO WS-VNDR-NAME.
IF V1D-PO-ADDR-KEY = '1'
MOVE V1D-PO-ADDR-KEY TO V1P-KEY
PERFORM D701000-GNP-V1P
MOVE V1P-NAME TO WS-VNDR-NAME.
IF V1D-MCLANE-GROC-FLAG = 'Y'
SET CA-MCLANE-WAREHOUSE TO TRUE
ELSE
SET CA-NOT-MCLANE-WAREHOUSE TO TRUE
END-IF.
******************************************************************
** THIS PARAGRAPH EXECUTES THE CODE TO PROCESS THE MQSQ SEGMENT**
******************************************************************
A101110-PROCESS-MQSQ-SEGMENT.
MOVE 'A101110-PROCESS-MQSQ-SEGMENT' TO WS-ABND-PARA.
PERFORM A101111-MOVE-MQSQ-SEGMENT
PERFORM D800000-ISRT-MQSQ
IF DUP-ISRT = 'Y'
IF CHANGE-TYPE-CODE OF PUBLISH-PENDING-DATA = 'I'
MOVE MQSQ-SEGMENT TO WS-HOLD-MQSQ
PERFORM D801000-GU-MQSQ
PERFORM D802000-DLET-MQSQ
MOVE WS-HOLD-MQSQ TO MQSQ-SEGMENT
PERFORM D800000-ISRT-MQSQ
END-IF
END-IF.
******************************************************************
** THIS PARAGRAPH EXECUTES THE CODE TO MOVE DATA TO MQSQ SEGMENT*
******************************************************************
A101111-MOVE-MQSQ-SEGMENT.
MOVE 'A101111-MOVE-MQSQ-SEGMENT' TO WS-ABND-PARA.
MOVE
MOVE
MOVE
MOVE
MOVE

30
TO MQSQ-LENGTH
SPACES
TO MQSQ-KEY
'SQ'
TO MQSQ-SUBFILE
I2A-SAMS-SEQ TO MQSQ-SEQUENCE
I2A-SAMS-DEPT-NBR
TO MQSQ-DEPT
MOVE I2A-CK-DIGIT TO MQSQ-CK-DIGIT.
******************************************************************
** FILL MQUN SEGMENT VALUES
**
******************************************************************
A101120-PROCESS-MQUN-SEGMENT.
MOVE 'A101120-PROCESS-MQUN-SEGMENT' TO WS-ABND-PARA.

MOVE
MOVE
MOVE
MOVE
MOVE
MOVE
MOVE
MOVE
MOVE

SPACES
+31
'UN'
WS-UPC-CODE-NUM
I2A-KEY
I2A-O-B-CODE
I2A-STATUS
I2A-HYPER-FLAG
'N'

TO
TO
TO
TO
TO
TO
TO
TO
TO

MQUN-SEGMENT.
MQUN-LENGTH.
MQUN-SUBFILE.
MQUN-UPC-NBR.
MQUN-ITEM-NBR.
MQUN-ORDR-BK-FLAG.
MQUN-ITEM-STATUS.
MQUN-HYPER-FLAG.
MQUN-PRIME-FLAG.

PERFORM D803000-ISRT-MQUN
IF DUP-ISRT = 'Y'
MOVE MQUN-SEGMENT TO WS-HOLD-MQUN
PERFORM D804000-GU-MQUN
IF FOUND-SW = 'Y'
MOVE WS-HOLD-MQUN TO MQUN-SEGMENT
PERFORM D805000-REPL-MQUN
END-IF
END-IF.
******************************************************************
** VERIFY IF THE PREVIOUS UPC TO BE DELETED FROM MQUN
**
******************************************************************
A101121-VERIFY-AND-DLET-MQUN.
MOVE 'A101121-VERIFY-TO-DLET-MQUN' TO WS-ABND-PARA.
MOVE WS-OLD-UPC-CODE-NUM
TO UPC-NBR OF UPC-ITEM-DATA
MOVE ITEM-NBR OF ITEM-LOG-DATA TO ITEM-NBR OF UPC-ITEM-DATA
MOVE 1 TO WS-RETRY-CNT
MOVE 'N' TO DB2-DONE-SW
PERFORM A101122-SLCT-UPC-ITEM
UNTIL DB2-DONE-SW = 'Y'
IF UPC-FOUND-SW = 'Y'
CONTINUE
ELSE
MOVE SPACES
MOVE +31
MOVE 'UN'
MOVE WS-OLD-UPC-CODE-NUM
MOVE I2A-KEY
PERFORM D804000-GU-MQUN
IF FOUND-SW = 'Y'
PERFORM D806000-DLET-MQUN
END-IF
END-IF.

TO
TO
TO
TO
TO

MQUN-SEGMENT
MQUN-LENGTH
MQUN-SUBFILE
MQUN-UPC-NBR
MQUN-ITEM-NBR

******************************************************************
** SELECT FROM UPC-ITEM TABLE
**
******************************************************************
A101122-SLCT-UPC-ITEM.
MOVE 'A101122-SLCT-UPC-ITEM' TO WS-ABND-PARA.
EXEC SQL
SELECT
INTO
FROM
WHERE

'Y'
:UPC-FOUND-SW
UPC_ITEM
UPC_NBR = :UPC-ITEM-DATA.UPC-NBR

AND ITEM_NBR = :UPC-ITEM-DATA.ITEM-NBR


END-EXEC.
EVALUATE SQLCODE
WHEN 0
MOVE 'Y' TO DB2-DONE-SW
WHEN +100
MOVE 'Y' TO DB2-DONE-SW
MOVE 'N' TO UPC-FOUND-SW
WHEN -911
IF WS-911-RETRY-CNT <= WS-911-RETRY-MAX
ADD 1 TO WS-911-RETRY-CNT
MOVE '-911 ON UPC_ITEM ' TO WS-DB2-TXT
MOVE SQLCODE TO WS-DB2-CODE
MOVE WS-DB2-MSG TO ERROR-DESC-TEXT
MOVE LENGTH OF WS-DB2-MSG TO ERROR-DESC-LEN
MOVE 'Y' TO WS-911-SW
PERFORM E000000-LOG-ERROR
ELSE
MOVE 'SELECT ERROR ON UPC_ITEM '
TO WS-DB2-TXT BM-MESSAGE
MOVE SQLCODE
TO WS-DB2-CODE BM-CODE-OUT
PERFORM E100000-LOG-ERR-AND-EXIT
END-IF
WHEN -913
IF WS-RETRY-CNT <= WS-RETRY-MAX
ADD 1 TO WS-RETRY-CNT
ELSE
MOVE 'SELECT ERROR ON UPC_ITEM '
TO WS-DB2-TXT BM-MESSAGE
MOVE SQLCODE
TO WS-DB2-CODE BM-CODE-OUT
PERFORM E100000-LOG-ERR-AND-EXIT
END-IF
WHEN OTHER
MOVE 'SELECT ERROR ON UPC_ITEM '
TO WS-DB2-TXT BM-MESSAGE
MOVE SQLCODE
TO WS-DB2-CODE BM-CODE-OUT
PERFORM E100000-LOG-ERR-AND-EXIT
END-EVALUATE.
******************************************************************
** THIS PARAGRAPH MOVES THE ITEM TABLE COLUMNS TO THE
**
** CORRESPONDING FIELDS ON THE I2P-SEGMENT
**
******************************************************************
A101200-MOVE-I2P-DATA.
MOVE 'A101200-MOVE-I2P-DATA' TO WS-ABND-PARA.
INITIALIZE I2P-SEGMENT.
MOVE 1
COMPUTE I2P-LENGTH = 20 + (
MOVE 'SB'
MOVE 'A'
MOVE CURR-DATE-6
MOVE LAST-UPDATE-USERID OF
MOVE SIGNING-DESC

TO I2P-NBR-OCCURS.
I2P-NBR-OCCURS * 25 ).
TO I2P-KEY.
TO I2P-SEG-STATUS.
TO I2P-LAST-CHG-DATE.
ITEM-LOG-DATA
TO I2P-CHG-INIT.
OF ITEM-LOG-DATA
TO I2P-COMMENTS(1).

01-

******************************************************************
** THIS PARAGRAPH MOVES THE VERIFIES THE PRICE-FLAG IN I2B5
**
******************************************************************
A102100-VERIFY-PRICE-FLAG.
MOVE 'A102100-VERIFY-PRICE-FLAG' TO WS-ABND-PARA.
IF I2B5-PRICE-FLG = PROMPT-PRICE-IND OF ITEM-LOG-DATA
OR ( I2B5-PRICE-FLG = ' ' AND PROMPT-PRICE-IND
OF ITEM-LOG-DATA = 'N')
OR ( I2B5-PRICE-FLG = 'N' AND PROMPT-PRICE-IND
OF ITEM-LOG-DATA = ' ')
CONTINUE
ELSE
PERFORM UNTIL EOF-I2B5 = 'N'
MOVE PROMPT-PRICE-IND OF ITEM-LOG-DATA
TO I2B5-PRICE-FLG
MOVE CURRENT-DATE
TO I2B5-LAST-CHG-DATE
MOVE CURR-TIME-4
TO I2B5-LAST-CHG-TIME
MOVE LAST-UPDATE-USERID OF ITEM-LOG-DATA
TO I2B5-LAST-CHG-INIT
MOVE 'WLU0'
TO I2B5-LAST-CHG-TERMID
MOVE 'S'
TO I2B5-LAST-CHG-PGMID
PERFORM D507000-REPL-I2B5
PERFORM D303000-GNP-I2B5
END-PERFORM
END-IF.
******************************************************************
** THIS PARAGRAPH EXECUTES THE CODE TO UPDATE/INSERT/DELETE
**
** LEGACY HOST DC INFO DEPENDING ON THE CHANGE TYPE CODE
**
******************************************************************
A200000-PROCESS-DC.
MOVE 'A200000-PROCESS-DC' TO WS-ABND-PARA.
MOVE
TO
MOVE
TO
MOVE
TO

ITEM-NBR
ITEM-NBR
DC-NBR
DC-NBR
TRIGGER-TS
LOG-TS

OF
OF
OF
OF
OF
OF

PUBLISH-PENDING-DATA
ITEM-DC-LOG-DATA
PUBLISH-PENDING-DATA
ITEM-DC-LOG-DATA
PUBLISH-PENDING-DATA
ITEM-DC-LOG-DATA.

MOVE 1 TO WS-RETRY-CNT
MOVE 'N' TO DB2-DONE-SW
PERFORM A200500-SLCT-ITEM-DC-LOG
UNTIL DB2-DONE-SW = 'Y'
MOVE
TO
MOVE
TO

LEGACY-ITEM-NBR OF ITEM-LEGACY-XREF-DATA
I2A-KEY-SAMS
DC-NBR OF ITEM-DC-LOG-DATA
I2B-WHSE-NUM

PERFORM D501000-GU-I2A-I2B-I2B5
IF FOUND-SW = 'N'
IF CHANGE-TYPE-CODE OF PUBLISH-PENDING-DATA = 'U'
MOVE 'I' TO CHANGE-TYPE-CODE OF PUBLISH-PENDING-DATA
END-IF
ELSE
IF CHANGE-TYPE-CODE OF PUBLISH-PENDING-DATA = 'I'
MOVE 'U' TO CHANGE-TYPE-CODE OF PUBLISH-PENDING-DATA

END-IF
END-IF.
EVALUATE CHANGE-TYPE-CODE OF PUBLISH-PENDING-DATA
WHEN 'I'
PERFORM D300000-GU-I2A
IF FOUND-SW = 'Y'
PERFORM A201000-INSERT-ITEM-DC
ELSE
STRING 'I2A SEG NOT FOUND FOR DC ISRT ', I2A-KEY
DELIMITED BY SIZE
INTO ERROR-DESC-TEXT
MOVE 42 TO ERROR-DESC-LEN
MOVE 1 TO WS-RETRY-CNT
MOVE 'N' TO DB2-DONE-SW
PERFORM X000100-ISRT-PUB-PENDG-ERR
UNTIL DB2-DONE-SW = 'Y'
END-IF
WHEN 'U'
PERFORM A202000-UPDATE-ITEM-DC
WHEN OTHER
MOVE 'INVALID CHANGE TYPE FOR ITEM_DC '
TO ERROR-DESC-TEXT
MOVE 32 TO ERROR-DESC-LEN
MOVE 1 TO WS-RETRY-CNT
MOVE 'N' TO DB2-DONE-SW
PERFORM X000100-ISRT-PUB-PENDG-ERR
UNTIL DB2-DONE-SW = 'Y'
END-EVALUATE.
******************************************************************
** SELECT FROM ITEM_DC TABLE
**
******************************************************************
A200500-SLCT-ITEM-DC-LOG.
MOVE 'A200500-SLCT-ITEM-DC-LOG' TO WS-ABND-PARA.
EXEC SQL
SELECT ITEM_NBR
,DC_NBR
,TOT_ON_HAND_QTY
,ON_ORDR_QTY
,RESERVED_QTY
,LEAD_TIME_QTY
,INVENTORY_AMT
,ITEM_STATUS_CODE
,VNPK_COST_AMT
,WHPK_SELL_AMT
,YTD_WHPK_SELL_AMT
,YTD_UNIT_SALES_QTY
,QTD_UNIT_SALES_QTY
,QTD_VNPK_RCVD_QTY
,CROSSREF_PRIME_IND
,CANCEL_WHN_OUT_DT
,LAST_RCVD_DATE
,LAST_UPDATE_USERID
INTO :ITEM-DC-LOG-DATA.ITEM-NBR
,:ITEM-DC-LOG-DATA.DC-NBR
,:ITEM-DC-LOG-DATA.TOT-ON-HAND-QTY
,:ITEM-DC-LOG-DATA.ON-ORDR-QTY
,:ITEM-DC-LOG-DATA.RESERVED-QTY

,:ITEM-DC-LOG-DATA.LEAD-TIME-QTY
,:ITEM-DC-LOG-DATA.INVENTORY-AMT
,:ITEM-DC-LOG-DATA.ITEM-STATUS-CODE
,:ITEM-DC-LOG-DATA.VNPK-COST-AMT
,:ITEM-DC-LOG-DATA.WHPK-SELL-AMT
,:ITEM-DC-LOG-DATA.YTD-WHPK-SELL-AMT
,:ITEM-DC-LOG-DATA.YTD-UNIT-SALES-QTY
,:ITEM-DC-LOG-DATA.QTD-UNIT-SALES-QTY
,:ITEM-DC-LOG-DATA.QTD-VNPK-RCVD-QTY
,:ITEM-DC-LOG-DATA.CROSSREF-PRIME-IND
,:ITEM-DC-LOG-DATA.CANCEL-WHN-OUT-DT
:IDC-NULL-CANCEL-WHN-OUT-DT
,:ITEM-DC-LOG-DATA.LAST-RCVD-DATE
:IDC-NULL-LAST-RCVD-DATE
,:ITEM-DC-LOG-DATA.LAST-UPDATE-USERID
FROM ITEM_DC_LOG
WHERE ITEM_NBR = :ITEM-DC-LOG-DATA.ITEM-NBR
AND DC_NBR = :ITEM-DC-LOG-DATA.DC-NBR
AND LOG_TS = :ITEM-DC-LOG-DATA.LOG-TS
END-EXEC.
EVALUATE SQLCODE
WHEN 0
MOVE 'Y' TO DB2-DONE-SW
WHEN +100
MOVE 'ITEM_DC_LOG ROW NOT FOUND' TO WS-DB2-TXT
MOVE SQLCODE TO WS-DB2-CODE
MOVE WS-DB2-MSG TO ERROR-DESC-TEXT
MOVE LENGTH OF WS-DB2-MSG TO ERROR-DESC-LEN
PERFORM E000000-LOG-ERROR
WHEN -911
IF WS-911-RETRY-CNT <= WS-911-RETRY-MAX
ADD 1 TO WS-911-RETRY-CNT
MOVE '-911 ON ITEM_DC_LOG ' TO WS-DB2-TXT
MOVE SQLCODE TO WS-DB2-CODE
MOVE WS-DB2-MSG TO ERROR-DESC-TEXT
MOVE LENGTH OF WS-DB2-MSG TO ERROR-DESC-LEN
MOVE 'Y' TO WS-911-SW
PERFORM E000000-LOG-ERROR
ELSE
MOVE 'SELECT ERROR ON ITEM_DC_LOG '
TO WS-DB2-TXT BM-MESSAGE
MOVE SQLCODE
TO WS-DB2-CODE BM-CODE-OUT
PERFORM E100000-LOG-ERR-AND-EXIT
END-IF
WHEN -913
IF WS-RETRY-CNT <= WS-RETRY-MAX
ADD 1 TO WS-RETRY-CNT
ELSE
MOVE 'SELECT ERROR ON ITEM_DC_LOG '
TO WS-DB2-TXT BM-MESSAGE
MOVE SQLCODE
TO WS-DB2-CODE BM-CODE-OUT
PERFORM E100000-LOG-ERR-AND-EXIT
END-IF
WHEN OTHER
MOVE 'SELECT ERROR ON ITEM_DC_LOG '
TO WS-DB2-TXT BM-MESSAGE
MOVE SQLCODE

TO WS-DB2-CODE BM-CODE-OUT
PERFORM E100000-LOG-ERR-AND-EXIT
END-EVALUATE.
*
******************************************************************
** PROCESS ITEM/DC INSERT
**
******************************************************************
A201000-INSERT-ITEM-DC.
MOVE 'A201000-INSERT-ITEM-DC' TO WS-ABND-PARA.

050505050505-

INITIALIZE I2B-SEGMENT I2B5-SEGMENT.


MOVE CURR-DATE-8 TO I2B-CREATION-DATE.
MOVE CURR-DATE-8 TO I2B5-EFF-DATE.
PERFORM A201100-MOVE-I2B-DATA.
PERFORM D503000-ISRT-I2B-I2B5.
INITIALIZE WC6812-LINK-AREA.
MOVE 'W' TO WC6812-STORE-FLAG.
MOVE LAST-UPDATE-USERID OF ITEM-DC-LOG-DATA TO
WC6812-USER-ID.
PERFORM D508000-CALL-WC6812.
*
*
******************************************************************
** PROCESS ITEM/DC UPDATE
**
******************************************************************
A202000-UPDATE-ITEM-DC.
MOVE 'A202000-UPDATE-ITEM-DC' TO WS-ABND-PARA.
PERFORM A201100-MOVE-I2B-DATA
IF I2B5-SW = 'Y'
PERFORM D506000-REPL-I2B-I2B5
ELSE
PERFORM D505000-REPL-I2B
PERFORM D504000-ISRT-I2B5
END-IF.
*
******************************************************************
** THIS PARAGRAPH MOVES THE ITEM_DC TABLE COLUMNS TO THE
**
** CORRESPONDING FIELDS ON THE I2B-SEGMENT & I2B5-SEGMENT.
**
******************************************************************
A201100-MOVE-I2B-DATA.
MOVE 'A201100-MOVE-I2B-DATA' TO WS-ABND-PARA.
MOVE LEGACY-ITEM-NBR

OF ITEM-LEGACY-XREF-DATA
TO I2A-KEY-SAMS.
MOVE DC-NBR
OF ITEM-DC-LOG-DATA
TO I2B-WHSE-NUM.
MOVE ITEM-STATUS-CODE
OF ITEM-DC-LOG-DATA
TO I2B-STATUS.
MOVE TOT-ON-HAND-QTY
OF ITEM-DC-LOG-DATA
TO I2B-ON-HAND-QTY.
MOVE ON-ORDR-QTY
OF ITEM-DC-LOG-DATA
TO I2B-ON-ORDR-QTY.
MOVE RESERVED-QTY
OF ITEM-DC-LOG-DATA
TO I2B-RESERVED-QTY.
IF IDC-NULL-CANCEL-WHN-OUT-DT NOT = -1
MOVE CANCEL-WHN-OUT-DT OF ITEM-DC-LOG-DATA
TO WMD-CAL-DATE
MOVE 'A'
TO WMD-FUNCT
CALL 'WMDATE' USING WMDATE-PARMS

IF WMD-STAT = SPACES
MOVE WMD-YMD
MOVE HOLD-DATE-7
ELSE
MOVE 0
END-IF
ELSE
MOVE 0
END-IF.
MOVE YTD-VNPK-RCVD-QTY
MOVE YTD-WHPK-SELL-AMT
MOVE YTD-UNIT-SALES-QTY
MOVE LEAD-TIME-QTY
MOVE INVENTORY-AMT
MOVE VNPK-COST-AMT
MOVE WHPK-SELL-AMT
MOVE QTD-UNIT-SALES-QTY
MOVE QTD-VNPK-RCVD-QTY
MOVE CROSSREF-PRIME-IND

TO HOLD-YMD
TO I2B-CWO-DATE-CYYMMDD
TO I2B-CWO-DATE-CYYMMDD
TO I2B-CWO-DATE-CYYMMDD
OF ITEM-DC-LOG-DATA
TO I2B-YTD-WP-RECVD.
OF ITEM-DC-LOG-DATA
TO I2B-YTD-COST.
OF ITEM-DC-LOG-DATA
TO I2B-YTD-SALES.
OF ITEM-DC-LOG-DATA
TO I2B-LEAD-TIME.
OF ITEM-DC-LOG-DATA
TO I2B-REVALUE-AMT.
OF ITEM-DC-LOG-DATA
TO I2B5-REG-VNPK-CST.
OF ITEM-DC-LOG-DATA
TO I2B5-WHPK-SELL.
OF ITEM-DC-LOG-DATA
TO I2B-QTD-SALES.
OF ITEM-DC-LOG-DATA
TO I2B-QTD-WP-RECVD.
OF ITEM-DC-LOG-DATA
TO I2B-REPLENISH-PRTY.

IF IDC-NULL-LAST-RCVD-DATE NOT = -1
MOVE LAST-RCVD-DATE OF ITEM-DC-LOG-DATA
TO WMD-CAL-DATE
MOVE 'A'
TO WMD-FUNCT
CALL 'WMDATE' USING WMDATE-PARMS
IF WMD-STAT = SPACES
MOVE WMD-YMD
TO I2B-LST-RCVD-DATE
ELSE
MOVE '000000'
TO I2B-LST-RCVD-DATE
END-IF
ELSE
MOVE '000000'
TO I2B-LST-RCVD-DATE
END-IF.
MOVE VNPK-COST-AMT
MOVE WHPK-SELL-AMT
MOVE CURRENT-DATE
MOVE CURR-TIME-4
MOVE LAST-UPDATE-USERID
MOVE 'WLU0'
MOVE 'S'

OF ITEM-DC-LOG-DATA
TO I2B5-REG-VNPK-CST.
OF ITEM-DC-LOG-DATA
TO I2B5-WHPK-SELL.
TO I2B5-LAST-CHG-DATE.
TO I2B5-LAST-CHG-TIME.
OF ITEM-DC-LOG-DATA
TO I2B5-LAST-CHG-INIT.
TO I2B5-LAST-CHG-TERMID.
TO I2B5-LAST-CHG-PGMID.

******************************************************************
** THIS PARAGRAPH EXECUTES THE CODE TO UPDATE/INSERT/DELETE
**
** LEGACY HOST CLUB_ITEM INFO DEPENDING ON THE CHANGE TYPE CODE**
******************************************************************

A300000-PROCESS-CLUB.
MOVE 'A300000-PROCESS-CLUB' TO WS-ABND-PARA.
MOVE
TO
MOVE
TO
MOVE
TO

ITEM-NBR OF PUBLISH-PENDING-DATA
ITEM-NBR OF CLUB-ITEM-LOG-DATA
DC-NBR OF PUBLISH-PENDING-DATA
CLUB-NBR OF CLUB-ITEM-LOG-DATA
TRIGGER-TS OF PUBLISH-PENDING-DATA
LOG-TS
OF CLUB-ITEM-LOG-DATA.

MOVE 1 TO WS-RETRY-CNT
MOVE 'N' TO DB2-DONE-SW
PERFORM A300500-SLCT-CLUB-ITEM-LOG
UNTIL DB2-DONE-SW = 'Y'
MOVE
TO
MOVE
TO

LEGACY-ITEM-NBR OF ITEM-LEGACY-XREF-DATA
I2A-KEY-SAMS
CLUB-NBR OF CLUB-ITEM-LOG-DATA
I2B-WHSE-NUM

PERFORM D501000-GU-I2A-I2B-I2B5
IF FOUND-SW = 'N'
IF CHANGE-TYPE-CODE OF PUBLISH-PENDING-DATA = 'U'
MOVE 'I' TO CHANGE-TYPE-CODE
OF PUBLISH-PENDING-DATA
END-IF
ELSE
IF CHANGE-TYPE-CODE OF PUBLISH-PENDING-DATA = 'I'
MOVE 'U' TO CHANGE-TYPE-CODE
OF PUBLISH-PENDING-DATA
END-IF
END-IF.
EVALUATE CHANGE-TYPE-CODE OF PUBLISH-PENDING-DATA
WHEN 'I'
PERFORM D300000-GU-I2A
IF FOUND-SW = 'Y'
PERFORM A301000-INSERT-CLUB-ITEM
ELSE
STRING 'I2A SEG NOT FOUND FOR CLUB ISRT' , I2A-KEY
DELIMITED BY SIZE
INTO ERROR-DESC-TEXT
MOVE 42 TO ERROR-DESC-LEN
MOVE 1 TO WS-RETRY-CNT
MOVE 'N' TO DB2-DONE-SW
PERFORM X000100-ISRT-PUB-PENDG-ERR
UNTIL DB2-DONE-SW = 'Y'
END-IF
WHEN 'U'
PERFORM A302000-UPDATE-CLUB-ITEM
WHEN OTHER
MOVE 'INVALID CHANGE TYPE FOR CLUB_ITEM'
TO ERROR-DESC-TEXT
MOVE 33 TO ERROR-DESC-LEN
MOVE 1 TO WS-RETRY-CNT
MOVE 'N' TO DB2-DONE-SW
PERFORM X000100-ISRT-PUB-PENDG-ERR
UNTIL DB2-DONE-SW = 'Y'
END-EVALUATE.

******************************************************************
** SELECT FROM CLUB_ITEM TABLE
**
******************************************************************
A300500-SLCT-CLUB-ITEM-LOG.
MOVE 'A300500-SLCT-CLUB-ITEM-LOG' TO WS-ABND-PARA.

01-

01-

EXEC SQL
SELECT ITEM_NBR
,CLUB_NBR
,ITEM_STATUS_CODE
,UNIT_RETAIL_AMT
,LINK_ITEM_NBR
,NON_MBR_UPCHRG_IND
,UNIT_RETAIL_CHG_DT
,WHPK_SELL_AMT
,VNPK_COST_AMT
,ITEM_CREATE_DT
,CANCEL_WHN_OUT_DT
,CNCL_UNIT_RTL_AMT
,LEAD_TIME_QTY
,LAST_CHANGE_USERID
INTO :CLUB-ITEM-LOG-DATA.ITEM-NBR
,:CLUB-ITEM-LOG-DATA.CLUB-NBR
,:CLUB-ITEM-LOG-DATA.ITEM-STATUS-CODE
,:CLUB-ITEM-LOG-DATA.UNIT-RETAIL-AMT
,:CLUB-ITEM-LOG-DATA.LINK-ITEM-NBR
:CLB-NULL-LINK-ITEM-NBR
,:CLUB-ITEM-LOG-DATA.NON-MBR-UPCHRG-IND
,:CLUB-ITEM-LOG-DATA.UNIT-RETAIL-CHG-DT
:CLB-NULL-UNIT-RETAIL-CHG-DT
,:CLUB-ITEM-LOG-DATA.WHPK-SELL-AMT
,:CLUB-ITEM-LOG-DATA.VNPK-COST-AMT
,:CLUB-ITEM-LOG-DATA.ITEM-CREATE-DT
,:CLUB-ITEM-LOG-DATA.CANCEL-WHN-OUT-DT
:CLB-NULL-CANCEL-WHN-OUT-DT
,:CLUB-ITEM-LOG-DATA.CNCL-UNIT-RTL-AMT
:CLB-NULL-CNCL-UNIT-RTL-AMT
,:CLUB-ITEM-LOG-DATA.LEAD-TIME-QTY
:CLB-NULL-LEAD-TIME-QTY
,:CLUB-ITEM-LOG-DATA.LAST-CHANGE-USERID
FROM CLUB_ITEM_LOG
WHERE ITEM_NBR = :CLUB-ITEM-LOG-DATA.ITEM-NBR
AND CLUB_NBR = :CLUB-ITEM-LOG-DATA.CLUB-NBR
AND LOG_TS = :CLUB-ITEM-LOG-DATA.LOG-TS
END-EXEC.
EVALUATE SQLCODE
WHEN 0
MOVE 'Y' TO DB2-DONE-SW
WHEN +100
MOVE 'CLUB_ITEM_LOG ROW NOT FOUND' TO WS-DB2-TXT
MOVE SQLCODE TO WS-DB2-CODE
MOVE WS-DB2-MSG TO ERROR-DESC-TEXT
MOVE LENGTH OF WS-DB2-MSG TO ERROR-DESC-LEN
PERFORM E000000-LOG-ERROR
WHEN -911
IF WS-911-RETRY-CNT <= WS-911-RETRY-MAX
ADD 1 TO WS-911-RETRY-CNT
MOVE '-911 ON CLUB_ITEM_LOG ' TO WS-DB2-TXT

MOVE SQLCODE TO WS-DB2-CODE


MOVE WS-DB2-MSG TO ERROR-DESC-TEXT
MOVE LENGTH OF WS-DB2-MSG TO ERROR-DESC-LEN
MOVE 'Y' TO WS-911-SW
PERFORM E000000-LOG-ERROR
ELSE
MOVE 'SELECT ERROR ON CLUB_ITEM_LOG '
TO WS-DB2-TXT BM-MESSAGE
MOVE SQLCODE
TO WS-DB2-CODE BM-CODE-OUT
PERFORM E100000-LOG-ERR-AND-EXIT
END-IF
WHEN -913
IF WS-RETRY-CNT <= WS-RETRY-MAX
ADD 1 TO WS-RETRY-CNT
ELSE
MOVE 'SELECT ERROR ON CLUB_ITEM_LOG '
TO WS-DB2-TXT BM-MESSAGE
MOVE SQLCODE
TO WS-DB2-CODE BM-CODE-OUT
PERFORM E100000-LOG-ERR-AND-EXIT
END-IF
WHEN OTHER
MOVE 'SELECT ERROR ON CLUB_ITEM_LOG '
TO WS-DB2-TXT BM-MESSAGE
MOVE SQLCODE
TO WS-DB2-CODE BM-CODE-OUT
PERFORM E100000-LOG-ERR-AND-EXIT
END-EVALUATE.
******************************************************************
** PROCESS CLUB/ITEM INSERT
**
******************************************************************
A301000-INSERT-CLUB-ITEM.
MOVE 'A301000-INSERT-CLUB-ITEM' TO WS-ABND-PARA.

0505050505-

INITIALIZE I2B-SEGMENT I2B5-SEGMENT.


PERFORM A301100-MOVE-I2B-DATA.
PERFORM D503000-ISRT-I2B-I2B5.
INITIALIZE WC6812-LINK-AREA.
MOVE 'S' TO WC6812-STORE-FLAG.
MOVE LAST-CHANGE-USERID OF CLUB-ITEM-LOG-DATA TO
WC6812-USER-ID.
PERFORM D508000-CALL-WC6812.
******************************************************************
** PROCESS CLUB/ITEM UPDATE
**
******************************************************************
A302000-UPDATE-CLUB-ITEM.
MOVE 'A302000-UPDATE-CLUB-ITEM' TO WS-ABND-PARA.
PERFORM A301100-MOVE-I2B-DATA.
IF I2B5-SW = 'Y'
PERFORM D506000-REPL-I2B-I2B5
ELSE
PERFORM D505000-REPL-I2B
PERFORM D504000-ISRT-I2B5
END-IF.

******************************************************************
** THIS PARAGRAPH EXECUTES THE CODE TO MOVE CLUB_ITEM DATA TO **
** LEGACY HOST I2B & I2B5 SEGMENT
**
******************************************************************
A301100-MOVE-I2B-DATA.
MOVE 'A301100-MOVE-I2B-DATA' TO WS-ABND-PARA.
MOVE CLUB-NBR

OF CLUB-ITEM-LOG-DATA
TO I2B-WHSE-NUM
MOVE ITEM-STATUS-CODE
OF CLUB-ITEM-LOG-DATA
TO I2B-STATUS.
MOVE ITEM-CREATE-DT
OF CLUB-ITEM-LOG-DATA
TO WMD-CAL-DATE
MOVE 'A'
TO WMD-FUNCT
CALL 'WMDATE' USING WMDATE-PARMS
IF WMD-STAT = SPACES
MOVE WMD-CYMD
TO HOLD-CYMD
MOVE HOLD-DATE-8
TO I2B-CREATION-DATE
END-IF.
IF CLB-NULL-CANCEL-WHN-OUT-DT NOT = -1
MOVE CANCEL-WHN-OUT-DT OF CLUB-ITEM-LOG-DATA
TO WMD-CAL-DATE
MOVE 'A'
TO WMD-FUNCT
CALL 'WMDATE' USING WMDATE-PARMS
IF WMD-STAT = SPACES
MOVE WMD-YMD
TO HOLD-YMD
MOVE HOLD-DATE-7
TO I2B-CWO-DATE-CYYMMDD
ELSE
MOVE 0
TO I2B-CWO-DATE-CYYMMDD
END-IF
ELSE
MOVE 0
TO I2B-CWO-DATE-CYYMMDD
END-IF.
IF CLB-NULL-CNCL-UNIT-RTL-AMT NOT = - 1
MOVE CNCL-UNIT-RTL-AMT OF CLUB-ITEM-LOG-DATA
TO I2B-CWO-ORG-PRICE
ELSE
MOVE 0
TO I2B-CWO-ORG-PRICE
END-IF.
IF CLB-NULL-LEAD-TIME-QTY NOT = -1
MOVE LEAD-TIME-QTY
OF CLUB-ITEM-LOG-DATA
TO I2B-LEAD-TIME
ELSE
MOVE 0
TO I2B-LEAD-TIME
END-IF.
MOVE CLUB-NBR
OF CLUB-ITEM-LOG-DATA
TO I2B-WHSE-NUM.
MOVE UNIT-RETAIL-AMT
OF CLUB-ITEM-LOG-DATA
TO I2B5-UNIT-RETAIL.
IF CLB-NULL-LINK-ITEM-NBR NOT = -1
IF LINK-ITEM-NBR OF CLUB-ITEM-LOG-DATA NOT = 0
IF LINK-ITEM-NBR OF CLUB-ITEM-LOG-DATA NOT = ITEM-NBR
OF CLUB-ITEM-LOG-DATA
MOVE LINK-ITEM-NBR OF CLUB-ITEM-LOG-DATA
TO ITEM-NBR
OF ITEM-LEGACY-XREF-DATA
MOVE 1 TO WS-RETRY-CNT
MOVE 'N' TO DB2-DONE-SW
PERFORM A301110-GET-LEGACY-ITEM
UNTIL DB2-DONE-SW = 'Y'

0101010101010101010101-

MOVE LEGACY-ITEM-NBR OF ITEM-LEGACY-XREF-DATA


TO I2B5-LINK-ITEM
ELSE
MOVE LEGACY-ITEM-NBR OF ITEM-LEGACY-XREF-DATA
TO I2B5-LINK-ITEM
END-IF
ELSE
MOVE 0
TO I2B5-LINK-ITEM
END-IF
END-IF.
MOVE NON-MBR-UPCHRG-IND OF CLUB-ITEM-LOG-DATA
TO I2B5-UPCHG-FLAG.
IF CHANGE-TYPE-CODE OF PUBLISH-PENDING-DATA = 'I'
MOVE ITEM-NBR
OF CLUB-ITEM-LOG-DATA
TO ITEM-NBR OF ITEM-DATA
MOVE 1 TO WS-RETRY-CNT
MOVE 'N' TO DB2-DONE-SW
PERFORM A301120-GET-PRICE-IND
MOVE PROMPT-PRICE-IND OF ITEM-DATA
TO I2B5-PRICE-FLG
END-IF.
IF CLB-NULL-UNIT-RETAIL-CHG-DT NOT = -1
MOVE UNIT-RETAIL-CHG-DT OF CLUB-ITEM-LOG-DATA
TO WMD-CAL-DATE
MOVE 'A'
TO WMD-FUNCT
CALL 'WMDATE' USING WMDATE-PARMS
IF WMD-STAT = SPACES
MOVE WMD-CYMD
TO I2B5-EFF-DATE
ELSE
MOVE SPACES
TO I2B5-EFF-DATE
END-IF
ELSE
MOVE SPACES
TO I2B5-EFF-DATE
END-IF.
MOVE WHPK-SELL-AMT
OF CLUB-ITEM-LOG-DATA
TO I2B5-WHPK-SELL
MOVE VNPK-COST-AMT
OF CLUB-ITEM-LOG-DATA
TO I2B5-REG-VNPK-CST
MOVE CURRENT-DATE
TO I2B5-LAST-CHG-DATE.
MOVE CURR-TIME-4
TO I2B5-LAST-CHG-TIME.
MOVE LAST-CHANGE-USERID OF CLUB-ITEM-LOG-DATA
TO I2B5-LAST-CHG-INIT.
MOVE 'WLU0'
TO I2B5-LAST-CHG-TERMID.
MOVE 'S'
TO I2B5-LAST-CHG-PGMID.
******************************************************************
** GET LINK-ITEM # FROM ITEM_LEGACY_XREF TABLE
**
******************************************************************
A301110-GET-LEGACY-ITEM.
MOVE 'A301110-GET-LEGACY-ITEM' TO WS-ABND-PARA.
EXEC SQL
SELECT LEGACY_ITEM_NBR
INTO :ITEM-LEGACY-XREF-DATA.LEGACY-ITEM-NBR
FROM ITEM_LEGACY_XREF
WHERE ITEM_NBR = :ITEM-LEGACY-XREF-DATA.ITEM-NBR
END-EXEC.
EVALUATE SQLCODE
WHEN 0

MOVE 'Y' TO DB2-DONE-SW


WHEN +100
MOVE 'ITEM_LEGACY_XREF ROW NOT FOUND ' TO WS-DB2-TXT
MOVE SQLCODE TO WS-DB2-CODE
MOVE WS-DB2-MSG TO ERROR-DESC-TEXT
MOVE LENGTH OF WS-DB2-MSG TO ERROR-DESC-LEN
PERFORM E000000-LOG-ERROR
WHEN -911
IF WS-911-RETRY-CNT <= WS-911-RETRY-MAX
ADD 1 TO WS-911-RETRY-CNT
MOVE '-911 ON ITEM_LEGACY_XREF' TO WS-DB2-TXT
MOVE SQLCODE TO WS-DB2-CODE
MOVE WS-DB2-MSG TO ERROR-DESC-TEXT
MOVE LENGTH OF WS-DB2-MSG TO ERROR-DESC-LEN
MOVE 'Y' TO WS-911-SW
PERFORM E000000-LOG-ERROR
ELSE
MOVE 'SELECT ERROR ON ITEM_LEGACY_XREF'
TO WS-DB2-TXT BM-MESSAGE
MOVE SQLCODE
TO WS-DB2-CODE BM-CODE-OUT
PERFORM E100000-LOG-ERR-AND-EXIT
END-IF
WHEN -913
IF WS-RETRY-CNT <= WS-RETRY-MAX
ADD 1 TO WS-RETRY-CNT
ELSE
MOVE 'SELECT ERROR ON ITEM_LEGACY_XREF'
TO WS-DB2-TXT BM-MESSAGE
MOVE SQLCODE
TO WS-DB2-CODE BM-CODE-OUT
PERFORM E100000-LOG-ERR-AND-EXIT
END-IF
WHEN OTHER
MOVE 'SELECT ERROR ON ITEM_LEGACY_XREF'
TO WS-DB2-TXT BM-MESSAGE
MOVE SQLCODE
TO WS-DB2-CODE BM-CODE-OUT
PERFORM E100000-LOG-ERR-AND-EXIT
END-EVALUATE.
******************************************************************
*
GET THE PROMPT-PRICE-IND FROM THE ITEM TABLE
**
******************************************************************
A301120-GET-PRICE-IND.
MOVE 'A301120-GET-PRICE-IND' TO WS-ABND-PARA.
EXEC SQL
SELECT PROMPT_PRICE_IND
INTO :ITEM-DATA.PROMPT-PRICE-IND
FROM ITEM
WHERE ITEM_NBR = :ITEM-DATA.ITEM-NBR
END-EXEC.
EVALUATE SQLCODE
WHEN 0
MOVE 'Y' TO DB2-DONE-SW
WHEN +100
MOVE 'Y' TO DB2-DONE-SW
MOVE 'N' TO PROMPT-PRICE-IND OF ITEM-DATA
WHEN -911

IF WS-911-RETRY-CNT <= WS-911-RETRY-MAX


ADD 1 TO WS-911-RETRY-CNT
MOVE '-911 ON ITEM TABLE' TO WS-DB2-TXT
MOVE SQLCODE TO WS-DB2-CODE
MOVE WS-DB2-MSG TO ERROR-DESC-TEXT
MOVE LENGTH OF WS-DB2-MSG TO ERROR-DESC-LEN
MOVE 'Y' TO WS-911-SW
PERFORM E000000-LOG-ERROR
ELSE
MOVE 'SELECT ERROR ON ITEM TABLE'
TO WS-DB2-TXT BM-MESSAGE
MOVE SQLCODE
TO WS-DB2-CODE BM-CODE-OUT
PERFORM E100000-LOG-ERR-AND-EXIT
END-IF
WHEN -913
IF WS-RETRY-CNT <= WS-RETRY-MAX
ADD 1 TO WS-RETRY-CNT
ELSE
MOVE 'SELECT ERROR ON ITEM TABLE'
TO WS-DB2-TXT BM-MESSAGE
MOVE SQLCODE
TO WS-DB2-CODE BM-CODE-OUT
PERFORM E100000-LOG-ERR-AND-EXIT
END-IF
WHEN OTHER
MOVE 'SELECT ERROR ON ITEM TABLE'
TO WS-DB2-TXT BM-MESSAGE
MOVE SQLCODE
TO WS-DB2-CODE BM-CODE-OUT
PERFORM E100000-LOG-ERR-AND-EXIT
END-EVALUATE.
******************************************************************
** THIS PARAGRAPH EXECUTES THE CODE TO UPDATE/INSERT/DELETE
**
** LEGACY HOST CLUB_ITEM_INVT DEPENDING ON THE CHANGE TYPE CODE**
******************************************************************
A400000-PROCESS-CLUB-INVT.
MOVE 'A400000-PROCESS-CLUB-INVT' TO WS-ABND-PARA.
MOVE
TO
MOVE
TO
MOVE
TO

ITEM-NBR
ITEM-NBR
DC-NBR
CLUB-NBR
TRIGGER-TS
LOG-TS

OF
OF
OF
OF
OF
OF

PUBLISH-PENDING-DATA
CLUB-ITEM-INVT-LOG-DATA
PUBLISH-PENDING-DATA
CLUB-ITEM-INVT-LOG-DATA
PUBLISH-PENDING-DATA
CLUB-ITEM-INVT-LOG-DATA

MOVE 1 TO WS-RETRY-CNT
MOVE 'N' TO DB2-DONE-SW
PERFORM A400500-SLCT-CLUB-INVT-LOG
UNTIL DB2-DONE-SW = 'Y'
MOVE
TO
MOVE
TO

LEGACY-ITEM-NBR OF ITEM-LEGACY-XREF-DATA
I2A-KEY-SAMS
CLUB-NBR
OF CLUB-ITEM-INVT-LOG-DATA
I2B-WHSE-NUM

PERFORM D500000-GU-I2A-I2B
IF FOUND-SW = 'N'
IF CHANGE-TYPE-CODE OF PUBLISH-PENDING-DATA = 'U'

MOVE 'I' TO CHANGE-TYPE-CODE


OF PUBLISH-PENDING-DATA
END-IF
ELSE
IF CHANGE-TYPE-CODE OF PUBLISH-PENDING-DATA = 'I'
MOVE 'U' TO CHANGE-TYPE-CODE
OF PUBLISH-PENDING-DATA
END-IF
END-IF
EVALUATE CHANGE-TYPE-CODE OF PUBLISH-PENDING-DATA
WHEN 'I'
PERFORM D300000-GU-I2A
IF FOUND-SW = 'Y'
PERFORM A401000-INSERT-CLUB-INVT
ELSE
STRING 'I2A SEG NOT FOUND FOR CLUB INVT ISRT' ,I2A-KEY
DELIMITED BY SIZE
INTO ERROR-DESC-TEXT
MOVE 42 TO ERROR-DESC-LEN
MOVE 1 TO WS-RETRY-CNT
MOVE 'N' TO DB2-DONE-SW
PERFORM X000100-ISRT-PUB-PENDG-ERR
UNTIL DB2-DONE-SW = 'Y'
END-IF
WHEN 'U'
PERFORM A402000-UPDATE-CLUB-INVT
WHEN OTHER
MOVE 'INVALID CHANGE TYPE FOR CLUB_ITEM_INVT'
TO ERROR-DESC-TEXT
MOVE 38 TO ERROR-DESC-LEN
MOVE 1 TO WS-RETRY-CNT
MOVE 'N' TO DB2-DONE-SW
PERFORM X000100-ISRT-PUB-PENDG-ERR
UNTIL DB2-DONE-SW = 'Y'
END-EVALUATE.
******************************************************************
** SELECT FROM CLUB_ITEM TABLE
**
******************************************************************
A400500-SLCT-CLUB-INVT-LOG.
MOVE 'A400500-SLCT-CLUB-INVT-LOG' TO WS-ABND-PARA.
EXEC SQL
SELECT ITEM_NBR
, CLUB_NBR
, ON_HAND_QTY
, ON_ORDER_QTY
, CLAIM_ON_HAND_QTY
, CNSLD_ON_HAND_QTY
, LAST_RCVD_DATE
, NEG_ON_HAND_DATE
INTO :CLUB-ITEM-INVT-LOG-DATA.ITEM-NBR
,:CLUB-ITEM-INVT-LOG-DATA.CLUB-NBR
,:CLUB-ITEM-INVT-LOG-DATA.ON-HAND-QTY
,:CLUB-ITEM-INVT-LOG-DATA.ON-ORDER-QTY
,:CLUB-ITEM-INVT-LOG-DATA.CLAIM-ON-HAND-QTY
,:CLUB-ITEM-INVT-LOG-DATA.CNSLD-ON-HAND-QTY
,:CLUB-ITEM-INVT-LOG-DATA.LAST-RCVD-DATE
:CLB-NULL-LAST-RCVD-DATE

,:CLUB-ITEM-INVT-LOG-DATA.NEG-ON-HAND-DATE
:CLB-NULL-NEG-ON-HAND-DATE
FROM CLUB_ITEM_INVT_LOG
WHERE ITEM_NBR = :CLUB-ITEM-INVT-LOG-DATA.ITEM-NBR
AND CLUB_NBR = :CLUB-ITEM-INVT-LOG-DATA.CLUB-NBR
AND LOG_TS = :CLUB-ITEM-INVT-LOG-DATA.LOG-TS
END-EXEC.
EVALUATE SQLCODE
WHEN 0
MOVE 'Y' TO DB2-DONE-SW
WHEN +100
MOVE 'CLUB_ITEM_INVT_LOG ROW NOT FOUND' TO WS-DB2-TXT
MOVE SQLCODE TO WS-DB2-CODE
MOVE WS-DB2-MSG TO ERROR-DESC-TEXT
MOVE LENGTH OF WS-DB2-MSG TO ERROR-DESC-LEN
PERFORM E000000-LOG-ERROR
WHEN -911
IF WS-911-RETRY-CNT <= WS-911-RETRY-MAX
ADD 1 TO WS-911-RETRY-CNT
MOVE '-911 ON CLUB_ITEM_INVT_LOG' TO WS-DB2-TXT
MOVE SQLCODE TO WS-DB2-CODE
MOVE WS-DB2-MSG TO ERROR-DESC-TEXT
MOVE LENGTH OF WS-DB2-MSG TO ERROR-DESC-LEN
MOVE 'Y' TO WS-911-SW
PERFORM E000000-LOG-ERROR
ELSE
MOVE 'SELECT ERROR ON CLUB_ITEM_INVT_LOG'
TO WS-DB2-TXT BM-MESSAGE
MOVE SQLCODE
TO WS-DB2-CODE BM-CODE-OUT
PERFORM E100000-LOG-ERR-AND-EXIT
END-IF
WHEN -913
IF WS-RETRY-CNT <= WS-RETRY-MAX
ADD 1 TO WS-RETRY-CNT
ELSE
MOVE 'SELECT ERROR ON CLUB_ITEM_INVT_LOG'
TO WS-DB2-TXT BM-MESSAGE
MOVE SQLCODE
TO WS-DB2-CODE BM-CODE-OUT
PERFORM E100000-LOG-ERR-AND-EXIT
END-IF
WHEN OTHER
MOVE 'SELECT ERROR ON CLUB_ITEM_INVT_LOG'
TO WS-DB2-TXT BM-MESSAGE
MOVE SQLCODE
TO WS-DB2-CODE BM-CODE-OUT
PERFORM E100000-LOG-ERR-AND-EXIT
END-EVALUATE.
******************************************************************
** PROCESS TO INSERT A CLUB/INVT DATA IN I2E
**
******************************************************************
A401000-INSERT-CLUB-INVT.
MOVE 'A401000-INSERT-CLUB-INVT' TO WS-ABND-PARA.
INITIALIZE I2B-SEGMENT.
PERFORM A401100-MOVE-I2B-DATA.
PERFORM D502000-ISRT-I2B.

******************************************************************
** PROCESS TO INSERT A CLUB/INVT DATA IN I2E
**
******************************************************************
A402000-UPDATE-CLUB-INVT.
MOVE 'A402000-UPDATE-CLUB-INVT' TO WS-ABND-PARA.
PERFORM A401100-MOVE-I2B-DATA.
PERFORM D505000-REPL-I2B.
******************************************************************
** THIS PARAGRAPH EXECUTES THE CODE TO MOVE CLUB_ITEM_INVT DATA**
** TO LEGACY HOST I2B SEGMENT
**
******************************************************************
A401100-MOVE-I2B-DATA.
MOVE 'A401100-MOVE-I2B-DATA' TO WS-ABND-PARA.
MOVE CLUB-NBR

OF CLUB-ITEM-INVT-LOG-DATA
TO I2B-WHSE-NUM
MOVE ON-HAND-QTY
OF CLUB-ITEM-INVT-LOG-DATA
TO I2B-ON-HAND-QTY
MOVE ON-ORDER-QTY
OF CLUB-ITEM-INVT-LOG-DATA
TO I2B-ON-ORDR-QTY
MOVE CLAIM-ON-HAND-QTY
OF CLUB-ITEM-INVT-LOG-DATA
TO I2B-SAM-CLAIM-OH-QTY
MOVE CNSLD-ON-HAND-QTY
OF CLUB-ITEM-INVT-LOG-DATA
TO I2B-CON-ON-HAND
IF CLB-NULL-LAST-RCVD-DATE NOT = -1
MOVE LAST-RCVD-DATE OF CLUB-ITEM-INVT-LOG-DATA
TO WMD-CAL-DATE
MOVE 'A'
TO WMD-FUNCT
CALL 'WMDATE' USING WMDATE-PARMS
IF WMD-STAT = SPACES
MOVE WMD-YMD
TO I2B-LST-RCVD-DATE
ELSE
MOVE SPACES
TO I2B-LST-RCVD-DATE
END-IF
ELSE
MOVE SPACES
TO I2B-LST-RCVD-DATE
END-IF.
IF CLB-NULL-NEG-ON-HAND-DATE NOT = -1
MOVE NEG-ON-HAND-DATE OF CLUB-ITEM-INVT-LOG-DATA
TO WMD-CAL-DATE
MOVE 'A'
TO WMD-FUNCT
CALL 'WMDATE' USING WMDATE-PARMS
IF WMD-STAT = SPACES
MOVE WMD-YMD
TO I2B-NEG-ONHAND-DATE
ELSE
MOVE SPACES
TO I2B-NEG-ONHAND-DATE
END-IF
ELSE
MOVE SPACES
TO I2B-NEG-ONHAND-DATE
END-IF.
******************************************************************
** THIS PARAGRAPH EXECUTES THE CODE TO UPDATE/INSERT/DELETE
**
** LEGACY HOST UPC_ITEM INFO DEPENDING ON THE CHANGE TYPE CODE **
******************************************************************
A500000-PROCESS-UPC.
MOVE 'A500000-PROCESS-UPC' TO WS-ABND-PARA.

MOVE ITEM-NBR OF PUBLISH-PENDING-DATA


TO ITEM-NBR OF UPC-ITEM-DATA
ITEM-NBR OF ITEM-DATA
MOVE 1 TO WS-RETRY-CNT
MOVE 'N' TO DB2-DONE-SW
PERFORM A500500-GET-EXCLUDE-UPC
UNTIL DB2-DONE-SW = 'Y'
MOVE 1 TO WS-RETRY-CNT
MOVE 'N' TO DB2-DONE-SW
PERFORM A501000-OPEN-UPC-ITEM
UNTIL DB2-DONE-SW = 'Y'
MOVE 'N'
TO EOF-UPCITEM
SET UPC-IDX TO 1
INITIALIZE UPC-ITEM-TABLE
PERFORM UNTIL EOF-UPCITEM
= 'Y'
MOVE 1 TO WS-RETRY-CNT
MOVE 'N' TO DB2-DONE-SW
PERFORM A502000-FETCH-UPC-ITEM
UNTIL DB2-DONE-SW = 'Y'
END-PERFORM
MOVE 1 TO WS-RETRY-CNT
MOVE 'N' TO DB2-DONE-SW
PERFORM A503000-CLOSE-UPC-ITEM
UNTIL DB2-DONE-SW = 'Y'
MOVE LEGACY-ITEM-NBR OF ITEM-LEGACY-XREF-DATA
TO I2A-KEY-SAMS
PERFORM D300000-GU-I2A
IF FOUND-SW = 'Y'
PERFORM A504000-PROCESS-UPC-TABLE
ELSE
IF UIT-NBR-OF-UPC > 0
STRING 'I2A SEG NOT FOUND FOR UPC_ITEM ISRT ', I2A-KEY
DELIMITED BY SIZE
INTO ERROR-DESC-TEXT
MOVE 45 TO ERROR-DESC-LEN
MOVE 1 TO WS-RETRY-CNT
MOVE 'N' TO DB2-DONE-SW
PERFORM X000100-ISRT-PUB-PENDG-ERR
UNTIL DB2-DONE-SW = 'Y'
END-IF
END-IF.
******************************************************************
*
GET THE UPC FROM ITEM TABLE TO EXCLUDE ON I2A5 UPDATE
**
******************************************************************
A500500-GET-EXCLUDE-UPC.
MOVE 'A500500-GET-EXCLUDE-UPC' TO WS-ABND-PARA.
EXEC SQL
SELECT UPC_NBR
INTO :ITEM-DATA.UPC-NBR
FROM ITEM
WHERE ITEM_NBR = :ITEM-DATA.ITEM-NBR
END-EXEC.

EVALUATE SQLCODE
WHEN 0
MOVE 'Y' TO DB2-DONE-SW
WHEN +100
MOVE 'Y' TO DB2-DONE-SW
MOVE 0 TO UPC-NBR OF ITEM-DATA
WHEN -911
IF WS-911-RETRY-CNT <= WS-911-RETRY-MAX
ADD 1 TO WS-911-RETRY-CNT
MOVE '-911 ON ITEM TABLE' TO WS-DB2-TXT
MOVE SQLCODE TO WS-DB2-CODE
MOVE WS-DB2-MSG TO ERROR-DESC-TEXT
MOVE LENGTH OF WS-DB2-MSG TO ERROR-DESC-LEN
MOVE 'Y' TO WS-911-SW
PERFORM E000000-LOG-ERROR
ELSE
MOVE 'SELECT ERROR ON ITEM TABLE'
TO WS-DB2-TXT BM-MESSAGE
MOVE SQLCODE
TO WS-DB2-CODE BM-CODE-OUT
PERFORM E100000-LOG-ERR-AND-EXIT
END-IF
WHEN -913
IF WS-RETRY-CNT <= WS-RETRY-MAX
ADD 1 TO WS-RETRY-CNT
ELSE
MOVE 'SELECT ERROR ON ITEM TABLE'
TO WS-DB2-TXT BM-MESSAGE
MOVE SQLCODE
TO WS-DB2-CODE BM-CODE-OUT
PERFORM E100000-LOG-ERR-AND-EXIT
END-IF
WHEN OTHER
MOVE 'SELECT ERROR ON ITEM TABLE'
TO WS-DB2-TXT BM-MESSAGE
MOVE SQLCODE
TO WS-DB2-CODE BM-CODE-OUT
PERFORM E100000-LOG-ERR-AND-EXIT
END-EVALUATE.
******************************************************************
*
OPEN CURSOR ON UPC_ITEM TABLE
**
******************************************************************
A501000-OPEN-UPC-ITEM.
MOVE 'A501000-OPEN-UPC-ITEM' TO WS-ABND-PARA.
EXEC SQL
OPEN UPCITEM
END-EXEC.
EVALUATE SQLCODE
WHEN 0
MOVE 'Y' TO DB2-DONE-SW
WHEN -911
IF WS-911-RETRY-CNT <= WS-911-RETRY-MAX
ADD 1 TO WS-911-RETRY-CNT
MOVE '-911 ON ITEM TABLE' TO WS-DB2-TXT
MOVE SQLCODE TO WS-DB2-CODE

MOVE WS-DB2-MSG TO ERROR-DESC-TEXT


MOVE LENGTH OF WS-DB2-MSG TO ERROR-DESC-LEN
MOVE 'Y' TO WS-911-SW
PERFORM E000000-LOG-ERROR
ELSE
MOVE 'OPEN ERROR ON UPCITEM CURSOR'
TO WS-DB2-TXT BM-MESSAGE
MOVE SQLCODE
TO WS-DB2-CODE BM-CODE-OUT
PERFORM E100000-LOG-ERR-AND-EXIT
END-IF
WHEN -913
IF WS-RETRY-CNT <= WS-RETRY-MAX
ADD 1 TO WS-RETRY-CNT
ELSE
MOVE 'OPEN ERROR ON UPCITEM CURSOR'
TO WS-DB2-TXT BM-MESSAGE
MOVE SQLCODE
TO WS-DB2-CODE BM-CODE-OUT
PERFORM E100000-LOG-ERR-AND-EXIT
END-IF
WHEN OTHER
MOVE 'OPEN ERROR ON UPCITEM CURSOR'
TO WS-DB2-TXT BM-MESSAGE
MOVE SQLCODE
TO WS-DB2-CODE BM-CODE-OUT
PERFORM E100000-LOG-ERR-AND-EXIT
END-EVALUATE.
******************************************************************
*
FETCH A ROW FROM UPC_ITEM TABLE
**
******************************************************************
A502000-FETCH-UPC-ITEM.
MOVE 'A502000-FETCH-UPC-ITEM' TO WS-ABND-PARA.
EXEC SQL
FETCH UPCITEM
INTO :UPC-ITEM-DATA.UPC-NBR
,:UPC-ITEM-DATA.LAST-CHANGE-USERID
,:WS-DLET-PUBPEND-TS
END-EXEC.
EVALUATE SQLCODE
WHEN 0
MOVE 'Y' TO DB2-DONE-SW FOUND-SW
PERFORM A502100-BULID-ITEM-UPC-TABLE
WHEN +100
MOVE 'Y' TO DB2-DONE-SW EOF-UPCITEM
WHEN -911
IF WS-911-RETRY-CNT <= WS-911-RETRY-MAX
ADD 1 TO WS-911-RETRY-CNT
MOVE '-911 ON UPCITEM FETCH '
TO WS-DB2-TXT
MOVE SQLCODE TO WS-DB2-CODE
MOVE WS-DB2-MSG TO ERROR-DESC-TEXT
MOVE LENGTH OF WS-DB2-MSG TO ERROR-DESC-LEN
MOVE 'Y' TO WS-911-SW
PERFORM E000000-LOG-ERROR
ELSE

MOVE 'FETCH ERROR ON UPCITEM '


TO WS-DB2-TXT BM-MESSAGE
MOVE SQLCODE
TO WS-DB2-CODE BM-CODE-OUT
PERFORM E100000-LOG-ERR-AND-EXIT
END-IF
WHEN -913
IF WS-RETRY-CNT <= WS-RETRY-MAX
ADD 1 TO WS-RETRY-CNT
ELSE
MOVE 'FETCH ERROR ON UPCITEM '
TO WS-DB2-TXT BM-MESSAGE
MOVE SQLCODE
TO WS-DB2-CODE BM-CODE-OUT
PERFORM E100000-LOG-ERR-AND-EXIT
END-IF
WHEN OTHER
MOVE 'FETCH ERROR ON UPCITEM '
TO WS-DB2-TXT BM-MESSAGE
MOVE SQLCODE
TO WS-DB2-CODE BM-CODE-OUT
PERFORM E100000-LOG-ERR-AND-EXIT
END-EVALUATE.
******************************************************************
*
POPULATE UPC/ITEM TABLE
**
******************************************************************
A502100-BULID-ITEM-UPC-TABLE.
MOVE 'A502100-BULID-ITEM-UPC-TABLE' TO WS-ABND-PARA.
ADD 1
TO UIT-NBR-OF-UPC.
IF UIT-NBR-OF-UPC > 240
MOVE '# OF UPC PER ITEM EXCEEDED 240 ' TO ERROR-DESC-TEXT
MOVE LENGTH OF ERROR-DESC-TEXT TO ERROR-DESC-LEN
PERFORM E000000-LOG-ERROR
END-IF.
MOVE UPC-NBR OF UPC-ITEM-DATA
TO UIT-UPC-NBR(UPC-IDX).
SET UPC-IDX
UP BY 1.
******************************************************************
*
CLOSE CURSOR ON UPC_ITEM TABLE
**
******************************************************************
A503000-CLOSE-UPC-ITEM.
MOVE 'A503000-CLOSE-UPC-ITEM' TO WS-ABND-PARA.
EXEC SQL
CLOSE UPCITEM
END-EXEC.
EVALUATE SQLCODE
WHEN 0
MOVE 'Y' TO DB2-DONE-SW
WHEN -911
IF WS-911-RETRY-CNT <= WS-911-RETRY-MAX
ADD 1 TO WS-911-RETRY-CNT
MOVE '-911 ON UPCITEM CLOSE '
TO WS-DB2-TXT
MOVE SQLCODE TO WS-DB2-CODE
MOVE WS-DB2-MSG TO ERROR-DESC-TEXT

MOVE LENGTH OF WS-DB2-MSG TO ERROR-DESC-LEN


MOVE 'Y' TO WS-911-SW
PERFORM E000000-LOG-ERROR
ELSE
MOVE 'CLOSE ERROR ON UPCITEM '
TO WS-DB2-TXT BM-MESSAGE
MOVE SQLCODE
TO WS-DB2-CODE BM-CODE-OUT
PERFORM E100000-LOG-ERR-AND-EXIT
END-IF
WHEN -913
IF WS-RETRY-CNT <= WS-RETRY-MAX
ADD 1 TO WS-RETRY-CNT
ELSE
MOVE 'CLOSE ERROR ON UPCITEM '
TO WS-DB2-TXT BM-MESSAGE
MOVE SQLCODE
TO WS-DB2-CODE BM-CODE-OUT
PERFORM E100000-LOG-ERR-AND-EXIT
END-IF
WHEN OTHER
MOVE 'CLOSE ERROR ON UPCITEM '
TO WS-DB2-TXT BM-MESSAGE
MOVE SQLCODE
TO WS-DB2-CODE BM-CODE-OUT
PERFORM E100000-LOG-ERR-AND-EXIT
END-EVALUATE.
******************************************************************
** PROCESS ALL THE ROWS OF THE UPC/ITEM ARRAY
**
******************************************************************
A504000-PROCESS-UPC-TABLE.
MOVE 'A504000-PROCESS-UPC-TABLE' TO WS-ABND-PARA.
PERFORM D600000-GNP-I2A5
PERFORM UNTIL EOF-I2A5 = 'Y'
PERFORM D601000-DLET-I2A5
MOVE SPACES
MOVE +31
MOVE 'UN'
MOVE I2A5-UP-KEY
MOVE I2A-KEY
PERFORM D804000-GU-MQUN
IF FOUND-SW = 'Y'
PERFORM D806000-DLET-MQUN
END-IF
PERFORM D600000-GNP-I2A5
END-PERFORM.

TO
TO
TO
TO
TO

MQUN-SEGMENT
MQUN-LENGTH
MQUN-SUBFILE
MQUN-UPC-NBR
MQUN-ITEM-NBR

IF UIT-NBR-OF-UPC > 0
MOVE 'N'
TO DONE-ALL-UPC-SW
MOVE 0
TO WS-UP-RCD-NBR
SET UPC-IDX TO 1
PERFORM A504100-BUILD-I2A5
UNTIL DONE-ALL-UPC-SW = 'Y'
END-IF.
******************************************************************
** REBUILD I2A5 SEGMENT(S)
**
******************************************************************

A504100-BUILD-I2A5.
MOVE 'A504100-BUILD-I2A5' TO WS-ABND-PARA.
01-

MOVE INIT-I2A5-UP-SEGMENT
MOVE
ADD
MOVE
MOVE
MOVE
MOVE
MOVE
MOVE
TO
MOVE
MOVE

TO I2A5-UP-SEGMENT

'UPCNO '
1
WS-UP-RCD-NBR
SPACES
LAST-CHANGE-USERID

TO I2A5-UP-RCD-TYPE.
TO WS-UP-RCD-NBR.
TO I2A5-UP-RCD-NBR.
TO I2A5-UP-FIL010.
OF UPC-ITEM-DATA
TO I2A5-UP-LST-CHG-INIT.
'WLU0'
TO I2A5-UP-LST-CHG-TERM.
'Y'
TO I2A5-UP-LST-CHG-FLAG.
CD-YYMMDD OF CURRENT-DATE
CD-YYMMDD OF CURRENT-DATE-FMT2
CURRENT-DATE-FMT2
TO I2A5-UP-LST-CHG-DATE.
CURR-TIME-4
TO I2A5-UP-LST-CHG-TIME.

IF UIT-NBR-OF-UPC <= 20
MOVE UIT-NBR-OF-UPC
TO I2A5-UP-NBR-OCCURS
MOVE 0
TO UIT-NBR-OF-UPC
MOVE 'Y'
TO DONE-ALL-UPC-SW
ELSE
MOVE 20
TO I2A5-UP-NBR-OCCURS
COMPUTE UIT-NBR-OF-UPC = UIT-NBR-OF-UPC - 20
END-IF.
COMPUTE I2A5-UP-SEG-LTH = 40 + (I2A5-UP-NBR-OCCURS * 18).
PERFORM VARYING I2A5-UP-IDX FROM 1 BY 1
UNTIL I2A5-UP-IDX > I2A5-UP-NBR-OCCURS
MOVE UIT-UPC-NBR(UPC-IDX) TO I2A5-UP-NBR(I2A5-UP-IDX)
WS-UPC-CODE-NUM
SET UPC-IDX
UP BY 1
PERFORM A101120-PROCESS-MQUN-SEGMENT
END-PERFORM.
PERFORM D602000-ISRT-I2A5.

01-

******************************************************************
** THIS PARAGRAPH EXECUTES THE CODE TO UPDATE/INSERT/DELETE
**
** LEGACY HOST ITEM_LEASE_SUPPDEPENDING ON THE CHANGE TYPE CODE**
******************************************************************
A600000-PROCESS-ITEM-LEASE.
MOVE 'A600000-PROCESS-ITEM-LEASE' TO WS-ABND-PARA.
MOVE
TO
MOVE
TO

ITEM-NBR
ITEM-NBR
TRIGGER-TS
LOG-TS

OF
OF
OF
OF

PUBLISH-PENDING-DATA
ITEM-LSE-SUPP-LOG-DATA
PUBLISH-PENDING-DATA
ITEM-LSE-SUPP-LOG-DATA

MOVE 1 TO WS-RETRY-CNT
MOVE 'N' TO DB2-DONE-SW
PERFORM A600500-SLCT-ITEM-LSE-LOG
UNTIL DB2-DONE-SW = 'Y'
MOVE LEGACY-ITEM-NBR OF ITEM-LEGACY-XREF-DATA
TO I2A-KEY-SAMS
EVALUATE CHANGE-TYPE-CODE OF PUBLISH-PENDING-DATA
WHEN 'I'

WHEN 'U'
PERFORM D300000-GU-I2A
IF FOUND-SW = 'Y'
PERFORM D303000-GNP-I2B5
IF EOF-I2B5 = 'N'
PERFORM A601000-VERIFY-LSE-FLDS-UPDT
END-IF
ELSE
STRING 'I2A SEG NOT FOUND FOR ITEM_LEASE_SUPP UPDATE'
,I2A-KEY
DELIMITED BY SIZE
INTO ERROR-DESC-TEXT
MOVE 53 TO ERROR-DESC-LEN
MOVE 1 TO WS-RETRY-CNT
MOVE 'N' TO DB2-DONE-SW
PERFORM X000100-ISRT-PUB-PENDG-ERR
UNTIL DB2-DONE-SW = 'Y'
END-IF
WHEN 'D'
PERFORM D300000-GU-I2A
IF FOUND-SW = 'Y'
PERFORM D303000-GNP-I2B5
IF EOF-I2B5 = 'N'
PERFORM A602000-VERIFY-LSE-FLDS-DLET
END-IF
END-IF
WHEN OTHER
MOVE 'INVALID CHANGE TYPE FOR ITEM_LEASE_SUPP'
TO ERROR-DESC-TEXT
MOVE 39 TO ERROR-DESC-LEN
MOVE 1 TO WS-RETRY-CNT
MOVE 'N' TO DB2-DONE-SW
PERFORM X000100-ISRT-PUB-PENDG-ERR
UNTIL DB2-DONE-SW = 'Y'
END-EVALUATE.

01-

******************************************************************
** SELECT FROM ITEM_LSE_SUPP_LOG TABLE
**
******************************************************************
A600500-SLCT-ITEM-LSE-LOG.
MOVE 'A600500-SLCT-ITEM-LSE-LOG' TO WS-ABND-PARA.

EXEC SQL
SELECT ITEM_NBR
,LEASE_EFF_DATE
,LEASE_EXP_DATE
,LEASE_SALES_PCT
,LAST_UPDATE_USERID
INTO :ITEM-LSE-SUPP-LOG-DATA.ITEM-NBR
,:ITEM-LSE-SUPP-LOG-DATA.LEASE-EFF-DATE
,:ITEM-LSE-SUPP-LOG-DATA.LEASE-EXP-DATE
:LSE-NULL-LEASE-EXP-DATE
,:ITEM-LSE-SUPP-LOG-DATA.LEASE-SALES-PCT
:LSE-NULL-LEASE-SALES-PCT
,:ITEM-LSE-SUPP-LOG-DATA.LAST-UPDATE-USERID
FROM ITEM_LSE_SUPP_LOG
WHERE ITEM_NBR = :ITEM-LSE-SUPP-LOG-DATA.ITEM-NBR
AND LOG_TS = :ITEM-LSE-SUPP-LOG-DATA.LOG-TS
FETCH FIRST ROW ONLY
END-EXEC.

EVALUATE SQLCODE
WHEN 0
MOVE 'Y' TO DB2-DONE-SW
WHEN +100
MOVE 'ITEM_LSE_SUPP_LOG ROW NOT FOUND' TO WS-DB2-TXT
MOVE SQLCODE TO WS-DB2-CODE
MOVE WS-DB2-MSG TO ERROR-DESC-TEXT
MOVE LENGTH OF WS-DB2-MSG TO ERROR-DESC-LEN
PERFORM E000000-LOG-ERROR
WHEN -911
IF WS-911-RETRY-CNT <= WS-911-RETRY-MAX
ADD 1 TO WS-911-RETRY-CNT
MOVE '-911 ON ITEM_LSE_SUPP_LOG ' TO WS-DB2-TXT
MOVE SQLCODE TO WS-DB2-CODE
MOVE WS-DB2-MSG TO ERROR-DESC-TEXT
MOVE LENGTH OF WS-DB2-MSG TO ERROR-DESC-LEN
MOVE 'Y' TO WS-911-SW
PERFORM E000000-LOG-ERROR
ELSE
MOVE 'SELECT ERROR ON ITEM_LSE_SUPP_LOG '
TO WS-DB2-TXT BM-MESSAGE
MOVE SQLCODE
TO WS-DB2-CODE BM-CODE-OUT
PERFORM E100000-LOG-ERR-AND-EXIT
END-IF
WHEN -913
IF WS-RETRY-CNT <= WS-RETRY-MAX
ADD 1 TO WS-RETRY-CNT
ELSE
MOVE 'SELECT ERROR ON ITEM_LSE_SUPP_LOG '
TO WS-DB2-TXT BM-MESSAGE
MOVE SQLCODE
TO WS-DB2-CODE BM-CODE-OUT
PERFORM E100000-LOG-ERR-AND-EXIT
END-IF
WHEN OTHER
MOVE 'SELECT ERROR ON ITEM_LSE_SUPP_LOG '
TO WS-DB2-TXT BM-MESSAGE
MOVE SQLCODE
TO WS-DB2-CODE BM-CODE-OUT
PERFORM E100000-LOG-ERR-AND-EXIT
END-EVALUATE.

01-

******************************************************************
** THIS PARAGRAPH MOVES THE VERIFIES THE LEASE FIELDS IN I2B5 ,**
** FOR ANY ITEM_LEASE_SUPP UPDATE OR INSERT
**
******************************************************************
A601000-VERIFY-LSE-FLDS-UPDT.
MOVE 'A601000-VERIFY-LSE-FLDS-UPDT' TO WS-ABND-PARA.
MOVE 'N'

MOVE I2B5-EFF-BEGIN-DATE
MOVE LEASE-EFF-DATE
MOVE 'A'

TO EFF-DT-CHG-SW
EXP-DT-CHG-SW
EFF-PCT-CHG-SW
LICENSE-CHG-SW.
TO HOLD-I2B5-EFF-BEGIN-DATE
OF ITEM-LSE-SUPP-LOG-DATA
TO WMD-CAL-DATE
TO WMD-FUNCT

CALL 'WMDATE' USING WMDATE-PARMS


IF WMD-STAT = SPACES
MOVE WMD-YY
TO HOLD-MDY-YY
MOVE WMD-MM
TO HOLD-MDY-MM
MOVE WMD-DD
TO HOLD-MDY-DD
IF I2B5-EFF-BEGIN-DATE NOT = HOLD-DATE-6
MOVE HOLD-DATE-6
TO HOLD-I2B5-EFF-BEGIN-DATE
MOVE 'Y'
TO EFF-DT-CHG-SW
END-IF
ELSE
IF I2B5-EFF-BEGIN-DATE > 0
MOVE 0
TO HOLD-I2B5-EFF-BEGIN-DATE
MOVE 'Y'
TO EFF-DT-CHG-SW
END-IF
END-IF.
MOVE I2B5-EFF-END-DATE
TO HOLD-I2B5-EFF-END-DATE
IF LSE-NULL-LEASE-EXP-DATE NOT = -1
MOVE LEASE-EXP-DATE
OF ITEM-LSE-SUPP-LOG-DATA
TO WMD-CAL-DATE
MOVE 'A'
TO WMD-FUNCT
CALL 'WMDATE' USING WMDATE-PARMS
IF WMD-STAT = SPACES
MOVE WMD-YY
TO HOLD-MDY-YY
MOVE WMD-MM
TO HOLD-MDY-MM
MOVE WMD-DD
TO HOLD-MDY-DD
IF I2B5-EFF-END-DATE NOT = HOLD-DATE-6
MOVE HOLD-DATE-6
TO HOLD-I2B5-EFF-END-DATE
MOVE 'Y'
TO EXP-DT-CHG-SW
END-IF
END-IF
ELSE
IF I2B5-EFF-END-DATE = 999999 OR ZEROS
CONTINUE
ELSE
MOVE 999999
TO HOLD-I2B5-EFF-END-DATE
MOVE 'Y'
TO EXP-DT-CHG-SW
END-IF
END-IF.
MOVE I2B5-EFF-PERCENT
TO HOLD-I2B5-EFF-PERCENT.
IF LSE-NULL-LEASE-SALES-PCT
NOT = -1
IF I2B5-EFF-PERCENT = LEASE-SALES-PCT
OF ITEM-LSE-SUPP-LOG-DATA
MOVE LEASE-SALES-PCT OF ITEM-LSE-SUPP-LOG-DATA
TO HOLD-I2B5-EFF-PERCENT
MOVE 'Y'
TO EFF-PCT-CHG-SW
END-IF
ELSE
IF I2B5-EFF-PERCENT > 0
MOVE 0
TO HOLD-I2B5-EFF-PERCENT
MOVE 'Y'
TO EFF-PCT-CHG-SW
END-IF
END-IF.
MOVE I2B5-LICENSE-FLAG TO HOLD-I2B5-LICENSE-FLAG
IF I2B5-LICENSE-FLAG = 'N'
MOVE 'Y' TO HOLD-I2B5-LICENSE-FLAG
MOVE 'Y' TO LICENSE-CHG-SW
END-IF

IF EFF-DT-CHG-SW = 'Y' OR EXP-DT-CHG-SW = 'Y' OR


EFF-PCT-CHG-SW = 'Y' OR LICENSE-CHG-SW = 'Y'
PERFORM UNTIL EOF-I2B5 = 'N'
MOVE HOLD-I2B5-EFF-BEGIN-DATE TO I2B5-EFF-BEGIN-DATE
MOVE HOLD-I2B5-EFF-END-DATE TO I2B5-EFF-END-DATE
MOVE HOLD-I2B5-EFF-PERCENT
TO I2B5-EFF-PERCENT
MOVE HOLD-I2B5-LICENSE-FLAG TO I2B5-LICENSE-FLAG
MOVE CURRENT-DATE
TO I2B5-LAST-CHG-DATE
MOVE CURR-TIME-4
TO I2B5-LAST-CHG-TIME
MOVE LAST-UPDATE-USERID
OF ITEM-LSE-SUPP-LOG-DATA
TO I2B5-LAST-CHG-INIT
MOVE 'WLU0'
TO I2B5-LAST-CHG-TERMID
MOVE 'S'
TO I2B5-LAST-CHG-PGMID
PERFORM D507000-REPL-I2B5
PERFORM D303000-GNP-I2B5
END-PERFORM
END-IF.

01-

******************************************************************
** THIS PARAGRAPH MOVES THE VERIFIES THE LEASE FIELDS IN I2B5 ,**
** FOR ANY ITEM_LEASE_SUPP DELETE'S
**
******************************************************************
A602000-VERIFY-LSE-FLDS-DLET.
MOVE 'A602000-VERIFY-LSE-FLDS-DLET' TO WS-ABND-PARA.
IF I2B5-EFF-BEGIN-DATE > 0
OR I2B5-EFF-END-DATE > 0
OR I2B5-EFF-PERCENT > 0
OR I2B5-LICENSE-FLAG = 'Y'
PERFORM UNTIL EOF-I2B5 = 'N'
MOVE 0 TO I2B5-EFF-BEGIN-DATE
MOVE 0 TO I2B5-EFF-END-DATE
MOVE 0 TO I2B5-EFF-PERCENT
MOVE 'N' TO I2B5-LICENSE-FLAG
MOVE CURRENT-DATE
TO I2B5-LAST-CHG-DATE
MOVE CURR-TIME-4
TO I2B5-LAST-CHG-TIME
MOVE LAST-UPDATE-USERID
OF ITEM-LSE-SUPP-LOG-DATA
TO I2B5-LAST-CHG-INIT
MOVE 'WLU0'
TO I2B5-LAST-CHG-TERMID
MOVE 'S'
TO I2B5-LAST-CHG-PGMID
PERFORM D507000-REPL-I2B5
PERFORM D303000-GNP-I2B5
END-PERFORM
END-IF.
******************************************************************
** SCHEDULE THE PSB
******************************************************************
D000000-SCHED-PSB.
MOVE 'D000000-SCHED-PSB' TO WS-ABND-PARA
EXEC DLI SCHD PSB(A1540 )
NODHABEND SYSSERVE
END-EXEC.
IF DIBSTAT = SPACES
EXEC DLI ACCEPT STATUSGROUP ('A') END-EXEC
PERFORM VARYING PCB-POS FROM 1 BY 1
UNTIL PCB-POS > 3
EXEC DLI QUERY USING PCB(PCB-POS) END-EXEC

IF DIBSTAT > SPACES


EVALUATE PCB-POS
WHEN 1
MOVE 'I2E DATABASE CLOSED' TO WS-IMS-TXT
WHEN 2
MOVE 'V1E DATABASE CLOSED' TO WS-IMS-TXT
WHEN 3
MOVE 'MQE DATABASE CLOSED' TO WS-IMS-TXT
END-EVALUATE
MOVE DIBSTAT TO WS-IMS-STAT
MOVE WS-IMS-MSG TO ERROR-DESC-TEXT
MOVE LENGTH OF WS-IMS-MSG TO ERROR-DESC-LEN
MOVE 1 TO WS-RETRY-CNT
MOVE 'N' TO DB2-DONE-SW
PERFORM X000100-ISRT-PUB-PENDG-ERR
UNTIL DB2-DONE-SW = 'Y'
PERFORM R100050-RESTART-MIN
PERFORM R200000-RETURN
END-IF
END-PERFORM
ELSE
MOVE 'UNABLE TO SCHEDULE PSB ' TO WS-IMS-TXT
MOVE DIBSTAT TO WS-IMS-STAT
MOVE WS-IMS-MSG TO ERROR-DESC-TEXT
MOVE LENGTH OF WS-IMS-MSG TO ERROR-DESC-LEN
MOVE 0 TO ITEM-NBR OF PUBLISH-PENDG-ERR-DATA
MOVE 1 TO WS-RETRY-CNT
MOVE 'N' TO DB2-DONE-SW
PERFORM X000100-ISRT-PUB-PENDG-ERR
UNTIL DB2-DONE-SW = 'Y'
PERFORM R100050-RESTART-MIN
PERFORM R200000-RETURN
END-IF.
******************************************************************
D200000-TERM-PSB.
******************************************************************
MOVE 'D200000-TERM-PSB' TO WS-ABND-PARA.
EXEC DLI TERM END-EXEC.
******************************************************************
** GET UNIQUE I2A SEGMENT
**
******************************************************************
D300000-GU-I2A.
MOVE 'D300000-GU-I2A' TO WS-ABND-PARA.
EXEC DLI GU USING PCB(1)
SEGMENT (I2A)
INTO
(I2A-SEGMENT)
WHERE
(I2AKEY = I2A-KEY)
END-EXEC.
IF DIBSTAT = SPACES
MOVE 'Y' TO FOUND-SW
ELSE
IF DIBSTAT = 'GE'
MOVE 'N' TO FOUND-SW
ELSE
MOVE DIBSTAT TO WS-IMS-STAT
MOVE 'ERROR IN D300000-GU-I2A ' TO ERROR-DESC-TEXT
MOVE LENGTH OF WS-IMS-MSG TO ERROR-DESC-LEN

PERFORM E000000-LOG-ERROR
END-IF
END-IF.

01-

******************************************************************
** INSERT I2A SEGMENT
**
******************************************************************
D301000-ISRT-I2A.
MOVE 'D301000-ISRT-I2A' TO WS-ABND-PARA.
EXEC DLI ISRT USING PCB(1)
SEGMENT (I2A)
FROM
(I2A-SEGMENT)
END-EXEC.
IF DIBSTAT = SPACES
CONTINUE
ELSE
MOVE DIBSTAT TO WS-IMS-STAT
MOVE 'ERROR IN D301000-ISRT-I2A'
TO ERROR-DESC-TEXT
MOVE LENGTH OF WS-IMS-MSG TO ERROR-DESC-LEN
PERFORM E000000-LOG-ERROR
END-IF.

01-

******************************************************************
** INSERT I2A & I2P SEGMENT
**
******************************************************************
D301500-ISRT-I2A-I2P.
MOVE 'D301500-ISRT-I2A-I2P' TO WS-ABND-PARA.
EXEC DLI ISRT USING PCB(1)
SEGMENT (I2A)
FROM
(I2A-SEGMENT)
SEGMENT (I2P)
FROM
(I2P-SEGMENT)
END-EXEC.
IF DIBSTAT = SPACES
CONTINUE
ELSE
MOVE DIBSTAT TO WS-IMS-STAT
MOVE 'ERROR IN D301500-ISRT-I2A-I2P'
TO ERROR-DESC-TEXT
MOVE LENGTH OF WS-IMS-MSG TO ERROR-DESC-LEN
PERFORM E000000-LOG-ERROR
END-IF.
******************************************************************
** REPLACE I2A SEGMENT
**
******************************************************************
D302000-REPL-I2A.
MOVE 'D302000-REPL-I2A' TO WS-ABND-PARA.
EXEC DLI REPL USING PCB(1)
SEGMENT (I2A)
FROM
(I2A-SEGMENT)
END-EXEC.
IF DIBSTAT = SPACES
CONTINUE
ELSE

MOVE DIBSTAT TO WS-IMS-STAT


MOVE 'ERROR IN D302000-REPL-I2A'
TO ERROR-DESC-TEXT
MOVE LENGTH OF WS-IMS-MSG TO ERROR-DESC-LEN
PERFORM E000000-LOG-ERROR
END-IF.

01-

******************************************************************
** GET NEXT I2B5 SEGMENT
**
******************************************************************
D303000-GNP-I2B5.
MOVE 'D303000-GNP-I2B5' TO WS-ABND-PARA.
EXEC DLI GNP USING PCB(1)
SEGMENT (I2B)
INTO
(I2B-SEGMENT)
SEGMENT (I2B5)
INTO
(I2B5-SEGMENT)
END-EXEC.
IF DIBSTAT = SPACES
MOVE 'N' TO EOF-I2B5
ELSE
IF DIBSTAT = 'GE' OR 'GB'
MOVE 'Y' TO EOF-I2B5
ELSE
MOVE DIBSTAT TO WS-IMS-STAT
MOVE 'ERROR IN D303000-GNP-I2B5'
TO ERROR-DESC-TEXT
MOVE LENGTH OF WS-IMS-MSG TO ERROR-DESC-LEN
PERFORM E000000-LOG-ERROR
END-IF
END-IF.
******************************************************************
** GET I2P SEGMENT
**
******************************************************************
D400000-GNP-I2P.
MOVE 'D400000-GNP-I2P' TO WS-ABND-PARA.
MOVE 'SB'
TO I2P-COM-TYPE.
EXEC DLI GNP USING PCB(1)
SEGMENT (I2P)
INTO
(I2P-SEGMENT)
WHERE
(I2PKEY = I2P-KEY)
END-EXEC.
IF DIBSTAT = SPACES
MOVE 'Y' TO FOUND-SW
ELSE
IF DIBSTAT = 'GE' OR 'GB'
MOVE 'N' TO FOUND-SW
ELSE
MOVE DIBSTAT TO WS-IMS-STAT
MOVE 'ERROR IN D400000-GNP-I2P'
TO ERROR-DESC-TEXT
MOVE LENGTH OF WS-IMS-MSG TO ERROR-DESC-LEN
PERFORM E000000-LOG-ERROR
END-IF
END-IF.

******************************************************************
** REPL I2P SEGMENT
**
******************************************************************
D401000-REPL-I2P.
MOVE 'D401000-REPL-I2P' TO WS-ABND-PARA.
EXEC DLI REPL USING PCB(1)
SEGMENT (I2P)
FROM
(I2P-SEGMENT)
END-EXEC.
IF DIBSTAT = SPACES
CONTINUE
ELSE
MOVE DIBSTAT TO WS-IMS-STAT
MOVE 'ERROR IN D401000-REPL-I2P'
TO ERROR-DESC-TEXT
MOVE LENGTH OF WS-IMS-MSG TO ERROR-DESC-LEN
PERFORM E000000-LOG-ERROR
END-IF.
******************************************************************
** ISRT I2P SEGMENT
**
******************************************************************
D402000-ISRT-I2P.
MOVE 'D402000-ISRT-I2P' TO WS-ABND-PARA.
EXEC DLI ISRT USING PCB(1)
SEGMENT (I2P)
FROM
(I2P-SEGMENT)
END-EXEC.
IF DIBSTAT = SPACES
CONTINUE
ELSE
MOVE DIBSTAT TO WS-IMS-STAT
MOVE 'ERROR IN D402000-ISRT-I2P'
TO ERROR-DESC-TEXT
MOVE LENGTH OF WS-IMS-MSG TO ERROR-DESC-LEN
PERFORM E000000-LOG-ERROR
END-IF.
******************************************************************
** GET UNIQUE I2A AND I2B
**
******************************************************************
D500000-GU-I2A-I2B.
MOVE 'D500000-GU-I2A-I2B' TO WS-ABND-PARA.
EXEC DLI GU USING PCB(1)
SEGMENT (I2A)
INTO
(I2A-SEGMENT)
WHERE
(I2AKEY = I2A-KEY)
SEGMENT (I2B)
INTO
(I2B-SEGMENT)
WHERE
(I2BKEY = I2B-KEY)
END-EXEC.
IF DIBSTAT = SPACES
MOVE 'Y' TO FOUND-SW
ELSE
IF DIBSTAT = 'GE'

MOVE 'N' TO FOUND-SW


ELSE
MOVE DIBSTAT TO WS-IMS-STAT
MOVE 'ERROR IN D500000-GU-I2A-I2B '
TO ERROR-DESC-TEXT
MOVE LENGTH OF WS-IMS-MSG TO ERROR-DESC-LEN
PERFORM E000000-LOG-ERROR
END-IF
END-IF.
******************************************************************
** GET UNIQUE I2A AND I2B
**
******************************************************************
D501000-GU-I2A-I2B-I2B5.
MOVE 'D501000-GU-I2A-I2B-I2B5' TO WS-ABND-PARA.
EXEC DLI GU USING PCB(1)
SEGMENT (I2A)
INTO
(I2A-SEGMENT)
WHERE
(I2AKEY = I2A-KEY)
SEGMENT (I2B)
INTO
(I2B-SEGMENT)
WHERE
(I2BKEY = I2B-KEY)
SEGMENT (I2B5)
INTO
(I2B5-SEGMENT)
END-EXEC.
IF DIBSTAT = SPACES
MOVE 'Y' TO FOUND-SW I2B5-SW
ELSE
IF DIBSTAT = 'GE'
IF DIBSEGM = 'I2B
'
MOVE 'Y' TO FOUND-SW
MOVE 'N' TO I2B5-SW
ELSE
MOVE 'N' TO FOUND-SW I2B5-SW
END-IF
ELSE
MOVE DIBSTAT TO WS-IMS-STAT
MOVE 'ERROR IN D501000-GU-I2A-I2B-I2B5'
TO ERROR-DESC-TEXT
MOVE LENGTH OF WS-IMS-MSG TO ERROR-DESC-LEN
PERFORM E000000-LOG-ERROR
END-IF
END-IF.
******************************************************************
** INSERT I2B SEGMENT
**
******************************************************************
D502000-ISRT-I2B.
MOVE 'D502000-ISRT-I2B' TO WS-ABND-PARA.
EXEC DLI ISRT USING PCB(1)
SEGMENT (I2B)
FROM
(I2B-SEGMENT)
SEGMENT (I2B5)
FROM
(I2B5-SEGMENT)
END-EXEC.
IF DIBSTAT = SPACES
CONTINUE
ELSE

MOVE DIBSTAT TO WS-IMS-STAT


MOVE 'ERROR IN D502000-ISRT-I2B'
TO ERROR-DESC-TEXT
MOVE LENGTH OF WS-IMS-MSG TO ERROR-DESC-LEN
PERFORM E000000-LOG-ERROR
END-IF.
******************************************************************
** INSERT I2B & I2B5 SEGMENT
**
******************************************************************
D503000-ISRT-I2B-I2B5.
MOVE 'D503000-ISRT-I2B-I2B5' TO WS-ABND-PARA.
EXEC DLI ISRT USING PCB(1)
SEGMENT (I2B)
FROM
(I2B-SEGMENT)
SEGMENT (I2B5)
FROM
(I2B5-SEGMENT)
END-EXEC.
IF DIBSTAT = SPACES
CONTINUE
ELSE
MOVE DIBSTAT TO WS-IMS-STAT
MOVE 'ERROR IN D503000-ISRT-I2B-I2B5'
TO ERROR-DESC-TEXT
MOVE LENGTH OF WS-IMS-MSG TO ERROR-DESC-LEN
PERFORM E000000-LOG-ERROR
END-IF.
******************************************************************
** INSERT I2B5 SEGMENT
**
******************************************************************
D504000-ISRT-I2B5.
MOVE 'D504000-ISRT-I2B5' TO WS-ABND-PARA.
EXEC DLI ISRT USING PCB(1)
SEGMENT (I2B5)
FROM
(I2B5-SEGMENT)
END-EXEC.
IF DIBSTAT = SPACES
CONTINUE
ELSE
MOVE DIBSTAT TO WS-IMS-STAT
MOVE 'ERROR IN D504000-ISRT-I2B5'
TO ERROR-DESC-TEXT
MOVE LENGTH OF WS-IMS-MSG TO ERROR-DESC-LEN
PERFORM E000000-LOG-ERROR
END-IF.
******************************************************************
** REPLACE I2B & I2B5 SEGMENT
**
******************************************************************
D505000-REPL-I2B.
MOVE 'D505000-REPL-I2B' TO WS-ABND-PARA.
EXEC DLI REPL
USING PCB (1)
SEGMENT (I2B)
FROM
(I2B-SEGMENT)
END-EXEC.

IF DIBSTAT = SPACES
CONTINUE
ELSE
MOVE DIBSTAT TO WS-IMS-STAT
MOVE 'ERROR IN D505000-REPL-I2B '
TO ERROR-DESC-TEXT
MOVE LENGTH OF WS-IMS-MSG TO ERROR-DESC-LEN
PERFORM E000000-LOG-ERROR
END-IF.
******************************************************************
** REPLACE I2B & I2B5 SEGMENT
**
******************************************************************
D506000-REPL-I2B-I2B5.
MOVE 'D506000-REPL-I2B-I2B5' TO WS-ABND-PARA.
EXEC DLI REPL
USING PCB (1)
SEGMENT (I2B)
FROM
(I2B-SEGMENT)
SEGMENT (I2B5)
FROM
(I2B5-SEGMENT)
END-EXEC.
IF DIBSTAT = SPACES
CONTINUE
ELSE
MOVE DIBSTAT TO WS-IMS-STAT
MOVE 'ERROR IN D506000-REPL-I2B-I2B5 '
TO ERROR-DESC-TEXT
MOVE LENGTH OF WS-IMS-MSG TO ERROR-DESC-LEN
PERFORM E000000-LOG-ERROR
END-IF.

01-

******************************************************************
** REPLACE I2B5 SEGMENT
**
******************************************************************
D507000-REPL-I2B5.
MOVE 'D507000-REPL-I2B5' TO WS-ABND-PARA.
EXEC DLI REPL
USING PCB (1)
SEGMENT (I2B5)
FROM
(I2B5-SEGMENT)
END-EXEC.
IF DIBSTAT = SPACES
CONTINUE
ELSE
MOVE DIBSTAT TO WS-IMS-STAT
MOVE 'ERROR IN D507000-REPL-I2B5 '
TO ERROR-DESC-TEXT
MOVE LENGTH OF WS-IMS-MSG TO ERROR-DESC-LEN
PERFORM E000000-LOG-ERROR
END-IF.

050505050505-

******************************************************************
** CALL WC6812 TO INSERT PRICING DATA
**
******************************************************************
D508000-CALL-WC6812.
MOVE 'D508000-CALL-WC6812' TO WS-ABND-PARA.
MOVE I2A-SEGMENT
TO WC6812-I2A

05050505050505050505050505050505-

MOVE I2B-SEGMENT
MOVE I2B5-SEGMENT

TO WC6812-I2B
TO WC6812-I2B5

EXEC CICS LINK


PROGRAM (WS-LINK-WC6812)
COMMAREA (WC6812-LINK-AREA)
LENGTH (LENGTH OF WC6812-LINK-AREA)
END-EXEC
IF WC6812-RETURN-CODE > 0
MOVE WC6812-RETURN-CODE
TO WS-RET-CODE
MOVE WC6812-RETURN-MSG
TO WS-RET-TXT
MOVE WS-WC6811-MSG TO ERROR-DESC-TEXT
MOVE LENGTH OF WS-WC6811-MSG TO ERROR-DESC-LEN
PERFORM E000000-LOG-ERROR
END-IF.
******************************************************************
** GET NEXT I2A5 IN I2A
**
** WARNING!! CALLING THIS PARAGRAPH WILL ALSO CAUSE DELETE TO **
**
I2A5 & MQUN SEGMENTS
**
******************************************************************
D600000-GNP-I2A5.
MOVE 'D600000-GNP-I2A5' TO WS-ABND-PARA.
EXEC DLI GNP
USING PCB (1)
SEGMENT (I2A5)
INTO
(I2A5-UP-SEGMENT)
WHERE
(I2A5KEY => I2A5-SSA-Q)
END-EXEC.
IF DIBSTAT = SPACES
MOVE 'N' TO EOF-I2A5
ELSE
IF DIBSTAT = 'GE' OR 'GB'
MOVE 'Y'
TO EOF-I2A5
ELSE
MOVE DIBSTAT TO WS-IMS-STAT
MOVE 'ERROR IN D600000-GNP-I2A5'
TO ERROR-DESC-TEXT
MOVE LENGTH OF WS-IMS-MSG TO ERROR-DESC-LEN
PERFORM E000000-LOG-ERROR
END-IF
END-IF.
******************************************************************
** DELETE ALL I2A5 SEGMENT(S)
**
******************************************************************
D601000-DLET-I2A5.
MOVE 'D601000-DLET-I2A5' TO WS-ABND-PARA.
EXEC DLI DLET
USING PCB (1)
SEGMENT (I2A5)
FROM
(I2A5-UP-SEGMENT)
END-EXEC.
IF DIBSTAT = SPACES
CONTINUE
ELSE
MOVE DIBSTAT TO WS-IMS-STAT

MOVE 'ERROR IN D601000-DLET-I2A5'


TO ERROR-DESC-TEXT
MOVE LENGTH OF WS-IMS-MSG TO ERROR-DESC-LEN
PERFORM E000000-LOG-ERROR
END-IF.
******************************************************************
** INSERT ALL I2A5 SEGMENT(S)
**
******************************************************************
D602000-ISRT-I2A5.
MOVE 'D602000-ISRT-I2A5' TO WS-ABND-PARA.
EXEC DLI ISRT
USING PCB (1)
SEGMENT (I2A5)
FROM
(I2A5-UP-SEGMENT)
END-EXEC.
IF DIBSTAT = SPACES
CONTINUE
ELSE
MOVE DIBSTAT TO WS-IMS-STAT
MOVE 'ERROR IN D602000-ISRT-I2A5'
TO ERROR-DESC-TEXT
MOVE LENGTH OF WS-IMS-MSG TO ERROR-DESC-LEN
PERFORM E000000-LOG-ERROR
END-IF.
******************************************************************
** GET UNIQUE V1A AND V1D SEGMENTS
**
******************************************************************
D700000-GU-V1A-V1D.
MOVE 'D700000-GU-V1A-V1D' TO WS-ABND-PARA.
EXEC DLI GU
USING PCB(2)
SEGMENT(V1A)
WHERE(V1AKEY = V1A-KEY)
SEGMENT(V1D)
INTO(V1D-SEGMENT)
WHERE(V1DKEY = V1D-KEY)
END-EXEC.
IF DIBSTAT = SPACE
MOVE 'Y' TO FOUND-SW
ELSE
IF DIBSTAT = 'GE' OR 'GB'
IF DIBSEGM = 'V1A
'
MOVE DIBSTAT TO WS-IMS-STAT
MOVE 'VENDOR DEPT NOT FOUND FOR ITEM '
TO ERROR-DESC-TEXT
MOVE LENGTH OF WS-IMS-MSG TO ERROR-DESC-LEN
PERFORM E000000-LOG-ERROR
ELSE
MOVE DIBSTAT TO WS-IMS-STAT
MOVE 'VENDOR NOT FOUND FOR ITEM '
TO WS-IMS-TXT
MOVE LENGTH OF WS-IMS-MSG TO ERROR-DESC-LEN
MOVE WS-IMS-MSG TO ERROR-DESC-TEXT
PERFORM E000000-LOG-ERROR
END-IF

ELSE
MOVE DIBSTAT TO WS-IMS-STAT
MOVE 'ERROR IN D700000-GU-V1A-V1D'
TO ERROR-DESC-TEXT
MOVE LENGTH OF WS-IMS-MSG TO ERROR-DESC-LEN
PERFORM E000000-LOG-ERROR
END-IF
END-IF.
******************************************************************
** GET NEXT V1P IN V1D
**
******************************************************************
D701000-GNP-V1P.
MOVE 'D701000-GNP-V1P' TO WS-ABND-PARA.
EXEC DLI GNP USING PCB(2)
SEGMENT(V1P)
INTO (V1P-SEGMENT)
WHERE (V1PKEY = V1P-KEY)
END-EXEC.
IF DIBSTAT = SPACE
MOVE 'Y' TO FOUND-SW
ELSE
IF DIBSTAT = 'GE' OR 'GB'
MOVE DIBSTAT TO WS-IMS-STAT
MOVE 'VENDOR NAME NOT FOUND FOR ITEM '
TO WS-IMS-TXT
MOVE WS-IMS-MSG TO ERROR-DESC-TEXT
MOVE LENGTH OF WS-IMS-MSG TO ERROR-DESC-LEN
PERFORM E000000-LOG-ERROR
ELSE
MOVE DIBSTAT TO WS-IMS-STAT
MOVE 'ERROR IN D701000-GNP-V1P'
TO WS-IMS-TXT
MOVE WS-IMS-MSG TO ERROR-DESC-TEXT
MOVE LENGTH OF WS-IMS-MSG TO ERROR-DESC-LEN
PERFORM E000000-LOG-ERROR
END-IF
END-IF.
******************************************************************
** INSERT MQSQ SEGMENT
**
******************************************************************
D800000-ISRT-MQSQ.
MOVE 'D800000-ISRT-MQSQ' TO WS-ABND-PARA.
EXEC DLI ISRT USING PCB(3)
SEGMENT (MQA)
FROM
(MQSQ-SEGMENT)
END-EXEC.
IF DIBSTAT = ' '
MOVE 'N' TO DUP-ISRT
ELSE
IF DIBSTAT = 'II'
MOVE 'Y' TO DUP-ISRT
ELSE
MOVE DIBSTAT TO WS-IMS-STAT

MOVE 'ERROR IN D800000-ISRT-MQSQ'


TO WS-IMS-TXT
MOVE WS-IMS-MSG TO ERROR-DESC-TEXT
MOVE LENGTH OF WS-IMS-MSG TO ERROR-DESC-LEN
PERFORM E000000-LOG-ERROR
END-IF
END-IF.
******************************************************************
** GET UNIQUE MQSQ SEGMENT
**
******************************************************************
D801000-GU-MQSQ.
MOVE 'D801000-GU-MQSQ' TO WS-ABND-PARA.
EXEC DLI GU

USING PCB(3)
SEGMENT (MQA)
INTO
(MQSQ-SEGMENT)
WHERE
(MQAKEY = MQSQ-KEY)

END-EXEC.
IF DIBSTAT = ' '
MOVE 'Y' TO FOUND-SW
ELSE
IF DIBSTAT = 'GE'
MOVE 'N' TO FOUND-SW
ELSE
MOVE DIBSTAT TO WS-IMS-STAT
MOVE 'ERROR IN D801000-GU-MQSQ'
TO WS-IMS-TXT
MOVE WS-IMS-MSG TO ERROR-DESC-TEXT
MOVE LENGTH OF WS-IMS-MSG TO ERROR-DESC-LEN
PERFORM E000000-LOG-ERROR
END-IF
END-IF.
******************************************************************
** DELETE MQSQ SEGMENT
**
******************************************************************
D802000-DLET-MQSQ.
MOVE 'D400420-DLET-MQSQ' TO WS-ABND-PARA.
EXEC DLI DLET
USING PCB (3)
SEGMENT (MQA)
FROM
(MQSQ-SEGMENT)
END-EXEC.
IF DIBSTAT = ' '
CONTINUE
ELSE
MOVE DIBSTAT TO WS-IMS-STAT
MOVE 'ERROR IN D802000-DLET-MQSQ'
TO WS-IMS-TXT
MOVE WS-IMS-MSG TO ERROR-DESC-TEXT
MOVE LENGTH OF WS-IMS-MSG TO ERROR-DESC-LEN
PERFORM E000000-LOG-ERROR
END-IF.
******************************************************************
** INSERT AN MQUN SEGMENT
**
******************************************************************

D803000-ISRT-MQUN.
MOVE 'D803000-ISRT-MQUN' TO WS-ABND-PARA.
EXEC DLI ISRT
USING PCB(3)
SEGMENT (MQA)
FROM
(MQUN-SEGMENT)
END-EXEC.
IF DIBSTAT = SPACE
MOVE 'N' TO DUP-ISRT
ELSE
IF DIBSTAT = 'II'
MOVE 'Y' TO DUP-ISRT
ELSE
MOVE DIBSTAT TO WS-IMS-STAT
MOVE 'ERROR IN D803000-ISRT-MQUN '
TO WS-IMS-TXT
MOVE WS-IMS-MSG TO ERROR-DESC-TEXT
MOVE LENGTH OF WS-IMS-MSG TO ERROR-DESC-LEN
PERFORM E000000-LOG-ERROR
END-IF
END-IF.
******************************************************************
** GU MQUN SEGMENT
**
******************************************************************
D804000-GU-MQUN.
MOVE 'D804000-GU-MQUN' TO WS-ABND-PARA.
EXEC DLI GU
USING PCB(3)
SEGMENT (MQA)
INTO
(MQUN-SEGMENT)
WHERE
(MQAKEY = MQUN-KEY)
END-EXEC.
IF DIBSTAT = SPACE
MOVE 'Y' TO FOUND-SW
ELSE
IF DIBSTAT = 'GE'
MOVE 'N' TO FOUND-SW
ELSE
MOVE DIBSTAT TO WS-IMS-STAT
MOVE 'ERROR IN D804000-GU-MQUN '
TO WS-IMS-TXT
MOVE WS-IMS-MSG TO ERROR-DESC-TEXT
MOVE LENGTH OF WS-IMS-MSG TO ERROR-DESC-LEN
PERFORM E000000-LOG-ERROR
END-IF
END-IF.
******************************************************************
** REPLACE AN MQUN SEGMENT
**
******************************************************************
D805000-REPL-MQUN.
MOVE 'D805000-REPL-MQUN' TO WS-ABND-PARA.
EXEC DLI REPL
USING PCB(3)
SEGMENT (MQA)
FROM
(MQUN-SEGMENT)
END-EXEC.

IF DIBSTAT = SPACE
CONTINUE
ELSE
MOVE DIBSTAT TO WS-IMS-STAT
MOVE 'ERROR IN D805000-REPL-MQUN '
TO WS-IMS-TXT
MOVE WS-IMS-MSG TO ERROR-DESC-TEXT
MOVE LENGTH OF WS-IMS-MSG TO ERROR-DESC-LEN
PERFORM E000000-LOG-ERROR
END-IF.
******************************************************************
** DELETE AN MQUN SEGMENT
**
******************************************************************
D806000-DLET-MQUN.
MOVE 'D806000-DLET-MQUN' TO WS-ABND-PARA.
EXEC DLI DLET
USING PCB(3)
SEGMENT (MQA)
FROM
(MQUN-SEGMENT)
END-EXEC.
IF DIBSTAT = SPACE
CONTINUE
ELSE
MOVE DIBSTAT TO WS-IMS-STAT
MOVE 'ERROR IN D806000-DLET-MQUN '
TO WS-IMS-TXT
MOVE WS-IMS-MSG TO ERROR-DESC-TEXT
MOVE LENGTH OF WS-IMS-MSG TO ERROR-DESC-LEN
PERFORM E000000-LOG-ERROR
END-IF.
******************************************************************
** HANDLE ABENDS DUE TO IMS ERRORS
******************************************************************
D999999-HANDLE-ABEND.
IF DIBSTAT > SPACES
AND DIBSTAT NOT = 'GE' AND 'II'
STRING 'DIBSTAT ' DIBSTAT
DELIMITED BY SIZE
INTO WS-ABND-DIBSTAT
ELSE
EXEC CICS ASSIGN
ABCODE(WS-CICS-ABCODE)
END-EXEC
STRING 'ABCODE ' WS-CICS-ABCODE
DELIMITED BY SIZE
INTO WS-ABND-ABCODE
END-IF.
MOVE WS-ABND-MSG TO BM-MESSAGE
ERROR-DESC-TEXT OF PUBLISH-PENDG-ERR-DATA
MOVE LENGTH OF WS-ABND-MSG
TO ERROR-DESC-LEN OF PUBLISH-PENDG-ERR-DATA
IF WS-ABND-PARA NOT = 'X000100-ISRT-PUB-PENDG-ERR'
MOVE 1 TO WS-RETRY-CNT
MOVE 'N' TO DB2-DONE-SW
PERFORM X000100-ISRT-PUB-PENDG-ERR

UNTIL DB2-DONE-SW = 'Y'


END-IF
IF WS-ABND-PARA NOT = 'R600000-SEND-PAGE'
PERFORM R600000-SEND-PAGE
END-IF
PERFORM R100050-RESTART-MIN.
PERFORM R200000-RETURN.
******************************************************************
** LOG ERROR TO DB2 ERROR TABLE GET NEXT ROW AND GO TO MAIN LOOP.
******************************************************************
E000000-LOG-ERROR.
MOVE 'E000000-LOG-ERROR' TO WS-ABND-PARA.
MOVE 1 TO WS-RETRY-CNT
MOVE 'N' TO DB2-DONE-SW
PERFORM X000100-ISRT-PUB-PENDG-ERR
UNTIL DB2-DONE-SW = 'Y'
IF WS-911-SW = 'Y'
MOVE 'N' TO WS-911-SW
PERFORM D200000-TERM-PSB
MOVE 1 TO WS-RETRY-CNT
MOVE 'N' TO DB2-DONE-SW
MOVE '2008-01-01-00.01.01.000001'
TO TRIGGER-TS OF PUBLISH-PENDING-DATA
PERFORM X000000-OPEN-PUB-PEND-CURS
UNTIL DB2-DONE-SW = 'Y'
PERFORM D000000-SCHED-PSB
END-IF.
MOVE 1 TO WS-RETRY-CNT
MOVE 'N' TO DB2-DONE-SW
PERFORM X000400-FETCH-PUB-PEND
UNTIL DB2-DONE-SW = 'Y'
IF EOF-PUBPEND = 'N'
GO TO A005000-PROCESS-PUBPEND
ELSE
MOVE 'N' TO DB2-DONE-SW
MOVE 1 TO WS-RETRY-CNT
PERFORM X000500-CLOSE-PUBPEND
UNTIL DB2-DONE-SW = 'Y'
PERFORM D200000-TERM-PSB
PERFORM R100000-RESTART-SEC
PERFORM R200000-RETURN
END-IF.
******************************************************************
** SEND PAGE , LOG ERROR TO DB2 ERROR , RESTART IN MIN & RETURN
******************************************************************
E100000-LOG-ERR-AND-EXIT.
MOVE 'E100000-LOG-ERR-AND-EXIT' TO WS-ABND-PARA.
MOVE WS-DB2-MSG TO ERROR-DESC-TEXT.
MOVE LENGTH OF WS-DB2-MSG TO ERROR-DESC-LEN.
PERFORM R600000-SEND-PAGE.
MOVE 1 TO WS-RETRY-CNT.
MOVE 'N' TO DB2-DONE-SW.
PERFORM X000100-ISRT-PUB-PENDG-ERR

UNTIL DB2-DONE-SW = 'Y'.


PERFORM R100050-RESTART-MIN.
PERFORM R200000-RETURN.
******************************************************************
R100000-RESTART-SEC.
******************************************************************
MOVE 'R100000-RESTART' TO WS-ABND-PARA.
EXEC CICS
START TRANSID('WLU0')
RESP(WS-CICS-RESP)
AFTER SECONDS(WS-RSTRT-SEC)
REQID('WLU0')
FROM(WS-NOTHING)
LENGTH(+1)
END-EXEC
IF WS-CICS-RESP = DFHRESP(IOERR) OR DFHRESP(NORMAL)
CONTINUE
ELSE
MOVE 'ICE'
TO BM-TYPE
MOVE WS-CICS-RESP
TO BM-CODE-OUT
MOVE WS-BEEP-MESSAGE-ICE
TO BM-MESSAGE
PERFORM R600000-SEND-PAGE
END-IF.
******************************************************************
R100050-RESTART-MIN.
******************************************************************
MOVE 'R100050-RESTART-MIN ' TO WS-ABND-PARA.
EXEC CICS
START TRANSID('WLU0')
RESP(WS-CICS-RESP)
AFTER MINUTES(WS-RSTRT-MIN)
REQID('WLU0')
FROM(WS-NOTHING)
LENGTH(+1)
END-EXEC
IF WS-CICS-RESP = DFHRESP(IOERR) OR DFHRESP(NORMAL)
CONTINUE
ELSE
MOVE 'ICE'
TO BM-TYPE
MOVE WS-CICS-RESP
TO BM-CODE-OUT
MOVE WS-BEEP-MESSAGE-ICE
TO BM-MESSAGE
PERFORM R600000-SEND-PAGE
END-IF.
******************************************************************
R200000-RETURN.
******************************************************************
EXEC CICS
RETURN
END-EXEC.
******************************************************************
R400000-COMMIT-DATA.
******************************************************************
MOVE 'R400000-COMMIT-DATA' TO WS-ABND-PARA.
EXEC CICS
SYNCPOINT
END-EXEC.

******************************************************************
******************************************************************
** THIS PARAGRAPH WRITES A MESSAGE THAT AUTO OPS PICKS UP AND **
** SENDS TO THE MDSE1 PAGER. IT ALSO PERFORMS A PARAGRAPH TO
**
** WRITE THE ERROR MESSAGE TO A TEMP STORAGE QUEUE.
**
**
**
** MESSAGE EXAMPLE:
**
**
WC6811-01E MQS 0000000002 MQSERIES ERROR...
**
** WHERE WC6811-01E IS THE MESSAGE ID
**
**
MQS
IS MESSAGE TYPE (MQSERIES)
**
**
000000002 IS THE ERROR CODE (NEEDED TO IDENTIFY
**
**
PROBLEM WITH QUEUE)
**
**
**
** WHAT TO DO:
**
**
FIRST LOOK AT PUBLISH_PENDG_ERR TABLE FOR THE LATEST
**
**
MESSAGES. LAST_UPDATE_TS COLUMN HAS THE TIMESTAMP OF
**
**
WHEN THE MESSAGE WAS PUT ON THE TABLE.
**
**
**
**
IF NO ERROR MESSAGE IS THERE, LOOK IN THE TEMP STORAGE
**
**
QUEUE: ITEM@@1_WLU0ERRQ (WHERE @@ = COUNTRY CODE)
**
**
**
******************************************************************
R600000-SEND-PAGE.
MOVE 'R600000-SEND-PAGE' TO WS-ABND-PARA.
IF TSENV-PROD
EXEC CICS
WRITEQ TD QUEUE('CSSL')
FROM(WS-BEEP-MESSAGE)
END-EXEC
END-IF.
PERFORM R700000-WRITE-TSQ-ERROR.
******************************************************************
** WRITES ERROR INFO TO A TSQ FOR RESEARCH PURPOSES
**
******************************************************************
R700000-WRITE-TSQ-ERROR.
MOVE 'R700000-WRITE-TSQ-ERROR' TO WS-ABND-PARA.
EXEC CICS
WRITEQ TS QNAME(WS-ERR-TSQ)
FROM(WS-CICS-MESSAGE)
LENGTH(LENGTH OF WS-CICS-MESSAGE)
END-EXEC.
EXEC CICS
WRITEQ TS QNAME(WS-ERR-TSQ)
FROM(WS-BEEP-MESSAGE)
LENGTH(LENGTH OF WS-BEEP-MESSAGE)
END-EXEC.
MOVE
TO
MOVE
TO
MOVE
TO
MOVE
TO
MOVE
TO

ITEM-NBR OF PUBLISH-PENDG-ERR-DATA
WS-PPER-ITEM-NBR
TABLE-NAME OF PUBLISH-PENDG-ERR-DATA
WS-PPER-TABLE-NAME
LOG-TS
OF PUBLISH-PENDG-ERR-DATA
WS-PPER-LOG-TS
ERROR-DESC-TEXT OF PUBLISH-PENDG-ERR-DATA
WS-PPER-ERROR-DESC
CICS-REGION-ID OF PUBLISH-PENDG-ERR-DATA
WS-PPER-CICS-REGION

MOVE LAST-UPDATE-TS OF PUBLISH-PENDG-ERR-DATA


TO WS-PPER-LAST-UPDATE-TS
MOVE LAST-UPDATE-PGM-ID OF PUBLISH-PENDG-ERR-DATA
TO WS-PPER-LAST-UPDATE-PGM
IF PE-NULL-DC-NBR >= 0
MOVE DC-NBR
OF PUBLISH-PENDG-ERR-DATA
TO WS-PPER-DC-NBR
ELSE
MOVE 0 TO WS-PPER-DC-NBR
END-IF
MOVE 0
TO WS-PPER-CROSS-REF-NBR
WS-PPER-ASSORTMENT-NBR
EXEC CICS
WRITEQ TS QNAME(WS-ERR-TSQ)
FROM(WS-PPER-ERR-MSG)
LENGTH(LENGTH OF WS-PPER-ERR-MSG)
END-EXEC.
IF BM-TYPE = 'DB2'
CALL 'DSNTIAR' USING SQLCA
DSNTIAR-ERR-MSG DSNTIAR-LRECL-LEN
IF RETURN-CODE = 0
PERFORM VARYING DSNTIAR-ERR-IDX
FROM 1 BY 1 UNTIL DSNTIAR-ERR-IDX > 24
IF DSNTIAR-MSG-TXT(DSNTIAR-ERR-IDX) NOT = SPACES
EXEC CICS
WRITEQ TS QNAME(WS-ERR-TSQ)
FROM(DSNTIAR-MSG-TXT(DSNTIAR-ERR-IDX))
END-EXEC
END-IF
END-PERFORM
END-IF
END-IF.
******************************************************************
*
OPEN CURSOR ON PUBLISH_PENDING TABLE
**
******************************************************************
X000000-OPEN-PUB-PEND-CURS.
MOVE 'X000000-OPEN-PUB-PEND-CURS' TO WS-ABND-PARA.
EXEC SQL
OPEN PUBPEND
END-EXEC.
EVALUATE SQLCODE
WHEN 0
WHEN -502
MOVE 'Y' TO DB2-DONE-SW PUBPEND-OPEN-SW
WHEN OTHER
MOVE 'FAIL TO OPEN PUBPEND CURSOR '
TO WS-DB2-TXT BM-MESSAGE
MOVE SQLCODE
TO WS-DB2-CODE BM-CODE-OUT
PERFORM E100000-LOG-ERR-AND-EXIT
END-EVALUATE.
******************************************************************
*
SELECT ROW FROM PUBLISH_PENDING
**
******************************************************************
X000050-SLCT-PUBPEND.

MOVE 'X000050-SLCT-PUBPEND' TO WS-ABND-PARA.


EXEC SQL
SELECT
INTO
FROM
WHERE
AND
AND
END-EXEC

'Y'
:PUBPEND-SW
PUBLISH_PENDING
TABLE_NAME = :PUBLISH-PENDING-DATA.TABLE-NAME
TRIGGER_TS = :PUBLISH-PENDING-DATA.TRIGGER-TS
SEQ_NBR
= :PUBLISH-PENDING-DATA.SEQ-NBR

EVALUATE SQLCODE
WHEN 0
MOVE 'Y' TO DB2-DONE-SW
WHEN +100
MOVE 'N' TO PUBPEND-SW
MOVE 'Y' TO DB2-DONE-SW
WHEN -911
IF WS-911-RETRY-CNT <= WS-911-RETRY-MAX
ADD 1 TO WS-911-RETRY-CNT
MOVE '-911 ON PUBLISH_PENDING SELECT'
TO WS-DB2-TXT
MOVE SQLCODE TO WS-DB2-CODE
MOVE WS-DB2-MSG TO ERROR-DESC-TEXT
MOVE LENGTH OF WS-DB2-MSG TO ERROR-DESC-LEN
MOVE 'Y' TO WS-911-SW
PERFORM E000000-LOG-ERROR
ELSE
MOVE 'SELECT ERROR ON PUBLISH_PENDING'
TO WS-DB2-TXT BM-MESSAGE
MOVE SQLCODE
TO WS-DB2-CODE BM-CODE-OUT
PERFORM E100000-LOG-ERR-AND-EXIT
END-IF
WHEN -913
IF WS-RETRY-CNT <= WS-RETRY-MAX
ADD 1 TO WS-RETRY-CNT
ELSE
MOVE 'SELECT ERROR ON PUBLISH_PENDING'
TO WS-DB2-TXT BM-MESSAGE
MOVE SQLCODE
TO WS-DB2-CODE BM-CODE-OUT
PERFORM E100000-LOG-ERR-AND-EXIT
END-IF
WHEN OTHER
MOVE 'SELECT ERROR ON PUBLISH_PENDING'
TO WS-DB2-TXT BM-MESSAGE
MOVE SQLCODE
TO WS-DB2-CODE BM-CODE-OUT
PERFORM E100000-LOG-ERR-AND-EXIT
END-EVALUATE.
******************************************************************
** INSERT A ROW IN THE ERROR TABLE
**
******************************************************************
X000100-ISRT-PUB-PENDG-ERR.
MOVE 'X000100-ISRT-PUB-PENDG-ERR' TO WS-ABND-PARA.
EXEC SQL
INSERT
INTO PUBLISH_PENDG_ERR

( ITEM_NBR
,TABLE_NAME
,LOG_TS
,ERROR_DESC
,CICS_REGION_ID
,LAST_UPDATE_TS
,LAST_UPDATE_PGM_ID
,DC_NBR
,CROSS_REF_NBR
,ASSORTMENT_NBR
)
VALUES
( :PUBLISH-PENDG-ERR-DATA.ITEM-NBR
,:PUBLISH-PENDG-ERR-DATA.TABLE-NAME
,:PUBLISH-PENDG-ERR-DATA.LOG-TS
,:PUBLISH-PENDG-ERR-DATA.ERROR-DESC
,:PUBLISH-PENDG-ERR-DATA.CICS-REGION-ID
, CURRENT TIMESTAMP
,:PUBLISH-PENDG-ERR-DATA.LAST-UPDATE-PGM-ID
,:PUBLISH-PENDG-ERR-DATA.DC-NBR
:PE-NULL-DC-NBR
,:PUBLISH-PENDG-ERR-DATA.CROSS-REF-NBR
:PE-NULL-CROSS-REF-NBR
,:PUBLISH-PENDG-ERR-DATA.ASSORTMENT-NBR
:PE-NULL-ASSORTMENT-NBR
)
END-EXEC.
EVALUATE SQLCODE
WHEN 0
MOVE 'Y' TO DB2-DONE-SW
WHEN -803
MOVE 'Y' TO DUP-ISRT
MOVE 'Y' TO DB2-DONE-SW
WHEN -913
IF WS-RETRY-CNT <= WS-RETRY-MAX
ADD 1 TO WS-RETRY-CNT
ELSE
MOVE 'INSERT ERROR ON PUBLISH_PENDG_ERR '
TO BM-MESSAGE
MOVE SQLCODE TO BM-CODE-OUT
MOVE 'DB2' TO BM-TYPE
PERFORM R600000-SEND-PAGE
PERFORM R100050-RESTART-MIN
PERFORM R200000-RETURN
END-IF
WHEN OTHER
MOVE 'INSERT ERROR ON PUBLISH_PENDG_ERR '
TO BM-MESSAGE
MOVE SQLCODE TO BM-CODE-OUT
MOVE 'DB2' TO BM-TYPE
PERFORM R600000-SEND-PAGE
PERFORM R100050-RESTART-MIN
PERFORM R200000-RETURN
END-EVALUATE.
******************************************************************
** INSERT A ROW INTO PUBLISH_COMPLETE
**
******************************************************************
X000200-ISRT-PUBCOMP.

MOVE 'X000200-ISRT-PUBCOMP' TO WS-ABND-PARA.


EXEC SQL
INSERT
INTO PUBLISH_COMPLETE
( TABLE_NAME
,TRIGGER_TS
,CHANGE_TYPE_CODE
,DEPT_NBR
,SUBCLASS_NBR
,FINELINE_NBR
,MDSE_CATG_NBR
,MDSE_SUBCATG_NBR
,PRODUCT_NBR
,CONSUMER_ITEM_NBR
,ITEM_NBR
,VAR_TYPE_ID
,VAR_ID
,DC_NBR
,CROSS_REF_NBR
,ASSORTMENT_NBR
,SEQ_NBR
,PUBLISH_CPLT_TS
)
VALUES
( :PUBLISH-PENDING-DATA.TABLE-NAME
,:PUBLISH-PENDING-DATA.TRIGGER-TS
,:PUBLISH-PENDING-DATA.CHANGE-TYPE-CODE
,:PUBLISH-PENDING-DATA.DEPT-NBR
:PP-NULL-DEPT-NBR
,:PUBLISH-PENDING-DATA.SUBCLASS-NBR
:PP-NULL-SUBCLASS-NBR
,:PUBLISH-PENDING-DATA.FINELINE-NBR
:PP-NULL-FINELINE-NBR
,:PUBLISH-PENDING-DATA.MDSE-CATG-NBR
:PP-NULL-MDSE-CATG-NBR
,:PUBLISH-PENDING-DATA.MDSE-SUBCATG-NBR
:PP-NULL-MDSE-SUBCATG-NBR
,:PUBLISH-PENDING-DATA.PRODUCT-NBR
:PP-NULL-PRODUCT-NBR
,:PUBLISH-PENDING-DATA.CONSUMER-ITEM-NBR
:PP-NULL-CONSUMER-ITEM-NBR
,:PUBLISH-PENDING-DATA.ITEM-NBR
:PP-NULL-ITEM-NBR
,:PUBLISH-PENDING-DATA.VAR-TYPE-ID
:PP-NULL-VAR-TYPE-ID
,:PUBLISH-PENDING-DATA.VAR-ID
:PP-NULL-VAR-ID
,:PUBLISH-PENDING-DATA.DC-NBR
:PP-NULL-DC-NBR
,:PUBLISH-PENDING-DATA.CROSS-REF-NBR
:PP-NULL-CROSS-REF-NBR
,:PUBLISH-PENDING-DATA.ASSORTMENT-NBR
:PP-NULL-ASSORTMENT-NBR
,:PUBLISH-PENDING-DATA.SEQ-NBR
, CURRENT TIMESTAMP
)
END-EXEC.
EVALUATE SQLCODE
WHEN 0

MOVE 'Y' TO DB2-DONE-SW


WHEN -803
MOVE 'Y' TO DUP-ISRT
MOVE 'Y' TO DB2-DONE-SW
WHEN -911
IF WS-911-RETRY-CNT <= WS-911-RETRY-MAX
ADD 1 TO WS-911-RETRY-CNT
MOVE '-911 ON PUBLISH_COMPLETE INSERT '
TO WS-DB2-TXT
MOVE SQLCODE TO WS-DB2-CODE
MOVE WS-DB2-MSG TO ERROR-DESC-TEXT
MOVE LENGTH OF WS-DB2-MSG TO ERROR-DESC-LEN
MOVE 'Y' TO WS-911-SW
PERFORM E000000-LOG-ERROR
ELSE
MOVE 'INSERT ERROR ON PUBLISH_COMPLETE '
TO WS-DB2-TXT BM-MESSAGE
MOVE SQLCODE
TO WS-DB2-CODE BM-CODE-OUT
PERFORM E100000-LOG-ERR-AND-EXIT
END-IF
WHEN -913
IF WS-RETRY-CNT <= WS-RETRY-MAX
ADD 1 TO WS-RETRY-CNT
ELSE
MOVE 'INSERT ERROR ON PUBLISH_COMPLETE '
TO WS-DB2-TXT BM-MESSAGE
MOVE SQLCODE
TO WS-DB2-CODE BM-CODE-OUT
PERFORM E100000-LOG-ERR-AND-EXIT
END-IF
WHEN OTHER
MOVE 'INSERT ERROR ON PUBLISH_COMPLETE '
TO WS-DB2-TXT BM-MESSAGE
MOVE SQLCODE
TO WS-DB2-CODE BM-CODE-OUT
PERFORM E100000-LOG-ERR-AND-EXIT
END-EVALUATE.
******************************************************************
** DELETE THE CURRENT ROW FROM THE PUBLISH_PENDING TABLE
******************************************************************
X000300-DLET-PUBPEND.
MOVE 'X000300-DLET-PUBPEND' TO WS-ABND-PARA.
EXEC SQL
DELETE FROM PUBLISH_PENDING
WHERE TABLE_NAME = :PUBLISH-PENDING-DATA.TABLE-NAME
AND TRIGGER_TS = :PUBLISH-PENDING-DATA.TRIGGER-TS
AND SEQ_NBR
= :PUBLISH-PENDING-DATA.SEQ-NBR
END-EXEC.
EVALUATE SQLCODE
WHEN 0
WHEN +100
MOVE 'Y' TO DB2-DONE-SW
WHEN -911
IF WS-911-RETRY-CNT <= WS-911-RETRY-MAX
ADD 1 TO WS-911-RETRY-CNT
MOVE '-911 ON PUBLISH_PENDING DELETE '

TO WS-DB2-TXT
MOVE SQLCODE TO WS-DB2-CODE
MOVE WS-DB2-MSG TO ERROR-DESC-TEXT
MOVE LENGTH OF WS-DB2-MSG TO ERROR-DESC-LEN
MOVE 'Y' TO WS-911-SW
PERFORM E000000-LOG-ERROR
ELSE
MOVE 'DELETE ERROR ON PUBLISH_PENDING '
TO WS-DB2-TXT BM-MESSAGE
MOVE SQLCODE
TO WS-DB2-CODE BM-CODE-OUT
PERFORM E100000-LOG-ERR-AND-EXIT
END-IF
WHEN -913
IF WS-RETRY-CNT <= WS-RETRY-MAX
ADD 1 TO WS-RETRY-CNT
ELSE
MOVE 'DELETE ERROR ON PUBPEND '
TO WS-DB2-TXT BM-MESSAGE
MOVE SQLCODE
TO WS-DB2-CODE BM-CODE-OUT
PERFORM E100000-LOG-ERR-AND-EXIT
END-IF
WHEN OTHER
MOVE 'DELETE ERROR ON PUBPEND '
TO WS-DB2-TXT BM-MESSAGE
MOVE SQLCODE
TO WS-DB2-CODE BM-CODE-OUT
PERFORM E100000-LOG-ERR-AND-EXIT
END-EVALUATE.
******************************************************************
** DELETE ALL ROWS FOR THE CURRENT ITEM# FROM PUBLISH_PENDING **
******************************************************************
X000350-DLET-PUBPEND-UPCITEM.
MOVE 'X000350-DLET-PUBPEND-UPCITEM' TO WS-ABND-PARA.
EXEC SQL
DELETE FROM PUBLISH_PENDING
WHERE TABLE_NAME = :PUBLISH-PENDING-DATA.TABLE-NAME
AND ITEM_NBR
= :PUBLISH-PENDING-DATA.ITEM-NBR
AND TRIGGER_TS <= :WS-DLET-PUBPEND-TS
END-EXEC.
EVALUATE SQLCODE
WHEN 0
WHEN +100
MOVE 'Y' TO DB2-DONE-SW
WHEN -911
IF WS-911-RETRY-CNT <= WS-911-RETRY-MAX
ADD 1 TO WS-911-RETRY-CNT
MOVE '-911 ON PUBLISH_PENDING DELETE '
TO WS-DB2-TXT
MOVE SQLCODE TO WS-DB2-CODE
MOVE WS-DB2-MSG TO ERROR-DESC-TEXT
MOVE LENGTH OF WS-DB2-MSG TO ERROR-DESC-LEN
MOVE 'Y' TO WS-911-SW
PERFORM E000000-LOG-ERROR
ELSE
MOVE 'DELETE ERROR ON PUBLISH_PENDING '

TO WS-DB2-TXT BM-MESSAGE
MOVE SQLCODE
TO WS-DB2-CODE BM-CODE-OUT
PERFORM E100000-LOG-ERR-AND-EXIT
END-IF
WHEN -913
IF WS-RETRY-CNT <= WS-RETRY-MAX
ADD 1 TO WS-RETRY-CNT
ELSE
MOVE 'DELETE ERROR ON PUBPEND '
TO WS-DB2-TXT BM-MESSAGE
MOVE SQLCODE
TO WS-DB2-CODE BM-CODE-OUT
PERFORM E100000-LOG-ERR-AND-EXIT
END-IF
WHEN OTHER
MOVE 'DELETE ERROR ON PUBPEND '
TO WS-DB2-TXT BM-MESSAGE
MOVE SQLCODE
TO WS-DB2-CODE BM-CODE-OUT
PERFORM E100000-LOG-ERR-AND-EXIT
END-EVALUATE.
******************************************************************
*
FETCH A ROW FROM PUBLISH_PENDING
**
******************************************************************
X000400-FETCH-PUB-PEND.
MOVE 'X000400-FETCH-PUB-PEND' TO WS-ABND-PARA.
EXEC SQL
FETCH PUBPEND
INTO :PUBLISH-PENDING-DATA.TABLE-NAME
,:PUBLISH-PENDING-DATA.TRIGGER-TS
,:PUBLISH-PENDING-DATA.CHANGE-TYPE-CODE
,:PUBLISH-PENDING-DATA.DEPT-NBR
:PP-NULL-DEPT-NBR
,:PUBLISH-PENDING-DATA.SUBCLASS-NBR
:PP-NULL-SUBCLASS-NBR
,:PUBLISH-PENDING-DATA.FINELINE-NBR
:PP-NULL-FINELINE-NBR
,:PUBLISH-PENDING-DATA.MDSE-CATG-NBR
:PP-NULL-MDSE-CATG-NBR
,:PUBLISH-PENDING-DATA.MDSE-SUBCATG-NBR
:PP-NULL-MDSE-SUBCATG-NBR
,:PUBLISH-PENDING-DATA.PRODUCT-NBR
:PP-NULL-PRODUCT-NBR
,:PUBLISH-PENDING-DATA.CONSUMER-ITEM-NBR
:PP-NULL-CONSUMER-ITEM-NBR
,:PUBLISH-PENDING-DATA.ITEM-NBR
:PP-NULL-ITEM-NBR
,:PUBLISH-PENDING-DATA.VAR-TYPE-ID
:PP-NULL-VAR-TYPE-ID
,:PUBLISH-PENDING-DATA.VAR-ID
:PP-NULL-VAR-ID
,:PUBLISH-PENDING-DATA.DC-NBR
:PP-NULL-DC-NBR
,:PUBLISH-PENDING-DATA.CROSS-REF-NBR
:PP-NULL-CROSS-REF-NBR
,:PUBLISH-PENDING-DATA.ASSORTMENT-NBR
:PP-NULL-ASSORTMENT-NBR
,:PUBLISH-PENDING-DATA.SEQ-NBR

,:ITEM-LEGACY-XREF-DATA.LEGACY-ITEM-NBR
END-EXEC.
EVALUATE SQLCODE
WHEN 0
MOVE 'Y' TO DB2-DONE-SW FOUND-SW
WHEN +100
MOVE 'Y' TO DB2-DONE-SW EOF-PUBPEND
WHEN -501
MOVE 'N' TO DB2-DONE-SW
MOVE 1 TO WS-RETRY-CNT
PERFORM X000000-OPEN-PUB-PEND-CURS
UNTIL DB2-DONE-SW = 'Y'
MOVE 'N' TO DB2-DONE-SW
MOVE 1 TO WS-RETRY-CNT
WHEN -911
IF WS-911-RETRY-CNT <= WS-911-RETRY-MAX
ADD 1 TO WS-911-RETRY-CNT
MOVE '-911 ON PUBPEND FETCH '
TO WS-DB2-TXT
MOVE SQLCODE TO WS-DB2-CODE
MOVE WS-DB2-MSG TO ERROR-DESC-TEXT
MOVE LENGTH OF WS-DB2-MSG TO ERROR-DESC-LEN
MOVE 'Y' TO WS-911-SW
PERFORM E000000-LOG-ERROR
ELSE
MOVE 'FETCH ERROR ON PUBPEND '
TO WS-DB2-TXT BM-MESSAGE
MOVE SQLCODE
TO WS-DB2-CODE BM-CODE-OUT
PERFORM E100000-LOG-ERR-AND-EXIT
END-IF
WHEN -913
IF WS-RETRY-CNT <= WS-RETRY-MAX
ADD 1 TO WS-RETRY-CNT
ELSE
MOVE 'FETCH ERROR ON PUBPEND '
TO WS-DB2-TXT BM-MESSAGE
MOVE SQLCODE
TO WS-DB2-CODE BM-CODE-OUT
PERFORM E100000-LOG-ERR-AND-EXIT
END-IF
WHEN OTHER
MOVE 'FETCH ERROR ON PUBPEND '
TO WS-DB2-TXT BM-MESSAGE
MOVE SQLCODE
TO WS-DB2-CODE BM-CODE-OUT
PERFORM E100000-LOG-ERR-AND-EXIT
END-EVALUATE.
******************************************************************
** CLOSE THE PUBLISH_PENDING CURSOR
**
******************************************************************
X000500-CLOSE-PUBPEND.
MOVE 'X000500-CLOSE-PUBPEND' TO WS-ABND-PARA.
EXEC SQL
CLOSE PUBPEND
END-EXEC.

EVALUATE SQLCODE
WHEN 0
WHEN -501
MOVE 'Y' TO DB2-DONE-SW
MOVE 'N' TO PUBPEND-OPEN-SW
WHEN OTHER
MOVE 'FAIL TO CLOSE PUBPEND CURSOR '
TO WS-DB2-TXT BM-MESSAGE
MOVE SQLCODE
TO WS-DB2-CODE BM-CODE-OUT
PERFORM E100000-LOG-ERR-AND-EXIT
END-EVALUATE.

Você também pode gostar