Annotation of 43BSD/contrib/apl/doc/man.7, revision 1.1

1.1     ! root        1: .NH 1
        !             2: What are those funny messages?
        !             3: .PP
        !             4: You probably figured that at some
        !             5: point in this manual you'd
        !             6: see something about error messages.
        !             7: Unfortunately,
        !             8: errors do occur,
        !             9: and some of \*a's error messages
        !            10: can really throw you.
        !            11: Users of other \*a systems have
        !            12: little advantage over \*a novices in this
        !            13: area,
        !            14: for \*u \*a
        !            15: error messages are,
        !            16: in general,
        !            17: nonstandard.
        !            18: To make matters worse,
        !            19: \*a's status messages can
        !            20: be cryptic at times.
        !            21: Thus,
        !            22: in this section we'll
        !            23: explore some of the more common
        !            24: status and error messages.
        !            25: .PP
        !            26: First,
        !            27: some of \*a's less obvious
        !            28: and relatively common
        !            29: abbreviations are:
        !            30: .DS
        !            31: asgn           assignment
        !            32: cat            catenation
        !            33: crc            circle
        !            34: dfmt           dyadic format
        !            35: dibm           dyadic i-beam
        !            36: exec           execute
        !            37: fn             function
        !            38: imm            immediate
        !            39: iprod          inner product
        !            40: mdom           monadic domino
        !            41: menc           monadic encode
        !            42: miot           monadic iota
        !            43: oprod          outer product
        !            44: red            reduction
        !            45: var            variable
        !            46: .DE
        !            47: .PP
        !            48: There are three major types of
        !            49: error messages which may be
        !            50: generated as a result of
        !            51: an \*a session.
        !            52: The error message may be
        !            53: the result of a fatal error
        !            54: in \*a which has caused \*a
        !            55: to abort,
        !            56: the result of some internal
        !            57: problem in \*a,
        !            58: or an error produced by
        !            59: incorrect use of \*a.
        !            60: .NH 2
        !            61: Non-fatal Error Messages
        !            62: .PP
        !            63: Usually,
        !            64: \*a can detect serious errors
        !            65: before they become fatal.
        !            66: When this occurs,
        !            67: it will issue an error message
        !            68: but will not terminate.
        !            69: You can then take
        !            70: appropriate action.
        !            71: Unfortunately,
        !            72: unlike most \*a
        !            73: implementations,
        !            74: \*u \*a
        !            75: does not report the position on
        !            76: the line where the error occurred.
        !            77: However,
        !            78: a traceback from the function in
        !            79: which the error occurred is printed.
        !            80: (See ``The State Indicator''
        !            81: for more information on function
        !            82: tracebacks and error recovery.)
        !            83: .PP
        !            84: As an example of this type of error,
        !            85: it is possible to completely
        !            86: fill up the internal workspace.
        !            87: Usually \*a will not
        !            88: attempt to get more
        !            89: internal workspace memory
        !            90: if it already has the
        !            91: maximum permissible amount.
        !            92: It will then inform you:
        !            93: .sp
        !            94: workspace exceeded
        !            95: .sp
        !            96: Other possible messages
        !            97: of a similar nature are:
        !            98: .DS
        !            99: directory botch
        !           100: save botch
        !           101: elid botch
        !           102: stack overflow
        !           103: pop botch
        !           104: .DE
        !           105: In general,
        !           106: if an error message such
        !           107: as this occurs,
        !           108: you should save your
        !           109: internal workspace
        !           110: in a different file
        !           111: than you started from
        !           112: (in case it may
        !           113: have been ``corrupted''
        !           114: or otherwise damaged
        !           115: by the error in \*a),
        !           116: and then should exit
        !           117: \*a and restart.
        !           118: You can then determine
        !           119: whether or not anything
        !           120: happened to your workspace,
        !           121: and can recover any losses
        !           122: from the original workspace file.
        !           123: These type of errors generally
        !           124: occur as the result of some other
        !           125: error,
        !           126: such as a function which
        !           127: calls itself indefinitely
        !           128: or declaring an array which
        !           129: is too large for the workspace.
        !           130: .PP
        !           131: By far,
        !           132: majority of non-fatal error messages
        !           133: produced by \*a are
        !           134: not serious,
        !           135: but simply indicate
        !           136: some error in the
        !           137: definition or execution
        !           138: of a function.
        !           139: These errors fall into
        !           140: some common types:
        !           141: .IP "conformability" 20
        !           142: The variable which you are
        !           143: passing to a function or
        !           144: operator does not ``conform''.
        !           145: That is,
        !           146: it is not the proper shape
        !           147: (e.g. array has the wrong number of
        !           148: dimensions or a scalar
        !           149: is used instead of an array, etc.)
        !           150: For example,
        !           151: trying to add a 2X2
        !           152: array to a 2-element
        !           153: vector will produce
        !           154: this error.
        !           155: .IP "botch" 20
        !           156: A ``botch'' can occur for
        !           157: several reasons.
        !           158: Attempting to read a
        !           159: non-existant
        !           160: element of an array
        !           161: will produce a
        !           162: ``getdat botch''.
        !           163: (Storing into a
        !           164: non-existant variable
        !           165: or array element will
        !           166: produce a ``putdat botch''.)
        !           167: .IP "domain" 20
        !           168: A domain error means that
        !           169: somehow the variable passed
        !           170: to a function or operator
        !           171: cannot be used.
        !           172: For example,
        !           173: attempting to take
        !           174: the logarithm of
        !           175: a negative number will
        !           176: produce a
        !           177: ``log domain''
        !           178: error message.
        !           179: .IP "index" 20
        !           180: A bad index was specified.
        !           181: A quick example of this
        !           182: error is to have origin=1
        !           183: and attempt to access
        !           184: A[0].
        !           185: Attempting to concatenate
        !           186: two arrays along a
        !           187: non-existant dimension
        !           188: will produce a
        !           189: ``cat index''
        !           190: error message.
        !           191: .IP "syntax" 20
        !           192: This error message is
        !           193: probably painfully
        !           194: familiar \(em
        !           195: it indicates that
        !           196: the indicated \*a
        !           197: expression was not
        !           198: syntactically correct.
        !           199: If this error occurs
        !           200: during the processing
        !           201: of a function,
        !           202: the traceback
        !           203: will show which line
        !           204: was incorrect.
        !           205: .IP "rank" 20
        !           206: This type of error
        !           207: indicates that the
        !           208: argument to an operator
        !           209: or function has
        !           210: the wrong number of
        !           211: dimensions.
        !           212: As an example,
        !           213: if you attempt to declare
        !           214: an array with more than
        !           215: 8 dimensions,
        !           216: you will get a
        !           217: ``max rank''
        !           218: error message.
        !           219: .PP
        !           220: Some other common error
        !           221: messages do not fall into
        !           222: any of the above classes.
        !           223: These include:
        !           224: .IP "used before set" 20
        !           225: This message means that a variable
        !           226: was referenced which had not
        !           227: yet been defined.
        !           228: An easy example:
        !           229: .DS
        !           230:        y { 2
        !           231:        z { x + y
        !           232: x: used before set
        !           233: .DE
        !           234: .IP "no fn result" 20
        !           235: This error occurs when an
        !           236: attempt is made to use the
        !           237: returned value of a function
        !           238: which doesn't return a value.
        !           239: As an example, if the
        !           240: function ``xyz'' returns
        !           241: no value, then the following
        !           242: sequence will result in an error:
        !           243: .DS
        !           244:        z { xyz
        !           245: no fn result
        !           246: .DE
        !           247: .IP "si damage" 20
        !           248: This error message,
        !           249: discussed earlier,
        !           250: usually occurs when
        !           251: an attempt is made to
        !           252: edit a function which
        !           253: is suspended due to
        !           254: an error.
        !           255: Type ``)reset'' and
        !           256: then you may edit
        !           257: the function.
        !           258: .IP "can't open file" 20
        !           259: This error message occurs when
        !           260: a non-existant file is
        !           261: used for a ``)load'',
        !           262: ``)read'',
        !           263: ``)save'',
        !           264: etc.
        !           265: .IP "not a fn" 20
        !           266: In most cases,
        !           267: an attempt to use a function
        !           268: which has not been defined,
        !           269: or which has been defined as
        !           270: a variable,
        !           271: will result in a ``syntax error.''
        !           272: There are some special
        !           273: circumstances
        !           274: in which this error will slip
        !           275: past the ordinary error-checking code.
        !           276: In the event this occurs,
        !           277: the message ``name: not a fn''
        !           278: will be printed.
        !           279: .NH 2
        !           280: Fatal Error Messages
        !           281: .PP
        !           282: In most cases,
        !           283: when \*a detects that
        !           284: some irreparable damage
        !           285: has been done,
        !           286: it will print an error
        !           287: message of the form:
        !           288: .sp
        !           289: fatal signal: message
        !           290: .sp
        !           291: where the ``message'' represents a
        !           292: type of \*u termination.
        !           293: The most common one probably is
        !           294: ``segmentation violation'',
        !           295: which means that \*a needed too
        !           296: much memory for its
        !           297: internal workspace
        !           298: and was aborted in its attempt to
        !           299: get more than permitted in \*u.
        !           300: Other possible messages include:
        !           301: .DS
        !           302: quit
        !           303: illegal instruction
        !           304: trace trap
        !           305: emt trap
        !           306: bus error
        !           307: bad sys call
        !           308: write no pipe
        !           309: .DE
        !           310: Despite the severity of the error,
        !           311: \*a attempts to dump the workspace
        !           312: into a file named ``aplws.abort''
        !           313: in order to facilitate recovery.
        !           314: This file should be viewed with suspicion.
        !           315: If another fatal signal occurs while
        !           316: this dump is being performed,
        !           317: \*a will abort immediately,
        !           318: without completely writing the file.
        !           319: Even if the dump was successful,
        !           320: the file format may not be internally
        !           321: consistent since \*a was probably
        !           322: changing something when it was forced to abort.
        !           323: It is therefore advised that
        !           324: you restart \*a and recover
        !           325: any information you need from this dump file,
        !           326: writing that information into a new workspace
        !           327: (see the description of the ``)vsave''
        !           328: system command in Appendix B).
        !           329: .I Never
        !           330: copy ``aplws.abort'' into your original
        !           331: workspace file without thoroughly
        !           332: checking it out.
        !           333: .PP
        !           334: In some rare cases,
        !           335: \*a is unable to
        !           336: print a termination message,
        !           337: and the system aborts it.
        !           338: This usually will result in a
        !           339: message such as:
        !           340: .sp
        !           341: Memory fault -- core dumped
        !           342: .sp
        !           343: and the operating system
        !           344: will produce a file named
        !           345: ``core'' in your directory.
        !           346: This file is probably useless
        !           347: and you can delete it with:
        !           348: .sp
        !           349: $ rm core

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.