h option(*nodebugio) debug dftactgrp(*no) actgrp(*caller) h usrprf(*owner) aut(*use) bnddir('SERVICES') *=============================================================== fPRDMSTF if e k disk *=============================================================== d EntryPL pr extpgm('INVDETF_B0') d P likeds(P1) options(*varsize) d PL 10i 0 const *=============================================================== d EntryPL pi d P likeds(P1) options(*varsize) d PL 10i 0 const *=============================================================== d PP s * *=============================================================== d P1 ds d PFName 1 10 d LibName 11 20 d MbrName 21 30 d Event 31 31 d Time 32 32 d CmtLock 33 33 d Resvd1 34 36 d CCSID 37 40b 0 d RRN 41 44b 0 d Resvd2 45 48 d OldOS 49 52b 0 d OldLen 53 56b 0 d OldNMOS 57 60b 0 d OldNMLen 61 64b 0 d NewOS 65 68b 0 d NewLen 69 72b 0 d NewNMOS 73 76b 0 d NewNMLen 77 80b 0 d Resvd3 81 96 *=============================================================== d OP s * d O e ds based(OP) extname(INVDETF) qualified d NP s * d N e ds based(NP) extname(INVDETF) qualified * Move *DIAG and Re-Send *ESCAPE Messages ====================== d ERH03 pr d MT 1 const options(*nopass) * Move *DIAG and *ESCAPE Messages ============================== d ERH05 pr d MT 1 const options(*nopass) * Send *DIAG Message =========================================== d ERH10 pr d MI 7 const d MF 10 const options(*omit:*nopass) d MD 128 const options(*omit:*nopass) d MT 1 const options(*nopass) * Send *ESCAPE Message ========================================= d ERH11 pr d MI 7 const d MF 10 const options(*omit:*nopass) d MD 128 const options(*omit:*nopass) d MT 1 const options(*nopass) *=============================================================== d Default pr d InsertEvent pr d UpdateEvent pr d Validate pr d Calculate pr *=============================================================== d Error s n inz('0') *=============================================================== /free //=================================================== monitor; //================================================ PP = %addr(P); //================================================ select; // Insert ==================================== when P.Event = '1'; NP = PP + P.NewOS; Default(); //InsertEvent(); Validate(); Calculate(); // Update ==================================== when P.Event = '3'; NP = PP + P.NewOS; OP = PP + P.OldOS; Default(); //UpdateEvent(); Validate(); Calculate(); //============================================ endsl; //================================================ if Error; ERH05(); ERH11('TRGB130':'AMWMSGF':'INVDETF_B0'); endif; //================================================ on-error; ERH05(); ERH11('TRGB135':'AMWMSGF':'INVDETF_B0'); endmon; //================================================ return; //================================================ /end-free *===================================================================== *<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<================ *===================================================================== p Default b *===================================================== /free //=================================================== monitor; //================================================ N.RECSTS = *blank; //================================================ on-error; ERH03(); endmon; //=================================================== /end-free p Default e *===================================================================== *<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<================ *===================================================================== p InsertEvent b *===================================================== /free //=================================================== monitor; //================================================ //================================================ on-error; ERH03(); endmon; //=================================================== /end-free p InsertEvent e *===================================================================== *<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<================ *===================================================================== p UpdateEvent b *===================================================== /free //=================================================== monitor; //================================================ //================================================ on-error; ERH03(); endmon; //=================================================== /end-free p UpdateEvent e *===================================================================== *<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<================ *===================================================================== p Validate b *===================================================== /free //=================================================== monitor; //================================================ reset Error; // LINQTY ======================================== if N.ITMQTY = *zero; Error = *on; ERH10('TRGB100':'ERRMSGF':'LINQTY'); endif; //=================================================== on-error; ERH03(); endmon; //=================================================== /end-free p Validate e *===================================================================== *<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<================ *===================================================================== p Calculate b *===================================================== /free //=================================================== monitor; //================================================ if Error; return; endif; //================================================ chain (N.PRDCDE) PRDMSTF; N.LINETOT = N.ITMQTY * PRDPRICE; N.PRDPRICE= PRDPRICE; //================================================ on-error; ERH03(); endmon; //=================================================== /end-free p Calculate e *=====================================================================