macro pageplot c.1-c.N; title text. mconstant raw startyr bottom top meanyes meanval text plotht & rawnext sizek missval negvals lastyr xline mcolumn c.1-c.N meanline nperpage trendcol overlays linesize default text = 'default text' #note Type in a title, then enter #read textline; # format (a80); # file 'terminal'; # nobs = 1. #let text = textline note note How many series do you want overlay plotted? note (positive integer number, then enter) note read overlays; file 'terminal'; nobs = 1. if overlays < 1 note note Negative numbers not allowed; you'll get 1 series per plot. note let overlays = 1 elseif overlays > N - 1 note note Data set doesn't have that many series; note you'll get all series overlay plotted. note let overlays = N - 1 endif let overlays = round(overlays) note note What's the maximum number of plots per page that you want? note (positive interger number, then return) note read nperpage; file 'terminal'; nobs = 1. if nperpage < 1 note note Negative numbers not allowed; you'll get 1 plot per page. note let nperpage = 1 elseif nperpage > (N - 1)/overlays note note Data set doesn't have that many series; note you'll get all series plotted on one page. note let nperpage = (N - 1)/overlays endif if round(nperpage) < nperpage let nperpage = nperpage + 1 endif let nperpage = round(nperpage) let plotht = 0.9/nperpage note note Do you want a mean line drawn through each plot? note (y or n, then enter) note yesno meanyes note note Is this for hardcopy printout or for computer screen display? note Type 1 for hardcopy printout, then enter note Type 2 for computer screen display, then enter note read linesize; file 'terminal'; nobs = 1. if linesize = 1 let sizek = 5 else let sizek = 1 endif do raw = 2:N if min(c.raw) < 0 let negvals = 1 break else let negvals = 0 endif enddo if negvals = 1 note note There are negative values; note do you want them considered as missing values? note (y or n, then enter) note yesno missval if missval = 1 do raw = 2:N code (-0.001:-1000000) * c.raw c.raw enddo endif endif let raw = 2 let startyr = min(c.1) let lastyr = max(c.1) let xline = (1900-startyr)/(lastyr-startyr) + 0.11 while raw <= N let bottom = 0.0 let top = bottom + plotht layout; title text; size 0.8. # line xline .88 xline 0.02. while (top <= 0.90) and (raw <= N) if raw + (overlays - 1) > N let rawnext = N else let rawnext = raw + (overlays - 1) endif # if raw + (overlays - 1) > N if meanyes = 1 rmean c.raw-c.rawnext meanline let meanval = mean(meanline) code (-1000000:1000000) meanval meanline meanline else copy c.raw meanline let meanval = mean(meanline) endif # if meanyes = 1 if bottom = 0.0 # if bottom plot on page tspl c.raw-c.rawnext meanline; over; connect; size sizek; start startyr; figure 0.0 0.97 bottom top; etype 0; data 0.1 1.0 0.25 1.0; etype 0; axis 1; size sizek; label ''; tick 1; size sizek; tsize 2; length 0.05; orientation 3; axis 2; tsize 1.6; type 0; tick 2; label ''; type 0. elseif (top = 0.90) or (raw = N) # if top plot on page tspl c.raw-c.rawnext meanline; over; connect; size sizek; start startyr; figure 0.0 0.97 bottom top; etype 0; data 0.1 1.0 0.0 0.75; etype 0; axis 1; side 2; size sizek; label ''; tick 1; side 2; size sizek; tsize 2; length 0.05; orientation 3; axis 2; tsize 1.6; type 0; tick 2; label ''; type 0. else # if middle plots on page tspl c.raw-c.rawnext meanline; over; connect; size sizek; start startyr; figure 0.0 0.97 bottom top; etype 0; data 0.1 1.0 0.0 1.0; etype 0; axis 1; label ''; type 0; tick 1; label ''; type 0; axis 2; tsize 1.6; type 0; tick 2; label ''; type 0. endif # if bottom = 0.0 let raw = raw + overlays let bottom = bottom + plotht let top = top + plotht endwhile # while (top <= 0.90) and (raw <= N) endlayout endwhile # while raw <= N endmacro