SeanHoppe.com › Cleo CodeSamples › BAK02 Acknowledgement Status Code for Outbound 855
h Debug(*Yes) Datedit(*Ymd)
h/Title BAK02 Acknowledgement Status Code for Outbound 855
**************************************************************************
*
* Warning: This program does not set on LR.
*
**************************************************************************
* SYNOPSIS :
* External call program will query F47027 (PO Ack detail table to determine Acknowledgement Type
* BAK02 element. Program will compare 3 items to see if order matches PO
* 1. Ordering Price vs. Sales Price
* 2. Ordering UOM vs. Sales UOM
* 3. Ordering Quantity vs. Shipped Quantity
*
* System : Integrator 400
* User name : SRH
* Date CREATED : 06/07/15
**************************************************************************
* Maintenance : Manually modified Synon program.
**************************************************************************
* Date Description
* ---- ---------- ----------------------------------------------------------------
*
**************************************************************************
FF47027_1 IF E K DISK RENAME(F47027:F47027)
D*
* Data structures:
* Parameter declarations
d P1Parm DS
* I : Code trans directions
d P1Cdtt 1 1
d P2Parm DS
* : Code Table reference
d P2Tabl 1 10
* B : Code in standard form
d P2Cdst 11 90
* B : Code qualifier data
d P2Cdqd 91 170
* B : Code in local form
d P2Cdlc 171 250
d P3Parm DS
* FLD: XLT msg Parm structure
* I : Connection log number
d P3Cnln 1 4P 0
* I : Network ID
d P3Nwid 5 19
* I : Date/time start of call
d P3Dtm1 20 27P 0
* I : Interchange log number
d P3Inln 28 32P 0
* I : Trading partner code
d P3Tpcd 33 38
* I : Interchange date
d P3Indt 39 44
* I : Interchange time
d P3Intm 45 48
* : Test indicator
d P3Tsti 49 49
* I : Group log number
d P3Gpln 50 54P 0
* I : Message log number
d P3Msln 55 60P 0
* I : Message ID
d P3Msid 61 66
* I : Message class
d P3Mscl 67 76
* I : Message direction
d P3Msdi 77 77
* I : Application file name
d P3Gfil 78 87
* I : Record format name
d P3Rcfm 88 97
* I : V-R Log of message
d P3Vrlm 98 103
* I : Industry group ID log msg
d P3Igim 104 109
* I : Application data log #
d P3Apln 110 114P 0
* I : Application file set
d P3Gfsn 115 124
* I : Msg queue - translation
d P3Msqt 125 134
* I : Trans job master control
d P3Tjmc 135 140P 0
* I : Segment position in msg
d P3Sgps 141 144P 0
* I : Segment ID
d P3Sgid 145 147
* I : Element pos in segment
d P3Elps 148 149P 0
* I : Component position
d P3Cpos 150 151P 0
* I : Element ID
d P3Elid 152 155
* I : Field name
d P3Flnm 156 165
* I : Field length
d P3Flln 166 168P 0
* I : Field number of digits
d P3Fldd 169 170P 0
* I : Field decimal positions
d P3Fldc 171 172P 0
* I : Field type
d P3Flty 173 173
* I : Field Null value type
d P3Nult 174 174
* I : Field Null value length
d P3Null 175 177P 0
* I : Field Null value
d P3Nulv 178 187
* I : Message area
d P3Sgar 188 188
* I : Segment sequence
d P3Sgsq 189 192
* I : Segment instance number
d P3Sgnm 193 194P 0
* I : Element mapping sequence
d P3Mpsq 195 196P 0
* I : Nonwrapped record number
d P3Nwrc 197 201P 0
d P4Parm DS
* FLD: XLT misc field Parm str
* I : Field mapping sequence
d P4Fmsq 1 2P 0
* I : #XLT Line counter 1 7.0P
d P4N1 3 6P 0
* I : #XLT Line counter 2 7.0P
d P4N2 7 10P 0
* I : #XLT Segment length 5.0P
d P4Gdlp 11 13P 0
* I : #XLT Last element 3.0P
d P4Max 14 15P 0
* I : Sub-element delimiter
d P4Sedm 16 16
* I : Element delimiter
d P4Eldm 17 17
* I : Decimal notation
d P4Dcnt 18 18
* I : Release indicator char
d P4Rlin 19 19
* I : Reserved space in UNA
d P4Rssp 20 20
* I : Segment delimiter
d P4Sgdm 21 21
d P4Scf DS
* FLD: XLT misc field Parm str
* I : #XLT Sg counters 10x15.0P
d SC 1 80P 0
d DIM(10) Segment counters
d P4Elnf DS
* FLD: XLT misc field Parm str
* I : #XLT Elem lengths 99x3.0P
d Eln 1 198P 0
d DIM(99) 99 el.lengths 3.0
d P4Sgf DS
* FLD: XLT misc field Parm str
* I : #XLT Segment buffer 2006A
d SG 1 2006
d DIM(2006) segment buffer
d Wp0052 DS 2006
d P4ELF DS
* FLD: XLT misc field Parm str
* I : #XLT Elem data 99x100
d EL 1 9900
d DIM(99) 99 elements x 100
d Wp0053 DS 9900
d W0rtn s Like(P0rtn)
d @URAT S LIKE(SZURAT) Xref type code
d @URAB S LIKE(SZURAB) Xref type code
d @LITM S 25A Long item number
d @TSTL S 1 0 Location test val
**************************************************************************
* Mainline Program.
**************************************************************************
*
**************************************************************************
* Srdefn - Definitions
**************************************************************************
c* Srdefn Begsr
*
* Entry parameters
c *Entry Plist
c Parm P0Rtn 7
c P1Cdtt Parm Wp0001 1 Code trans dire
c P2Tabl Parm Wp0002 10 Code Table refe
c P2Cdst Parm P2Cdst Wp0003 80 Code in standar
c P2Cdqd Parm P2Cdqd Wp0004 80 Code qualifier
c P2Cdlc Parm P2Cdlc Wp0005 80 Code in local f
c P3Cnln Parm Wp0006 7 0 Connection log
c P3Nwid Parm Wp0007 15 Network ID
c P3Dtm1 Parm Wp0008 15 0 Date/time start
c P3Inln Parm Wp0009 9 0 Interchange log
c P3Tpcd Parm Wp0010 6 Trading partner
c P3Indt Parm Wp0011 6 Interchange dat
c P3Intm Parm Wp0012 4 Interchange tim
c P3Tsti Parm Wp0013 1 Test indicator
c P3Gpln Parm Wp0014 9 0 Group log numbe
c P3Msln Parm Wp0015 11 0 Message log num
c P3Msid Parm Wp0016 6 Message ID
c P3Mscl Parm Wp0017 10 Message class
c P3Msdi Parm Wp0018 1 Message directi
c P3Gfil Parm Wp0019 10 Application fil
c P3Rcfm Parm Wp0020 10 Record format n
c P3Vrlm Parm Wp0021 6 V-R Log of mess
c P3Igim Parm Wp0022 6 Industry group
c P3Apln Parm Wp0023 9 0 Application dat
c P3Gfsn Parm Wp0024 10 Application fil
c P3Msqt Parm Wp0025 10 Msg queue - tra
c P3Tjmc Parm Wp0026 11 0 Trans job maste
c P3Sgps Parm Wp0027 7 0 Segment positio
c P3Sgid Parm Wp0028 3 Segment ID
c P3Elps Parm Wp0029 3 0 Element pos in
c P3CPOS Parm Wp0030 3 0 Component posit
c P3Elid Parm Wp0031 4 Element ID
c P3Flnm Parm Wp0032 10 Field name
c P3Flln Parm Wp0033 5 0 Field length
c P3Fldd Parm Wp0034 2 0 Field number o
c P3Fldc Parm Wp0035 2 0 Field decimal
c P3Flty Parm Wp0036 1 Field type
c P3Nult Parm Wp0037 1 Field Null val
c P3Null Parm Wp0038 5 0 Field Null val
c P3Nulv Parm Wp0039 10 Field Null val
c P3Sgar Parm Wp0040 1 Message area
c P3Sgsq Parm Wp0041 4 Segment sequen
c P3Sgnm Parm Wp0042 3 0 Segment instan
c P3Mpsq Parm Wp0043 3 0 Element mappin
c P3Nwrc Parm Wp0044 9 0 Nonwrapped rec
c P4Fmsq Parm Wp0045 3 0 Field mapping
c P4N1 Parm P4N1 Wp0046 7 0 #XLT Line coun
c P4N2 Parm P4N2 Wp0047 7 0 #XLT Line coun
c P4Scf Parm Wp0048 80 #XLT Sg counte
c P4Gdlp Parm Wp0049 5 0 #XLT Segment l
c P4Max Parm Wp0050 3 0 #XLT Last elem
c P4Elnf Parm Wp0051 198 #XLT Elem leng
c P4Sgf Parm Wp0052 #XLT Segment b
c P4ELF Parm Wp0053 #XLT Elem data
c P4Sedm Parm Wp0054 1 Sub-element de
c P4Eldm Parm Wp0055 1 Element delimi
c P4Dcnt Parm Wp0056 1 Decimal notati
c P4Rlin Parm Wp0057 1 Release indica
c P4Rssp Parm Wp0058 1 Reserved space
c P4Sgdm Parm Wp0059 1 Segment delimi
*
* Key to the invoice detail lines
C KeyF47027 KLIST
C KFLD SZEDOC
C KFLD SZEDCT
C KFLD SZEKCO
*
c* Endefn Endsr
*
C EXSR Srinit
*
C P1CDTT IFEQ 'I'
*
*
C ELSE
* CASE: PAR.Code trans directions is Outward translation
C P1CDTT IFEQ 'O'
C*
C P2Cdqd IFEQ 'EDOC'
C MOVEL *ZEROS WK_EDOC 9 0
C MOVEL P2CDLC WK_EDOC
C END
C*
C P2Cdqd IFEQ 'EKCO'
C MOVEL *BLANKS WK_EKCO 5
C MOVEL P2CDLC WK_EKCO
C END
C*
C P2Cdqd IFEQ 'EDLN'
C MOVEL *ZEROS WK_EDLN 7 0
C MOVEL P2CDLC WK_EDLN
C END
C*
C P2Cdqd IFEQ 'EDCT'
C MOVEL *BLANKS WK_EDCT 2
C MOVEL P2CDLC WK_EDCT
C END
*
C*
C P2Cdqd IFEQ 'BAK01'
C*
C Z-ADD WK_EDOC SZEDOC
C MOVEL WK_EDCT SZEDCT
C MOVEL WK_EKCO SZEKCO
C*
C MOVE *OFF *IN91
C KEYF47027 SETLL F47027
C KEYF47027 READE F47027 91
C *IN91 DOWEQ *OFF
C*
C* Check to see if F47027 record was received via 850
C SZURAB IFGT 0
C*
C* Compare Sales Price to Ordering Price
C SZURAT DIV 10000 @URAT
C @URAT IFNE SZUPRC
C MOVE '1' FLAG1 1
C ENDIF
C*
C* Compare Shipped Quantity to Ordering Quantity
C SZSQOR IFNE SZPQOR
C MOVE '1' FLAG1 1
C ENDIF
C*
C* Compare Sales UOM to Ordering UOM
C SZUOM1 IFNE SZURCD
C MOVE '1' FLAG1 1
C ENDIF
C ENDIF
C KEYF47027 READE F47027 91
C ENDDO
C*
C* If there are changes to original order, pass back '05', else
C* pass back '00'. This value will be populated in BAK01 of 855
C*
C FLAG1 IFEQ '1'
C MOVEL '05' P2Cdst
C ELSE
C MOVEL '00' P2Cdst
C ENDIF
C*
C ENDIF
C*
C END
C END
*
* Exit program
C RETURN
**************************************************************************
* Srinit - Initialization.
**************************************************************************
c Srinit Begsr
*
c Eval P0Rtn = *Blanks
c Eval W0Rtn = *Blanks
*
* Initialise indicators for re-entry
c Move '0' *In
c Eninit Endsr
*