| 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 |
IF condition { GOTO lineNumTrue | THEN [ lineNumTrue | BEGIN ] } [ statementT ] [ : statementT ] ... [ statementT : ] ... BEND [ junk1 ] [ : ELSE [ lineNumFalse | BEGIN ] [ statementF ] [ : statementF ] ... [ statementF : ] ... BEND [ junk2 ] ]
Program flow control. Conditionally execute statement(s) or change program execution line.
Because the syntax shown above is rather complex, let me explain the 3 possibilities with the THEN clause. THEN may be followed by:
The THEN clause is only executed when the condition is true (evaluates to non-zero). Like most prepositions, attempting to use THEN by itself (as a command or statement) will generate a SYNTAX ERROR. The first statement following THEN (or lineNumTrue, lineNumFalse, BEGIN, or ELSE), if any, does not need a leading colon (:). This makes typing programs a bit easier and saves a byte; however, many BASIC extensions will fail if a leading colon is not present. It seems this is a hack written by Microsoft in the original version of BASIC. It essentially short-circuits the normal BASIC execution logic, with some ugly side-effects. Besides causing trouble for BASIC extensions, HELP will highlight the entire IF / THEN / ELSE construct when the error occured in the THEN clause; similarly error trapping is messed up; the hacked implementation also delays execution of a COLLISION routine. The Syntax allows THEN (but not ELSE) to be replaced with GOTO for program branching, but attempting to use GO TO in this case will cause SYNTAX ERROR. You can blame Commodore for this bug. * The selected command/statement(s) must be valid for the current Interpreter mode (Direct Mode or Run Mode, per the current state of the BASIC Interpreter). Example 1:
Example 2 is for BASIC v1.0 and v2.x which lack an ELSE clause (uses GOTO):
© H2Obsession, 2014 |