The Perl INTERCAL compiler

... Errors

This is a complete list of error codes generated by CLC-INTERCAL. Each code has one or more error messages associated with it. Note that not all versions of CLC-INTERCAL generate all these errors, and older version did not assign a code to all the compiler fatal errors. Some of the error codes have changed between versions. You might want to refer to the list of errors which came with the compiler instead.

Numerical listing of error codes

CodeMessage
000any unreoognised syntax error
001Not implemented: description
003Too many command-line arguments
004Unknown read type for Roman numerals: type
005Item must be a one spot value (got number)
008Base must be between 2 and 7 (got number)
009Invalid I/O Type: type
010Invalid character set: name
012Back end cannot create output file
Compiler cannot save parse tree
013Cannot find language back end
Syntax is syntax
015Cannot encode type
Cannot export symbol
057Extra garbage at the end of item
069Invalid bytecode for item
072Illegal label
081Missing DO or PLEASE
084Invalid gerund
093Missing <- in something which looks like a CALCULATE
100Constant too large after double-oh-seven
109Invalid character (character) for charset
Invalid character in string
110Compiler cannot load parse tree
111Cannot guess character set
Unknown suffix
112Missing TO after ENSLAVE
116Missing FROM after FREE
128Cannot use JUNK in this grammar
129Could not find label (label)
199Constant out of range or invalid
201American spelling ENROLL not acceptable. Use ENROL
202Missing TO or LEARN after ENROL
218Syntax error in postprocessor directive
240Array too small
241Array register not dimensioned
Dimension mismatch in register
Illegal subscript
Input value has too many spots
Overoptimistic subscript
register is an array register
register is not an array register
register overstuffed
242Invalid indirection
243Array register register used as value
244Class register register used as value
245Non-array register register used as array
246Data written in (size elements) does not fit in array register (size elements)
247Attempt to modify special register register
248Cannot action overload code
249Cannot take a diversion here
250Class register required
252Missing AT after STUDY
Missing class after STUDY ... AT ... IN CLASS
Missing IN or CLASS after STUDY ... AT
Missing label after STUDY ... AT
274Number value too large for one spot
Number value too large for two spots
275Register register cannot hold two spot value number
276Invalid subscript: value
277Impossible assignment (base base): cannot find #X such that op#X is #value
278Cannot share register and register
299Invalid register
315Program trying to subvert natural order
316Cannot decide between your threads
398A subexpression starts with a spark but ends with none
399A subexpression starts with a set of rabbit ears but ends with none
401Your program is obsolete
436Register register is stashed away too well
444filename attempted to remove INTERCAL
456No splat
458Found number statements with label (label)
497Invalid object format
499Programmer is not polite enough
Programmer is too polite
511Register register is not a slave
512Register slave DOES NOT BELONG TO owner
513Register slave does not have number owners (just number)
514Invalid overload
Invalid owner: number
533Cannot interleave number and number: too many spots
534Wrong number of digits for base base: number
555Multiple "COME FROM" gerund(symbol)
Multiple "COME FROM" (label)
576No such optimiser name
577Invalid optimisation name
603Class war between class and class
621Pointless "FORGET"
623Forgetting too much
Resuming too much
633Falling off the edge of the program
634Internal error: loop stash corrupted
664Program is too large
665No waltzing in the streets (particularly diversions)
666Problem with black magic: Diversion during black magic is too dangerous
Problem with black magic: Nested black magic
Problem with black magic: Random fire disrupted the black magic
667Internal errors in the Quantum Emulator
701Value written in is not a number: value
702Value written in is larger than two spots
703Value value assigned to register larger than two spots
774Compiler error
775Unexplainable compiler error
797Class @number cannot be used for reading
Class @number cannot be used for writing
798Cannot find class @number
799No class teaches subjects list
801Not in a lecture
815Creation not allowed: value too large
816CREATE statement misconfiguration
817Syntax error
818Circular reasoning in symbol
822Register register is not a student
823Subject subject is not in student's curriculum
942No such sin (sin)
997Illegal operator name for base base
999Subject #subject of class class at lecture before 1000

Alphabetical listing of error codes

MessageCode
A subexpression starts with a set of rabbit ears but ends with none399
A subexpression starts with a spark but ends with none398
American spelling ENROLL not acceptable. Use ENROL201
any unreoognised syntax error000
Array register not dimensioned241
Array register register used as value243
Array too small240
Attempt to modify special register register247
Back end cannot create output file012
Base must be between 2 and 7 (got number)008
Cannot action overload code248
Cannot decide between your threads316
Cannot encode type015
Cannot export symbol015
Cannot find class @number798
Cannot find language back end013
Cannot guess character set111
Cannot interleave number and number: too many spots533
Cannot share register and register278
Cannot take a diversion here249
Cannot use JUNK in this grammar128
Circular reasoning in symbol818
Class @number cannot be used for reading797
Class @number cannot be used for writing797
Class register register used as value244
Class register required250
Class war between class and class603
Compiler cannot load parse tree110
Compiler cannot save parse tree012
Compiler error774
Constant out of range or invalid199
Constant too large after double-oh-seven100
Could not find label (label)129
CREATE statement misconfiguration816
Creation not allowed: value too large815
Data written in (size elements) does not fit in array register (size elements)246
Dimension mismatch in register241
Extra garbage at the end of item057
Falling off the edge of the program633
filename attempted to remove INTERCAL444
Forgetting too much623
Found number statements with label (label)458
Illegal label072
Illegal operator name for base base997
Illegal subscript241
Impossible assignment (base base): cannot find #X such that op#X is #value277
Input value has too many spots241
Internal error: loop stash corrupted634
Internal errors in the Quantum Emulator667
Invalid bytecode for item069
Invalid character (character) for charset109
Invalid character in string109
Invalid character set: name010
Invalid gerund084
Invalid I/O Type: type009
Invalid indirection242
Invalid object format497
Invalid optimisation name577
Invalid overload514
Invalid owner: number514
Invalid register299
Invalid subscript: value276
Item must be a one spot value (got number)005
Missing AT after STUDY252
Missing class after STUDY ... AT ... IN CLASS252
Missing DO or PLEASE081
Missing FROM after FREE116
Missing IN or CLASS after STUDY ... AT252
Missing label after STUDY ... AT252
Missing <- in something which looks like a CALCULATE093
Missing TO after ENSLAVE112
Missing TO or LEARN after ENROL202
Multiple "COME FROM" gerund(symbol)555
Multiple "COME FROM" (label)555
No class teaches subjects list799
No splat456
No such optimiser name576
No such sin (sin)942
No waltzing in the streets (particularly diversions)665
Non-array register register used as array245
Not implemented: description001
Not in a lecture801
Number value too large for one spot274
Number value too large for two spots274
Overoptimistic subscript241
Pointless "FORGET"621
Problem with black magic: Diversion during black magic is too dangerous666
Problem with black magic: Nested black magic666
Problem with black magic: Random fire disrupted the black magic666
Program is too large664
Program trying to subvert natural order315
Programmer is not polite enough499
Programmer is too polite499
register is an array register241
register is not an array register241
register overstuffed241
Register register cannot hold two spot value number275
Register register is not a slave511
Register register is not a student822
Register register is stashed away too well436
Register slave DOES NOT BELONG TO owner512
Register slave does not have number owners (just number)513
Resuming too much623
Subject subject is not in student's curriculum823
Subject #subject of class class at lecture before 1000999
Syntax error817
Syntax error in postprocessor directive218
Syntax is syntax013
Too many command-line arguments003
Unexplainable compiler error775
Unknown read type for Roman numerals: type004
Unknown suffix111
Value value assigned to register larger than two spots703
Value written in is larger than two spots702
Value written in is not a number: value701
Wrong number of digits for base base: number534
Your program is obsolete401

Description of error messages

241 Overoptimistic subscript
    A subscript is larger than the array dimensioning allows.
 
249 Cannot take a diversion here
    A combination of overload and weird side-effects resulted in an attempt to assign a value to a diversion. Diversions are just about the only things which aren't LVALUES.
 
241 register is an array register
    This is a runtime error, which happens when you attempt to use an array register where a number is expected. This cannot always be determined at compile time, because the register might be specified using the BELONGS TO relation.
 
316 Cannot decide between your threads
    The programmer attempted to merge two running programs together, which is always a dubious operation. In this case, the programs were multithreaded and it was not possible to decide which thread to merge with which other thread.
 
577 Invalid optimisation name
    This error message is reserved for the optimiser, which has not been written yet.
 
801 Not in a lecture
    Attempting to execute a FINISH LECTURE statement, but there is no lecture to finish.
 
252 Missing IN or CLASS after STUDY ... AT
    This error code is reported on the program listing if the initial keyword is not followed by the required bits. If you attempt to execute the statement, the error code followed by the original text will be printed to standard error, and the program terminate.
 
116 Missing FROM after FREE
    This error code is reported on the program listing if the initial keyword is not followed by the required bits. If you attempt to execute the statement, the error code followed by the original text will be printed to standard error, and the program terminate.
 
003 Too many command-line arguments
    A subroutine produced by the inline compiler was called with three or more arguments. Try to limit yourself to two.
 
240 Array too small
    This error will be reported at runtime if you assign a dimension of zero to an array.
 
436 Register register is stashed away too well
    The program attempted to RETRIEVE a register which does not appear to have been STASHed, or if it has been, has been hidden so well that the runtime cannot find it again.
 
499 Programmer is too polite
    Try to say "PLEASE" a bit less often
 
242 Invalid indirection
    An indirect register operator (+-) had some form of syntax error.
 
799 No class teaches subjects list
    This is a runtime error. Attempting to ENROL a register to study some subjects, but there is no class teaching them at the time the statement is executed.
 
084 Invalid gerund
    An ABSTAIN FROM GERUND or REINSTATE GERUND statement contains an invalid gerund.
 
015 Cannot encode type
    The compiler attempted to encode a special symbol for its own internal use; however, the requested encoding function does not exist.
 
623 Forgetting too much
    Forgetting more than you are currently remembering. The program stops, because it can't remember what it was doing.
 
276 Invalid subscript: value
    An overload code was used with more than one subscript; or a register which must be subscripted wasn't.
 
244 Class register register used as value
    You did something like DO .1 <- @2
 
250 Class register required
    Statements like STUDY need a class or they don't know where to go.
 
093 Missing <- in something which looks like a CALCULATE
    This error code is reported on the program listing when a statement starts with a register name ans some subscripts, but the parser cannot find the corresponding <-. If you attempt to execute the statement, the error code followed by the original text will be printed to standard error, and the program terminate.
 
275 Register register cannot hold two spot value number
    A CALCULATE statement produced a 32 bit value and tried to assign it to a 16 bit register.
 
241 Input value has too many spots
    A WRITE IN obtained a value from standard input, but the value has more spots than the register which is supposed to hold it.
 
797 Class @number cannot be used for writing
    It may be possible in future but not just now.
 
603 Class war between class and class
    The program attempted to ENROL a register to study some subjects, but there are two or more classes which teach all the required subjects. Try to list more subjects to distinguish between the classes.
 
444 filename attempted to remove INTERCAL
    You have called the "unimport" function, either explicitely, or with the pragma "no INTERCAL". Naughty.
 
817 Syntax error
    Supposedly an inconsistency with a CREATE statement; however this splat is not actually generated.
 
458 Found number statements with label (label)
    A label appeared more than once in the program. The compiler even tells you how many times. Note that some compilers don't care about repeated labels in your program, as long as you don't try to use them in a context where it causes problems.
 
775 Unexplainable compiler error
    This can happen when you ask the compiler to omit the random error. We do not know why, when, or how.
 
111 Unknown suffix
    There is no file type guessing (yet)
 
513 Register slave does not have number owners (just number)
    The program attemted to find the owner of a slave, but the slave did not have an owner (in other words, it was a free register). Or the slave did have one or more owners, but not enough for the thing you asked to do.
 
100 Constant too large after double-oh-seven
    This error code is reported on the program listing if the double-oh-seven symbol is followed by a constant, but this is 100 or larger. If you attempt to execute the statement, the error code followed by the original text will be printed to standard error, and the program terminate.
 
013 Cannot find language back end
    The back end does not exist. Check that you have given the name correctly. If you have, this might indicate a bug in the back end, which you should report.
 
202 Missing TO or LEARN after ENROL
    This error code is reported on the program listing if the initial keyword is not followed by the required bits. If you attempt to execute the statement, the error code followed by the original text will be printed to standard error, and the program terminate.
 
667 Internal errors in the Quantum Emulator
    This reports the error message from the operating system. It can be any exceptional condition within the quantum emulator.
 
245 Non-array register register used as array
    Maybe you subscriped a spot or two-spot register, or a class?
 
243 Array register register used as value
    You did something like DO .1 <- ,2
 
942 No such sin (sin)
    The program requested that the compiler do something immoral, illegal or fattening. The compiler was willing, but it did not know how to do it.
 
497 Invalid object format
    This is a compile-time error, when you load the parse tree from a previous run of the compiler, but the file appears to be corrupted, invalid, or simply not an INTERCAL parse tree.
 
499 Programmer is not polite enough
    Didn't anybody teach you to say "PLEASE"?
 
247 Attempt to modify special register register
    There are some registers your program should never touch, such as the program counters (there are three of them in each thread, even without counting any STASHed copies). You can only produce this splat if you use the CREATE statement to allow your program to do it.
 
128 Cannot use JUNK in this grammar
    A grammar used the special predefined symbol JUNK but did not provide enough evidence that it knows what to do with it.
 
666 Problem with black magic: Nested black magic
    The program attempted to start the quantum emulator while already inside the quantum emulator. The possibilities are mindboggling, but we've decided we won't go there.
 
246 Data written in (size elements) does not fit in array register (size elements)
    When executing an alphanumeric WRITE IN, the next input line resulted in a string too big to fit in the array you provided. Use a bigger array or else use binary I/O.
 
013 Syntax is syntax
    A call to one of the components of the compiler used the wrong syntax. If you are attempting to call the various passes directly, check that you are not doing something wrong. If it is from one of the programs distributed with the comžiler, it is a bug.
 
199 Constant out of range or invalid
    A constant (#xxx) is greater than 65535 or has some other syntax error.
 
823 Subject subject is not in student's curriculum
    A LEARNS statements is executed, but the register is not currently ENROLled to study that subject.
 
997 Illegal operator name for base base
    The program used something like a 3BUT in base 3.
 
798 Cannot find class @number
    It just ain't there.
 
533 Cannot interleave number and number: too many spots
    This happens when the arguments of interleave are 65536 or greater.
 
081 Missing DO or PLEASE
    This error code is reported on the program listing whenever the parser thinks that a new statement has started, but there is no DO or PLEASE. If you attempt to execute the statement, the error code followed by the original text will be printed to standard error, and the program terminate.
 
241 Array register not dimensioned
    You are not supposed to start using an array before dimensioning it.
 
012 Compiler cannot save parse tree
    An error occurred while the compiler was trying to write the internal state of the parser to a file. This will print the error message from the system, for example "No space left on device".
 
774 Compiler error
    This is the random bug introduced in every INTERCAL program unless the programmer asks otherwise. There is a chance of about 5% of actually executing the bug. However, if the bug is in a loop, it will eventually be executed.
 
111 Cannot guess character set
    Your input does not look like line noise, no matter how hard the compiler tries. Maybe it isn't an INTERCAL program?
 
514 Invalid overload
    An overload operator (REGISTER / EXPRESSION or REGISTER \ EXPRESSION) starts with an expression instead of a register.
 
299 Invalid register
    A register has a number greater than 65535, or the owner specification is invalid, or some similar problems.
 
001 Not implemented: description
    The requested compiler or runtime feature has not been written.
 
109 Invalid character in string
    The ASCII to Baudot converter found something which could not be represented.
 
000 any unreoognised syntax error
    This error code is reported on the program listing whenever the parser finds an error for which it does not have a more specific code. If you attempt to execute the statement, the error code followed by the original text will be printed to standard error, and the program terminate.
 
514 Invalid owner: number
    You asked for the zeroth owner, or perhaps you used a two spot number for the owner number.
 
069 Invalid bytecode for item
    An expression or overload contains bytecode designed for use in statements; or conversely a statement contains an expression bytecode where the interpreter doesn't expect it.
 
456 No splat
    The program used the 'splat' constant, but there hadn't been any error. You just corrected this situation, of course, but it is too late to rescue your program.
 
399 A subexpression starts with a set of rabbit ears but ends with none
    This error code is reported on the program listing if an expression starts with a pair of rabbit ears but there is no closing ears. If you attempt to execute the statement, the error code followed by the original text will be printed to standard error, and the program terminate.
 
252 Missing label after STUDY ... AT
    This error code is reported on the program listing if the initial keyword is not followed by the required bits. If you attempt to execute the statement, the error code followed by the original text will be printed to standard error, and the program terminate.
 
012 Back end cannot create output file
    This will print the error message from the system, for example "No space left on device".
 
008 Base must be between 2 and 7 (got number)
    The program used a base of 0, 1 or greater than 7. Just what do you think you are doing anyway?
 
252 Missing class after STUDY ... AT ... IN CLASS
    This error code is reported on the program listing if the initial keyword is not followed by the required bits. If you attempt to execute the statement, the error code followed by the original text will be printed to standard error, and the program terminate.
 
815 Creation not allowed: value too large
    The program attempted to modify a compiler it did not have access to.
 
201 American spelling ENROLL not acceptable. Use ENROL
    This error code is reported on the program listing if you use the American spelling ENROLL instead of the correct ENROL. If you attempt to execute the statement, the error code followed by the original text will be printed to standard error, and the program terminate.
 
274 Number value too large for two spots
    An arithmetic calculation resulted in a number larger than 4294967295. This cannot be used anywhere in INTERCAL.
 
401 Your program is obsolete
    You have attempted to execute a NEXT, RESUME, or FORGET. This is a symptom that you are attempting to use an old, deprecated, feature, which allows to imitate what other languages call GOTO, subroutine calls, and conditionals. This leads to programs styles which resemble what you'd get with other programming languages, and this is not acceptable for obvious reasons. If you must run these old programs, there is a compiler switch to allow you to.
 
005 Item must be a one spot value (got number)
    The program used a register, label, overload or stash number greater than 65535. See also *072.
 
534 Wrong number of digits for base base: number
    An arithmetic calculation in the specified base resulted in a number with too many digits.
 
633 Falling off the edge of the program
    You were supposed to put a GIVE UP there.
 
621 Pointless "FORGET"
    That happens if you try to FORGET #0 or RESUME #0
 
110 Compiler cannot load parse tree
    This will print the error message from the system - usually, this will be something like "File not found".
 
015 Cannot export symbol
    One of the components of the compiler could not do something horrible to your namespace. This is a bug and you are not supposed to see this message.
 
072 Illegal label
    A label number is 65536 or greater. See also *005
 
109 Invalid character (character) for charset
    The conversion between character sets just could not cope with this. This splat is currently generated when converting to Baudot or Hollerith, when a character does not exist in that character set; or when converting from Hollerith when an overpunch just cannot be represented.
 
112 Missing TO after ENSLAVE
    This error code is reported on the program listing if the initial keyword is not followed by the required bits. If you attempt to execute the statement, the error code followed by the original text will be printed to standard error, and the program terminate.
 
010 Invalid character set: name
    The compiler attempted to set an invalid default character set. Try using one of ASCII, Baudot, EBCDIC or Hollerith.
 
555 Multiple "COME FROM" gerund(symbol)
    There are several COME FROMs all attracting the same gerund.
 
701 Value written in is not a number: value
    You typed something like ZERRO instead of ZERO. Or perhaps you used a language which is not understood by CLC-INTERCAL.
 
274 Number value too large for one spot
    An arithmetic calculation intended for one spot values (labels, dimensions, and the like) resulted in a number larger than 65535.
 
797 Class @number cannot be used for reading
    It may be possible in future but not just now.
 
512 Register slave DOES NOT BELONG TO owner
    You attempted to FREE a slave from some owner, however the owner did not own the slave to begin with.
 
664 Program is too large
    How did you manage to write that much INTERCAL anyway?
 
315 Program trying to subvert natural order
    A program object contains both source and compiled code, and the two don't agree. Not even when you take into account the fact that the compiler may have changed in the meantime.
 
665 No waltzing in the streets (particularly diversions)
    The code inside a diversion attempted to execute a NEXT, LEARNS or something else which would cause exiting the diversion by the wrong door.
 
241 register is not an array register
    This is a runtime error, which happens when you attempt to subscript a register, but the register is not an array. This cannot always be determined at compile time, because the register might be specified using the BELONGS TO relation.
 
241 register overstuffed
    This is a runtime error caused by putting more data in an array than it can hold. The only case this can currently happen is when you use alphanumeric WRITE IN and the input line is too long. However, the WRITE IN runtime will trap this error and report a different one, so you won't see this one. We have decided to leave it there anyway just in case we find a use for it in the future.
 
822 Register register is not a student
    A LEARNS or GRADUATES statements is executed, but the register is not currently ENROLled to study any subject.
 
702 Value written in is larger than two spots
    You typed too many digits.
 
666 Problem with black magic: Diversion during black magic is too dangerous
    The program attempted to take a diversion while in a dark spot inside the quantum emulator. No idea how it got there.
 
818 Circular reasoning in symbol
    Recursion is acceptable, but here the problem is that the symbol is defined as being identical to itself, which is true but not useful.
 
816 CREATE statement misconfiguration
    The production contained some invalid code
 
248 Cannot action overload code
    The program attempted to overload the overload part of a register, rather than the value part; or some other action which is not supported.
 
129 Could not find label (label)
    A NEXT or STUDY refers to an undefined label.
 
703 Value value assigned to register larger than two spots
    A CALCULATE statement managed to produce a number which it cannot even represent.
 
398 A subexpression starts with a spark but ends with none
    This error code is reported on the program listing if an expression starts with a spark but there is no closing spark. If you attempt to execute the statement, the error code followed by the original text will be printed to standard error, and the program terminate.
 
009 Invalid I/O Type: type
    The compiler attempted to set the default input/output mechanism (usually one of CLC or C). Binary and alphanumeric I/O cannot work.
 
576 No such optimiser name
    This error message is reserved for the optimiser, which has not been written yet.
 
241 Dimension mismatch in register
    You have attempted to give the wrong number of subscripts to an array, for example dimensioning it with 3 and using 4 subscripts.
 
278 Cannot share register and register
    An attempt to collapse two quantum states resulted in something incompatible. Which is weird, as none of the compilers provided with CLC-INTERCAL actually generate code to do this.
 
218 Syntax error in postprocessor directive
    The postprocessor looks for a statement template like "REGISTER <- EXPRESSION". It looks like a normal statement, except that some components are replaced with their name. This error occurs when the compiler expects a component name but finds something else. This error also occurs when there is a template mismatch (e.g. DO SWAP REGISTER <- EXPRESSION AND REGISTER GRADUATES").
 
241 Illegal subscript
    You have used a subscript with value zero.
 
511 Register register is not a slave
    You attempted to use the owner of a register, but the register was free.
 
004 Unknown read type for Roman numerals: type
    The compiler attempted to specify an invalid default representation for Roman numerals. Numeric output cannot work.
 
252 Missing AT after STUDY
    This error code is reported on the program listing if the initial keyword is not followed by the required bits. If you attempt to execute the statement, the error code followed by the original text will be printed to standard error, and the program terminate.
 
555 Multiple "COME FROM" (label)
    There are several COME FROMs all attracting the same label.
 
634 Internal error: loop stash corrupted
    Something weird happened while the compiler was trying to set up a loop or an event. This is a bug in CLC-INTERCAL.
 
999 Subject #subject of class class at lecture before 1000
    Invalid lecture time - lectures must start at 1000 or later This error code is reported on the program listing when a STUDY statement suggests that a lecture label is less than 1000. This is not acceptable in the INTERCAL university, where all lectures must start after 1000.
 
623 Resuming too much
    The argument to RESUME ends up being too big. The program evaporates.
 
057 Extra garbage at the end of item
    An expression, overload or extra vehicular code contains more bytecode than it can ever be executed.
 
666 Problem with black magic: Random fire disrupted the black magic
    The quantum emulator does not like double-oh-seven.
 
277 Impossible assignment (base base): cannot find #X such that op#X is #value
    Assigning a value to an overloaded register only works in some cases. When it doesn't, you get this error.
 

Back