|Syntax||REPLACE oldvar, newvar|
|Location||REPLACE (DIY Toolkit - Vol R)|
The REPLACE command is intended for use from the interpreter’s command line and for program development only.
The idea of REPLACE is to rename SuperBASIC variables contained in the program which is currently loaded into the interpreter. The first and second parameter can be any variables, they must not be given as strings ie. inside quotes (this leads to error -15: bad parameter).
REPLACE will replace oldvar by newvar for the whole program (in fact for the whole interpreter).
Acceptable types of parameters are variables and also REPeat loop names but not PROCedure or FuNction names.
You can even use this to change unquoted device names if you wish, such as:
You could use:
REPLACE flp1_data_cde, flp2_data_cde
REPLACE is extremely fast, without any noticeable reduction in speed for large programs due to the fact that the interpreter stores the program lines in tokenised format, this means that a line is not stored as text but as a set of numbers (tokens) which represent the elements of the line. So REPLACE merely has to modify the name table and change the name which is identified with a certain token.
Enter the following lines:
10 x = 1 20 PRINT SQRT(x)
REPLACE x, Whatever
and then LIST or ED, the program now reads:
10 Whatever = 1 20 PRINT SQRT(Whatever)
and is functionally identical to the original.
Never use REPLACE as part of a program.
REPLACE will work on a program loaded into a MultiBASIC.
There is one possibility that you can harm your program: if you replace a variable by another variable which is already used in this program then the program will usually behave very differently after the REPLACEment.
According to the Minerva Technical Manual REPLACE is “not particularly safe”. At least if you are using the original version as published in QL World then you need to turn off Minerva’s integer tokenisation (POKE \212,128). Later versions (v0.3+) do however cope with integer tokenisation. Despite the warning, we have yet to find any other problems with REPLACE.
NEW_NAME is very similar to REPLACE but the parameters are passed as strings. This has the advantage that NEW_NAME can take variable parameters, REPLACE would replace the variable for the variable name. Compare ALIAS.