I had an error in my code where I was using a variable before I had assigned it a value, essentially like this:
new; x = myvar; myvar = 5;
In this example the variable myvar did not yet have a value, so I understand that it is incorrect. However, GAUSS returned the error message: G0156: illegal redefinition of procedure. This is confusing to me as I do not have a procedure named myvar. Why am I getting this error message?
When GAUSS encounters a new symbol that it does not know about, it starts out with the assumption that this new symbol is a procedure. That is why the error comes back as illegal redefinition of procedure.
The main point to remember, however, is that if GAUSS returns an error message that says "redefinition", then your program has referenced that symbol earlier on. To find it you just need to search towards the top of the program for that symbol name.
Hi, I have a follow up question on this.
What if that symbol name has been used before but just as inputs to other linked procedures?
Why does that gives the error stated above?
To be more clear, the symbol name comes out as the output of an optimization procedure. and that same symbol name is inside all the other linked procedures. But when I want to run it it gives the error message.
Inputs and local variables are private. For example:
proc (1) = myproc(a, b); a = a + b; retp(a); endp; c = myproc(5, 7); //error on line below, 'a' has never been defined d = a;
Is that the situation you are asking about?
Yes, exactly. I was almost sure that was the case but I still get a mistake concerning a symbol name which should be used only privately before in the code.