*******************************************************************; 00001032 *Modifications to program MOD2ITEM in response to MPA/USPS-T16-17 00002032 * PROGRAM MOD2MPA ; *BY98; 00010032 * DISTRIBUTE SINGLE ITEMS AND PIECES/ITEMS IN IDENTIFIED CONTAINERS 00011132 (EXCEPT FOR PLATFORM COST POOL); 00011232 00012030 *******************************************************************; 00013032 00014030 DATA MIX; 00020001 SET OUT1.ITEMPC; 00030001 00040001 PROC SORT; 00050001 BY POOL HANDLING TYPE; 00060024 00070001 PROC MEANS NOPRINT ; 00080001 ID F9214 F9219; 00090001 BY POOL HANDLING TYPE; 00100024 VAR WGT; 00110001 OUTPUT OUT=ITEMMIX 00120001 SUM=; 00130001 00140001 DATA ITEMPLF ITEM1; 00150001 SET ITEMMIX; 00160001 00170001 * separate items in containers on platform from other items; 00180024 * they will be distributed based on itempcs from all allied ops; 00190024 00200001 IF POOL='1PLATFRM' or pool='1BULK PR' or pool='1OPBULK' 00210001 Or pool='1OPPREF ' or pool='1POUCHNG' or pool='1SCAN ' Or pool='1SACKS_M' or pool='1SACKS_H' then output itemplf; ELSE OUTPUT ITEM1; 00220001 00230001 %MACRO ITEM(TYPE); 00380001 * count number of different activity codes for a specified item type; 00390024 00400001 DATA KEY (DROP=HANDLING); 00410001 SET OUT1.MODKEY ; 00420001 IF 'A'<=F9219<='J' THEN DELETE; * EXCL. CONT WITH IDENTICAL MAIL ; 00430001 IF TYPE = "&TYPE"; 00440001 PROC SORT; 00450001 BY POOL; 00460001 00470001 DATA KEYSUB(KEEP=POOL SUBTOT) 00480001 KEYALL(DROP=SUBTOT); 00490001 SET KEY; 00500001 BY POOL; 00510001 IF FIRST.POOL THEN COUNTER=0; 00520001 RETAIN COUNTER; 00530001 COUNTER = COUNTER + 1; 00540001 SUBTOT = COUNTER ; 00550001 IF LAST.POOL THEN OUTPUT KEYSUB; 00560001 OUTPUT KEYALL; 00570001 00580001 PROC SORT DATA=KEYALL; 00590001 BY ACTV ; 00600001 PROC MEANS NOPRINT; 00610001 BY ACTV ; 00620001 ID TYPE; 00630001 VAR KEY; 00640001 OUTPUT OUT=LEVEL1 00650001 SUM=KEY1; 00660001 PROC MEANS NOPRINT DATA=KEYALL; 00670001 ID TYPE; 00680001 VAR KEY; 00690001 OUTPUT OUT=LEVEL1A 00700001 SUM=KEYTOT1; 00710001 PROC SORT DATA=KEYALL; 00720001 BY POOL COUNTER; 00730001 00740001 DATA ALLTYPE ; 00750001 MERGE LEVEL1 LEVEL1A; 00760001 BY TYPE; 00770001 DATA ALLTYPE ; 00780001 SET ALLTYPE END=EOF; 00790001 PTUPLE= _N_; 00800001 IF EOF THEN DO; 00810001 CALL SYMPUT('REC', PTUPLE); 00820001 END; 00830001 00840001 DATA FILL ; 00850001 SET ITEM1; 00860001 IF TYPE = "&TYPE "; 00870001 PROC SORT; BY POOL; 00880001 00890001 * extract records for which a key exists and identifies those without; 00900024 00910001 DATA MATCH NO&TYPE NONEED; 00920001 MERGE KEYSUB(IN=PP1) FILL(IN=PP2); 00930001 BY POOL; 00940001 IF PP1 AND PP2 THEN OUTPUT MATCH; 00950001 IF PP1=0 AND PP2=1 THEN OUTPUT NO&TYPE; 00960001 IF PP1=1 AND PP2=0 THEN OUTPUT NONEED ; 00970001 00980001 * create a record with counter for each actv code in the key; 00990024 01000001 DATA KEYFILL; 01010001 SET MATCH; 01020001 DO COUNTERN = 1 TO SUBTOT; 01030001 COUNTER = COUNTERN; 01040001 OUTPUT; 01050001 END; 01060001 PROC SORT; 01070001 BY POOL COUNTER; 01080001 01090001 * fill in items for each record created in preceding step; 01100024 01110001 DATA FILLIN MISSED NONEED; 01120001 MERGE KEYALL(IN=AA) KEYFILL(IN=BB); 01130001 BY POOL COUNTER; 01140001 01150001 * subdivide/readjust weight for created records; 01160024 01170001 DOLLAR = WGT*KEY/KEYTOT; 01180001 IF AA AND BB THEN DO; STAGE='1'; OUTPUT FILLIN; END; 01190001 IF AA=0 AND BB=1 THEN OUTPUT MISSED; 01200001 IF AA=1 AND BB=0 THEN OUTPUT NONEED ; 01210001 01220001 DATA NOMATCH; 01230001 SET NO&TYPE; 01240001 COUNTER=SYMGET('REC'); 01250001 DO PREC=1 TO COUNTER; 01260001 PTUPLE=PREC; 01270001 OUTPUT; 01280001 END; 01290001 PROC SORT; BY PTUPLE; 01300001 01310001 DATA FILLIN1 MISSED1 NONEED; 01320001 MERGE NOMATCH(IN=A1) ALLTYPE(IN=B1); 01330001 BY PTUPLE; 01340001 DOLLAR = WGT*KEY1/KEYTOT1; 01350001 IF A1 AND B1 THEN DO; STAGE='2'; OUTPUT FILLIN1 ; END; 01360001 IF A1=0 AND B1=1 THEN OUTPUT NONEED ; 01370001 IF A1=1 AND B1=0 THEN OUTPUT MISSED1; 01380001 01390001 DATA I&TYPE; 01400001 SET FILLIN(DROP=COUNTER) FILLIN1(DROP=COUNTER); 01410001 01420001 %MEND; 01430001 %ITEM(BUNDLE); 01440001 %ITEM(CONCON); 01450014 %ITEM(TRAY_F); 01460001 %ITEM(TRAY_L); 01470001 %ITEM(TRAY_P); 01480001 %ITEM(PALLET); 01490001 %ITEM(OTHR_I); 01500001 %ITEM(SCKB_O); 01510001 %ITEM(SCKGRN); 01520001 %ITEM(SCKO_Y); 01530001 %ITEM(SCKBWN); 01540001 %ITEM(SCKWH1); 01550001 %ITEM(SCKWH2); 01560001 %ITEM(SCKWH3); 01570001 %ITEM(SCKOTH); 01580001 %ITEM(SCKINT); 01590001 %ITEM(PC_CRD); 01600001 %ITEM(PC_LTR); 01610001 %ITEM(PC_FLT); 01620001 %ITEM(PC_IPP); 01630001 %ITEM(PC_PCL); 01640001 01650001 DATA OUT1.ITEMFILL; 01660001 SET IBUNDLE ITRAY_F ITRAY_L ITRAY_P IPALLET 01670009 IOTHR_I ISCKB_O ISCKGRN ISCKO_Y ISCKBWN ISCKWH1 01680001 ISCKWH2 ISCKWH3 ISCKOTH ISCKINT IPC_CRD IPC_LTR 01690001 IPC_FLT IPC_IPP IPC_PCL ICONCON; 01700013 01710005