PILOT programming languageThe name is an acronym, and stands for "Programmed Instruction, Learning or Teaching". It was an early foray into the technology of Computer Assisted Instruction (CAI).
A line of PILOT code contains (from left to right) the following syntax elements:
- an optional label
- a command letter
- an optional Y (for yes) or N (for no)
- an optional conditional expression in parentheses
- a colon (":")
- an operand, or multiple operands delimited by commas.
The command letters used in Pilot are as follows:
R:Next line of input replaces current contents of accept buffer A:
R:Next 3 lines of input assigned to string variables 'X', 'Y' and 'Z' A:$X,$Y,$Z
R:Numeric input assigned to numeric variable "Q" A:#Q
Compute and assign numeric value.
R:Assign arithmetic mean of #X and #Y to #AM C:#AM=(#X+#Y)/2
Dimension an array, on some implementations.
End (return from) subroutine. Always used without any operand.
Jump to label.
Match the accept buffer against string variables or literals.
A:Search accept buffer for "TRUTH", the value of $MEXICO and "YOUTH", in that order M:TRUTH,$MEXICO,YOUTH
The first match string (if any) that is a substring of the accept buffer is assigned to the special variable $MATCH. The buffer characters left of the first match are assigned to $LEFT, and the characters on the right are assigned to $RIGHT.
The match flag is set to 'yes' or 'no', depending on whether a match is made. Any statement that has a Y following the command letter is processed only if the match flag is set. Statements with N are processed only if the flag is not set.
Equivalent to TN: (type if last match unsuccessful)
The operand of R: is a comment, and therefore not processed.
'Type' operand as output.
R:Output a literal string T:Thank you for your support.
R:Output a variable expression T:Thank you, $NAME.
Use (call) a subroutine. A subroutine starts with a label and ends with E:
R:Call subroutine starting at label *INITIALIZE U:*INITIALIZE
Equivalent to TY: (type if last match successful)
If there is parenthesized expression in a statement, it is a test expression, and the statement is processed only if the test has a value of 'true'.
R:Type message if x>y+z T(#X>#Y+#Z):Condition met
The above is a description (but not a definition) of "core pilot". Extensions to core pilot include arrays and floating point numbers in Apple PILOT, and implementation of turtle graphics in Atari PILOT.