Talk:BASIC-PLUS

message: While DEC took over BASIC-PLUS development, original development was done by EG&H (Evans, Griffiths and Hart). Paul Koning 11:01, 30 July 2007 (UTC)
thread_title: Origin

message: It seems the writer of this article did not understand why FOR loops with conditional exit conditions existed.
It was always obviously easy to break out of any FOR loop. You could either change the loop variable to a value matching the exit condition (yes, that works even for a normal FOR loop), or even more obviously just GOTO out of the loop.
The point of FOR ... UNTIL, or FOR ... WHILE was not because NEXT could not be in an IF statement, but because it allowed for totally arbitrary conditions for breaking out of the loop. They do not have to refer to the loop variable itself at all. And also, even in these loops, the loop variable itself is still managed the same as in any other FOR loop. No need to explicitly update the loop variable. It gets automatically updated at the NEXT statement.
So, you can write:
FOR I=0 STEP 3 WHILE X=0
.
.
.
NEXT I
and it would loop until X was not zero anymore. Meanwhile, I was incremented by 3 for every iteration in the loop.
The example on the page is silly. FOR I=0 UNTIL I=10 is truly identical to FOR I=0 TO 9, and is just a more cumbersome way of writing it.
(Of course, one can also observe that strictly speaking, conditional exits were not needed either, as you could just create an IF statement in the loop, and GOTO out of the loop under the right conditions. However, in combination with statement modifiers, it becomes more relevant and useful.
Sillbit (talk) 16:41, 13 December 2020 (UTC)
replies: text: I am not sure where the article says what you are saying above. It simply says that the UNTIL and WHILE could be used to modify its behaviour and that NEXT could not be used in a statement. Maury Markowitz (talk) 13:54, 13 May 2022 (UTC)
thread_title: Misunderstanding FOR loops

message: The article mentions statement modifiers, but does not really make clear why they are needed at all.
The statement is that PRINT "Foo" IF A=0 is equivalent to IF A=0 THEN PRINT "Foo"
They are not exactly the same. Compare the following two lines:
10 IF A=0 THEN PRINT "Foo" : PRINT "Bar"
20 PRINT "Foo" IF A=0 : PRINT "Bar"
at line 10, the second print statement will only ever be considered if the IF statement is true. At line 20, the second print statement is independent of the IF, and will always be printed.
Sillbit (talk) 16:41, 13 December 2020 (UTC)
thread_title: Corrections about statement modifiers

message: At some later point, BASIC+ changed from using colon (:) as a statement separator to using backslash (\). Not sure exactly when this happened, but at some point colon ceased to even be accepted.
Sillbit (talk) 16:48, 13 December 2020 (UTC)
thread_title: Statement separator

message: The article consistently refers to RSTS/E, but that is not correct.  In particular, BASIC PLUS was *not* developed for RSTS/E.  RSTS started out as RSTS-11, and that's what BASIC PLUS originally
ran on.  RSTS/E came later.
:There is only one article on this OS, as seen in the lede, it covers both -11 and /E. Maury Markowitz (talk) 13:56, 13 May 2022 (UTC)
thread_title: RSTS