home *** CD-ROM | disk | FTP | other *** search
- COMAL LOOPS (syntax)
-
- REPEAT
- <statement block>
- UNTIL <condition>
-
- WHILE <condition> DO
- <statement block>
- ENDWHILE
-
- LOOP
- <statement block>
- EXIT [WHEN <condition>]
- <statement block>
- ENDLOOP
-
- FOR <var>:=<start> TO <end> DO
- <statement block>
- ENDFOR <var>
-
- Note: STEP <amount> is an option
-
- COMAL LOOPS (examples)
-
- REPEAT
- INPUT "Are you done?":reply$
- UNTIL reply$ IN "YyNn"
-
- WHILE NOT EOF(2) DO
- READ FILE 2: text$
- PRINT text$
- ENDWHILE
-
- LOOP
- INPUT "Score (0=done)?":score
- EXIT WHEN score=0
- WRITE FILE 2: score
- ENDLOOP
-
- FOR month:=1 TO 12 DO
- PRINT month'name$(month);
- ENDFOR month
-
- REPEAT
- solve'problem
- UNTIL errors>3
-
- WHILE KEY$="" DO
- flash(prompt$)
- ENDWHILE
-
- LOOP
- TRAP
- INPUT "Age: ": age
- EXIT // numeric entry OK
- HANDLER
- PRINT "Numbers only"
- ENDTRAP
- ENDLOOP
-
- FOR x:=-1 TO 1 DO
- READ sign$(x)
- ENDFOR x
- DATA "neg","zero","pos"
-
- COMAL DECISIONS (syntax)
-
- CASE <selector> OF
- WHEN <choice list>
- <statement block>
- {WHEN <choice list>
- <statement block>}
- [OTHERWISE
- <statement block>]
- ENDCASE
-
- IF <condition> THEN
- <statement block>
- {ELIF <condition> THEN
- <statement block>}
- [ELSE
- <statement block>]
- ENDIF
-
- COMAL DECISIONS (examples)
-
- CASE reply$ OF
- WHEN "a","A" // add
- add'member
- WHEN "d","D" // delete
- delete'member
- WHEN "l","L" // list
- list'member
- OTHERWISE // invalid choice
- PRINT "I can't do that."
- ENDCASE
-
- IF letter$ IN vowel$
- PRINT "It is a vowel"
- ELIF letter$ IN consonant$
- PRINT "It is a consonant"
- ELSE
- PRINT "It is not a letter"
- ENDIF
-
- CASE eaten OF
- WHEN 0
- PRINT "You might starve"
- WHEN 1,2
- PRINT "Not bad"
- WHEN 3
- PRINT "Great, I ate 3 too"
- OTHERWISE
- PRINT "I won't pay the bill"
- ENDCASE
-
- IF subscriber THEN
- PRINT "Subscriber discount";
- price:-2 // subtract 2 dollars
- ELSE
- PRINT "Normal order";
- ENDIF
- PRINT USING "$##.##": price
-
- COMAL ERROR HANDLER (syntax)
-
- TRAP
- <statement block>
- {REPORT}
- HANDLER
- <statement block>
- {REPORT, ERR, ERRTEXT$}
- {RETRY, ERRFILE}
- ENDTRAP
-
- ERROR HANDLER (examples)
-
- TRAP
- average:=score DIV number
- HANDLER
- PRINT err;errtext$
- PRINT "Error in calculations"
- PRINT "We'll assume 0 as AVG"
- average=0
- ENDTRAP
-
- TRAP
- INPUT "Enter age: ":age
- IF age<0 OR age>110 REPORT 888
- HANDLER
- IF err=888 THEN
- PRINT "Be reasonable."
- ELSE
- PRINT "Input error. Try again."
- ENDIF
- ENDTRAP
-
- PROCEDURES and FUNCTIONS (syntax)
-
- PROC <name>(<parameters>) CLOSED
- {IMPORT <var list>}
- <block>
- {note option: RETURN}
- ENDPROC <name>
-
- FUNC <name> (<parameters>) CLOSED
- {IMPORT <var list>}
- <block>
- {RETURN <value>}
- ENDFUNC <name>
-
- PROCEDURES and FUNCTIONS (examples)
-
- PROC continue
- PRINT "Press C to continue"
- REPEAT // empty repeat loop
- UNTIL INKEY$ IN "Cc"
- ENDPROC continue
-
- FUNC even(num) CLOSED
- IF num MOD 2 THEN
- RETURN FALSE
- ELSE
- RETURN TRUE
- ENDIF
- ENDFUNC even
-
- PROC slow'print(text$)
- FOR x:=1 TO LEN(text$) DO
- PRINT text$(x:x), //one char
- FOR slow:=1 to 99 DO NULL
- ENDFOR x
- ENDPROC slow'print
-
- FUNC just'last$(text$) CLOSED
- IF text$="" THEN RETURN ""
- max=LEN(text$)
- RETURN text$(max:max) //one char
- ENDFUNC just'last$
-
- For a FREE 24 page COMAL INFO booklet send a Self
- Addressed Stamped (45 cents) Envelope to:
-
- COMAL Users Group USA Ltd
- 5501 Groveland Terrace
- Madison, WI 53716
-