Service and Support from SAS |
The SAS/C Compiler
Research and Development Division provides technical support for the compiler
products. We strongly believe that having technical support integrated within
the Compiler R&D division ensures that our customers receive support of
the highest quality in the industry. SAS/C Technical
Support services are provided free of charge to licensed customers.
When contacting the SAS Technical Support Division by
phone, identify the question or problem as related to the SAS/C Compiler.
SAS/C Technical Support consultants are available weekdays between 9:00 AM
and 5:00 PM., eastern standard time.
Guidelines for reporting problems and for gathering
information that may be requested by a SAS/C Support
Consultant follow.
Some problem types and their symptoms are listed
below.
Contact the local Support Consultant prior to contacting
SAS/C Technical
Support. The Support Consultant may be able to quickly resolve a problem.
But where assistance is required, the Support Consultant may contact SAS/C Technical
Support.
Provide the following information
to the Support Consultant before he or she calls to report a SAS/C
problem:
-
your eight-digit site number. For
mainframe customers, this number can be found on the first page of a compiler
listing. For Cross-Platform customers, this number can be found on the output
listing from the "dset" utility command. (See the Installation
Instructions for instructions on how to execute this command.) The site number
is also printed on the cover letters accompanying your SAS/C product
media and also on the Institute Program Products Master License agreement.
-
the
product and version number. For example: SAS/C++ 7.00C
orSAS/C 6.50C. The version is printed
on the first page of the compiler listing and is included on cover letters
received with the product. The version of the library can be obtained by using
the
=version
run-time option. The version number is of
the form n.nnx, where n is a digit
and x is an alphabetic suffix.
-
operating system and version.
-
a phone or fax number or e-mail address,
including
any special contact instructions such as shift schedules.
-
a clear description of the problem, including
its external symptoms, the results of your investigation, and the problem
type (related to the compiler, the linker, or run time).
-
a clear description of the application structure,
for example, single or mixed language, all-resident, multitasking, client/server,
and so on.
-
diagnostic information, including:
There
are many diagnostic features within the compiler and run-time library to assist
in the isolation of problems, and having this information handy saves time
during consultations with Technical Support. The sections below tell you how
to enable compiler, linker, and run-time diagnostics.
-
Ensure that the compiler option
Warn
(enabled by default) is not disabled.
-
Enable the
Hlist
,
Ilist
, and
Mlist
options. These options cause the
compiler to print, to the listing file, the complete header and macros processed
by the preprocessor.
-
For code generation problems, enable the OMD (Object
Module Dissambler).
-
If your site uses the SAS/C Cross-Platform compiler,
use the
-v
(verbose) option
to force full message output.
-
Provide a complete list of compiler options in
effect when the problem occurs, for example, EXTNAME RENT OPTIMIZE DEFINE
(any_user_defines). Options affect compiler behavior, and occasionally
it is possible to circumvent a problem by specifying different options.
-
Provide any traceback generated by the compiler,
including the CXERR (Compiler Internal Error) message showing the line number
and errcode of the error.
Unresolved external references are the most common problems related
to the COOL, ILCLINK, or LKED programs. For all link problems, the following
information is required:
Problems reported as link errors sometimes result from
source code or compiler details. You should have a detailed knowledge of the
source code that generated the input OBJECTS or LOAD MODULEs, and be prepared
to discuss the source code and its compilation with a SAS/C Support Consultant.
-
For a run-time failure that does not generate
a traceback, enable the library run-time options
=btrace
and
=warning
. This will force the library to print all tracebacks and suppressed
warnings, assuming the problem has not corrupted library control blocks.
-
If a dump is needed and the library is only producing
a warning message, use the
=quit
,
=warning
, and
=fdump
run-time options. This will force the
library to abnormally terminate after generating the warning message. You
can then use the SAS/C Debugger to verify that there are no logic errors within
the source code.
-
For storage overlays or heap management problems,
enable the library run-time option
=storage
to print a storage
analysis report at program termination. Then use the SAS/C Debugger,
which is very effective at isolating storage problems. For details, see the "storage"
command in the SAS/C Debugger
User's Guide and Reference.
-
Ensure you have complete
SAS/C or
operating system diagnostic messages. SAS/C diagnostic
messages are written to
stderr
, whose exact location is dependent on the operating system and environment:
SYSTERM DD (OS/390 batch), Terminal (VM, TSO), SASE (CICS).
Messages are explained in SAS/C Software Diagnostic
Messages. A message consists of an ID and text. The format of a message
ID is LSCxnnn, where x is C for compiler, D for
debugger, G for GENCSEG, I for ILCLINK, L for CLINK, P for the CICS preprocessor,
T for the C++ translator, X for the library, or Z for APPLYZAP; nnn is the message number. The message number is followed by text. Library
messages (prefixed by LSCX) generally have three levels: the first is a severity
code; the second is the location of the error; and the third is an explanation.
APPLYZAP diagnostic messages are documented in Appendix 1 of this manual.
For operating system problems, the diagnostic message
may be one of many types of IBM error messages. Under OS/390, these generally
start with the letter I. Under VM/SP and VM/XA, the messages may start with
DMK (CP) or DMS (VM).
There are some occasions where a message is issued without
a number. In these cases, it is even more important to get the entire text
of the message. If you are running under VM, check to see if messages are
turned on by using the CP command QUERY SET. Turn messages on with the command
SET EMSG ON. Under TSO, ensure you are running with PROFILE WTPMSG on.
Diagnostic messages can be output to many places. Places
to look are:
The traceback feature is extremely helpful for isolating the
location of an ABEND. Often the traceback contains the exact line that caused
the abnormal behavior. Additionally, the traceback shows the calling sequence
of active functions, line numbers, and offsets, at the time of the error conditions.
A typical ABEND traceback is shown below, with line numbers added for purposes
of reference.
Calling trace:
Function Line Offset Context
12 LSCABTM(LSCABTM) -- 000124
11 SIGROUT(LSCZRTE) -- 000228 Raising signal SIGABRT
10 SIGLDR(LSCZLDR) -- 00007A
9 RAISE(LSCZGEN) -- 00008E
8 ABORT(LSCABRT) -- 000052
7 CXERR(FILE1) 865 000152
6 REPDEL(TASN) 974 0000B2
5 TREF(TASN) 297 00006C
4 RVFQ(TASN) 214 0001EE
3 WTHDR(WTHDR) 149 0003A4
2 DYNAMN(MAIN1) 366 0009D2
1 MAIN(LC1370S) 68 000128
Line 1 indicates that function
main()
of the C MAIN program, in source file
lc1370s
, executed a call to function
wthdr()
at line number 68 and
offset 000128. The function call forced SAS/C dynamic loading to occur and
subsequently a call to
wthdr()
.
Line 2 indicates that a function
dynamn()
in source file
main1
, at line 366 and offset 0009d2, called
the function
wthdr()
.
Lines 3-5 illustrate the calling sequence for
functions on the stack. The line numbers and offsets show where function calls
were made.
Line 6 indicates that an error probably occured at line
974 of function
repdel()
in source file
tasn
.
repdel()
called
cxerr()
to generate an ABEND and subsequent compiler
messages for a CXERR condition.
Lines 7-12 show the sequence of SAS/C Library
functions that get invoked when the function
abort()
is called within a C program.
The previous sections
have explained how to obtain detailed descriptive information about a SAS/C problem.
Sometimes this is not sufficient. If you contact SAS/C Technical
Support, the consultant may request additional information about your problem.
Additional information that is often requested and how to obtain it are described
below.
-
Source code showing function calls, parameter
lists, and so on.
-
Compiler and linkedit listings and maps.
-
Logs of program execution generated with the
=warning
and
=btrace
run-time
options enabled. Commands for capturing
execution logs are
-
A system ABEND traceback dump.
On OS/390 BATCH, issue
//SYSDUMP DD or //SYSMDUMP DD.
Note:
If
Abend-AID (a dump formatting utility) is installed at your site, turn it off
for this job by adding the following statement to your execution JCL:
//ABNLIGNR DD DUMMY
. But
first, check with your systems programmer to ensure that your site does not
use a different mechanism for turning off Abend-AID.
On OS/390 TSO, allocate a SYSUDUMP or SYSABEND data
set, then execute the program with the problem.
On VM CMS, obtain dumps for program exceptions or library-produced
abends by doing the following:
See Chapter 5 for instructions
on how to get requested
information to SAS/C Technical Support.
Copyright © 2001
by SAS Institute Inc., Cary, NC, USA. All rights reserved.