I'm unable to understand the following code which was written by other programmer. Can someone help me understand this code in simple words and also I'd like to know if this can be converted to Proc SQL?
DATA ATT(DROP=J);*(DROP=FCST:);
MERGE INVENT(IN=I)
FCST_WIDE(IN=F);
BY LOC MATERIAL;
NEW_HAND = COALESCE(HAND,0);
J=1;
IF FIRST.MATERIAL THEN
DO;
ARRAY FCT(*) &FCST_D2.;
END;
DO WHILE (NEW_HAND >0 and J <= DIM(FCT));
FCT[J] = COALESCE(FCT[J],0);
IF INPUT(SUBSTR(VNAME(FCT[J]),5),mmddyy10.)<=STOPSHIP_DT THEN
DO;
IF NEW_HAND > FCT[J] THEN
DO;
NEW_HAND = NEW_HAND-FCT[J];
FCT[J]=0;
END;
ELSE IF FCT[J] > NEW_HAND THEN
DO;
FCT[J] = FCT[J]-NEW_HAND;
NEW_HAND=0;
END;
ELSE
DO;
FCT[J]=0;
NEW_HAND=0;
END;
END;
J+1;
END;
IF LAST.MATERIAL THEN
DO;
REM_DEMAND = SUM(of FCST:);
END;
RUN;
... View more