Quick question: do you have resistance?
If not, then I'm afraid you can't use 'if', 'else', or 'while'. Nor can you define and use functions. Basically, pre-resistance, you are stuck with using spagetti code; using "goto" to jump all over the place. Poor programming practice yes, but it usually works fine considering most scripts are much smaller than, say, a real program.
With resistance, those nifty little commands were added in that make scripting more like a 'real' programming language; the 'if','else','while' and functions.
Personally, I still use the old ? in scripts to do my if statements, simply because its faster to type (and I got used to it before upgrading to resistance). I usually only use "if" if I need an "else" in there too. An important note is that you can also provide multiple commands in a single ? statement, just like an if statement-- they just have to be separated by a semicolon.
Keep in mind you can use ALL of the functions/syntax found in the comm ref in scripts. You can use '?' or 'if', you can use 'while' loops, you can make function calls to your own functions using the 'call' command, you can execute scripts using the "exec" command, and you can use @condition and ~delay to pause the script for a time.
In your own functions (.sqf files), you can also use all of the same commands, with a couple exceptions: you cannot delay the function (using @ or ~ ), and you can't use the '?'. Come to think of it, I don't think you can use the "goto" function either. You can still call functions using the "call" command, and still execute scripts using the "exec" command though.
Personally, I think you should just 'give in' and use the "goto" command. It seems like it would be more work to try to avoid ever using that command than it is worth. You will most likely end up with a ton of different .sqs and .sqf files, when you could fit them all in one or two .sqs files using the "goto" command. In the end that would just make things more complex and hard to understand, instead of making them simpler; which I assume is your reason for wanting to avoid the "goto" command in the first place.