| Home CBM ASCII-X BASIC Disk Commands Enter RUN mode Program Format Secret Variables Variable Format Expressions Keywords (divide) (equal) (less) (minus) (more) (multiply) (plus) (power) Abs And Append Asc Atn Auto Backup Bank Begin Bend Bload Boot Box Bsave Bump Catalog Char Chr Circle Close Clr Cmd Collect Collision Color Concat Cont Copy Cos Data Dclear Dclose Dec Def Delete Dim Directory Dispose Dload Do Dopen Draw Ds Ds string Dsave Dverify El Else End Envelope Er Err Exit Exp Fast Fetch Filter Fn For Fre Get Get num Getkey Go Gosub Goto Graphic Gshape Header Help Hex If Input Input num Instr Int Joy Key Left Len Let List Load Locate Log Loop Mid Monitor Movspr New Next Not Off On Open Or Paint Peek Pen Pi Play Pointer Poke Pos Pot Print num Pudef Quit Rclr Rdot Read Record Rem Rename Renumber Restore Resume Return Rgr Right Rlum Rnd Rreg Rspcolor Rsppos Rsprite Run Rwindow Save Scale Scnclr Scratch Sgn Sin Sleep Slow Sound Spc Sprcolor Sprdef Sprite Sprsav Sqr Sshape St Stash Step Stop Str Swap Sys Tab Tan Tempo Then Ti Ti string To Trap Troff Tron Until Using Usr Val Verify Vol Wait While Width Window Xor Syntax Tokens C128 D64plus Disk Escape Codes Hardware PCxface PETSCII Pet2asc Futurama IBM PC-AT Contact Games Glossary Hall of fame Hall of shame Miscellaneous Privacy policy Programming Twisty puzzles |
DO [ { UNTIL | WHILE } startTest ] [ : statement ] ... [ statement : ] ... [ EXIT ] [ : statement ] ... [ statement : ] ... LOOP [ { UNTIL | WHILE } endTest ] [ : otherCode ] ...
Program flow control. Evaluate a condition and verify true before starting/repeating a block of statement(s).
The entire DO...LOOP construct may be on a single line, or span any number of lines (not only 3 lines like Syntax shows). The statement(s) will be executed an arbitrary number of times; depending on the results of startTest and/or endTest (if either). The loop will run forever (or until an EXIT is executed) if both startTest and endTest are omitted. See the entry for DO for more details; this page concentrates on WHILE itself. The WHILE clause will check its condition (the startTest following DO or the endTest following LOOP) and if it is true (non-zero) another (or first) pass of the statement(s) will be made. If the condition is false (the test "fails") then DO is removed from the BASIC stack and the otherCode is executed (the code after LOOP, if any). In the case of startTest (i.e., following DO), a matching LOOP must be found if the test "fails" or LOOP NOT FOUND ERROR occurs. Unlike Visual BASIC or C, a WHILE (or UNTIL) test can be made at both the DO (start) and LOOP (end) parts of a pass in CBM BASIC. One problem exists which is similar to that of FOR/NEXT. The problem is that using LOOP in a conditional statement (IF/THEN/ELSE) may foul things up. This happens when EXIT occurs before the conditional LOOP or the startTest "fails". A solution is similar to that of a conditional NEXT, which is to follow the conditional LOOP with GOTO to get to the real/unconditional end of the loop. Whenever WHILE appears, its associated condition (startTest or endTest) is required; if missing, a SYNTAX ERROR occurs and if the condition is not a numeric expression a TYPE MISMATCH ERROR is generated. Example:
© H2Obsession, 2014 |