| Code: 
							
								
								
								| 
         H DftActGrp(*No)
     H ActGrp(*New)
     H BndDir('*Libl/STARBND':'*Libl/QC2LE')
     H UsrPrf(*Owner)
     H Option(*NoSrcStmt:*NoDebugio)
     ‚*-------------------------------------------------------------------*
     
     FGPK510CD  CF   E             WorkStn
     FLHLOAD02  IF   E           K Disk
     FLOLOAD08  IF   E           K Disk    Rename(LO00RC:LO08RC)
     FLOLOAD00  IF   E           K Disk
     FLXLOAD00  IF   E           K Disk
     FPHPICK00  IF   E           K Disk
     FPDPICKZ1  IF   E           K Disk
     F** JA01 PDPICK10  IF   E           K Disk
     F*****CDCARTZ1  IF   E           K Disk
     FCDCARTZ1  UF   E           K Disk
     FILLOCN00  IF   E           K Disk
     FODOUTQ00  IF   E           K Disk
     FPKXAPICKP IF   E           K Disk
     FMBC6RES0  IF   E           K Disk
 |   FMBCDRESM  IF   E           K Disk    Prefix(N_)
 |   FMBDMCPS2  IF   E           K Disk
     FEDI850DTL IF   E           K Disk
     FPIPICK01  IF   E           K Disk
     FPOPCDIRL2 IF   E           K Disk
|    FPOPCDIRL3 IF   E           K Disk    Rename(Pofcdir:PofcdirL3)
     FITM020PLM1IF   E           K Disk
     FGPK510WP  IF   E           K Disk
     FGPK510CP  O    E             Printer OflInd(*In99) UsrOpn
     F                                     INFDS(OutputFDS)
     Famax70p   IF   E           K Disk
     FPOLCDIR2  IF   E           K Disk    Rename(Pofcdir:Pol2)
     F                                     Prefix(l2_)
     FMBCDRES0  IF   E           K Disk    Prefix(s0_)
     FMBBWCPS0  IF   E           K Disk
     FMBGGCPS5  IF   E           K Disk
     FUSUSER00  IF   E           K Disk    Prefix(s0_)
     FPOLTOL99  IF   E           K Disk
     FIVLMSTRC  IF   E           K Disk
     ‚*-------------------------------------------------------------------*
     ‚* Entry Parameters
     ‚*
     D*File Information Data Structure
 |   D OutputFDS       DS
     D  CUR_LINE             367    368I 0                                      Current line num
     ‚*
     ‚* Work Variables
     ‚*
     D  Wk_RtrnCode    S              1A   Inz
     D  Wk_TotlOrdQ    S              9S 0 Inz
     D  Wk_TotlShpQ    S              9S 0 Inz
     D  Wk_NumbrStp    S              2S 0 Inz
     D  Wk_StopNmbr    S              2S 0 Inz
     D  Wk_ItemNmbr    S             25A   Inz
     D  Wk_ItemStyl    S              8A   Inz
     D  Wk_ItemSffx    S              7A   Inz
     D  Wk_ItemDesc    S             35A   Inz
     D  Wk_PickQnty    S              7S 0 Inz
     D  Wk_StopSeqn    S              5S 0 Inz
     D  Wk_PickLocn    S             10A   Inz
     D  Wk_OrdrNmbr    S              7A   Inz
     D  Wk_OrdrNmb1    S              7A   Inz
     D  Wk_WCMessage   S             35A   INZ('***** USE VINYL AIR BAGS ONLY *+
     D                                     ****')
     D  Wk_Zip         S             11A   Inz                                  DB06 size 5A
     D  I              S              5S 0 Inz
     D  II             S              5S 0 Inz
     D  JJ             S              5S 0 Inz
     D  kk             S              5S 0 Inz
     D  XX             S              5S 0 Inz
     D  ZZ             S              5S 0 Inz
     D  YY             S              5S 0 Inz
     D  Wk_Equip       S              1a
     D  Wk_Part        S              1a
     ‚*
     D  CPFMSGID       S              7A   Import('_EXCP_MSGID')
     ‚*
     ‚* Date Variables
     ‚*
     D  Dt_CurrDate    S               D   Inz(*Sys)
     D  Dt_WorkDate    S               D   Inz
     ‚*
     ‚* Arrays
     ‚*
     D  Ar_Err         S             80A   Dim(05) CtData PerRcd(1)
     D**Ar_Cmd         S             90A   Dim(01) CtData PerRcd(1)
     D  Ar_Cmd         S             91A   Dim(01) CtData PerRcd(1)
     ‚* DB04 - Changed the array size from 99 to 9999
     D  Ar_SKL         S             10A   Dim(9999) Inz
     D  Ar_Stp         S              2A   Dim(9999) Inz
     D  Ar_PQt         S              7S 0 Dim(9999) Inz
     D  Ar_PKL         S              5S 0 Dim(9999) Inz
     D**Ar_cdlin       S              5S 0 Dim(9999) Inz
     D  Ar_cdlin       S              6S 0 Dim(9999) Inz
     D  Ar_cdsku       S             25A   Dim(9999) Inz
     D  Wk_mis2sku     S             25A   Inz
      ‚*
     d Ky_70p          Ds                   LikeRec(amax70r:*key)
     ‚*
     D                 DS
     D  SC_LOAD#01
     D  SC_LOAD#02
     D  SC_LOAD#03
     D  SC_LOAD#04
     D  SC_LOAD#05
     D  SC_LOAD#06
     D  SC_LOAD#07
     D  SC_LOAD#08
     D  SC_LOAD#09
     D  SC_LOAD#10
     D  Wk_LoadNmbr            1    100A
     D  Ar_LD#                       10A   Dim(10) Overlay(Wk_LoadNmbr:1)
     ‚*
     ‚* Pointer Type Variables
     ‚*
     D  Pt_Indicators  S               *   Inz(%Addr(*In))
     ‚*
     ‚* Indicator Type Variables
     ‚*
     D  Ds_Indicators  DS                  Based(Pt_Indicators)
     D   In_ExitPrgm          03     03N
     D   In_AddtlPrm          10     10N
     D   In_PrevPrgm          12     12N
     D   In_ConfirmS          16     16N
     D   In_MsgSubfl          27     27N
     D   In_OverFlow          99     99N
     ‚*
     D   In_FrstPage   S               N   Inz
     D   In_PgmError   S               N   Inz
     D   In_PrtShIns   S               N   Inz
     D  Wk_Done        S               N   Inz
 |   D  DT3_ItemNbr    S                   Like(DMG7TX)
     D  Wk_POKEY       S                   Like(X_POKEY)
     D  S_PDMPKT       S                   Like(PDMPKT)
     D  Wk_HDPONO      S                   Like(HDPONO)
     D  Chk_Num_PONO   S              7A
     D  Wk_Num_Check   S               N   Inz
sp01 ‚* QCmdExc Parameters
sp01 D  Wk_Cmd         S           2000    Inz
sp01 D  Wk_CmdLen      S             15P 5 Inz
sp01 D  Pos            S              2S 0 Inz
sp01 D  Quote          S              1A   Inz('''')
     ‚*
     ‚* Data Structures
     ‚*
     D                SDS
     D  Wk_PrgmName      *PROC
     D  Wk_UserName          254    263
     ‚*
     D  Ds_LDLDAR00  E DS                  ExtName(LDLDAR00) DtaAra(*LDA)
     ‚*
     ‚* Prototypes Definition
     ‚*
     D  Pr_DateToNumb  PR            10I 0 ExtProc('atol')
     D                                 *   Value Options(*String)
     ‚*
     D  Pr_AddnlParms  PR                  ExtPgm('PTG0G8RP')
     D    Pm_PrgmName                10A
     ‚*
     D  Pr_AS400Cmmds  PR            10I 0 ExtProc('system')
     D    Pm_CmmdLeng                  *   Value Options(*String)
      *
      * Delay job for a set number of seconds.
NK08 d DlyJob          PR                  ExtPgm('QCMDEXC')
 |   d                              512    Const
 |   d                               15P 5 Const
NK08 D*
     ‚*******************************************************************
DB01
|    D PCKORD_DS       DS
|    D MajPick#                            Like(PhPCtl)
|    D Item#                         16
|    D MinPick#                            Like(PhPCtl)
|    D CustOrd#                      20
|    D ItemDs                        35
|    D PickLine#                      5  0
|    D Priority                      20
|    D OrdQty                        11  4
|    D ShpQty                        11  4
|    D PckQty                        11  4
DB01  *
DB04 ‚* DB04 - Changed the array size from 99 to 9999
|    D MajPick#_Ar     S                   Like(PhPCtl)    Dim(9999)
|    D Item#_Ar        S                   Like(Item#)    Dim(9999)
|    D MinPick#_Ar     S                   Like(PhPCtl)    Dim(9999)
|    D CustOrd#_Ar     S                   Like(CustOrd#)  Dim(9999)
|    D ItemDs_Ar       S                   Like(ItemDs)    Dim(9999)
|    D PickLine#_Ar    S                   Like(PickLine#) Dim(9999)
|    D Priority_Ar     S                   Like(Priority)  Dim(9999)
|    D OrdQty_Ar       S                   Like(OrdQty)    Dim(9999)
|    D ShpQty_Ar       S                   Like(ShpQty)    Dim(9999)
|    D PckQty_Ar       S                   Like(PckQty)    Dim(9999)
|    D Count_Ar        S              5  0
DB04 D Index_Ar        S              5  0
DB01 D CustOrd#_Save   S                   Like(CustOrd#)
|    D MinPick#_Save   S                   Like(PhPCtl)
|    D RfPn_Flag       S              1A   Inz
|    D PickLine#_Var   S              5  0
|    D Pick#_Var       S                   Like(PhPCtl)
|    D CountShpq       S             11  4
|    D BaseQty         S             11  4
DB01 ‚*
DB04 ‚* DB04 - Changed the array size from 99 to 9999
|    D  Ar_PkLQty      S                   Like(ShpQtY) Dim(9999)
DB04 D  Ar_PkLItem#    S                   Like(Item#) Dim(9999)
DB01 ‚*
|
|    D SKULOC_DS       DS
|    D  SkLPick#                           Like(PhPCtl)
|    D  SkLItem#                           Like(Item#)
|    D  SkLLine#                           Like(PdPkLn)
|    D  SkLZone                            Like(PdZone)
|    D  SkLAisl                            Like(PdAisl)
|    D  SkLBay                             Like(PdBay)
|    D  SkLLevl                            Like(PdLevl)
|    D  SkLPosn                            Like(PdPosn)
|    D  SkLTBPU                            Like(PdShQt)
|    D  SkLPAKU                            Like(PdShQt)
|    ‚*
DB04 ‚* DB04 - Changed the array size from 99 to 9999
|    D  Ar_SkLPick#    S                   Like(PhPCtl) Dim(9999)
|    D  Ar_SkLItem#    S                   Like(Item#) Dim(9999)
|    D  Ar_SkLLine#    S                   Like(PdPkLn) Dim(9999)
|    D  Ar_SkLZone     S                   Like(PdZone) Dim(9999)
|    D  Ar_SkLAisl     S                   Like(PdAisl) Dim(9999)
|    D  Ar_SkLBay      S                   Like(PdBay) Dim(9999)
|    D  Ar_SkLLevl     S                   Like(PdLevl) Dim(9999)
|    D  Ar_SkLPosn     S                   Like(PdPosn) Dim(9999)
DB04 D  Ar_SkLTBPU     S                   Like(PdShQt) Dim(9999)
ra01 D  skuTotal0      S              5s 0 inz
ra01 D  moreThanOne    S               n   inz(*off)
      *
DB01 D*--------------------------------------------------
|    D* Procedure name: declareCursor
|    D* Purpose:        Declare cursor
|    D* Returns:
|    D*--------------------------------------------------
|    D declareCursor   PR
|    D declareCursor1  PR
|    D declareCursor2  PR
|     *
|    D*--------------------------------------------------
|    D* Procedure name: openCursor
|    D* Purpose:        Open cursor
|    D* Returns:
|    D*--------------------------------------------------
|    D openCursor      PR
|    D openCursor1     PR
|    D openCursor2     PR
|
|    D*--------------------------------------------------
|    D* Procedure name: fetch
|    D* Purpose:        fetch record from cursor
|    D* Returns:
|    D*--------------------------------------------------
|    D fetch           PR
|    D fetch1          PR
|    D fetch2          PR
|     *
|    D*--------------------------------------------------
|    D* Procedure name: closeCursor
|    D* Purpose:        Close cursor
|    D* Returns:
|    D*--------------------------------------------------
|    D closeCursor     PR
|    D closeCursor1    PR
|    D closeCursor2    PR
|
DB01  *
     ‚*******************************************************************
      /Copy *Libl/QCPYSRC,Snd_MsgPgm
      /Copy *Libl/QCPYSRC,Rmv_MsgPgm
     ‚*-------------------------------------------------------------------*
     ‚* MAIN CODE LINE                                                    *
     ‚*-------------------------------------------------------------------*
      /Free
        // Override Printer File and Display Prompt Screen
 NK06     // ExSr Sr_OverrdPrtf;
NK06   ExSr OvrPrtfile2;
        ExSr Sr_DsplPrompt;
        // Execute ShutDown Taks And Kill Program
        ExSr Sr_ExeShtDown;
        *InLr = *On;
       Return;
       /End-Free
     ‚*-------------------------------------------------------------------*
     ‚* ShutDown Taks Routine.                                            *
     ‚*-------------------------------------------------------------------*
      /Free
        BegSr Sr_ExeShtDown;
        EndSr;
       /End-Free
     ‚*-------------------------------------------------------------------*
     ‚* Display Prompt Screen                                             *
     ‚*-------------------------------------------------------------------*
      /Free
        BegSr Sr_DsplPrompt;
          // Loop Till Exit Requested
          DoW Not In_ExitPrgm And Not In_PrevPrgm;
            // Display Message Subfile
            Write MSGCTL;
            // Display Prompt Screen
            Exfmt RCD001;
            // Remove Messages from Pgm Msg Queue and Kill Error Indicators
            Rmv_MsgPgm();
           Clear In_PgmError;
           For II = 1 by 1 to %Elem(Ar_LD#);
               *In(50 + II) = *Off;
           EndFor;
            // F3=Exit Program
            Select;
           When In_ExitPrgm;
             Leave;
            // F10=Additional Parameters
            When In_AddtlPrm;
             Out Ds_LDLDAR00;
             Pr_AddnlParms(Wk_PrgmName);
             In Ds_LDLDAR00;
             If LDWSID <> *Blanks;
                %SubSt(Ar_Cmd(01):43:10) = LDWSID;
                CallP(E) Pr_AS400Cmmds(Ar_Cmd(01));
             EndIf;
             Iter;
            // F12=Previous Pgm
            When In_PrevPrgm;
             Leave;
            // F16=Confirm
            When In_ConfirmS;
             ExSr Sr_EditPrompt;
             If Not In_PgmError;
                ExSr Sr_ProcessRqt;
                Snd_MsgPgm(Ar_Err(03));
             EndIf;
             Iter;
            // Check if Any User Selection
            Other;
             ExSr Sr_EditPrompt;
            EndSl;
          EndDo;
        EndSr;
       /End-Free
     ‚*-------------------------------------------------------------------*
     ‚* Validate Prompt Routine.                                          *
     ‚*-------------------------------------------------------------------*
      /Free
        BegSr Sr_EditPrompt;
      If  SC_Packer <> *Blanks;
 |         Chain(N)  SC_Packer  USUSER00;
 |          if  NOT %Found(USUSER00);
 |            Snd_MsgPgm(Ar_Err(05));
 |            In_PgmError = *On;
 |            LeaveSr;
 |          endif;
     EndIf;
          If In_ConfirmS And Wk_LoadNmbr = *Blanks;
           Snd_MsgPgm(Ar_Err(04));
           In_PgmError = *On;
           LeaveSr;
         EndIf;
          For II = 1 by 1 to %Elem(Ar_LD#);
             If Ar_LD#(II) <> *Blanks;
NK04            Chain  (SC_WHSECOD:Ar_LD#(II))  LHLOAD02;
NK04            If Not %Found(LHLOAD02);
                   Snd_MsgPgm(Ar_Err(01));
                   In_PgmError = *On;
                   *In(50 + II) = *On;
                EndIf;
             EndIf;
         EndFor;
          If Not In_PgmError = *On And Not In_ConfirmS And
            Wk_LoadNmbr <> *Blanks;
           Snd_MsgPgm(Ar_Err(02));
         EndIf;
        EndSr;
       /End-Free
     ‚*-------------------------------------------------------------------*
     ‚* Process Print Request.                                            *
     ‚*-------------------------------------------------------------------*
      /Free
        BegSr Sr_ProcessRqt;
 NK08      DlyJob('DLYJOB DLY(05)':14);
          For II = 1 by 1 to %Elem(Ar_LD#);
             If Ar_LD#(II) <> *Blanks;
                Open GPK510CP;
                ExSr Sr_PrtLoadDoc;
                Close GPK510CP;
      /End-Free
sp01 C                   Eval      Pos = %Scan('@' :sc_email)
sp01 C     SC_Email      IFNE      *Blanks
sp01 C     Pos           ANDGT     *Zeros
sp01 C                   Eval      Wk_Cmd = 'ESEND/ESNDMAIL RECIPIENT('  +
sp01 C                                 Quote + %Trim(sc_email) + Quote + ') +
sp01 C                                  SUBJECT(''LTL Ld Sum doc for Load '+
sp01 C                                      %Trim(LOADBRCD) +''') ' +
sp01 C                                      ' MSG(''See attached file'') +
sp01 C                             ATTLIST((* *PDF *N GPK510CP *))'
sp01 C*
sp01 C                   Eval      Wk_CmdLen = %len(%trim(Wk_Cmd))
sp01 C                   Call      'QCMDEXC'
sp01 C                   Parm                    Wk_Cmd
sp01 C                   Parm                    Wk_CmdLen
sp01  *
sp01 C                   EndIf
sp01  *
      /Free
             EndIf;
         EndFor;
          Clear Wk_LoadNmbr;
        EndSr;
       /End-Free
     ‚*-------------------------------------------------------------------*
     ‚* Print Trailer Load Summary Document.                              *
     ‚*-------------------------------------------------------------------*
      /Free
        BegSr Sr_PrtLoadDoc;
          In_FrstPage = *On;
         Clear Wk_TotlOrdQ;
         Clear Wk_TotlShpQ;
 NK04     Chain  (SC_WHSECOD:Ar_LD#(II))  LHLOAD02;
         ExSr Sr_GetNbroStp;
          RP_LOADNBR = Ar_LD#(II);
     LOADBRCD   = Ar_LD#(II);
         RP_PGMNAME = Wk_PrgmName;
         RP_USERNAM = Wk_UserName;
DB05     //RP_TRLRNBR = LHTRLN;
DB05     //**DB06** RP_TRLRNBR = LHCARR;
DB06     RP_TRLRNBR = %Trim(LHCARR) + ' ' + %Trim(LHTRLN);
         RP_NBRSTOP = Wk_NumbrStp;
 em02     // Check if load contains equipment and parts
 |       RP_MESSAGE = *blanks;
 |       If LdWhse = 'DLC';
 |         Exsr CheckItemTypes;
em02     Endif;
          Setll Ar_LD#(II) LOLOAD08;
         ReadE Ar_LD#(II) LOLOAD08;
         Wk_StopSeqn = LOSTSQ;
         Dow Not %EOF(LOLOAD08);
 NK14              SHMTBRCD   = LOSHNO;
              Setll (LOLDNO:LOSHNO) LXLOAD00;
             ReadE (LOLDNO:LOSHNO) LXLOAD00;
              Dow Not %EOF(LXLOAD00);
                  Chain LXPCTL PHPICK00;
                 If %Found(PHPICK00);
                    RP_STOPNBR = %Trim(%Char(LOSTSQ));
                    RP_CUSTNBR = PHSOTO;
                    RP_SHPTONM = PHSHNM;
                    RP_SHPTNBR = PHSHTO;
                    RP_SHPTOA1 = PHSHA1;
                    // JA01 RP_CUSTPON = PHCUPO;
               Clear *In38;
 |                RP_Packer = *Blanks;
 |              if SC_Packer <> *Blanks  And  PhPstf = '40';
 |                 *In38 = *ON;
 |                 RP_Packer = 'Packer   : ' + SC_Packer;
            endif;
                     Clear *In30;
                    If PHSHA2  = *Blanks;
                       RP_SHPTOA2 = %Trim(PHSHCT) + ',' + %Trim(PHSHST) +
                                    ' ' + PHSHZP;
                    Else;
                       RP_SHPTOA2 = PHSHA2;
                       RP_SHPTOA2 = %Trim(PHSHCT) + ',' + %Trim(PHSHST) +
                                   ' ' + PHSHZP;
                       *In30 = *On;
                    EndIf;
DB06
|                   Clear RP_WCMsg;
|                   Clear *In37;
DB06                If PHMIS1 <> 'SPH' And PHMIS1 <> 'SPF';
                    Clear Wk_Zip;
 |                     Wk_Zip = PHSHZP;
 |                    Chain (PhSoto:PhMis6:Wk_Zip) GPK510WP;
 |                    If %Found(GPK510WP);
 |                       *In37 = *On;
 |                       RP_WCMsg = WkMsg;
                  Else;
                     Clear Wk_Zip;
 |                      Wk_Zip = %Subst(PHSHZP:1:5);
 |                      Chain (PhSoto:PhMis6:Wk_Zip) GPK510WP;
 |                      If %Found(GPK510WP);
 |                         *In37 = *On;
 |                         RP_WCMsg = WkMsg;
                  Else;
 DB07                   Clear Wk_Zip;
|                      Wk_Zip = PHSHZP;
|                      Chain (PhSoto:' ':Wk_Zip) GPK510WP;
|                      If %Found(GPK510WP);
|                         *In37 = *On;
|         //**        RP_WCMsg = Wk_WCMessage;
                      RP_WCMsg = WkMsg;
|                      Else;
|
DB07                      Clear Wk_Zip;
DB06                      Wk_Zip = %Subst(PHSHZP:1:5);
|                         Chain (PhSoto:' ':Wk_Zip) GPK510WP;
|                         If %Found(GPK510WP);
|                            *In37 = *On;
|         //**           RP_WCMsg = Wk_WCMessage;
                         RP_WCMsg = WkMsg;
DB06                      EndIf;
DB07                   EndIf;
                EndIf;
DB06              EndIf;
            EndIf;
           //        ExSr Sr_PrtLoadDtl;
                    ExSr Sr_PrtLoadDtlNew;
 NK05                Exsr  Sr_PrtSpcInst; //Special Instruction
                  EndIf;
                  ReadE (LOLDNO:LOSHNO) LXLOAD00;
              EndDo;
              ReadE Ar_LD#(II) LOLOAD08;
         EndDo;
          If Wk_TotlOrdQ <> *Zeros;
            RP_TOTORDQ = Wk_TotlOrdQ;
            RP_TOTSHPQ = Wk_TotlShpQ;
            RP_TSTOPNB = %Trim(%Char(Wk_StopSeqn));
            Write TOT001;
         EndIf;
          Write END001;
 em03    If CUR_LINE > 55;
 |          Clear In_FrstPage;
 |          Clear In_OverFlow;
 |          Write HDR001;
 |       EndIf;
 |
em03     Write END002;
        EndSr;
       /End-Free
     ‚*-------------------------------------------------------------------*
     ‚* Get Number Of Stops.                                              *
     ‚*-------------------------------------------------------------------*
      /Free
        BegSr Sr_PrtLoadDtl;
          If Wk_StopSeqn <> LOSTSQ;
            RP_TOTORDQ = Wk_TotlOrdQ;
            RP_TOTSHPQ = Wk_TotlShpQ;
            RP_TSTOPNB = %Trim(%Char(Wk_StopSeqn));
            Write TOT001;
            Wk_StopSeqn =  LOSTSQ;
            In_FrstPage = *On;
            Clear Wk_TotlOrdQ;
            Clear Wk_TotlShpQ;
         EndIf;
 NK07     Clear  S_PDMPKT;
          // JA01 Setll LXPCTL PDPICK10;
         // JA01 ReadE LXPCTL PDPICK10;
JA01     Setll LXPCTL PDPICKZ1;
JA01     ReadE LXPCTL PDPICKZ1;
          Wk_ItemNmbr = PDSTYL + PDSSFX;
JA01     Wk_OrdrNmbr = %SubSt(PDMIS2:3:7);
JA01     Wk_OrdrNmb1 = *Blanks;
         Wk_ItemDesc = PDSTYD;
JA01     Clear XX;
JA01     Clear Ar_PKL;
ash02    Clear Ar_cdlin;
ash04    Clear Ar_cdsku;
NK07       S_PDMPKT = PDMPKT;
          // JA01 Dow Not %EOF(PDPICK10);
JA01     Dow Not %EOF(PDPICKZ1);
              If Wk_ItemNmbr <> PDSTYL + PDSSFX Or
JA01            Wk_OrdrNmbr <> %SubSt(PDMIS2:3:7);
JA01
JA01            If Wk_OrdrNmb1 <> Wk_OrdrNmbr;
JA01               Wk_OrdrNmb1  = Wk_OrdrNmbr;
JA01               ExSr Sr_BreakByPO#;
JA01            EndIf;
JA01
JA01            Clear XX;
JA01            Clear Ar_SkL;
JA01            Clear Ar_PQt;
JA01            Clear Wk_PickQnty;
JA01
JA01            For YY=1 to ZZ;
JA01                ExSr Sr_GetSkuLocn;
JA01            EndFor;
                 ExSr Sr_WrtSkuDetl;
                Wk_ItemNmbr = PDSTYL + PDSSFX;
                Wk_OrdrNmbr = %SubSt(PDMIS2:3:7);
                Wk_ItemDesc = PDSTYD;
JA01            Clear ZZ;
JA01            Clear Ar_PKL;
ash02           Clear Ar_cdlin;
ash04           Clear Ar_cdsku;
 NK07               S_PDMPKT = PDMPKT;
             EndIf;
 JA01         ZZ += 1;
JA01         Ar_PKL(ZZ) = PDPKLN;
ash02        Ar_cdlin(ZZ) = PDnum1;
ash04        Ar_cdsku(ZZ) = %trim(pdmis2)+%trim(PDstyl+pdssfx);
              RP_ORDRQTY  += PDOPQT;
             RP_SHIPQTY  += PDSHQT;
ash01        Wk_TotlOrdQ += PDOPQT;
ash01       // Wk_TotlOrdQ += PDOGQT;
             Wk_TotlShpQ += PDSHQT;
              // JA01 ReadE LXPCTL PDPICK10;
JA01         ReadE LXPCTL PDPICKZ1;
          EndDo;
          If Wk_TotlOrdQ <> *Zeros;
JA01        If Wk_OrdrNmb1 <> Wk_OrdrNmbr;
JA01           Wk_OrdrNmb1  = Wk_OrdrNmbr;
JA01           ExSr Sr_BreakByPO#;
JA01        EndIf;
JA01
JA01        Clear XX;
JA01        Clear Ar_SkL;
JA01        Clear Ar_PQt;
JA01        Clear Wk_PickQnty;
JA01
JA01        For YY=1 to ZZ;
                ExSr Sr_GetSkuLocn;
JA01        EndFor;
JA01
JA01        Clear ZZ;
JA01        Clear Ar_PKL;
ash02       Clear Ar_cdlin;
ash04       Clear Ar_cdsku;
             ExSr Sr_WrtSkuDetl;
         EndIf;
        EndSr;
       /End-Free
JA01 ‚*-------------------------------------------------------------------*
JA01 ‚* Break by PO Number.                                               *
JA01 ‚*-------------------------------------------------------------------*
JA01  /Free
JA01
JA01   BegSr Sr_BreakByPO#;
JA01
JA01     If In_FrstPage Or In_OverFlow;
JA01        Clear In_FrstPage;
JA01        Clear In_OverFlow;
JA01        Write HDR001;
JA01     EndIf;
 NK01        Clear CUPO#;
NK01        Clear ORDR#;
NK03        Clear USRF1;
          If PHMSPK = '1';                           //AS01
JA01       //NK07  Chain (PDMPKT:Wk_OrdrNmbr) PKXAPICKP;   //AS01
NK07        Chain (S_PDMPKT:Wk_OrdrNmbr) PKXAPICKP;   //AS01
         Else;                                      //AS01
JA01        Chain (LXPCTL:Wk_OrdrNmbr) PKXAPICKP;
         EndIf;                                     //AS01
ash06
         if CUPO# = ' ';
           select;
           when PHMSPK = '1';
               chain(n) (S_PDMPKT) Phpick00;
           other;
               chain(n) (LXPCTL) Phpick00;
           endsl;
           chain(n) (pdstyl+pdssfx) IVLMSTRC;  //ash07
           CMNO08 =  %int(%subst(phpctl:3:7));
           //ash07 chain(N) (CMNO08) POLTOL99;
           chain(N) (CMNO08:IVNO07) POLTOL99;
           if %found(POLTOL99);
              CUPO# = %char(PONO01);
           else;  //ash07
              chain(N) (CMNO08) POLTOL99;
              //ash09 CUPO# = %char(PONO01);
              CUPO# = ' '; //ash09
           endif;
         endif;
ash06
JA01
           if usrf1 = *blanks;
 JA01             RP_POORDR# = 'Customer PO#: ' + %Trim(CUPO#) + ' / ' +
JA01                    'Ordr#: ' + ORDR#;
           else;
 NK03             RP_POORDR# = 'Starnet PO#: ' + %Trim(CUPO#) + ' / ' +
 |                    'Customer PO#: ' + %Trim(USRF1) + ' / ' +
 |                    'Ordr#: ' + ORDR#;
           endif;
NK03
 JA01     Write DTL002;
JA01
JA01   EndSr;
JA01
JA01  /End-Free
     ‚*-------------------------------------------------------------------*
     ‚* Get Sku Pick Locations and Quantity.                              *
     ‚*-------------------------------------------------------------------*
      /Free
        BegSr Sr_GetSkuLocn;
          Wk_ItemStyl = %SubSt(Wk_ItemNmbr:1:8);
         Wk_ItemSffx = %SubSt(Wk_ItemNmbr:9:7);
          // JA01 SetLL (PDPCTL:Wk_ItemStyl:Wk_ItemSffx) CDCARTZ1;
         // JA01 ReadE (PDPCTL:Wk_ItemStyl:Wk_ItemSffx) CDCARTZ1;
JA01     SetLL (PDPCTL:Wk_ItemStyl:Wk_ItemSffx:Ar_PKL(YY)) CDCARTZ1;
JA01     ReadE (PDPCTL:Wk_ItemStyl:Wk_ItemSffx:Ar_PKL(YY)) CDCARTZ1;
          DoW Not %EOF(CDCARTZ1);
              // Chain (LDWHSE:CDAREA:CDZONE:CDAISL
             //          :CDBAY:CDLEVL:CDPOSN) ILLOCN00;
              Wk_PickLocn = %Trim(CDZONE) + %Trim(CDAISL) + %Trim(CDBAY) +
                           %Trim(CDLEVL) + %Trim(CDPOSN);
              If Wk_PickLocn = *Blanks;
                Wk_PickLocn ='NO LOCTN';
             EndIf;
              If %LookUp(Wk_PickLocn:Ar_SkL) = *Zeros;
                XX += 1;
                Ar_SkL(XX) = Wk_PickLocn;
             EndIf;
 NK08         if  PhPstf < '40';
                Ar_PQt(%LookUp(Wk_PickLocn:Ar_SkL)) += CDTBPU;
NK08         else;
 |              Ar_PQt(%LookUp(Wk_PickLocn:Ar_SkL)) += CDPAKU;
NK08         endif;
 NK08         if  PhPstf < '40';
                Wk_PickQnty += CDTBPU;
NK08         else;
 |              Wk_PickQnty += CDPAKU;
NK08         endif;
          if  PhPstf = '40' And SC_Packer <> *Blanks;
 |               CDPAKR = SC_Packer;
em01             if phmis1 = 'PRT' or phmis1 = 'PDC';  // em04
em01               cdmis2 = %char(%date():*iso0) + ' ' + %char(%time():*iso0);
em01             endif;
 |               Update  CD00RC;
         endif;
              // JA01 ReadE (PDPCTL:Wk_ItemStyl:Wk_ItemSffx) CDCARTZ1   ;
JA01         ReadE (PDPCTL:Wk_ItemStyl:Wk_ItemSffx:Ar_PKL(YY)) CDCARTZ1;
          EndDo;
          If XX = *Zeros;
            Ar_SkL(01)='NO LOCTN';
            XX = 01;
         EndIf;
        EndSr;
       /End-Free
     ‚*-------------------------------------------------------------------*
     ‚* Write Sku Detail.                                                 *
     ‚*-------------------------------------------------------------------*
      /Free
        BegSr Sr_WrtSkuDetl;
          If PHMSPK = '1';                           //AS01
           //NK07 RP_PICKNBR  = PDMPKT;                   //AS01
NK07        RP_PICKNBR  = S_PDMPKT;                   //AS01
         Else;                                      //AS01
            RP_PICKNBR  = PDPCTL;
         EndIf;                                     //AS01
         RP_SHIPPTY  = PDMIS1;
         RP_ITEMNBR  = Wk_ItemNmbr;
         RP_SKUDESC  = Wk_ItemDesc;
          For JJ = 1 to XX;
              If In_FrstPage Or In_OverFlow;
                Clear In_FrstPage;
                Clear In_OverFlow;
                Write HDR001;
RPG01           // JA01 Write DTL002;
             EndIf;
              RP_SKULOCN = Ar_SkL(JJ);
             RP_PICKQTY = Ar_PQt(JJ);
              Write DTL001;
              Clear RP_PICKNBR;
             Clear RP_ITEMNBR;
             Clear RP_SKUDESC;
             Clear RP_ORDRQTY;
             Clear RP_SHIPQTY;
             Clear RP_SHIPPTY;
          EndFor;
 NK02     Exsr   Substitute_SKU;
          Clear RP_PICKNBR;
         Clear RP_ITEMNBR;
         Clear RP_ORDRQTY;
         Clear RP_SHIPQTY;
  ra01     if XX > 1;
ra01        RP_SKUTOTQ = wk_PickQnty;
ra01        write SKUTOT;
ra01        clear RP_SKUTOTQ;
ra01     endIf;
        EndSr;
       /End-Free
NK02 ‚*-------------------------------------------------------------------*
 |   ‚* Get Substituted SKU (DB08 - This subroutine not in use but I am   *
 |   ‚*                      still changing to keep all routines in sync. *
 |   ‚*-------------------------------------------------------------------*
 |    /Free
 |
 |     BegSr  Substitute_SKU;
 |
 |       DT3_Item  =  *Blanks;          // printed on report
 |       DT3_ItemNbr  =  *Blanks;       // for data fetch
 |       DT3_ItemNbr  =  Wk_ItemNmbr;
 |
 |       C6AENB  =  %INT( %SUBST(PDMIS2:1:2) );
 |       C6DCCD  =  '1' ;
 |       C6CVNB  =  %SUBST(PDMIS2:3:7) ;
 |
 |       Chain (C6AENB:C6DCCD:C6CVNB)  MBC6RES0 ;  // Order Header
 |       IF  %Found(MBC6RES0) ;
 |
 |
 |              Chain (C6AENB:C6DCCD:C6CVNB:DT3_ItemNbr)  MBCDRESM ;      // Order d
 |              if  %found(MBCDRESM)  And  N_CDAALM <> *blanks;
 |                  DT3_Item  =  N_CDAALM;
 |              endif;
NK02
DB08     ELSE ;
 |          Chain (C6AENB:C6DCCD:C6CVNB)  MBBWCPS0 ;  // Order Header History
 |          IF  %Found(MBBWCPS0) ;
 |              Chain (C6AENB:DT3_ItemNbr:C6DCCD:C6CVNB)  MBGGCPS5 ;      // Order d
 |              if  %found(MBGGCPS5)  And  GGABYG <> *blanks;
 |                  DT3_Item  =  GGABYG;
 |              endif;
DB08        ENDIF ;
NK02
 |       ENDIF ;
 |
 |          if  DT3_Item <> *Blanks;
 |              Write  DTL003;
 |          endif;
 |
 |     EndSr;
 |
NK02  /End-Free
     **-------------------------------------------------------------------*
     ** Get Number Of Stops.                                              *
     **-------------------------------------------------------------------*
      /Free
        BegSr Sr_GetNbroStp;
          Clear Wk_NumbrStp;
         Clear Ar_Stp;
          Setll Ar_LD#(II) LOLOAD00;
         ReadE Ar_LD#(II) LOLOAD00;
         Dow Not %EOF(LOLOAD00);
             Wk_StopNmbr = LOSTSQ;
             If %LookUp(%EditC(Wk_StopNmbr:'X'):Ar_Stp) = *Zeros;
                Wk_NumbrStp += 1;
                Ar_Stp(Wk_NumbrStp) = %EditC(Wk_StopNmbr:'X');
             EndIf;
             ReadE AR_LD#(II) LOLOAD00;
         EndDo;
        EndSr;
       /End-Free
     ‚*-------------------------------------------------------------------*
     ‚* Override Printer File routine.                                    *
     ‚*-------------------------------------------------------------------*
      /Free
        BegSr Sr_OverrdPrtf;
          Chain (Wk_PrgmName:SC_WHSECOD:'*') ODOUTQ00;
         If %Found(ODOUTQ00) And ODOUTQ <> *Blanks;
            %SubSt(Ar_Cmd(01):43:10) = ODOUTQ;
            %SubSt(Ar_Cmd(01):62:03) = %EditC(ODCOPY:'X');
            CallP(E) Pr_AS400Cmmds(Ar_Cmd(01));
         EndIf;
        EndSr;
NK05     //--------------------------------------------------------
 |       // Special Instruction
 |       //--------------------------------------------------------
 |     BegSr Sr_PrtSpcInst;
 |
 |       // Print Pick ticket special instruction
 |       SetLL LXPCTL PIPICK01;
 |       ReadE LXPCTL PIPICK01;
 |       Dow Not %EOF(PIPICK01);
 |           If  PIITYP = 'PK' and  PIIDES <> *Blanks;
 |                if In_OverFlow;
 |                   Clear In_FrstPage;
 |                   Clear In_OverFlow;
 |                   Write HDR001;
 |                endif;
 |                   Write HDR004;   //Special Inst Header
 |                   Leave;
 |           EndIf;
 |       ReadE LXPCTL PIPICK01;
 |       EndDo;
 |
 |       SetLL LXPCTL PIPICK01;
 |       ReadE LXPCTL PIPICK01;
 |       Dow Not %EOF(PIPICK01);
 |           If  PIITYP = 'PK' and  PIIDES <> *Blanks;
 |               RP_SPCINST  = %TRIM(PIIDES);
 |                if In_OverFlow;
 |                   Clear In_FrstPage;
 |                   Clear In_OverFlow;
 |                   Write HDR001;
 |                   Write HDR004;
 |                endif;
 |               Write  DTL004;      //Special Inst Detail
 |           EndIf;
 |       ReadE LXPCTL PIPICK01;
 |       EndDo;
 |
NK05   EndSr;
       /End-Free
     ‚*-------------------------------------------------------------------*
     ‚* Intialization Routine                                             *
     ‚*-------------------------------------------------------------------*
     C     *InzSr        BegSr
     ‚*                  -----
     C                   In        Ds_LDLDAR00
      *
     C                   Eval      SC_WHSECOD  = LDWHSE
     C                   Eval      SC_COMPCOD  = LDCO
     C                   Eval      SC_DIVSCOD  = LDDIV
     ‚*
     ‚* Set Program Name and Program Message Queue
     ‚*
     C                   Eval      SC_PGMMSGQ  = '*'
     C                   Eval      SC_PGMNAME  = Wk_PrgmName
     ‚*
     ‚* Set Display Message Subfile Indicator
     ‚*
     C                   Eval      In_MsgSubfl = *On
     ‚*                  -----
     C                   EndSr
NK06  **********************************************************************
 |    * Subroutine OvrPrtfile2   - To override print files to diff OUTQs  *
 |    **********************************************************************
 |   C     OvrPrtfile2   BegSr
 |    *
 |   C                   MoveL     LdWhse        Ovpr_Whs
 |   C                   MoveL     *Blanks       Ovpr_Apm
 |   C                   MoveL     'GPK510CR'    Ovpr_Prn
 |   C                   ExSr      Ovpr_Ovrpr
 |    *
 |    /Free
 |           In Ds_LDLDAR00;
 |           If %SubSt(LDPAR2:24:10) <>  *Blanks;
 |              %SubSt(Ar_Cmd(01):43:10) = %SubSt(LDPAR2:24:10);
 |              %SubSt(Ar_Cmd(01):62:3) = %SubSt(LDPAR2:46:3);
 |              CallP(E) Pr_AS400Cmmds(Ar_Cmd(01));
 |           EndIf;
 |    /End-Free
 |    *
NK06 C                   EndSr
     ‚*-------------------------------------------------------------------*
     ‚* Get Number Of Stops.                                              *
     ‚*-------------------------------------------------------------------*
      /Free
        BegSr Sr_PrtLoadDtlNew;
          If Wk_StopSeqn <> LOSTSQ;
            RP_TOTORDQ = Wk_TotlOrdQ;
            RP_TOTSHPQ = Wk_TotlShpQ;
            RP_TSTOPNB = %Trim(%Char(Wk_StopSeqn));
            Write TOT001;
            Wk_StopSeqn =  LOSTSQ;
            In_FrstPage = *On;
            Clear Wk_TotlOrdQ;
            Clear Wk_TotlShpQ;
         EndIf;
 NK07     Clear  S_PDMPKT;
 DB01
|        ExSr Create_MinPick#_CustOrd#_Ary;
|        ExSr Create_SKU_Locn_Ary;
|
|        Clear XX;
|        Clear Ar_PkL;
|        Clear Ar_cdlin; //ash02
|        Clear Ar_cdsku; //ash04
|        Clear Ar_PkLItem#;
|        Clear Ar_PkLQty;
|        Setll LXPCTL PDPICKZ1;
|        ReadE LXPCTL PDPICKZ1;
|        Dow Not %EOF(PDPICKZ1);
|           XX += 1;
|           Ar_PkL(XX) = PDPKLN;
|           Ar_cdlin(XX) = PDnum1;  //ash02
|           Ar_cdsku(XX) = %trim(pdmis2)+%trim(PDstyl+pdssfx);//ash04
|           Ar_PkLItem#(XX) = PDSTYL + PDSSFX;
        *in90 = *off;
|           Select;
|             When PhPSTF >= '20' and PhPSTF < '40';   // Printed
|               Ar_PkLQty(XX) = PDPIQT;
|             When PhPSTF >= '40' and PhPSTF < '90';    // Packed
|               Ar_PkLQty(XX) = PDPAKU;
|             When PhPSTF = '90';                      // Invoiced
|               Ar_PkLQty(XX) = PDSHQT;
          *in90 = *on;
|           EndSl;
|         ReadE LXPCTL  PDPICKZ1;
|        EndDo;
|
|        // Major Pick# Routine (To get Minor Pick# & Cust. Ord#)
|        Clear CustOrd#_Save;
|        Clear MinPick#_Save;
|        Index_Ar = 1;
|        DoW Index_Ar <= Count_Ar;
|           If CustOrd#_Ar(Index_Ar) <> CustOrd#_Save Or
|              MinPick#_Ar(Index_Ar) <> MinPick#_Save;
|              CustOrd#_Save = CustOrd#_Ar(Index_Ar);
|              MinPick#_Save = MinPick#_Ar(Index_Ar);
|              Wk_OrdrNmbr = %SubSt(CustOrd#_Ar(Index_Ar):3:7);
|              ExSr Sr_BreakByPO#_Maj;
|           EndIf;
|
|           Wk_ItemNmbr = Item#_Ar(Index_Ar);
|           Wk_OrdrNmb1 = *Blanks;
|           Wk_ItemDesc = ItemDS_Ar(Index_Ar);
|           ExSr Sr_PrtPickDtl;
|
|           Index_Ar = Index_Ar + 1;
|
DB01     EndDo;
        EndSr;
       /End-Free
DB01 ‚*-------------------------------------------------------------------*
|    ‚* Create Array of Minor Pick# and Customer Ord# for Major Pick#     *
|    ‚*-------------------------------------------------------------------*
|     /Free
|         BegSr Create_MinPick#_CustOrd#_Ary;
|
|         Clear MajPick#_Ar;
|         Clear Item#_Ar;
|         Clear MinPick#_Ar;
|         Clear CustOrd#_Ar;
|         Clear ItemDs_Ar;
|         Clear PickLine#_Ar;
|         Clear Priority_Ar;
|         Clear OrdQty_Ar;
|         Clear ShpQty_Ar;
|         Clear PckQty_Ar;
|
|         If PhMsPk = '1' and PhRfPn = *Blanks;
|            RfPn_Flag = 'Y';
|         Else;
|            RfPn_Flag = 'N';
|         EndIf;
|
|         If RfPn_Flag = 'Y';
|         // Declare Cursor @C1
|            declareCursor();
|         // Open Cursor
|            openCursor();
|         // Fetch record
|            fetch();
|         Else;
|         // Declare Cursor @X1
|            declareCursor1();
|         // Open Cursor
|            openCursor1();
|         // Fetch record
|            fetch1();
|         EndIf;
|
|         Count_Ar = 0;
|
|      DoW (SQLCOD = 0);
|         Count_Ar = Count_Ar + 1;
|         MajPick#_Ar(Count_Ar) = MajPick#;
|         Item#_Ar(Count_Ar)    = Item#;
|         MinPick#_Ar(Count_Ar) = MinPick#;
|         CustOrd#_Ar(Count_Ar) = CustOrd#;
|         ItemDS_Ar(Count_Ar) = ItemDs;
|         PickLine#_Ar(Count_Ar) = PickLine#;
|         Priority_Ar(Count_Ar) = Priority;
|         OrdQty_Ar(Count_Ar)  = OrdQty;
|         ShpQty_Ar(Count_Ar)  = ShpQty;
|         PckQty_Ar(Count_Ar)  = PckQty;
|         If RfPn_Flag = 'Y';
|            fetch();
|         Else;
|            fetch1();
|         EndIf;
|      EndDo;
|
|      // Close Cursor
|         If RfPn_Flag = 'Y';
|            closeCursor();
|         Else;
|            closeCursor1();
|         EndIf;
|
   // Fill in Pack & Ship quantities from Minor picktickets
||     for i = 1 to count_ar;
||       chain (minpick#_ar(i):custord#_ar(i):' ':' ':%subst(item#_ar(i):1:8):
||             %subst(item#_ar(i):9:8)) pdpickz1;
||       if %found (pdpickz1);
||         pckqty_ar(i) = pdpiqt;
||         shpqty_ar(i) = pdshqt;
||       endif;
   endfor;
|
|         EndSr;
|     /End-Free
DB01 ‚*-------------------------------------------------------------------*
|    ‚* Create Array of SKU Locations by Pick#/Item#/Line#                *
|    ‚*-------------------------------------------------------------------*
|     /Free
|         BegSr Create_SKU_Locn_Ary;
|
|         Clear Ar_SkLPick#;
|         Clear Ar_SkLItem#;
|         Clear Ar_SkLLine#;
|         Clear Ar_SkLZone;
|         Clear Ar_SkLAisl;
|         Clear Ar_SkLBay;
|         Clear Ar_SkLLevl;
|         Clear Ar_SkLPosn;
|         Clear Ar_SkLTBPU;
|
|         // Declare Cursor @C1
|            declareCursor2();
|         // Open Cursor
|            openCursor2();
|         // Fetch record
|            fetch2();
|
|         YY = 0;
|
|      DoW (SQLCOD = 0);
|         YY = YY + 1;
|         Ar_SkLPick#(YY) = SkLPick#;
|         Ar_SkLItem#(YY) = SkLItem#;
|         Ar_SkLLine#(YY) = SkLLine#;
|         Ar_SkLZone(YY) = SkLZone;
|         Ar_SkLAisl(YY) = SkLAisl;
|         Ar_SkLBay(YY) = SkLBay;
|         Ar_SkLLevl(YY) = SkLLevl;
|         Ar_SkLPosn(YY) = SkLPosn;
|         Select;
|           When PhPSTF >= '20' and PhPSTF < '40';   // Printed
|             Ar_SklTBPU(YY) = SkLTBPU;
|           When PhPSTF >= '40' and PhPSTF < '99';   // Packed
|             if SkLPAKU > 0;
|                Ar_SkLTBPU(YY) = SkLPAKU;
|             else;
|                Ar_SkLTBPU(YY) = SkLTBPU;
|             endif;
|
|         EndSl;
|         fetch2();
|      EndDo;
|
|      // Close Cursor
|      closeCursor2();
|
         if  PhPstf = '40' And SC_Packer <> *Blanks;
 |             SetLL PhPctl CDCARTZ1;
 |             ReadE PhPctl CDCARTZ1;
 |             DoW Not %EOF(CDCARTZ1);
 |               CDPAKR = SC_Packer;
em01             if phmis1 = 'PRT' or phmis1 = 'PDC';  // em04
em01               cdmis2 = %char(%date():*iso0) + ' ' + %char(%time():*iso0);
em01             endif;
 |               Update  CD00RC;
 |             ReadE PhPctl CDCARTZ1;
 |             EndDo;
         endif;
 |         EndSr;
DB01  /End-Free
DB01 ‚*-------------------------------------------------------------------*
JA01 ‚* Break by PO Number for Major Pick                                 *
JA01 ‚*-------------------------------------------------------------------*
JA01  /Free
JA01
JA01   BegSr Sr_BreakByPO#_Maj;
JA01
JA01     If In_FrstPage Or In_OverFlow;
JA01        Clear In_FrstPage;
JA01        Clear In_OverFlow;
JA01        Write HDR001;
JA01     EndIf;
 NK01        Clear CUPO#;
 |          Clear ORDR#;
NK01        Clear USRF1;
 DB01     Chain (MinPick#_AR(Index_Ar):Wk_OrdrNmbr) PKXAPICKP;
ash06
         if CUPO# = ' ';
           if xx > 0;
              chain(n) (Ar_PkLItem#(XX)) IVLMSTRC;  //ash07
           else;
              ivno07 = 0;
           endif;
           chain(n) (MinPick#_AR(Index_Ar)) Phpick00;
           CMNO08 =  %int(%subst(phpctl:3:7));
           //ash07 chain(N) (CMNO08) POLTOL99;
           chain(N) (CMNO08:IVNO07) POLTOL99; //ash07
           if %found(POLTOL99);
              CUPO# = %char(PONO01);
           else;  //ash07
              chain(N) (CMNO08) POLTOL99;
              //ash09 CUPO# = %char(PONO01);
              CUPO# = ' '; //ash09
           endif;
         endif;
ash06
JA01
         if usrf1 = *blanks;
JA01             RP_POORDR# = 'Customer PO#: ' + %Trim(CUPO#) + ' / ' +
JA01                        'Ordr#: ' + ORDR#  +
NK12                        '  Shmt#: ' + LOSHNO ;
         else;
             RP_POORDR# = 'Starnet PO#: ' + %Trim(CUPO#) + '/ ' +
 |                    'Customer PO#: ' + %Trim(USRF1) + '/ ' +
 |                    'Ordr#: ' + ORDR# +
                  ' Shmt#: ' + LOSHNO ;
         endif;
DB01
|        // Clear RP_MinPck#;
|        If RfPn_Flag = 'Y';
|          // RP_MinPck# = 'Minor Pick#: ' + MinPick#_AR(Index_Ar);
DB01     EndIf;
 JA01     Write DTL002;
JA01
JA01   EndSr;
JA01
JA01  /End-Free
     ‚*-------------------------------------------------------------------*
     ‚* Print Pick Detail.                                                *
     ‚*-------------------------------------------------------------------*
      /Free
        BegSr Sr_PrtPickDtl;
JA01
DB01        Clear ZZ;
JA01        Clear XX;
JA01        Clear Ar_SkL;
JA01        Clear Ar_PQt;
JA01        Clear Wk_PickQnty;
JA01
RS01        // ExSr Sr_WrtSkuDetl;
RS01        ExSr Sr_WrtSkuDetlNew;
        EndSr;
       /End-Free
     ‚*-------------------------------------------------------------------*
     ‚* Write Sku Detail.                                                 *
     ‚*-------------------------------------------------------------------*
      /Free
        BegSr Sr_WrtSkuDetlNew;
 DB01     Clear Wk_PickLocn;
          RP_SHIPPTY  = Priority_Ar(Index_Ar);
         RP_ITEMNBR  = Wk_ItemNmbr;
         RP_SKUDESC  = Wk_ItemDesc;
         RP_PICKNBR  = MinPick#_AR(Index_Ar);
DB05
|           *in35 = '0';
|           Ky_70p.am70trgr = phrout;
|           Ky_70p.am70item = RP_ITEMNBR;
|           chain %kds(Ky_70p:2) amax70p;
|           if %found(amax70p) and (am70prty >= 50);
|               *in35 = '1';
DB05        endif;
DB01
|        If RfPn_Flag = 'Y';
|           Pick#_Var = MajPick#_Ar(Index_Ar);
|           ZZ = %Lookup(Wk_ItemNmbr:Ar_PkLItem#);
|           If ZZ > 0;
|              PickLine#_Var = Ar_PkL(ZZ);
|              //ash11 If Ar_PklQty(ZZ) > OrdQty_Ar(Index_AR);
               If Ar_PklQty(ZZ) > PckQty_Ar(Index_AR);//ash11
                  //ash11 BaseQty = OrdQty_Ar(Index_AR);
|                 BaseQty = PckQty_Ar(Index_AR);//ash11
|                 If PhPSTF = '90';                        // Invoiced
|                    RP_ShipQTY  = BaseQty;
|                    Wk_TotlShpQ += BaseQty;
                 *in90 = *on;
|                 EndIf;
                  //ash11Ar_PklQty(ZZ) =  Ar_PklQty(ZZ) - OrdQty_Ar(Index_AR);
|                 Ar_PklQty(ZZ) =  Ar_PklQty(ZZ) - PckQty_Ar(Index_AR);//ash11
|              Else;
|                 BaseQty = Ar_PklQty(ZZ);
|                 If PhPSTF = '90';                        // Invoiced
|                    RP_ShipQTY  = BaseQty;
|                    Wk_TotlShpQ += BaseQty;
                 *in90 = *on;
|                 EndIf;
|                 Ar_PklQty(ZZ) =  0;
|              EndIf;
|           EndIf;
|        Else;
|           Pick#_Var = MinPick#_Ar(Index_Ar);
|           PickLine#_Var = PickLine#_Ar(Index_Ar);
        *in90 = *off;
|           Select;
|             When PhPSTF >= '20' and PhPSTF < '40';   // Printed
|               BaseQty = OrdQty_Ar(Index_AR);
|             When PhPSTF >= '40' and PhPSTF < '90';   // Packed
|               BaseQty = PckQty_Ar(Index_AR);
|             When PhPSTF = '90';                      // Invoiced
|               BaseQty = ShpQty_Ar(Index_AR);
|               RP_ShipQTY  = ShpQty_Ar(Index_AR);
|               Wk_TotlShpQ += ShpQty_Ar(Index_AR);
            *in90 = *on;
|           EndSl;
|        EndIf;
|
|        CountShpQ = BaseQty;
|
|        RP_ORDRQTY  = OrdQty_Ar(Index_AR);
|        Wk_TotlOrdQ += OrdQty_Ar(Index_AR);
|
|        ZZ = %Lookup(Wk_ItemNmbr:Ar_SkLItem#);
|        If ZZ = 0;
|            Wk_PickLocn ='NO LOCTN';
|            RP_SKULOCN = Wk_PickLocn;
|            Write DTL001;
DB02
|            Exsr   Substitute_SKUNew;
DB02
|            Clear RP_PICKNBR;
|            Clear RP_ITEMNBR;
|            Clear RP_SKUDESC;
|            Clear RP_ORDRQTY;
|            Clear RP_SHIPQTY;
|            Clear RP_PICKQTY;
|           LeaveSr;
DB01     EndIf;
ra01     skuTotal0 = 0;
ra01     RP_SKUTOTQ = 0;
ra01     moreThanOne = *Off;
 DB01     For JJ = ZZ to YY;
              If In_FrstPage Or In_OverFlow;
                Clear In_FrstPage;
                Clear In_OverFlow;
                Write HDR001;
             EndIf;
 DB01         If Ar_SkLPick#(JJ) = Pick#_Var And
|               Ar_SkLItem#(JJ) = Wk_ItemNmbr;
|               If Ar_SkLLine#(JJ) = PickLine#_Var And
|                  Ar_SkLtBPU(JJ) > 0;
|                  If Ar_SkLTBPU(JJ) > CountShpQ;
|                     Wk_PickLocn = %Trim(Ar_SkLZone(JJ)) +
|                                   %Trim(Ar_SkLAISL(JJ)) +
|                                   %Trim(Ar_SkLBAY(JJ)) +
|                                   %Trim(Ar_SkLLEVL(JJ)) +
|                                   %Trim(Ar_SkLPOSN(JJ));
|                     RP_SKULOCN = Wk_PickLocn;
|                     RP_PICKQTY = CountShpQ;
|                     Ar_SkLTBPU(JJ) = Ar_SkLTBPU(JJ) - CountShpQ;
|                     CountShpQ = 0;
|                  Else;
|                     Wk_PickLocn = %Trim(Ar_SkLZone(JJ)) +
|                                   %Trim(Ar_SkLAISL(JJ)) +
|                                   %Trim(Ar_SkLBAY(JJ)) +
|                                   %Trim(Ar_SkLLEVL(JJ)) +
|                                   %Trim(Ar_SkLPOSN(JJ));
|                     RP_SKULOCN = Wk_PickLocn;
|                     RP_PICKQTY = Ar_SkLTBPU(JJ);
|                     CountShpQ = CountShpQ - Ar_SkLTBPU(JJ);
|                     Ar_SkLTBPU(JJ) = 0;
DB01               EndIf;
 ra01               skuTotal0 = RP_PICKQTY;
                    Write DTL001;
DB02
|                  //DB08 Exsr   Substitute_SKUNew;
DB02
ra01               //if SKU present in > one location
ra01               if %lookUp(Wk_ItemNmbr:Ar_SkLItem#:JJ + 1) <> 0;
ra01                 RP_SKUTOTQ += skuTotal0;
ra01                 moreThanOne = *On;
ra01               else;
ra01                 if moreThanOne;
ra01                   RP_SKUTOTQ += skuTotal0;
ra01                   write SKUTOT;
ra01                   RP_SKUTOTQ = 0;
ra01                   moreThanOne = *Off;
ra01                 endif;
ra01                 skuTotal0 = 0;
ra01               endif;
DB01
|                  Clear RP_PICKNBR;
|                  Clear RP_ITEMNBR;
|                  Clear RP_SKUDESC;
|                  Clear RP_ORDRQTY;
|                  Clear RP_SHIPQTY;
|                  Clear RP_PICKQTY;
DB01            EndIf;
 DB01         Else;
|               Clear RP_PICKNBR;
|               Clear RP_ITEMNBR;
|               Clear RP_ORDRQTY;
|               Clear RP_SHIPQTY;
|               Clear RP_SHIPPTY;
DB01            Clear RP_PICKQTY;
DB08            Exsr   Substitute_SKUNew;
DB01            LeaveSr;
|            EndIf;
|
|            //ash08 If CountShpQ = 0;
ash08        If CountShpQ = 0 and (Ar_SkLLine#(JJ) = PickLine#_Var);
|               Clear RP_PICKNBR;
|               Clear RP_ITEMNBR;
|               Clear RP_ORDRQTY;
|               Clear RP_SHIPQTY;
|               Clear RP_SHIPPTY;
DB01            Clear RP_PICKQTY;
DB08            Exsr   Substitute_SKUNew;
DB01            LeaveSr;
DB01         EndIf;
          EndFor;
DB08     Exsr   Substitute_SKUNew;
       EndSr;
       /End-Free
DB02 ‚*-------------------------------------------------------------------*
|    ‚* Get Substituted SKU                                               *
|    ‚*-------------------------------------------------------------------*
|     /Free
|
|      BegSr  Substitute_SKUNew;
|
|        DT3_ITEM    =  *Blanks;          // printed on report
|        DT3_ItemNbr  =  *Blanks;       // for data fetch
|        DT3_ItemNbr  =  Wk_ItemNmbr;
|
DB02     //*DB03 C6AENB  =  %INT( %SUBST(PDMIS2:1:2) );
DB03     C6AENB  =  %INT(%SubSt(Pick#:1:2));
DB02     C6DCCD  =  '1' ;
DB03     C6CVNB  =  Ordr#;
DB02     //*DB03 C6CVNB  =  %SUBST(PDMIS2:3:7) ;
|
|        Chain (C6AENB:C6DCCD:C6CVNB)  MBC6RES0 ;  // Order Header
|        IF  %Found(MBC6RES0) ;
|
|                  Chain (C6AENB:C6DCCD:C6CVNB:DT3_ItemNbr) MBCDRESM;    // Order d
|                  if %found(MBCDRESM)  And  N_CDAALM <> *blanks;
|                     DT3_ITEM   =  N_CDAALM;
|                  endif;
DB02
DB08     ELSE ;
 |          Chain (C6AENB:C6DCCD:C6CVNB)  MBBWCPS0 ;  // Order Header History
 |          IF  %Found(MBBWCPS0) ;
 |              Chain (C6AENB:DT3_ItemNbr:C6DCCD:C6CVNB)  MBGGCPS5 ;      // Order d
 |              if  %found(MBGGCPS5)  And  GGABYG <> *blanks;
 |                  DT3_Item  =  GGABYG;
 |              endif;
DB08        ENDIF ;
DB02
|        ENDIF ;
|
|           if  DT3_ITEM   <> *Blanks;
|               Write  DTL003;
|           endif;
|
|           Clear DT3_ITEM  ;
|
|      EndSr;
|
DB02  /End-Free
DB03 ‚*-------------------------------------------------------------------*
|    ‚* Mincron_Sub_Item                                                  *
|    ‚*-------------------------------------------------------------------*
|     /Free
|
|      BegSr  Mincron_Sub_Item;
|
|      DT3_ItemNbr  =  *Blanks;       // for data fetch
|      DT3_ItemNbr  =  Wk_ItemNmbr;
|
|      SetLL  DT3_ItemNbr ITM020PLM1; // Item substitution file
|      ReadE  DT3_ItemNbr ITM020PLM1;
|      DoW  NOT  %EOF(ITM020PLM1);
|         If I020_RITM <> I020_BITM;
|            Chain (Wk_HdPoNo:I020_RITM) POPCDIRL3;
|            If %Found(POPCDIRL3);
|               DT3_ITEM =  WfSKU;
|               LeaveSr;
|            Endif;
|         EndIf;
|         ReadE  DT3_ItemNbr ITM020PLM1;
|      EndDo;
|
|      EndSr;
|
DB03  /End-Free
ash02‚*-------------------------------------------------------------------*
|    ‚* New_Mincron_Sub_Item                                              *
|    ‚*-------------------------------------------------------------------*
|     /Free
|
|      BegSr  New_Mincron_Sub_Item;
|
|        //ash02 Chain (C6AENB:C6DCCD:C6CVNB:DT3_ItemNbr) MBCDRESM;
         //ash04
          Wk_mis2sku = %editc(c6aenb:'X')+c6cvnb+DT3_ItemNbr;
          kk =  %Lookup(Wk_mis2sku:Ar_cdsku);
          if kk > 0;
|           Chain (C6AENB:C6DCCD:C6CVNB:Ar_cdlin(kk)) MBCDRES0;
|           if  %found(MBCDRES0);
|              Chain (Wk_HDPONO:s0_CDAAYJ) POLCDIR2;
|            //ash03  If  %Found(POPCDIRL2);      // Mincron Order
|              If  %Found(POLCDIR2) and
|                   s0_CDAITX <> l2_WfSKU ;   // Mincron Order
|                 DT3_ITEM =  l2_WfSKU;
|              Endif;
|           endif;
|         endif;
|
|      EndSr;
|
DB03  /End-Free
DB03  *-------------------------------------------------------------------*
|     * Valida If Serial Number Entered is Numeric                        *
|     *-------------------------------------------------------------------*
|    C     Sr_TestNumericBegSr
|     *                  -----
|    C                   TestN                   Chk_Num_Pono         30
|    C                   If        Not *In30
|    C                   Eval      Wk_Num_Check = *On
|    C                   EndIf
|     *                  -----
DB03 C                   EndSr
em02  **********************************************************************
 |    * Subroutine CheckItemTypes                                          *
 |    **********************************************************************
 |    /free
 |      begsr CheckItemTypes;
 |
 |       Wk_Equip = 'N';
 |       Wk_Part = 'N';
 |
 |       exec sql
 |         declare csr1 cursor for
 |           select phmis1 from phpick29 where phldno = :RP_LOADNBR
 |             group by phmis1 order by phmis1;
 |
 |       exec sql
 |          open csr1;
 |
 |       exec sql fetch csr1 into :phmis1;
 |
 |       dow sqlstt = '00000';
 |
em04       if phmis1 = 'PRT' or phmis1 = 'PDC';
 |           Wk_Part = 'Y';
 |         Endif;
 |
em04       if phmis1 <> *blanks and phmis1 <> 'PRT' and phmis1 <> 'PDC';
 |           Wk_Equip = 'Y';
 |         Endif;
 |
 |         exec sql fetch csr1 into :phmis1;
 |       enddo;
 |
 |       exec sql
 |          close csr1;
 |
 |       if Wk_Equip = 'Y' and Wk_Part = 'Y';
 |         RP_MESSAGE = '(MERGE EQUIPMENT AND PARTS)';
 |       endif;
 |
 |      endsr;
em02  /end-free
     ‚*-------------------------------------------------------------------*
      **********************************************************************
NK06 C/COPY QCPYLESRC,CBCOVPR
     ‚*-------------------------------------------------------------------*
DB01  *
|    P*--------------------------------------------------
|    P* Procedure name: declareCursor
|    P* Purpose:        Declare cursor
|    P* Returns:
|    P*--------------------------------------------------
|    P declareCursor   B
|    D declareCursor   PI
|    C/Exec SQL
|     + Declare @C1 Cursor for
|     + Select PHRFPN, PDSTYL||PDSSFX, PHPCTL, PDMIS2, PDSTYD,
|     +            PDPKLN, PDMIS1, Sum(PDPIQT), Sum(PDSHQT), Sum(PDPAKU)
|     + FROM PHPICK28 a, PDPICK00 b WHERE
|     + PHPCTL = PDPCTL and  PHRFPN = :PHPCTL
|     + GROUP BY  PHRFPN, PHPCTL, PDMIS2, PDSTYL||PDSSFX, PDSTYD,
|     +            PDPKLN, PDMIS1
|     + ORDER BY  PHRFPN, PDMIS2, PHPCTL, PDSTYL||PDSSFX
|    C/End-Exec
|    P declareCursor   E
|    P*--------------------------------------------------
|    P* Procedure name: openCursor
|    P* Purpose:        Open cursor
|    P* Returns:
|    P*--------------------------------------------------
|     *
|    P OpenCursor      B
|    D OpenCursor      PI
|     *
|    C/Exec SQL
|     + Open @C1
|    C/End-Exec
|    P openCursor      E
|    P*--------------------------------------------------
|    P* Procedure name: fetch
|    P* Purpose:        fetch record from cursor
|    P* Returns:
|    P*--------------------------------------------------
|     *
|    P fetch           B
|    D fetch           PI
|     *
|    C/Exec SQL
|     + Fetch @C1 into :PckOrd_DS
|    C/End-Exec
|    P fetch           E
|    P*--------------------------------------------------
|    P* Procedure name: closeCursor
|    P* Purpose:        Close cursor
|    P* Returns:
|    P*--------------------------------------------------
|     *
|    P CloseCursor     B
|    D CloseCursor     PI
|     *
|    C/Exec SQL
|     + Close @C1
|    C/End-Exec
|    P closeCursor     E
DB01  *
|    P*--------------------------------------------------
|    P* Procedure name: declareCursor1
|    P* Purpose:        Declare cursor
|    P* Returns:
|    P*--------------------------------------------------
|    P declareCursor1  B
|    D declareCursor1  PI
|    C/Exec SQL
|     + Declare @X1 Cursor for
|     + Select PHRFPN, PDSTYL||PDSSFX, PHPCTL, PDMIS2, PDSTYD,
|     +            PDPKLN, PDMIS1, Sum(PDPIQT), Sum(PDSHQT), Sum(PDPAKU)
|     + FROM PHPICK28 a, PDPICK00 b WHERE
|     + PHPCTL = PDPCTL and  PHPCTL = :PHPCTL
|     + GROUP BY  PHRFPN, PHPCTL, PDMIS2, PDSTYL||PDSSFX, PDSTYD,
|     +            PDPKLN, PDMIS1
|     + ORDER BY  PHRFPN, PDMIS2, PHPCTL, PDSTYL||PDSSFX
|    C/End-Exec
|    P declareCursor1  E
|    P*--------------------------------------------------
|    P* Procedure name: openCursor1
|    P* Purpose:        Open cursor
|    P* Returns:
|    P*--------------------------------------------------
|     *
|    P OpenCursor1     B
|    D OpenCursor1     PI
|     *
|    C/Exec SQL
|     + Open @X1
|    C/End-Exec
|    P openCursor1     E
|    P*--------------------------------------------------
|    P* Procedure name: fetch1
|    P* Purpose:        fetch record from cursor
|    P* Returns:
|    P*--------------------------------------------------
|     *
|    P fetch1          B
|    D fetch1          PI
|     *
|    C/Exec SQL
|     + Fetch @X1 into :PckOrd_DS
|    C/End-Exec
|    P fetch1          E
|    P*--------------------------------------------------
|    P* Procedure name: closeCursor1
|    P* Purpose:        Close cursor
|    P* Returns:
|    P*--------------------------------------------------
|     *
|    P CloseCursor1    B
|    D CloseCursor1    PI
|     *
|    C/Exec SQL
|     + Close @X1
|    C/End-Exec
|    P closeCursor1    E
DB01
DB01  *
|    P*--------------------------------------------------
|    P* Procedure name: declareCursor2
|    P* Purpose:        Declare cursor
|    P* Returns:
|    P*--------------------------------------------------
|    P declareCursor2  B
|    D declareCursor2  PI
|    C/Exec SQL
|     + Declare @S1 Cursor for
|     + Select CDPCTL, CDSTYL||CDSSFX, CDPKLN, CDZONE, CDAISL, CDBAY,
|     +            CDLEVL, CDPOSN, Sum(CDTBPU), Sum(CDPAKU)
|     + FROM CDCART00 Where
|     + CDPCTL = :PHPCTL
|     + GROUP BY  CDPCTL, CDSTYL||CDSSFX, CDPKLN, CDZONE, CDAISL,
|     +           CDBAY, CDLEVL, CDPOSN
|     + ORDER BY  CDPCTL, CDSTYL||CDSSFX, CDPKLN
|    C/End-Exec
|    P declareCursor2  E
|    P*--------------------------------------------------
|    P* Procedure name: openCursor2
|    P* Purpose:        Open cursor
|    P* Returns:
|    P*--------------------------------------------------
|     *
|    P OpenCursor2     B
|    D OpenCursor2     PI
|     *
|    C/Exec SQL
|     + Open @S1
|    C/End-Exec
|    P openCursor2     E
|    P*--------------------------------------------------
|    P* Procedure name: fetch2
|    P* Purpose:        fetch record from cursor
|    P* Returns:
|    P*--------------------------------------------------
|     *
|    P fetch2          B
|    D fetch2          PI
|     *
|    C/Exec SQL
|     + Fetch @S1 into :SkuLoc_DS
|    C/End-Exec
|    P fetch2          E
|    P*--------------------------------------------------
|    P* Procedure name: closeCursor2
|    P* Purpose:        Close cursor
|    P* Returns:
|    P*--------------------------------------------------
|     *
|    P CloseCursor2    B
|    D CloseCursor2    PI
|     *
|    C/Exec SQL
|     + Close @S1
|    C/End-Exec
|    P closeCursor2    E
DB01
     ‚*-------------------------------------------------------------------*
** Error Messages
E - Load Number Not Found.
I - Press F16 to Confirm.
I - Trailer Load Summary Document Printed.
I - No Load Entered. Please Enter Load(S).
E - Invalid PKMS User entered
** AS400 Commands
OVRPRTF FILE(GPK510CP) TOFILE(*FILE) OUTQ(          ) COPIES(   )
  |  |