Dec 112017
Computer-Aided Instruction (CAI) program with examples and documentation.
File EXTOL.ZIP from The Programmer’s Corner in
Category Science and Education
Computer-Aided Instruction (CAI) program with examples and documentation.
File Name File Size Zip Size Zip Type
ALICE.EXT 1741 717 deflated
ALICE.SCO 512 99 deflated
BEATLES.EXT 7213 2090 deflated
EXRPT.EXE 22016 16006 deflated
EXTOL.EXE 36608 21790 deflated
EXTOL21.DOC 23300 6489 deflated
GENDER.EXT 1056 500 deflated
TEXT.EXT 207 154 deflated

Download File EXTOL.ZIP Here

Contents of the EXTOL21.DOC file

Version 2.1
Michael C. Taylor
129 Country Club Rd.
Pine Hill, NJ 08021

Your diskette should contain the following files:


EXTOL is a programming language designed for Computer-Aided
Instruction (CAI) which is particularly well-suited for
non-mathematical domains. EXTOL was originally developed at Essex
University in England, and the PC version is a full implementation of
EXTOL along with several enhancements.

PC-EXTOL is distributed as shareware. You are encouraged to
copy and distribute copies of the program. You are prohibited from
altering the program code and documentation in any way.

PC-EXTOL is the result of many months of programming, debugging
and documenting. If you find the programs useful, please register
your copy by sending a contribution ($25 is suggested) to:

Michael C. Taylor
129 Country Club Rd
Pine Hill, NJ 08021

In exchange for registering your copy, you will be sent the
next version of PC-EXTOL free of charge and will be notified of
any future enhancements by mail (These will also be provided to
you free of charge if you send me a diskette by mail).

PC-EXTOL is a very useful language for CAI. I would
greatly appreciate any comments, suggestions or questions you
may have about the system. I can be reached on the following
The Pinelands BBS - (609) 354-9259
Computer Connection (609) 784-9404
Compu-Data (609) 232-1245
or on Compuserve (user id 72467,2723).

NOTE - Version 2.0 of EXTOL has added if-then-else logic to the programming
language thereby making EXTOL code much more succinct and more easily read.

I. Types of statements in EXTOL

EXTOL statements can be grouped into four main catagories. Each
line could be a text line (to be printed on the screen when the quiz is
run), a comment (which is ignored when the program is run), a command
line, or a label (which is used as a 'landmark' to allow the program to
interrupt the flow of control of the program).

1.1 Text Statements

Text statements in EXTOL are any lines that begin with any
character other than '.', '%', and ':'. Text lines are simply printed
on the terminal at run time. If the text line contains a variable to be
printed (see Variable command), then the value of the variable is
copied into the text line before the line is displayed.

For example:

This is a text line.
This line contains a variable - The correct answer is .

Often a text line is used immediately before an "accept" command
to ask a question and allow the student to respond. If you want the
students response to be on the same line as the text printed, put a "+"
as the last character of the text line.
For example:

Please enter the answer+
This code would accept the student's answer on the same line as the
request (The "+" will not show up on the screen when the program is


Comments in EXTOL are any lines that begin with a '%'. These lines
are ignored by the program and are included by the programmer only to
make a comment about the program.

For example:
%This is a comment.

1.3 Commands

Commands in EXTOL are any lines beginning with a '.'. These lines
perform various functions which will be explained in Chapter 2.
Valid commands in EXTOL are:

1.4 Labels

Any EXTOL line beginning with a ':' is considered a label. If
during the program, you wanted to repeat certain lines, the goto
command would need a 'landmark' to go to.

For example:

Enter your name

The goto command would go to the label named 'again'.

II. Commands in EXTOL

note: all commands in EXTOL must be entered in lower case letters!

2.0 Score counters

With EXTOL, up to 10 counters can be kept during the execution of
the program. These counters can be used to keep track of how many
correct answers the student entered, or how many times the student took
to get the correct answer or many other things. The counters are
numbered 0 to 9 and are used with the following commands:

2.1 The accept command

Format : .accept

The accept command allows the person taking the quiz a chance to
enter a response.
For example:

Type in your name.

The above lines would prompt the user to enter his or her name and
would then wait until the student keyed in his name and pressed the
return key.

2.2 The feed command

Format : .feed(n)

The feed command is used to make the output of the program neater.
The command prints n blank lines on the terminal.

2.3 The clear command

Format : .clear

The clear command simply clears the screen.

2.4 The stop command

Format : .stop

The stop command ends program execution.

2.5 The match command

Format : .match(x,y).val1.val2.etc.

Where : x is the score counter (0-9) to be incremented,
y is the amount to increment score counter x,
and val1,etc. are the values to compare the student's answer

This command compares the student's response against the list of
possible values. If the response matches one of these values (either
exactly or by keyword see 2.6 - 2.7), the score counter x is increased
by y.

For example:

Did Dante write "Inferno" ?

In the above program, the student is asked a question. If he responds by
typing YES, YEAH or TRUE, the score counter 2 will be increased by 1. If he
types in anything else, the score counter will be unchanged.

Note that in the above example the answers that the student's response
is to be compared against are all in upper case. If the .caseon command
is used, all answers keyed in by the student are converted into upper
case before they are compared against the values in the .match command.
If the .caseon option is used, all values in the match command must be
entered in upper case (see .caseon command).

2.6 The exact statement
Format : .exact

The exact statement affects the match statement. The exact
statement makes subsequent match statements compare the student's
response letter for letter with the possible answers.

2.7 The keyword statement

Format : .keyword

The keyword statement also affects the match statement. This
statement makes the match statement check to see if any of the possible
correct answers are contained WITHIN the student's response.

For example:

Who wrote Huckleberry Finn?+

In this example, keyword matching is in effect. Therefore if the
student were to type:

Huckleberry Finn was written by Samuel Clemens.

The answer would still be correct because the keyword 'CLEMENS' is
contained in his answer.

2.7.1 The caseon command

The caseon command causes any answers keyed in by the student to be
converted to all upper case before being compared with the proper
answers. When using the caseon function, be sure that all answers that
you compare the student's response against, are keyed in upper case in
your program code. For example:

Who did Tom fall in love with?

2.7.2 The caseoff command
The caseoff command cancels the effects of the caseon command.

2.8 The goto command

Format 1 : .goto.val1

Where : val1 is the name of a label in the program.

This is an unconditional goto to a specific label.

For example :

Type in your name.

The above example would ask for a name. When the name was entered, the command would goto the label called name and ask for another
name. The above example would repeat indefinitely.

Format 2 : .goto(x).val1.val2.etc.

Where : x is the number (0-9) of a score counter,
val1,val2 etc. are names of labels in the program.

This format can goto more than one destination based on the value
of the score counter.

For example:

Did Tom Sawyer ever go home?
I'm sorry but he did.
That's correct!

The above example asks asks a question and matches the student's
response exactly against the correct answers (YES,YEAH or TRUE). If a
match is found, score counter number 1 is increased by 1. Then the goto
command looks at that value. If the student was wrong, the value of
counter 1 should be 0 and therefore the program will goto incorrect. If
the student was right, then the value of counter 1 should be 1 and the
program will jump to the correct portion of the program. (NOTE - see
.if command for an easier method of doing this!)

2.8.1 .if, .else, .enddo commands

Format 1 : .if match(n) do
...(extol commands)

Where : n is the score counter to be looked at.

If the score counter n contains any value greater than zero, the
commands found between the .if and .enddo will be executed. Otherwise,
these commands will be skipped.

Format 2 : .if match(n,m) do
...(extol commands)

Where : n is the score counter to be looked at.
m is the value to compare the score counter against

If the score counter n contains any value greater than OR EQUAL to
value m, the commands found between the .if and .enddo will be executed.
Otherwise, these commands will be skipped.

Format 3 : .if match(n,m) do .if match(n) do
...(extol commands) ...
.else OR .else
...(extol commands) ...
.enddo .enddo

The above variation adds an .else condition to the if phrase. Formats
1 or 2 may have elses within the .if and .enddo . If the .if test is true,
the commands between the .if and .else commands will be executed,
otherwise, the commands between the .else and .enddo will be executed.

If commands may also be nested up to 10 levels. (There can be up to
9 .if levels within one .if level).

For example:
Type the name of Bilbo's sword
.if match(0) do
Very good!
No, it was called "Sting".

2.9 The reset statement

Format : .reset(x)

Where : x is the number (0-9) of a score counter.

Often when testing answers for right or wrong, after the test is
performed it is necessary to reset the counter value to zero. The reset
command does just that.

2.10 The increment command

Format : .increment(x,y)

Where : x is the number of a score counter,
y is the amount to increment x by.

The increment command increases the value of a score counter
unconditionally by y.

2.11 The print command

Format : .print(x)

Where : x is the number of a score counter.

This command prints the value of any score counter onto the
screen. If you put a "+" after the print statement, the cursor will
not be positioned on the next line, and any text will be put on
the same line.

2.12 The response command

Format : .response filename

Where : filename is the name of a response file.

A record can be kept of who used the program, when they used it
and the values of all the score counters. This command tells what file
is to be used to keep track of this. (See Appendix II : Using the

Report Generator). A report can be printed out on the use of the

2.13 The mark command

Format : .mark

This command writes the values of all the score counters to the
file specified in the .response statement. THIS COMMAND CAN BE USED

2.14 The .< command

Format : .=yyyy

Where : xxxx is the name of any variable,
yyyy is the value to be assigned to xxxx.

Variables are very useful in an EXTOL program especially if drills
are to be used (see 2.15-2.18). Any text statements or the .match
command can use variables. The same variable can be reset to a new
value later in the program.

For example:

Does 2+2=4?
I'm sorry but the answer was .
Very good! The answer was .

In the above example the variable 'answer' is assigned a value of
'yes'. The match command compares the student's answer to what 'answer'
contains which is 'yes'. Then if the student was incorrect the program
prints :
I'm sorry but the answer was yes.
If he was correct, the program prints :
Very good! The answer was yes.

2.15 The define command

Format : .define drillname

Where : drillname is the name of the drill.

Drills are used for portions of an EXTOL program that are to be
repeated. The variables in the drill can be assigned new values for
every time the drill is performed. The define command tells the program
that all following lines are part of a drill until an .end command is
encountered. These lines will not be executed unless a .perform command
is encountered. (See Appendix I - Use of Drills)

2.16 The perform command

Format : .perform drillname

Where : drillname is the name of a defined drill.

This command will tell the program to execute a predefined drill
(see 2.15 The define command). When an .exit or an .end command is
encountered in the drill, the program will resume with the line
following the .perform command.

2.17 The exit command

Format : .exit

This command when encountered during a drill tells the program to
quit execution of the drill and resume with the statement following the
.perform command.

2.18 The end command

Format : .end

This command is the last command of a drill section. When
encountered during a drill, it will quit execution of the drill and
resume with the statement following the .perform.

2.19 The copy command
Format : .copy filename

Where : filename is the name of a file to copy.

This command copies the contents of filename into the
EXTOL program.

2.20 The textfile command
Format : .textfile=filename

Where : filename is the name of the file containing the desired text.

This command is very useful if you want the student to be able to read
any ascii file while executing an EXTOL program. When EXTOL encounters
this command, the file will be displayed for the student. The text will be
displayed in pages automatically and the student will have the following

Pressing "N" for the next page of text
Pressing "F" for the first page of text
Pressing "X" to end the text

Another advantage of using this command is that the text lines don't
actually get loaded into memory until they are read thus saving memory.
Perhaps the most useful aspect of this command is that you can encorporate
any ascii files you may already have written into your EXTOL programs
without having to copy them over.

Appendix I - Use of Drills

Drills are one of the most powerful features of the Extol language.
Drills allow you to code logic one time and execute the drill several
times within the same program. To use the drill facility, you must
be familiar with the EXTOL commands - .define, .exit, .end, and the
use of variables. An example follows:

%Sample of Drill use in Extol
%This program quizzes students on the gender of
%french nouns. The student keys in M if the noun
%is masculing and F if the noun is feminine.
%The drill will determine whether or not the student
%is correct and keep a count of correct answers
%The drill code follows:
.define noundrill
Please enter the gender of the noun, +
Sorry, but the gender of is .
Very good! The gender of is .
%This is the end of the drill code
%Program code follows:
Welcome to the french noun quiz. You will be given
a noun and will be asked to type in the gender of
the noun. Please type in "M" if the noun is masculine
and "F" if the noun is feminine. Good Luck!
.perform noundrill
.perform noundrill
Your final score was+
out of a possible 2.

The statements between the .define and the .end statement are what
make up the drill called "noundrill". When the program encounters
a .perform command, these lines will be executed. Otherwise the
program skips over this section.

The program statements begin with the .caseon command and continue
for the rest of the program. Notice that the program first sets
the values for and for before calling the drill
with the .perform command. The drill portion of the code accepts
the student's answer, compares it against the correct answer and
prints a message telling the student whether he was right or wrong.

This is just a very brief sample of the use of the drill command.
This command is ideal for language drills or any repetitive teaching

Appendix II - Using the Student Report Generator

If in an EXTOL program you specified a response file and
wrote a student's scores to it (see .response and .mark commands),
A report may be printed listing all students who ran the program,
when they started and finished and what the score counters contained
when the .mark command was executed. To produce the report enter
the following command from DOS.


The program will prompt you for the name of the response file
to print. After you enter the name, the report will print out.

 December 11, 2017  Add comments

Leave a Reply