Hello,
I'm new to PROC FCMP and am trying to get it to do some matrix multiplication as a subroutine.
As an example I have two matrices:
Z:
| LOB | SIM | Z |
| A | 1 | -0.326592916 |
| B | 1 | 1.542436865 |
CORR:
This is as far as I've gotten:
DATA Z;
INPUT LOB $ SIM Z;
DATALINES;
A 1 -0.326592916
B 1 1.542436865;
RUN;
DATA CORR;
INPUT A B;
DATALINES;
1 0.5
0.5 1;
RUN;
PROC FCMP OUTLIB=WORK.FUNCS.MATRIX;
SUBROUTINE MMULT(SIM);
ARRAY Y[2]; OUTARGS Y;
ARRAY CORR[2,2] / NOSYMBOLS;
ARRAY Z[2] / NOSYMBOLS;
RC = READ_ARRAY('CORR', CORR);
RC = READ_ARRAY('Z', Z, 'Z');
CALL MULT(Z, CORR, Y);
RC = WRITE_ARRAY('Z', Y, 'Y');
ENDSUB;
QUIT;
OPTIONS CMPLIB=WORK.FUNCS;
DATA TEST;
SET Z;
DO SIM=1 TO 1;
CALL MMULT(SIM);
END;
RUN;
...and I'm still getting these errors:
ERROR: Argument 3 to subroutine MULT must be a matrix at line 0 column 13.
ERROR: Error reported in function 'MULT' in statement number 5 at line 10 column 4.
Any help would be greatly appreciated!
Thanks
Emre