Don’t have an answer, just a question. Do you need to allow for the quantity to go up? Say additional inventory was added and went from say, 20 to 40, which may result in a negative number during subtraction?
On Tue, Aug 30, 2022 at 7:47 AM Bob Bridges <robhbrid...@gmail.com> wrote: > I usually keep my bigoted mouth shut in threads like this, but guys, why > DFSORT? That's great for the simple stuff, but REXX is so much easier and > you don't have to sweat over more and more and yet more inventive solutions. > > --- > Bob Bridges, robhbrid...@gmail.com, cell 336 382-7313 > > /* It is a settled policy of America, that as peace is better than war, > war is better than tribute. The United States, while they wish for war with > no nation, will buy peace with none. -James Madison, upon the conclusion > of a US war against Barbary piracy (in the person of the Dey of Algiers, > Omar Pasha) in 1815 */ > > -----Original Message----- > From: IBM Mainframe Discussion List <IBM-MAIN@LISTSERV.UA.EDU> On Behalf > Of Massimo Biancucci > Sent: Tuesday, August 30, 2022 07:09 > > I first tried with WHEN=GROUP but with no success. > > After that I hopefully succeeded with a JOIN. > The main idea is to extract keys from file and number those simply by > sequential number. > So the STAMPA "view" at ST010 should show something like this: > > SUGAR100 000001 > SUGAR97 000002 > SUGAR93 000003 > XXXXX20 000004 > YYYYY150 000005 > YYYYY140 000006 > > then try to JOIN every key with the relative (+1) of the original file. > So SUGAR-000002 of the original file must match with SUGAR-000001 of the > keys subset. > This has been done with the JNF2CNTL ADD statement. > > The final sample output is: > > > ----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2 > SUGAR,2022/08/01,100 000001 > 1 000000 > SUGAR,2022/08/02,97 000002SUGAR100 > 000002B 000003 > SUGAR,2022/08/03,93 000003SUGAR97 > 000003B 000004 > XXXXX,2022/08/03,20 000004SUGAR93 > 000004B 000000 > YYYYY,2022/08/01,150 000005XXXXX20 > 000005B 000000 > YYYYY,2022/08/01,140 000006YYYYY150 > 000006B 000010 > > where first piece (1-56) is the original record, the second piece (57-80) > is the trace of the JOIN process and last column (81:86) is the result you > need. > Double check if the idea is effective. > > //*-------------------------------------------------------------------* > //* EXTRACT KEYS AND SEQNUM FROM ORIGINAL FILE * > //* FILE SHOULD BE ORDERED BY PRODUCT AND DATE. * > //*-------------------------------------------------------------------* > //ST010 EXEC PGM=SORT > //SYSOUT DD SYSOUT=* > //SORTOUT DD DSN=&F2,DISP=(,PASS),SPACE=(TRK,(1,1),RLSE) > //STAMPA DD SYSOUT=* > //SORTIN DD * > SUGAR,2022/08/01,100 > SUGAR,2022/08/02,97 > SUGAR,2022/08/03,93 > XXXXX,2022/08/03,20 > YYYYY,2022/08/01,150 > YYYYY,2022/08/01,140 > /* > //SYSIN DD * > SORT FIELDS=(1,5,A,7,10,A),FORMAT=BI > OUTFIL FNAMES=SORTOUT, > OUTREC=(1,5,18,10,SEQNUM,6,ZD) > OUTFIL FNAMES=STAMPA, > OUTREC=(1,5,18,10,SEQNUM,6,ZD) > /* > //*-------------------------------------------------------------------* > //* JOIN WITH ORIGINAL FILE ON SEQNUM + 1 * > //*-------------------------------------------------------------------* > //ST020 EXEC PGM=SORT > //SYSOUT DD SYSOUT=* > //SORTOUT DD SYSOUT=* > //F1 DD * > SUGAR,2022/08/01,100 > SUGAR,2022/08/02,97 > SUGAR,2022/08/03,93 > XXXXX,2022/08/03,20 > YYYYY,2022/08/01,150 > YYYYY,2022/08/01,140 > /* > //JNF1CNTL DD * > INREC FIELDS=(1,50,SEQNUM,6,ZD) > /* > //F2 DD DSN=&F2,DISP=(OLD,DELETE) > //JNF2CNTL DD * > INREC FIELDS=(1,15,16,6,ZD,ADD,+1,TO=ZD,LENGTH=6) > /* > //SYSIN DD * > JOINKEYS F1=F1,FIELDS=(51,6,A) > JOINKEYS F2=F2,FIELDS=(16,6,A) > JOIN UNPAIRED,F1 > REFORMAT FIELDS=(F1:1,56,F2:1,21,?) > SORT FIELDS=COPY > OUTFIL FNAMES=SORTOUT,REMOVECC, > IFTHEN=(WHEN=(1,5,CH,EQ,56,5,CH), > OVERLAY=(81:61,10,UFF,SUB,18,10,UFF,EDIT=(TTTTTT))), > IFTHEN=(WHEN=NONE, > OVERLAY=(81:C'000000')) > > --- Il giorno mar 30 ago 2022 alle ore 09:32 Mario Bezzi < > subscriptions.mario.be...@gmail.com> ha scritto: > > say I have a file with goods, dates, and available quantities, not > > necessarily sorted. I want to sort it and calculate daily deltas. > > > > For example using the following input : > > > > Product,Date,Availability > > Sugar,2022/08/01,100 > > Sugar,2022/08/02,97 > > Sugar,2022/08/03,93 > > > > I need to get to this: > > > > Product,Date,Sold > > Sugar,2022/08/01,N/A (No daily delta for the first record) > > Sugar,2022/08/02,3 (100 - 97) > > Sugar,2022/08/03,4 (97 - 93) > > > > May I use bultin DFSORT functions to calculate deltas from the > > previous record and the current one? > > > > I had a look at the OUTREC statement in the Application Programming > > Manual, but as far as I can see arithmetic expressions can only use > > input fields from the current record or decimal constants. > > > > It believe I can achieve the above result using an E35 exit, just > > wanted to be sure that's the only way. > > ---------------------------------------------------------------------- > For IBM-MAIN subscribe / signoff / archive access instructions, > send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN > -- Michael Babcock OneMain Financial z/OS Systems Programmer, Lead ---------------------------------------------------------------------- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN