2016 Update

This commit is contained in:
Tina Müller 2016-12-05 22:15:40 +01:00
parent 948b86eafa
commit dcf5d15da3
7965 changed files with 139854 additions and 31002 deletions

View file

@ -1,26 +1,19 @@
/*REXX program illustrates simple moving average using a constructed list. */
parse arg p q n . /*get optional arguments from the C.L. */
if p=='' then p=3 /*the 1st period (the default is: 3).*/
if q=='' then q=5 /* " 2nd " " " " 5).*/
if n=='' then n=10 /*the number of items in the list. */
@.=0 /*define array with initial zero values*/
/* [↓] build 1st half of list*/
do j=1 for n%2; @.j=j; end /* ··· increasing values.*/
/* [↓] build 2nd half of list*/
do k=n%2 to 1 by -1; @.j=k; j=j+1; end /* ··· decreasing values.*/
/*REXX program illustrates and displays a simple moving average using a constructed list*/
parse arg p q n . /*obtain optional arguments from the CL*/
if p=='' | p=="," then p= 3 /*Not specified? Then use the default.*/
if q=='' | q=="," then q= 5 /* " " " " " " */
if n=='' | n=="," then n=10 /* " " " " " " */
@.=0 /*default value, only needed for odd N.*/
do j=1 for n%2; @.j=j; end /*build 1st half of list, increasing #s*/
do k=n%2 by -1 to 1; @.j=k; j=j+1; end /* " 2nd " " " decreasing " */
say ' ' " SMA with " ' SMA with '
say ' number ' " period" p' ' ' period' q
say ' ' "──────────" ''
say ' ' " SMA with " ' SMA with '
say ' number ' " period" p' ' ' period' q
say ' ' "──────────" ''
/* [↓] perform a simple moving average*/
do m=1 for n
say center(@.m, 10) left(sma(p,m), 11) left(sma(q,m), 11)
end /*m*/ /* [↑] show a simple moving average.*/
exit /*stick a fork in it, we're all done. */
/*────────────────────────────────────────────────────────────────────────────*/
sma: procedure expose @.; parse arg p,j; s=0; i=0
do k=max(1,j-p+1) to j+p for p while k<=j; i=i+1
s=s+@.k
end /*k*/
return s/i
do m=1 for n; say center(@.m, 10) left(SMA(p, m), 11) left(SMA(q, m), 11); end
exit /*stick a fork in it, we're all done. */
/*──────────────────────────────────────────────────────────────────────────────────────*/
SMA: procedure expose @.; parse arg p,j; i=0 ; $=0
do k=max(1, j-p+1) to j+p for p while k<=j; i=i+1; $=$+@.k; end
return $/i