I would first put OPTION STRICT at the beginning of your code. It helps with variables in functions. Then I would put the VAR A out of the @INI (probably at the VERY beginning of your code.) It thinks the variable is in @INI so once it's out of @INI it gets rid of the variable. To make it keep the variable, you have to define the variable out of the GOSUB/function. Like this:
OPTION STRICT VAR A$ GOSUB@INI GOSUB@MAIN STOP @INI A$="It runs ; let us sell it!" RETURN @MAIN WHILE BUTTON()!=#X PRINT A$ WEND RETURNYou could see I did multiple things to the code. Like instead of END I put STOP. Stop does almost the same thing, but it also works inside functions. I also made A inti A$ because it is a string, so that gives SMILEBASIC more information about your variables and makes your code easier to read, because that's how you know it's a string. Then, I put the OPTION STRICT at the beginning of the code. This makes me define all my variables, so that when reading your code you know what all your variables are; SMILEBASIC can also know whether your variables are specific to the functions or universal throughout your code. I also put VAR A$ after that, because that's how you define variables. If you don't put that and you have option strict, it'll give an error that says, "UNDEFINED VARIABLE IN..." Hope you understand all that.