Passing Arrays? - Printable Version +- HP Forums (https://www.hpmuseum.org/forum) +-- Forum: HP Calculators (and very old HP Computers) (/forum-3.html) +--- Forum: HP Prime (/forum-5.html) +--- Thread: Passing Arrays? (/thread-8022.html) Passing Arrays? - toml_12953 - 03-24-2017 03:40 PM I'm trying to fill an array in a subprogram. I always get back zeros. What am I doing wrong? Are the parameters passed by value only? If so, is there a way to pass them by reference? TIA Tom L Code: SET_CONIC( COEF, A, B ) BEGIN   COEF(1) := A;   COEF(2) := B; END; EXPORT TESTPASS() BEGIN   LOCAL C:=MAKEMAT(0,2);      SET_CONIC( C, 14, -4 );   PRINT( C ); END; RE: Passing Arrays? - Han - 03-24-2017 03:47 PM Both C and COEF are local variables, and therefore their context is restricted to only the subprograms that declare them. Variables are passed by value. Either declare a local variable outside of the context of the subprograms to hold the coefficient values, or modify your subprogram to return the modified coefficients. For example: Code: // set values of conic coefficient array SET_CONIC( COEF, A, B, C, D, E, F ) BEGIN   COEF(1) := A;   COEF(2) := B;   COEF(3) := C;   COEF(4) := D;   COEF(5) := E;   COEF(6) := F;   RETURN(COEF); END; EXPORT TESTPASS() BEGIN   LOCAL C:=MAKEMAT(0,6);      C:=SET_CONIC( C, 14, -4, 11, -44, -58, 71 );   PRINT( C );    END; or Code: COEF:=[0,0,0,0,0,0]; // set values of conic coefficient array SET_CONIC( A, B, C, D, E, F ) BEGIN   COEF(1) := A;   COEF(2) := B;   COEF(3) := C;   COEF(4) := D;   COEF(5) := E;   COEF(6) := F; END; EXPORT TESTPASS() BEGIN   SET_CONIC( 14, -4, 11, -44, -58, 71 );   PRINT( COEF );    END; RE: Passing Arrays? - toml_12953 - 03-24-2017 05:23 PM (03-24-2017 03:47 PM)Han Wrote:  Both C and COEF are local variables, and therefore their context is restricted to only the subprograms that declare them. Variables are passed by value. Either declare a local variable outside of the context of the subprograms to hold the coefficient values, or modify your subprogram to return the modified coefficients. For example: Code: // set values of conic coefficient array SET_CONIC( COEF, A, B, C, D, E, F ) BEGIN   COEF(1) := A;   COEF(2) := B;   COEF(3) := C;   COEF(4) := D;   COEF(5) := E;   COEF(6) := F;   RETURN(COEF); END; EXPORT TESTPASS() BEGIN   LOCAL C:=MAKEMAT(0,6);      C:=SET_CONIC( C, 14, -4, 11, -44, -58, 71 );   PRINT( C );    END; Thanks! I chose the above method. Tom L RE: Passing Arrays? - cyrille de brĂ©bisson - 03-28-2017 05:58 AM Hello, Variables are always passed by value. Sorry. Cyrille