* Averages/Simple moving average 26/08/2015 AVGSMA CSECT USING AVGSMA,R12 LR R12,R15 ST R14,SAVER14 ZAP II,=P'0' ii=0 LA R7,1 LH R3,NA SRA R3,1 na/2 LOOPA CR R7,R3 do i=1 to na/2 BH ELOOPA AP II,=P'1000' ii=ii+1000 LR R1,R7 i MH R1,=H'6' LA R4,A-6(R1) MVC 0(6,R4),II a(i)=ii LH R1,NA na SR R1,R7 -i MH R1,=H'6' LA R4,A(R1) MVC 0(6,R4),II a(na+1-i)=ii LA R7,1(R7) B LOOPA ELOOPA XPRNT =CL30' n sma3 sma5 ',30 XPRNT =CL30' ----- ----------- -----------',30 LA R7,1 i=1 LOOP CH R7,NA do i=1 to na BH RETURN STH R7,N n=i XDECO R7,C i MVC BUF+1(5),C+7 MVC P,=H'3' p=3 BAL R14,SMA MVC C(13),EDMASK ED C(13),SS sma(3,i) MVC BUF+7(11),C+2 MVC P,=H'5' p=5 BAL R14,SMA MVC C(13),EDMASK ED C(13),SS sma(5,i) MVC BUF+19(11),C+2 XPRNT BUF,30 output i,sma3,sma5 LA R7,1(R7) B LOOP * ***** sub sma(p,n) returns(PL6) SMA LH R5,N SH R5,P A R5,=F'1' ia=n-p+1 C R5,=F'1' BH OKIA LA R5,1 ia=1 OKIA LH R6,NA ib=na CH R6,N BL OKIB LH R6,N ib=n OKIB ZAP II,=P'0' ii=0 ZAP SS,=P'0' ss=0 LR R3,R5 k=ia LOOPK CR R3,R6 do k=ia to ib BH ELOOPK AP II,=P'1' ii=ii+1 LR R1,R3 MH R1,=H'6' LA R4,A-6(R1) MVC C(6),0(R4) ss=ss+a(k) AP SS,C(6) LA R3,1(R3) B LOOPK ELOOPK ZAP C,SS DP C,II ZAP SS,C(10) ss=ss/ii BR R14 RETURN L R14,SAVER14 restore caller address XR R15,R15 BR R14 SAVER14 DS F NN EQU 10 NA DC AL2(NN) A DS (NN)PL6 II DS PL6 SS DS PL6 P DS H N DS H C DS CL16 BUF DC CL30' ' buffer EDMASK DC X'4020202020202021204B202020' CL13 YREGS END AVGSMA