Use the FCMP function to call WRITE_ARRAY, which writes the data to a data set. Call RUN_MACRO to standardize the data in the data set. Call WRITE_ARRAY to write data to a data set. Call READ_ARRAY to read the standardized data back into the array.
proc fcmp outlib = sasuser.ds.functions;
subroutine standardize(x[*], mean, std);
outargs x;
rc = write_array('work._TMP_', x, 'x1');
dsname = 'work._TMP_';
colname = 'x1';
rc = run_macro('standardize', dsname, colname, mean, std);
array x2[1]_temporary_;
rc = read_array('work._TMP_', x2);
if dim(x2) = dim(x) then do;
do i = 1to dim(x);
x[i] = x2[i];
end;
end;
endsub;
run;