- If a function is intended for use by everyone, use a "normal" account to check it out.
- Do not assume anything to be true about input data unless it is verified to be true.
Expect the unexpected! A buffer overrun happens when someone, either maliciously or
unintentionally, sends an application a larger chunk of data than it can handle.
- Check where possible that you are running in the expected environment if there may
be dependencies on operating system or software versions, rather than "failing silently".
- Initialize variables before you use them.
- If a character string in REXX is all numeric, then the NUMERIC DIGITS setting
(default is 9) comes into effect for compares. This means that only the first
nine digits will be checked if all characters are numeric. A simple workaround
is to add a alphabetic character to each string.
- PL/I compilers will use an implicit definition for an undeclared variable. This
can be helpful when it is desired and the implications are understood. The compiler
will generate an information message. Unintended use of implicitly-declared variables
can be a result of misspelled variable or function names.
- The C compiler can give very bad performance for record I/O when "noseek" has NOT
been specified on fopen. The impact can be increased when RECFM=U and output is to tape.
- The perror routine should be used after failed calls to C routines such as fopen to
provide additional information on what went wrong.
- FTP transfers from tape with spanned records or where RDWs were
requested for variable-length records may not work as expected unless
the appropriate READTAPEFORMAT option is specified.
- Turn off diagnostic or tuning aids such as
Language Environment storage utilization reports
for production runs to avoid unnecessary overhead.
For More Information
Visit "Stupid JCL Tricks" or
go back to Things that go Bump in the Night here.
You can find a general discussion of interface design bugs at the
AskTog Bug House.
Comments or suggestions can be
sent to the author.