The library does not diagnose every failure of every function because some
failures are expected. Rather,
it is the application's responsibility to detect these conditions and
inform the user when necessary. For example, the library will not
diagnose a failure to retrieve an environment variable that is not
defined because the caller of getenv should
be prepared for this possibility and usually will not consider it
to be an error.
If the library produces diagnostics that are not desirable for your application, you can use
quiet function to suppress these
messages, as described in SAS/C Library Reference, Volume 1
=warning run-time option to force
library diagnostics to be displayed, even if suppressed by quiet
=btrace run-time
option to get a list of the active functions (a traceback) at
the time a diagnostic is generated.
LSCXmessage-number **** severity **** ERRNO = error-number Generated in function-name called from line line-number of function-name, offset hex-value [C++/Extended] name: full-name message-text Interrupted while: contextwhere severity can be any of the following:
errno variable is usually not set.
errno variable is set and usually an error code is returned
from the function that detected the condition. (Most library messages
are warnings.)
Run-time library messages are normally written to the stderr
file, except for ABEND messages, which are written to the terminal,
the JES2 job log or to an OS/390 SYSOUT file. (See message 064
for more information about ABEND messages in batch.) If stderr
is not open or not usable, library messages will be sent to the
terminal or to the JES2 job log in OS/390 batch.
Note:
Messages numbered from 000-099 are issued under special circumstances
and are not usually in the format described above; they never modify
the errno variable. Some of these messages are also system dependent.
Messages numbered between 500 and 999 often refer to
system-specific conditions, and the same number may be used by
different systems in different ways. When this occurs, the same
message number will be listed several times, once for each system
where it has a unique meaning.
For additional assistance with any diagnostic, call Technical Support at SAS Institute. In preparation for your call, read Technical Report C-114, A Guide for the SAS/C Compiler Consultant and have ready the required information.
ERROR: Automatic storage overlaid by program. ABEND code: 1200
=storage run-time option, or
run the program under the SAS/C debugger and use the storage
debugger command to locate the overlaid data areas. Also, inspect the
returning function for uninitialized pointers, out-of-bounds array
references, and other similar errors.
ERROR: Automatic storage control blocks overlaid. ABEND code: 1201
=storage run-time option, or
run the program under the SAS/C debugger and use the storage
debugger command to locate the overlaid data areas. Also, inspect the
calling function for uninitialized pointers, out-of-bounds array
references and other similar errors.
ERROR: Stack overflow detected. ABEND code: 1202
=minimal run-time option. Note that stack
overflow is not detected when it occurs but only at program
termination. However, if stack overflow is detected, then all the
program's results should be regarded as possibly incorrect.
=minimal, and use the
=usage run-time option to obtain an accurate estimate of the
amount of stack space required by the program. Then adjust the initial
stack space requested accordingly, adding some extra space for error
handling and other unusual situations.
ERROR: Automatic storage control blocks overlaid. ABEND code: 1203
=storage run-time option, or
run the program under the SAS/C debugger and use the storage
debugger command to locate the overlaid data areas. Also, inspect the
program for uninitialized pointers, out-of-bounds array
references and other similar errors.
ERROR: Improper or outdated argument to longjmp. ABEND code: 1204
longjmp, the library was unable to locate the
function to which control was to be returned. This may be caused by
overlaying a jmp_buf. It may also be caused by calling
longjmp for a jmp_buf set by a call to setjmp in
a routine that has already returned to its caller.
jmp_buf has been overlaid, the
debugger monitor command may be useful in locating the
cause of the overlay.
ERROR: Free storage control blocks overlaid. ABEND code: 1205
malloc function, the library detected
that library free storage control blocks had been overlaid. This is
probably caused by the program storing data using an invalid pointer,
a bad subscript, or an incorrect string length. Note that the overlay
may have occurred much earlier in the program's execution, and may
have nothing to do with the code executing at the time of the ABEND.
=storage run-time option, or
run the program under the SAS/C debugger and use the storage
debugger command to locate the overlaid data areas. Also, inspect the
program for uninitialized pointers, out-of-bounds array
references and other similar errors.
ERROR: Free storage control blocks overlaid. ABEND code: 1206
malloc or free function, the
library detected library free storage control blocks had been
overlaid. This is probably caused by the program storing data using
an invalid pointer, a bad subscript, or an incorrect string length.
Note that the overlay may have occurred much earlier in the program's
execution, and may have nothing to do with the code executing at the
time of the ABEND.
=storage run-time option, or
run the program under the SAS/C debugger and use the storage
debugger command to locate the overlaid data areas. Also, inspect the
program for uninitialized pointers, out-of-bounds array
references and other similar errors.
ERROR: Free storage control blocks overlaid. ABEND code: 1207
free function, the
library detected that library free storage control blocks had been
overlaid. This is probably caused by the program storing data using
an invalid pointer, a bad subscript, or an incorrect string length.
Note that the overlay may have occurred much earlier in the program's
execution, and may have nothing to do with the code executing at the
=storage run-time option, or
run the program under the SAS/C debugger and use the storage
debugger command to locate the overlaid data areas. Also, inspect the
program for uninitialized pointers, out-of-bounds array
references and other similar errors.
ERROR: Storage to be freed is unallocated or overlaid. ABEND code: 1208
free did not appear to be the
address of storage previously allocated by malloc. One possible
explanation is that the 8-byte prefix that precedes
each block of storage allocated by malloc has been overlaid.
Note that the overlay may have occurred much earlier in the
program's execution and may have nothing to do with the code
executing at the time of the ABEND.
malloc, run the program again using the =storage
run-time option, or run the program under the SAS/C debugger and use
the storage debugger command to locate the overlaid data areas.
Also, inspect the program for uninitialized pointers, out-of-bounds
array references and other similar errors.
ERROR: Free storage control blocks overlaid. ABEND code: 1209
=storage run-time option, or
run the program under the SAS/C debugger and use the storage
debugger command to locate the overlaid data areas. Also, inspect the
program for uninitialized pointers, out-of-bounds array
references and other similar errors.
ERROR: Program terminated by call to abort. ABEND code: 1210
abort function or raised the
SIGABRT signal. This may occur as the result of a failed
assertion when the assert macro is used.
abort was called, and correct the
problem. Note that if this message occurs running the compiler or
a SAS/C utility, it indicates a programming error in the compiler
or utility and should be reported to SAS/C Technical Support.
ERROR: Argument to unloadm is not a loaded function address. ABEND code: 1211
unloadm function, but the argument
did not appear to be a pointer to a function in a load module
loaded by loadm. One possible cause of this message is an
overlay of the function pointer.
unloadm appears to be a valid function
pointer into a module loaded by loadm, inspect the program for
uninitialized pointers, out-of-bounds array references and other
similar errors. Use of the debugger monitor command may also
be helpful in locating the overlay.
ERROR: Unable to load run-time I/O routines, execution cannot continue.
ERROR: Unable to locate transient library.
ERROR: Unable to locate diagnostic routines, execution cannot continue. ABEND code: 1212
In OS/390 batch or TSO, the library startup code looks for the transient library modules in one of the following places:
Under CMS, the library startup code looks for the transient library modules in one of the following places:
Under UNIX System Services OS/390, when a program is invoked by the
exec system call, the library startup code looks for the
transient library modules in one of the following places:
ddn_CTRANS environment variable.
STEPLIB environment
variable.
For a C program linked using a Generalized Operating System library, where the library looks for transient modules is not defined by SAS/C. In this case, consult the implementer of the GOS interface routines.
ERROR: Improper use of C subordinate load module. ABEND code: 1213
loadm function.
ERROR: Recursive failures in run-time diagnostic routines. ABEND code: 1214
ERROR: Load module management control blocks overlaid. ABEND code: 1215
unloadm function detected an error trying to delete
the storage used by a dynamically loaded load module. This is probably
caused by program overlay of library data areas.
ERROR: Load module management control blocks overlaid. ABEND code: 1216
unloadm function discovered that library dynamic
loading control blocks were inconsistent or corrupted. This is
probably caused by program overlay of library data areas.
ERROR: Load module management control blocks overlaid. ABEND code: 1217
loadm function discovered that library dynamic
loading control blocks were inconsistent or corrupted. This is
probably caused by program overlay of library data areas.
ERROR: Runtime library error during dynamic loading. ABEND code: 1218
loadm function failed while trying to delete a buffer.
This is probably a SAS/C library error, but it may also be
caused by program overlay of library data areas.
ERROR: Internal error in DEBUG facility. ABEND code: 1219
ERROR: Program aborted by DEBUG facility. ABEND code: 1220
abort command. Also, this ABEND is issued if the debugger is
unable to respond to multiple attention interrupts and the user
chooses to terminate the application.
ERROR: System error during segment loading. ABEND code: 1221
ERROR: Internal error in run-time domain manager. ABEND code: 1222
ERROR: System failure in TSO CLIST/Rexx interface. ABEND code: 1223
ERROR: Required library nucleus extension dropped. ABEND code: 1223
ERROR: Attempt to terminate non-C routine with longjmp. ABEND code: 1224
longjmp or exit, but
execution of the call would require termination of one or more
non-SAS/C calling routines.
longjmp or exit is not a problem. For such
applications, you can modify L$UPREP to suppress this ABEND, as
described in Appendix 6, "Using the indep Option for Interlanguage Communication,"
in the SAS/C Compiler and Library User's Guide.
ERROR: Program terminated due to name signal. ABEND code: 1225
SIGALRM,
SIGIUCV and most of the UNIX Systems Services signals.
ERROR: Internal error in fullscreen support library. ABEND code: 1226
ERROR: Runtime library error in coprocess support. ABEND code: 1227
ERROR: Unable to obtain memory for IUCV interrupt handling. ABEND code: 1228
ERROR: Unable to obtain memory for TCP/IP interrupt handling. ABEND code: 1228
ERROR: No storage available to satisfy an unconditional GETMAIN request. ABEND code: 1229
ERROR: OpenEdition not available, execution unable to continue. ABEND code: 1230
getpid, but UNIX Systems Services
was not installed or not running. The POSIX definition of the function
did not permit the function to fail.
ERROR: Internal error in interlanguage communication. ABEND code: 1233
ERROR: Inter-language call failed - no framework created for C. ABEND code: 1234
CFMWK before calling a C function from another language,
and verify that the CFMWK call was successful.
Refer to the SAS/C Compiler Interlanguage Communication Feature User's Guide for details on how to create a C framework.
ERROR: Fatal interlanguage communication usage error. ABEND code: 1235
ERROR: Unexpected internal error during abnormal termination. ABEND code: 1239
ERROR: Unexpected error in ABEND analysis - analysis terminated. ABEND code: 1240
ERROR: Program terminated by operating system. ABEND code is code.
For a system ABEND, refer to the appropriate operating-system-dependent
listing of ABEND codes for details on the ABEND. (See MVS System Codes
for OS/390 or VM System Messages and Codes for CMS.)
User ABENDs not in the SAS/C range are generated by the SAS/C program
using the abend function, by assembler subroutines, or by
other products, such as FORTRAN, PL/I or IMS.
Two particularly common user ABEND codes are 240, which is a FORTRAN ABEND code, and 4000, which is a PL/I ABEND code. In general, the meaning of a user ABEND code depends on the application and the other products or interfaces it uses, and therefore you should consult with local expertise if you receive a user ABEND code you do not recognize.
Library messages 000 through 041 are often accompanied by one or more additional messages giving supplementary information about an ABEND. These messages are not numbered. The messages and their meanings are as follows:
C run-time storage has been overlaid by the program.
=storage run-time option may produce information
about the overlay.
Runtime library failure, library storage may have been overlaid.
=storage option
may produce information about the overlay.
The ABEND occurred in another task or domain.
A non-C or system routine was running at the time of ABEND.
This ABEND could not be recovered due to environmental damage.
Traceback terminated - save areas overlaid.
=storage option, you can probably get more information about
the overlay.
Unable to determine location of failure.
NOTE: C run-time storage usage statistics statistic-values
=usage run-time
option. The library produces a report on the amount of stack and heap
used as well as the number of system allocate requests and frees. If
the program uses coprocesses, a stack report is given for both the
main coprocess, and for all coprocesses combined.
NOTE: Invalid run-time argument ignored: "=argument-name"
NOTE: Further warning message will be suppressed.
stderr is
unavailable, in order to avoid flooding OS/390 consoles with messages.
There is no message limit if stderr is
available.
stderr.
For instance, in OS/390 batch, make sure a valid SYSTERM DD statement is
defined. Alternately, consider use of the quiet function
to suppress these messages.
ERROR: No memory available for ABEND analysis.
NOTE: CP VMDUMP command issued.
=abdump run-time option was specified.
NOTE: Undefined items in library option string ignored.
CFMWK, or
when the entry point to a program is specified as $MAINO, the
caller provides an argument string containing any run-time options
to be passed to the program. This diagnostic is produced if any part
of this string cannot be recognized as a valid run-time option or
redirection.
CFMWK.
For more details on passing run-time arguments using $MAINO see
the SAS/C Compiler and Library User's Guide, Chapter 10,
"Communication with Assembler Programs."
WARNING: Run-time message texts not found. errno=ERRNO-value WARNING: Run-time message texts not found, further information unavailable. Errno value: see message
Note that this message may be produced by an all-resident program if
a library diagnostic is required, but the program defined the symbol
NO_WARNING before including <resident.h>.
NOTE: Most recent C run-time modules not available. Use version version-number or later to avoid problems.
The second line of the message indicates the minimum transient library level necessary to guarantee compatibility with the executing load module.
NOTE: Abbreviations must be unique.
ERROR: Execution terminated due to =QUIT run-time option. ABEND code: various
=quit run-time option
was specified. The program is abnormally terminated, with a user
ABEND code matching the number of the generated message. (For example,
if message 502 was generated, then the ABEND code is user 502). This
message is generated to explain the reason for the ABEND.
ERROR: ABEND code in language-name.
ERROR: language-name ABEND code reinstated as 0C6.
In some cases, it is not possible for the framework manager to allow the ABEND to proceed without either changing the ABEND code or the perceived location of the ABEND. Because changing the location of the ABEND affects the accuracy of the error message, the framework manager instead changes the ABEND code. More exactly, it loads the registers at the time of ABEND and branches to an odd address within a byte of the original ABEND location. Thus, information such as the number of the line that failed should be correct.
ERROR: Inter-language call or return attempted during program termination.
ERROR: Internal error in C library inter-language communication routines.
ERROR: Invalid inter-language call to C.
__cobol. In some
cases, a misdeclared routine of this sort may execute
successfully; however, if it calls another C function,
this error results.
NOTE: SAS/C library release n.nnx (resident), release n.nnx (transient).
=version run-time option is used.
ERROR: REXX function package is not reentrant. Functions cannot be loaded.
norent
compiler option. REXX function packages must be compiled using the
rent option.
rent option.
For complete details on REXX function packages see the
SAS/C Library Reference chapter "The REXX SAS/C Interface."
ERROR: REXX environment name is terminating. Command rejected.
execend to terminate SUBCOM processing, but while the
library was attempting to terminate an active TEXX EXEC, a subcommand
was addressed to the terminating program.
The REXX input line that caused this message fails and passes a return code of -10 back to REXX.
NOTE: Rexx environment name is busy. Command rejected.
system function to
invoke another EXEC.
The REXX input line that generates this message fails and passes a return code of -10 back to REXX.
NOTE: SUBCOM environment is busy. Command rejected.
system function to invoke an EXEC. The invoked
processor then attempted to address the SUBCOM environment of the
original program. Recursive invocation of the SUBCOM interface in this
fashion is not permitted. A return code of -10 is passed back to
the program that attempted the recursive invocation.
NOTE: Beginning storage corruption check.
=storage run-time option was requested, this message
indicates that the storage corruption report is being generated.
NOTE: Storage corruption report generated.
=storage run-time option was requested, this message
indicates the storage corruption report has been successfully
generated.
NOTE: No storage corruption detected.
=storage run-time option was requested, this message
indicates that a storage check was performed without finding any
storage overlays.
NOTE: Unable to produce storage corruption report.
=storage
run-time option failed to produce a storage corruption report.
Typically this message is preceded by other library
messages describing the problem.
NOTE: ABEND diagnostic messages directed to ddname name
ERROR: Diagnostic output ABEND: code. Messages redirected to job log.
ERROR: Unable to allocate DD-name - DYNALLOC error code hex-value.
ERROR: Unable to reopen CTRANS after fork - child terminated. ABEND code: 1212
fork call, the child process was unable to reopen
CTRANS to access the SAS/C transient library.
NOTE: Error detected in file: name
NOTE: Terminal/pipe not valid for argument redirection.
NOTE: Enter IC to interrupt program or a REXX immediate command.
NOTE: Recursive inclusion of argument file: name.
ERROR: This version of the transient library does not support OpenEdition. ABEND code: SEC6
exec linkage determined that
the accessible version of the SAS/C transient library did not support
UNIX Systems Services. The program is aborted.
ddn_CTRANS
environment variable to define the location of a compatible version
of the transient library. Contact your SAS/C Support Representative
to determine the appropriate data set name.
NOTE: Library internal error, text for message message-number was truncated.
NOTE: I/O support code not accessible. Diagnostic information may be lost.
RES_HFS_STDIO
before including <resident.h>.
WARNING: Command line parameter truncated to 2000 bytes.
MAIN as your entry
point.
MAIN entry point. You will
need to use either the $MAINC or the $MAINO entry point if you require a command line that is longer
that 2,000 bytes.
Warning: This Function is not supported by your version of the Operating System.
WARNING: VSAM PHYSICAL ERROR SYNADAF INFO: Errno value: EDEVICE
ERROR: I/O-type ERROR (access-method) DIAGNOSTIC INFO, information Errno value: EDEVICE
WRNG.LEN.RECORD, the probable cause is
incorrect DCB information, possibly caused by incorrect concatenation
of DD statements. Another possible cause is a call to fseek or
fsetpos with a corrupted or uninitialized seek address.
Consult with your local system programming staff for help interpreting
this message and determining possible causes.
WARNING: Memory unavailable for new allocation: number bytes required. Errno value: ENOMEM
malloc, or may represent
a library internal storage request.
malloc has been correctly initialized.
ERROR: Program does not contain a "main" function. Execution aborted. ABEND code: 1210
main function nor a
_dynamn function. This message is issued by a dummy
main function contained within the library. This is usually
a link-edit error that caused part of the program to be omitted or
that specified the wrong entry point.
indep is in use, every C program
requires a main function. If indep is not in use,
ensure that the main function is included when the program is
linked. If indep is in use, ensure that the program entry
point is defined as the first function to be executed, not as MAIN.
WARNING: Module name is too long or entirely blank: module-name. Errno value: EARG
loadm or buildm specified a module name that
was entirely blank or contained more than 8 characters.
WARNING: Input data does not match format string: format-string. Errno value: ECONV
scanf family of
functions, an incompatibility was detected between the data and the
format string. Up to eight characters of the format string are
displayed in the message.
quiet
function can be used to suppress the message.
WARNING: % found at end of function-name format string. Errno value: EARG
% was found in a format string. The % denotes
the beginning of a format and cannot appear by itself.
% character is desired in the output,
specify two % characters (for instance, Interest rate %d%%).
Refer to the SAS/C Library Reference for more details on the
function being invoked and valid format strings.
WARNING: Invalid number base for strtol: base-value. Errno value: EDOM
strtol is invalid.
NOTE: Arguments to function-name overlap (length=length). Results are unpredictable. Errno value: unchanged
memcpy, memcpyp, and memfil.
This message may also be generated if the length passed to one of
these functions is extremely large, perhaps due to an uninitialized
variable.
memmove function. See the SAS/C Library Reference
for information on memmove.
This message can be generated within the library during program startup if a SAS/C program is invoked with an invalid parameter list pointer in register 1. If the program issuing the message was invoked from another program (for instance, using the ATTACH macro), check the invoking program to be sure it has constructed a correct parameter list.
NOTE: Length of memset target too large: length. Results unpredictable. Errno value: unchanged
memset
specified a length of more than 16 megabytes.
The probable cause is an uninitialized argument to memset.
WARNING: error-type occurred converting "string" to floating point. Errno value: ERANGE
Underflow
or Overflow.
WARNING: buildm unsuccessful. Module name name already defined. Errno value: EUSAGE
buildm is the name of a previously
loaded or built module.
buildm for details.
WARNING: Transient module module-name could not be located. Errno value: EFORBID
ALLOW_TRANSIENT was not defined when it was compiled.
<resident.h> header file was included. This is permitted
only if ALLOW_TRANSIENT is specified and the transient library
is accessible. Refer to the SAS/C Compiler and Library User's Guide,
Chapter 9, "All Resident C Programs," for details.
WARNING: Calendar time value outside the range of the system clock. Errno value: EUSAGE
mktime function
falls outside of this range, the above message is
generated and mktime returns a error code to its caller.
WARNING: Minimum field width of 0 ignored in function-name format. Errno value: EUSAGE
scanf type function.
This width is illegal and execution of scanf is terminated.
ERROR: Assertion failed: assertion-text. ABEND code: 1210
abort is called).
WARNING: Invalid function-name format character 'format-code'. Errno value: EARG
%q was
passed to a printf or scanf type function.
WARNING: hex-value is not a valid double-byte character. Errno value: EARG
NOTE: Unmatched double-byte shift-out in function-name argument string. Errno value: EARG
WARNING: %format-code conversion exceeds maximum length of max-length characters. Errno value: EARG
printf-like function specified a length
larger than the limit for this function. The limit is 512 characters
for functions other than sprintf and its variants (which have
no limit). Note, this limit does not apply to %s and
%V formats.
sprintf or
snprintf to format the data, followed by a function such as
fputs to write the formatted output.
WARNING: Integer overflow converting "string" to long (base number). Errno value: ERANGE
strtol function encountered an integer
overflow. The strtol function returns
LONG_MAX or LONG_MIN for
this condition. stroul can also generate this message, in
which case it returns ULONG_MAX.
stroul (unsigned long) for the
conversion.
Refer to the SAS/C Library Reference description of strtol
and strtoul for more information.
ERROR: Attempt to free an address not allocated by malloc. ABEND code: 1208
free did not appear to be the
address of storage previously allocated by malloc. One possible
explanation of this condition is that the 8-byte prefix which precedes
each block of storage allocated by malloc has been overlaid.
Note that the overlay may have occurred much earlier in the
program's execution and may have nothing to do with the code
executing at the time of the ABEND.
malloc, run the program again using the =storage
run-time option, or run the program under the SAS/C debugger and use
the storage debugger command to locate the overlaid data areas.
Also, inspect the program for uninitialized pointers, out-of-bounds
array references, and other similar errors.
WARNING: Invalid signal number: signal-number Errno value: EARG
WARNING: Signal signal-name cannot be ignored. Errno value: EARG
SIGABND, cannot be ignored.
WARNING: Signal number already defined: signal-number. Errno value: EARG | EUSAGE
NOTE: Handling of signal-name not permitted due to =option-name option. Errno value: unchanged
=nohtsig inhibits handling of termination signals
SIGABRT and SIGABND. The option =nohcsig
inhibits handling of computational signals SIGFPE,
SIGSEGV and SIGILL.
The request to handle the signal is ignored.
ERROR: Return from signal-name handler not supported, execution terminated. ABEND code: signal-dependent
SIGABRT, SIGABND, SIGSEGV and SIGILL.)
longjmp function to resume
execution.
See "Signal-Handling Functions" in
SAS/C Library Reference, Volume 2 for general information on
signal handling.
ERROR: Argument to unloadm is not a valid dynamically loaded function address. ABEND code: 1211
unloadm function, but the argument
did not appear to be a pointer to a function in a load module
loaded by loadm. Overlay of the unloadm argument can
cause this message.
unloadm appears to be a valid function
pointer to a module loaded by loadm, inspect the program for
uninitialized pointers, out-of-bounds array references, and other
similar errors. Use of the debugger monitor command may also
be helpful in locating the overlay.
WARNING: Attempt to allocate from uninitialized or corrupted storage pool. Errno value: EUSAGE
pool_t object is incorrect.
Either the object has not been initialized by a call to the pool
function or it has been overlaid.
pool_t object was correctly initialized.
If so, use the debugger monitor command to determine where the
object was overlaid.
WARNING: Insufficient memory to load module module-name. Errno value: ENOMEM
WARNING: buildm failed due to insufficient memory. Errno value: ENOMEM
buildm routine attempted to build an entry point address
as requested. During the attempt, buildm could not obtain
enough memory to complete its processing.
WARNING: Argument to coproc is unrecognized: argument-value. Errno value: EARG
coproc function accepts only the symbolic arguments
MAIN, SELF, or CALLER.
coproc.
WARNING: Argument to function-name does not identify an active coprocess. Errno value: EUSAGE
monitor command to determine where the
id was overlaid.
WARNING: coreturn not permitted from main coprocess. Errno value: EUSAGE
coreturn because
there is no calling coprocess to return to.
coreturn.
For complete details on coprocesses, see the
SAS/C Library Reference, Chapter 9, "Coprocessing Functions."
WARNING: Recursive cocall not permitted. Errno value: EUSAGE
cocall returned and execution continued.
WARNING: Maximum number of coprocesses already active. Errno value: ELIMIT