home *** CD-ROM | disk | FTP | other *** search
/ No Fragments Archive 10: Diskmags / nf_archive_10.iso / MAGS / INFO / IINFO51.MSA / TEXT_GFATUTE.TXT < prev    next >
Text File  |  1991-03-14  |  24KB  |  529 lines

  1.  
  2.                            GFA SIG
  3.                            ~~~~~~~
  4.  
  5.    Good news for all you GFA programmers. Hutch has bought himself another
  6. ST and continues to program in GFA basic. As I have yet not received the next
  7. part of Hutch's excellent tutorial series, I have parts 1 & 2 of a 10 part
  8. GFA tutorial by Tom Hayslett. The full series of Tom's tutorial is available
  9. from Cathy Tuck (ACE PD Officer). 
  10.                                          Ed ]
  11.  
  12.  
  13.                                  GFA BASIC
  14.                                   Class 1
  15.  
  16. BASIC
  17.      What is it? BASIC stands for Beginners All purpose Symbolic 
  18. Instruction Code. BASIC consists of commands (specific words) that when 
  19. entered through a BASIC interpreter form a 'Statement'. A statement is 
  20. simply an instruction to the computer to perform a specific task. All 
  21. computers understand only 1 language directly, called machine language. 
  22. Machine language consists of series of numbers (1's and 0's). Assembly 
  23. language is sometimes referred to as machine language. Any programming 
  24. language other than Assembly or machine language is known as an 
  25. interpreted language, in other words, the computer translates the commands 
  26. you enter into machine language which it can understand. This translation 
  27. is what sometimes causes other languages to be slower than Assembly 
  28. language. Why learn another language then? Why not learn Assembly and save 
  29. the time of this translation? Simple, Assembly or machine language is 
  30. ◆cryptic! The commands are not easily understood and every different 
  31. computer chip uses a different set of instructions. Assembly is by far the 
  32. fastest and most efficient language, also the hardest to learn (in my 
  33. opinion anyway). BASIC on any computer uses an interpreter for you to 
  34. enter your code. The interpreter then translates those commands into 
  35. machine language. The relative ease of learning and using BASIC is why
  36. we're here.  Lets proceed...
  37.  
  38.      Through the course of this instruction the only thing that's required 
  39. is GFA Basic itself. After you learn to write your own programs you may 
  40. want to consider purchasing the GFA Compiler. It allows you to convert 
  41. your basic programs into regular .PRG files that you can run from the 
  42. desktop without having to load GFA Basic first. Also, the GFA Companion is 
  43. helpful in constructing GEM menus, alert boxes, text boxes and 'pop-up' 
  44. menus. The companion also includes a very good disk tutorial for GFA 
  45. beginners. Items I strongly urge you to get immediately are:
  46.  
  47. DIOX95.ARC - A shareware program that constructs dialog boxes for you and
  48. actually writes the GFA source code to merge into your own programs.
  49.  
  50. GFATIPS.ARC - A series of GFA tutorials with example programs included
  51. written by John Holder (author of GFA Companion)
  52.  
  53. Misc GFA programs - you can print them out and use them to study other
  54. programmers techniques.
  55.  
  56.      The 3 items mentioned above are available on the STarBase BBS (904-
  57. 581-2866, 1200/2400 baud, 24 hours daily) if you have a modem or from the 
  58. STar library if you contact Hobart Neighbors. All the files include 
  59. documentation which I suggest you print out as much as possible as it
  60. makes a good source for future reference. Several of the ST magazines have
  61. ongoing articles pertaining to GFA Basic, some very good. Other suggested
  62. reading sources are:
  63.  
  64. GFA Basic Training - Reboot Camp - An excellent tutorial written 
  65. specifically for the GFA novice. This will teach you a lot of the basics 
  66. if you're a true beginning programmer.
  67.  
  68. GFA Basic Book - Written by the author of GFA Basic himself. This book is 
  69. for intermediate to advanced level programmers. A lot of good info here 
  70. although it gets quite complex at times. Save this for when you've truly 
  71. mastered the main commands and functions of the language.
  72.  
  73. GFA Basic Quick Reference Guide by Abacus - Another reference type of book 
  74. that includes additional examples of some of the commands. Very similar to 
  75. the GFA book that comes with the language.
  76.  
  77. On to the good stuff...
  78.  
  79. (***NOTE*** the familiarization with the editor and keyboard commands 
  80. referenced here were covered in our User Group lessons, if you're reading 
  81. this from the tutorial, please study your GFA Owners Manual and learn to 
  82. use the editor, it works!)
  83.  
  84.      Initially we'll cover familiarization with the editor in GFA. You'll 
  85. learn how to use both the mouse and the keyboard to perform all the needed 
  86. functions. We'll then progress to some of the most basic commands (and the 
  87. most frequently used commands) to thoroughly familiarize you with them. 
  88. Three different filename extensions will be used, .BAS (or .GFA),.BAK and 
  89. .LST. The .BAS extender indicates that the program is a basic program that 
  90. requires the GFA Basic interpreter (or the Run Only version) to run the 
  91. program. Almost all the Basic interpreters use the .BAS extension so to 
  92. identify the GFA only programs, some programmers began using .GFA as an 
  93. extension to differentiate between the different interpreters. You CAN 
  94. modify your GFA Basic program to list and load programs with a .GFA 
  95. extension instead of the .BAS extension however, this should be left to 
  96. those with some experience modifying programs in this fashion. The second 
  97. time you save a file, GFA automatically renames any previous version of 
  98. your program to .BAK to provide you with a backup. The .LST extension 
  99. indicates a GFA program saved in ASCII format. To load these type of 
  100. programs, you need to use the Merge feature within the interpreter. The 
  101. advantage to saving your files in ASCII format is that they can be 
  102. viewed/printed from the desktop. The disadvantage is that they take longer 
  103. to save/load. Subroutines that you intend to use in different programs 
  104. should be saved in this format as they can then be merged into any of your 
  105. programs.
  106.  
  107.      One thing to remember when using GFA is that you may only enter 1 
  108. command per line. This tends to make your listings (programs) a little 
  109. longer but this is also where GFA gains a lot of its speed. The 
  110. interpreter will check each line you enter after you press <RETURN>. If 
  111. there's an error, it will tell you. You may enter your commands in either 
  112. upper or lowercase letters and GFA will automatically correct them for 
  113. you. For ease of illustration, I'll show all GFA commands in uppercase 
  114. letters.
  115.  
  116.      Some of the commands we'll learn to use during this first lesson will 
  117. include:
  118.  
  119. PRINT (or ?) -
  120. simply tells the computer to print a statement on the screen. EXAMPLE:
  121. PRINT "Hello there!"  -  notice the text we want printed is enclosed in
  122. quotation marks. The computer will print anything between the quotation marks 
  123. up to a maximum of 255 characters. Instead of typing PRINT you may use the 
  124. question mark and GFA will change it for you to PRINT. This is simply a 
  125. shortcut. EXAMPLE: ? "Hello there!"  - notice you still need the quote marks.
  126.  
  127. PRINT AT(X,Y) - tells GFA to print a statement at a specific location with 
  128. 'X' being the column and 'Y' being the row. EXAMPLE: PRINT 
  129. AT(10,10);"Hello there!" - the quotes are still there and the only 
  130. difference is this statement will print Hello there! beginning at the 10th 
  131. column and the 10th row.
  132.  
  133. REM (or ' or !) - tells GFA to ignore the statement that follows as it is 
  134. only a comment for your use. Uses would be to insert comments in your 
  135. program such as REM This changes colors. If you ever need to find where 
  136. you change the colors in your program, it's easier to look for the comment 
  137. you left yourself explaining what you did. REM or ' may be used at the 
  138. beginning of a line only and indicates that GFA should ignore the entire 
  139. line. The ' symbol is a shortcut. When you want to enter a comment on the 
  140. same line as your statement, use the ! character. The ! tells GFA that the 
  141. text following it is simply a comment for your use. EXAMPLE (EX1):
  142.  
  143. REM Program to print Hello there! (GFA ignores this)
  144. ' By Tom Hayslett (GFA ignores this line also)
  145. PRINT "Hello there!"  !Actual program
  146.  
  147. PAUSE X - Tells GFA to wait a specified period of time before continuing. 
  148. 'X' can be any whole number. 50=1 second so if your command is PAUSE 100, 
  149. you're telling GFA to wait 2 seconds and then continue. EXAMPLE (EX2):
  150.  
  151. REM Program to pause
  152. PAUSE 50   !Waits 1 second
  153. PAUSE 300  !Waits 6 seconds
  154.  
  155. CLS - Tells GFA to clear the screen. This will help keep your program 
  156. looking more professional and it's very fast. It doesn't need anything 
  157. else used with it to work. EXAMPLE: CLS
  158.  
  159. KEY=INP(2) - This statement tells GFA to wait for the user to press any 
  160. key. This can be very useful when you want to display information to 
  161. whomever is using your program and you want your program to continue after 
  162. they've read the information and pressed any key. EXAMPLE: KEY=INP(2) The 
  163. 2 in parentheses indicates we're waiting for any input from the keyboard. 
  164. GFA uses this command to wait for input from other sources also but we'll 
  165. save them for another lesson.
  166.  
  167.  
  168. EDIT - Tells GFA to return you to the editor. Again, no additional 
  169. commands are needed. Now, lets use what we've learned to write a short and 
  170. simple program. See if you can follow exactly what we're doing in the 
  171. following program (EX3).
  172.  
  173. REM Our first program in GFA
  174. PRINT AT(35,11);"Hello there!"  !Prints at column 35, row 11
  175. PRINT AT(30,22);"Press any key to continue..."
  176. KEY=INP(2)   !Wait for a key to be pressed
  177. CLS   !Clears the screen
  178. PRINT AT(35,11);"Thank you!"
  179. PAUSE 250  !Pauses for 5 seconds
  180. CLS
  181. PRINT "Returning to the editor..."
  182. PAUSE 150
  183. EDIT  !Returns us to the GFA editor
  184.  
  185.       That's it for the introduction and some of the simpler yet most 
  186. commonly used commands. Hopefully I'll be able to keep writing these files 
  187. to help you beginners progress. Don't forget though that after you do 
  188. become somewhat proficient at the language yourself, I expect to learn 
  189. some tricks from you!
  190.  
  191.           Tom Hayslett
  192.           STar Users Group
  193.   
  194.      
  195.                                  GFA Basic
  196.                                   Class 2
  197.  
  198.      I'm not going to review what we learned last time since you have the
  199. documentation from class 1. We do however, need to go into a little 
  200. explanation here first...
  201.  
  202.    When working in the editor, the 'NEW' command will erase the current 
  203. program you have in memory and allow you to start again with a fresh editor. 
  204. Care should be exercised when entering the NEW command, be sure you've saved 
  205. any program you want to keep BEFORE entering NEW.
  206.  
  207.    Variables are used extensively in any BASIC language we use. A variable 
  208. is simply a symbol (usually a letter or word or number) that we use in a 
  209. program when that variable needs to change to many different values (or 
  210. characters). For example, I know you've all seen or heard statements like 
  211. this one pertaining to programming 'LET X=5' (for some reason, 'X' seems to 
  212. be popular). All this means is that we've assigned the value of 5 to a 
  213. variable called 'X'. If we had a short program like this (EX21):
  214.  
  215. LET X=5
  216. PRINT X
  217.  
  218.     Guess what would be printed? Right, the number 5. Okay, there are
  219. several different types of variables we may use to help BASIC understand
  220. what type of information we want it to save. All variables MUST start with
  221. a letter and be ONLY 1 word long. You should NOT use a BASIC command as a
  222. variable (even though it IS possible). Another example (EX22):
  223.  
  224. LET Our_number=5
  225. PRINT Our_number
  226.  
  227.     This statement is functionally identical to the first example. Notice
  228. that when I used the variable 'Our_number', there's an underscore
  229. connecting the 2 words. This is to keep our variable 1 'word' long
  230. (remember the rules?).
  231.  
  232.    Now for some of the different TYPES of variables we may use. A letter or 
  233. word alone indicates 'normal' or 'real' variables. They can be numbers only 
  234. and are accurate to 11 digits. EXAMPLE: LET X=234.15723 assigns that
  235. numeric value to the variable 'X'. A variable with a suffix of '%'
  236. indicates an 'integer' variable, in other words, whole numbers between 2,
  237. 147,483,647 and -2,147,483,648. The advantage of 'integer' variables is
  238. that they are much faster as BASIC doesn't have to compute the numbers out
  239. to 11 places (including decimal places). EXAMPLE: LET X%=5 assigns the
  240. number 5 to our 'integer' variable 'X%'. Another type of variable is the
  241. 'string' variable. These are indicated by the suffix '$' and can contain
  242. ANY characters less than 255 in length. The value assigned to string
  243. variables must be enclosed in quotation marks. EXAMPLE: LET X$="Hello
  244. there!". This assigns the 'value' 'Hello there!' to the string variable
  245. 'X$'. You may change the value of a variable within a program by
  246. assigning it a new value and the use of 'LET' is optional. EXAMPLE (EX23):
  247.  
  248. REM Short variable routine
  249. LET X=1   !I could have left 'LET' out
  250. Y=2     !I DID leave 'LET' out
  251. Total%=3   !Notice the '%'? 'Total%' is only another variable
  252. NAM$="Tom Hayslett" !You may have spaces or ANYTHING in there
  253. LONG_NAM$="Thomas W. Hayslett, W?" !Any characters (up to 255)
  254. '        !A 'REM' line to separate parts of our program
  255. PRINT X
  256. PRINT Y
  257. PRINT Total%
  258. PRINT NAM$
  259. ? LONG_NAM$
  260.  
  261.    Our screen would look like this:
  262. 1
  263. 2
  264. 3
  265. Tom Hayslett     (Notice it does NOT print the quotes!)
  266. Thomas W. Hayslett, W?
  267.  
  268.    Simple huh? Now lets see how we can use variables for a good purpose.
  269. You may perform mathematical functions on numeric variables just as if
  270. they were numbers. Math functions in BASIC include '+' or 'ADD' for
  271. addition, '-' or 'SUB' for subtraction, '/' or 'DIV' for division and '*'
  272. or 'MUL' for multiplication. There are also '=' for equal to, '<>' for not
  273. equal to, '<' for less than, '>' for greater than, '<= or =<' for equal to
  274. or less than and '>= or =>' for equal to or greater than.
  275.  
  276. EXAMPLE (EX24):
  277. X%=10
  278. Y%=5
  279. Total%=X%+Y%
  280. ? Total%
  281.  
  282.    This would print the integer variable 'Total%' on our screen which has 
  283. the value of 'X%' and 'Y%' added together. It would print 15. You may also 
  284. use some of the mathematical symbols to combine string variables.
  285.  
  286. EXAMPLE (EX25):
  287. NAM$="Tom"
  288. Last_nam$="Hayslett"
  289. ? NAM$+Last_nam$
  290.  
  291.    You must enclose your string variables in quotes and guess what our
  292. example would print? It would print TomHayslett. Oops! To correct this, we 
  293. would have to change our string variable 'NAM$' to "Tom ", the space would 
  294. also print making our screen show Tom Hayslett.
  295.  
  296.    Now, to make what we've learned useful, our numbers and strings must
  297. come from somewhere so where do we get them? One common source is from the
  298. person using our program. How? We use the 'INPUT' command. It's use is
  299. simple, EXAMPLE: INPUT X%. This pauses and waits for the user to enter a
  300. number. If they enter a character (A,b,q,etc.), a bell will sound and they
  301. can try again.  The 'INPUT' command will also print a question mark for
  302. you if you use a semicolon with it like this: INPUT;X%  You may also
  303. include instructions with the input command if you use it like this: INPUT
  304. "Instructions";X% 'Instructions' may be any string of text you want to 
  305. precede the question mark. You may also request input of a character string 
  306. by simply requesting a string variable. EXAMPLE: INPUT "Please enter your 
  307. name";NAM$ Our screen would look like this:
  308.  
  309. Please enter your name? _ (The underscore indicates where our flashing
  310. cursor would be)
  311.  
  312.    Okay, now on to another example (EX26).
  313.  
  314. REM Example program using input, variables and math
  315. CLS       !Clear the screen
  316. ?        !Print a blank line
  317. INPUT "Please enter your name and press RETURN ",NAM$ !See below
  318. ' This asks the user to enter their name
  319. ?        Print another blank line
  320. INPUT "Now, please enter a number ",X%
  321. ?
  322. INPUT "A second number also please ",Y%
  323. ?
  324. ? "Thank you "NAM$", please touch any key and I'll print the"
  325. ? "total of the 2 numbers you entered..."
  326. Key=INP(2)    !Wait for any key to be pressed
  327. Total%=X%+Y%
  328. PRINT AT(39,12);Total%   !Prints total of the 2 numbers
  329. PAUSE 150         !Pause for 3 seconds
  330. CLS
  331. PRINT AT(36,12);"Goodbye "NAM$", returning to the editor"
  332. PAUSE 200
  333. EDIT
  334.  
  335.    Whew! If you follow the program line by line it's easy to see exactly
  336. what it's doing in each step. You may also combine your INPUT statements
  337. and ask for more than one item at a time as follows, INPUT "Name and age: 
  338. ",NAM$,AGE%. Notice we used a comma instead of a semi colon (same as in the 
  339. first few lines of the example program above)? The comma along with the 
  340. semicolon allows us to define how we want the screen to look when we
  341. request information. We could also use it like this: INPUT "Name and age? 
  342. ",NAM$,AGE%. We may include the ? if we desire. We need to learn a few
  343. other commands now to make what we've already learned more meaningful.
  344.  
  345.    We're going to learn about several types of loops. A loop is simply a 
  346. routine in a program that continues whatever process it's doing until a pre 
  347. determined condition is met. Lets start with the simplest form first, the
  348. IF THEN type of loop. An 'IF...THEN' really isn't a true loop per say but
  349. it's often used as one. IF sets up a condition that if true will process a 
  350. certain statement. Every IF must be ended with an 'ENDIF'. A simple form is 
  351. as follows (EX27):
  352.  
  353. IF NAM$="Tom" THEN
  354.   PRINT "Hello Tom"
  355. ENDIF
  356.  
  357.    If the condition is true (string variable 'NAM$' = Tom), the following 
  358. command is executed. If our string variable 'NAM$' does NOT = Tom, the 
  359. complete loop would be bypassed. What if we wanted it to do something else 
  360. if that condition wasn't met? Here's where the 'ELSE' command comes into 
  361. play. It means if the  preceding statement wasn't true then do this. For 
  362. example (EX28):
  363.  
  364. IF NAM$="Tom" THEN
  365.   PRINT "Hello Tom"
  366.   ELSE
  367.   PRINT "Hello somebody else"
  368. ENDIF
  369.  
  370.    In this case, if our string variable = Tom it would print 'Hello Tom',
  371. if it didn't equal 'Tom' it would print 'Hello somebody else" then it
  372. would end the 'if' (leave the loop). These 'IF...THEN...ELSE...ENDIF'
  373. commands can be nested, that is you may have them inside another
  374. 'IF...ENDIF' loop. The editor in GFA will help you keep track of how many
  375. loops you are deep as it controls the indenting of the commands. Each 'IF'
  376. must be closed with an 'ENDIF'. Another example (EX29):
  377.  
  378. IF NAM$="Tom" THEN
  379.   PRINT "Hello Tom"
  380.   ELSE
  381.   IF NAM$="Bob" THEN
  382.    PRINT "Hello Bob"
  383.   ENDIF
  384. ENDIF
  385.  
  386.    Notice we have 2 'ENDIF' commands because we have 2 'IF's. A numeric 
  387. example would be as follows (EX210):
  388.  
  389. INPUT "Please enter a number between 1 and 10",NUM%
  390. IF NUM%< 5 THEN
  391.   PRINT "Your number is less than 5"
  392. ELSE   IF NUM%=>5 AND NUM%<=10 THEN
  393.    PRINT "Your number is larger than 4 but less than 11"
  394.   ELSE
  395.    PRINT "You cheated! Your number was too big!"
  396.   ENDIF
  397. ENDIF
  398.  
  399.    This asks for a number to be entered that's between 1 and 10 (NUM%). If 
  400. the number is less than 5 it prints 'Your number was less than 5'. If the 
  401. number is equal to or greater than 5 AND equal to or less than 10 it prints 
  402. 'Your number is larger than 4 but less than 11'. If the user enters a
  403. number larger than 10, it goes to the 'ELSE' which prints 'You cheated!
  404. Your number was too big!'. Then we have our 2 'ENDIF' commands to end the
  405. 'IF's.
  406.  
  407.    Another type of a loop is a 'DO...LOOP'. You tell it to do something 
  408. continuously until a pre determined condition is met. You exit a
  409. 'DO...LOOP' with the 'EXIT...IF' command. Sometimes when writing a
  410. program, you may accidentally write loops without an exit. To stop the
  411. program and return to the editor, press the CONTROL, ALTERNATE and SHIFT
  412. keys simultaneously. This is called a 'BREAK'. lets look at an example of
  413. a 'DO...LOOP' (EX211).
  414.  
  415. DO   !Starts our loop
  416.  CLS !Clear the screen
  417.  INPUT "Please enter a number between 1 and 10 ",NUM% !Gets NUM%
  418.  IF NUM%=3 THEN     !If the number is 3
  419.    PRINT "You guessed my lucky number!"  !Then print this
  420.    PAUSE 300    !Pause for 6 seconds
  421.  ELSE    !if it isn't 3, then do this
  422.    PRINT "Wrong. Please try again..."
  423.    PRINT "Press any key to continue..."
  424.    KEY=INP(2)    !Wait for any key to be pressed
  425.  ENDIF
  426.  IF NUM%=>11 THEN  !If you enter a number we don't want then
  427.    PRINT "You didn't follow instructions."
  428.    PAUSE 300
  429.  ENDIF
  430.  EXIT IF NUM%=>11  !This exits our 'DO...LOOP' when NUM%=>11
  431. LOOP
  432.  
  433.     Another type of looping can be done with the 'FOR...NEXT' command. It 
  434. usually starts a counter and processes the commands between the FOR and the 
  435. NEXT as long as the counter is still valid. For example: FOR NUM%= 1 to 10 
  436. states that our integer variable (NUM%) will equal 1, then 2, then 3, etc. 
  437. up to 10. When the program encounters the NEXT command it returns to the
  438. FOR to process the commands between FOR and NEXT again. For example
  439. (EX212):
  440.  
  441. FOR NUM%=1 to 10
  442.  PRINT
  443.  PRINT NUM%  !This will print our variable
  444. NEXT NUM%  !This sends our program back to the first line
  445.  
  446.    Each time through, NUM% will be printed so your screen will look like 
  447. this
  448.  
  449. 1
  450.  
  451. 2
  452.  
  453. 3
  454.  
  455. ETC.
  456.  
  457.    Another type of loop is the 'REPEAT...UNTIL' loop. REPEAT starts the
  458. loop and it continues until the condition set in the UNTIL command is
  459. true. For example (EX213):
  460.  
  461. REPEAT  !Starts the loop
  462. CLS
  463.  INPUT "Please enter a number between 1 and 10 ",NUM% !Gets NUM%
  464.  IF NUM%=5 THEN   !If the number input=5 then
  465.    PRINT "Good guess!"
  466.    PAUSE 300
  467.  ELSE
  468.    PRINT "Wrong! Press any key to try again..."
  469.    KEY=INP(2)
  470.  ENDIF
  471. UNTIL NUM%=5  !This exits if the number was 5
  472.  
  473.    Another command essential to programming is the 'GOSUB' command. This 
  474. directs your program to a particular routine that you may want to perform 
  475. any number of times. The 'GOSUB' command can be abbreviated '@' and the 
  476. location you want your program to go to must begin with 'PROCEDURE'. To 
  477. return from the 'PROCEDURE' to your program, simply end the PROCEDURE with 
  478. 'RETURN'. That sends you back to the line after the GOSUB command. This is 
  479. best demonstrated with an example (EX214):
  480.  
  481. DO
  482.  CLS
  483.  PRINT AT(10,10);    !Print a blank line to move 10,10
  484.  INPUT "Please enter a number (1 - 25) ",NUM%
  485.  IF NUM%=>1 AND NUM%=<25 THEN
  486.   GOSUB Check_number !Execute PROCEDURE named Check_number
  487.  ENDIF
  488.  EXIT IF NUM%="0" !Exits loop if we enter 0
  489. LOOP
  490. EDIT  !Return to the editor after exiting the loop
  491. '
  492. PROCEDURE Check_number
  493.  CLS
  494.  PRINT AT(30,12);
  495.  PRINT "You entered "NUM%" ..."
  496.  PAUSE 200
  497. RETURN  !Go back to our loop to get another number
  498.  
  499.    One more type of loop to learn and then we're finished with this lesson 
  500. (Whew!). This is the 'WHILE...WEND' type of loop. WHILE sets up a condition 
  501. and if it's true it processes all the commands between WHILE and WEND (WEND 
  502. stands for WHILE END) until the WHILE condition is met. The major
  503. difference between the 'WHILE...WEND' loop and the other types is that
  504. it's possible for the 'WHILE...WEND' to never be processed if the WHILE
  505. condition isn't true. With the others, they always process their loops at
  506. least once and look for an EXIT. An example follows (EX215):
  507.  
  508. FOR NUM%=1 to 15 !Set up our counter
  509.  CLS
  510.  PRINT AT(25,12);"Our number is now "NUM%"..."
  511.  PAUSE 100
  512.  WHILE NUM%=10 !Do this ONLY while NUM%=10
  513.   PRINT AT(25,14);"Now in the 'WHILE...WEND' loop..."
  514.   PAUSE 300
  515.   EXIT IF NUM%=10
  516.  WEND  !End the while loop
  517. NEXT NUM%  !Return to our counter
  518.  
  519.    Notice that the ONLY time our WHILE...WEND loop is executed is when our 
  520. variable is equal to 10. The other times, it never executes the loop.
  521. Enter all these commands and play with them. You'll learn a lot just by 
  522. experimenting with them. Also, read about these commands in your GFA Basic 
  523. owners manual, their examples should help serve to clarify what you've 
  524. learned here.
  525.  
  526.     Tom Hayslett
  527.     STar Users Group
  528.  
  529.