46
Copyright © 2012, SAS Institute Inc. All rights reserved. Debugging SAS Code Jeff Simpson

Debugging SAS Code - denversug.orgdenversug.org/presentations/2013CODay/Simpson_Debugging2013ppt… · Debugging 101 “I got an ERROR message, ... Table WORK.PHONE_CLEANUP doesn't

Embed Size (px)

Citation preview

Page 1: Debugging SAS Code - denversug.orgdenversug.org/presentations/2013CODay/Simpson_Debugging2013ppt… · Debugging 101 “I got an ERROR message, ... Table WORK.PHONE_CLEANUP doesn't

Copyr i g ht © 2012, SAS Ins t i tu t e Inc . A l l r ights reser ve d .

Debugging SAS Code

Jeff Simpson

Page 2: Debugging SAS Code - denversug.orgdenversug.org/presentations/2013CODay/Simpson_Debugging2013ppt… · Debugging 101 “I got an ERROR message, ... Table WORK.PHONE_CLEANUP doesn't

Copyr i g ht © 2012, SAS Ins t i tu t e Inc . A l l r ights reser ve d .

Why Debug Our Code?

The computer breaks things!

Almost true!

SAS syntax check is VERY forgiving but…

» It doesn’t know what we intended -

» Only what we tell it!

Resources may not be available

We have to speak multiple languages

» Datastep or is it (Data Step?)

» DS2

» Macro

» SQL

» DBMS

» Regular Expressions

Page 3: Debugging SAS Code - denversug.orgdenversug.org/presentations/2013CODay/Simpson_Debugging2013ppt… · Debugging 101 “I got an ERROR message, ... Table WORK.PHONE_CLEANUP doesn't

Copyr i g ht © 2012, SAS Ins t i tu t e Inc . A l l r ights reser ve d .

But Honestly

We make mistakes!

Semicolons

Misspelled words

Incorrect operators (+, -, *, /, **, \, AND, OR, =, <, >, (), etc)

Unbalanced quotes

We often use SAS as a syntax checker

New products like Enterprise Guide 5.1 really help

Wizards to build code without misspellings

Reformat code

Page 4: Debugging SAS Code - denversug.orgdenversug.org/presentations/2013CODay/Simpson_Debugging2013ppt… · Debugging 101 “I got an ERROR message, ... Table WORK.PHONE_CLEANUP doesn't

Copyr i g ht © 2012, SAS Ins t i tu t e Inc . A l l r ights reser ve d .

Enhanced Program Editor

Converts code into Indented Format

Page 5: Debugging SAS Code - denversug.orgdenversug.org/presentations/2013CODay/Simpson_Debugging2013ppt… · Debugging 101 “I got an ERROR message, ... Table WORK.PHONE_CLEANUP doesn't

Copyr i g ht © 2012, SAS Ins t i tu t e Inc . A l l r ights reser ve d .

But Honestly

We make mistakes!

Semicolons

Misspelled words

Incorrect operators (+, -, *, /, **, \, AND, OR, =, <, >, (), etc)

Unbalanced quotes

We often use SAS as a syntax checker

New products like Enterprise Guide 5.1 really help

Wizards to build code without misspellings

Reformat code

Syntax suggestions

Page 6: Debugging SAS Code - denversug.orgdenversug.org/presentations/2013CODay/Simpson_Debugging2013ppt… · Debugging 101 “I got an ERROR message, ... Table WORK.PHONE_CLEANUP doesn't

Copyr i g ht © 2012, SAS Ins t i tu t e Inc . A l l r ights reser ve d .

Enhanced Program Editor - Autocomplete

Connects to data library listing

accessible data tables

Provides list of SAS PROCS, SAS Functions and Macro variables, assisting user while coding

Page 7: Debugging SAS Code - denversug.orgdenversug.org/presentations/2013CODay/Simpson_Debugging2013ppt… · Debugging 101 “I got an ERROR message, ... Table WORK.PHONE_CLEANUP doesn't

Copyr i g ht © 2012, SAS Ins t i tu t e Inc . A l l r ights reser ve d .

Enhanced Program Editor

Mouse over Tooltip with details for

SAS PROCS, SAS Functions

Page 8: Debugging SAS Code - denversug.orgdenversug.org/presentations/2013CODay/Simpson_Debugging2013ppt… · Debugging 101 “I got an ERROR message, ... Table WORK.PHONE_CLEANUP doesn't

Copyr i g ht © 2012, SAS Ins t i tu t e Inc . A l l r ights reser ve d .

But Honestly

We make mistakes!

Semicolons

Misspelled words

Incorrect operators (+, -, *, /, **, \, AND, OR, =, <, >, (), etc)

Unbalanced quotes

We often use SAS as a syntax checker

New products like Enterprise Guide 5.1 really help

Wizards to build code without misspellings

Reformat code

Syntax suggestions

Special highlighting of SAS syntax elements

Page 9: Debugging SAS Code - denversug.orgdenversug.org/presentations/2013CODay/Simpson_Debugging2013ppt… · Debugging 101 “I got an ERROR message, ... Table WORK.PHONE_CLEANUP doesn't

Copyr i g ht © 2012, SAS Ins t i tu t e Inc . A l l r ights reser ve d .

Debugging 101

Types of messages in the SAS log

NOTE:

» Informational message telling us what each step has done

WARNING:

» Something is amiss but not severe enough to cause SAS to

stop executing

» ALWAYS need to check out why a WARNING: message was

generated

ERROR:

» “Houston, we have a problem”

» Something serious has occurred and SAS cannot continue

processing

Page 10: Debugging SAS Code - denversug.orgdenversug.org/presentations/2013CODay/Simpson_Debugging2013ppt… · Debugging 101 “I got an ERROR message, ... Table WORK.PHONE_CLEANUP doesn't

Copyr i g ht © 2012, SAS Ins t i tu t e Inc . A l l r ights reser ve d .

Debugging 101

“I got an ERROR message, what do I do?”

Start at the top

» The first ERROR (or WARNING) usually causes others

» Use Cntl-F to find the word ERROR

Correct the problem

Review other errors and correct any syntax problems

What about logic issues?

Rerun the code

“I don’t understand what the message says!”

Some messages seem cryptic

Rule of thumb: If you don’t understand the problem,

look on the line above to see if there is a missing

semicolon!!!

Page 11: Debugging SAS Code - denversug.orgdenversug.org/presentations/2013CODay/Simpson_Debugging2013ppt… · Debugging 101 “I got an ERROR message, ... Table WORK.PHONE_CLEANUP doesn't

Copyr i g ht © 2012, SAS Ins t i tu t e Inc . A l l r ights reser ve d .

New Statements in SAS 9.3

RESETLINE

Restarts the program line numbering in the SAS log to 1

Page 12: Debugging SAS Code - denversug.orgdenversug.org/presentations/2013CODay/Simpson_Debugging2013ppt… · Debugging 101 “I got an ERROR message, ... Table WORK.PHONE_CLEANUP doesn't

Copyr i g ht © 2012, SAS Ins t i tu t e Inc . A l l r ights reser ve d .

Debugging 101

“What happens when I get an ERROR?”

The current process ends

The _ERROR_ variable is set to 1

Sometimes SAS will go into syntax check mode

Most often it will attempt to process any remaining

steps

» Causes more ERRORs!

Page 13: Debugging SAS Code - denversug.orgdenversug.org/presentations/2013CODay/Simpson_Debugging2013ppt… · Debugging 101 “I got an ERROR message, ... Table WORK.PHONE_CLEANUP doesn't

Copyr i g ht © 2012, SAS Ins t i tu t e Inc . A l l r ights reser ve d .

Sample ERROR Messages

Easy to digest ERRORs

ERROR: File WORK.V_LMK_DETAIL.DATA does not exist.

• Check the spelling of the table

• Was the table created earlier in the process?

Page 14: Debugging SAS Code - denversug.orgdenversug.org/presentations/2013CODay/Simpson_Debugging2013ppt… · Debugging 101 “I got an ERROR message, ... Table WORK.PHONE_CLEANUP doesn't

Copyr i g ht © 2012, SAS Ins t i tu t e Inc . A l l r ights reser ve d .

Sample ERROR Messages

Did the LIBNAME statement fail?

Was there a LIBNAME statement?

Note: A good rule of thumb is to specify all Libname and Filename

Statements at the beginning of your SAS program

Page 15: Debugging SAS Code - denversug.orgdenversug.org/presentations/2013CODay/Simpson_Debugging2013ppt… · Debugging 101 “I got an ERROR message, ... Table WORK.PHONE_CLEANUP doesn't

Copyr i g ht © 2012, SAS Ins t i tu t e Inc . A l l r ights reser ve d .

Sample ERROR Messages

This one is very obvious

Sort the table!

Page 16: Debugging SAS Code - denversug.orgdenversug.org/presentations/2013CODay/Simpson_Debugging2013ppt… · Debugging 101 “I got an ERROR message, ... Table WORK.PHONE_CLEANUP doesn't

Copyr i g ht © 2012, SAS Ins t i tu t e Inc . A l l r ights reser ve d .

Sorting Considerations

If the input data to be read by SAS is sorted already, then use the SORTEDBY data set option

to assert a sort key.

Follow this by a PROC SORT using the PRESORTED option for validation

This sets the sort-verified flag on the SAS data set

Some parts of SAS may choose to implement a sequence check regardless of

the strength of the assertion

Page 17: Debugging SAS Code - denversug.orgdenversug.org/presentations/2013CODay/Simpson_Debugging2013ppt… · Debugging 101 “I got an ERROR message, ... Table WORK.PHONE_CLEANUP doesn't

Copyr i g ht © 2012, SAS Ins t i tu t e Inc . A l l r ights reser ve d .

Typical Syntax ERROR Messages

ERROR: Error in the LIBNAME statement.

14 libname "\\wil-sasprd03\basemarketing_backup\Phone_Sales\Front

End\Business Basic Upsell\2010_7";

Looks generic but when you look at the

associated LIBNAME statement:

• Missing libref

Page 18: Debugging SAS Code - denversug.orgdenversug.org/presentations/2013CODay/Simpson_Debugging2013ppt… · Debugging 101 “I got an ERROR message, ... Table WORK.PHONE_CLEANUP doesn't

Copyr i g ht © 2012, SAS Ins t i tu t e Inc . A l l r ights reser ve d .

Typical Syntax ERROR Messages

Insure proper spelling

Use PROC SETINIT to see if the procedure is licensed in the SAS

session

If licensed, was it installed?

Page 19: Debugging SAS Code - denversug.orgdenversug.org/presentations/2013CODay/Simpson_Debugging2013ppt… · Debugging 101 “I got an ERROR message, ... Table WORK.PHONE_CLEANUP doesn't

Copyr i g ht © 2012, SAS Ins t i tu t e Inc . A l l r ights reser ve d .

Typical Syntax ERROR Messages

Page 20: Debugging SAS Code - denversug.orgdenversug.org/presentations/2013CODay/Simpson_Debugging2013ppt… · Debugging 101 “I got an ERROR message, ... Table WORK.PHONE_CLEANUP doesn't

Copyr i g ht © 2012, SAS Ins t i tu t e Inc . A l l r ights reser ve d .

Typical Syntax ERROR Messages

Page 21: Debugging SAS Code - denversug.orgdenversug.org/presentations/2013CODay/Simpson_Debugging2013ppt… · Debugging 101 “I got an ERROR message, ... Table WORK.PHONE_CLEANUP doesn't

Copyr i g ht © 2012, SAS Ins t i tu t e Inc . A l l r ights reser ve d .

Typical Syntax ERROR Messages

Page 22: Debugging SAS Code - denversug.orgdenversug.org/presentations/2013CODay/Simpson_Debugging2013ppt… · Debugging 101 “I got an ERROR message, ... Table WORK.PHONE_CLEANUP doesn't

Copyr i g ht © 2012, SAS Ins t i tu t e Inc . A l l r ights reser ve d .

Typical Syntax ERROR Messages

Page 23: Debugging SAS Code - denversug.orgdenversug.org/presentations/2013CODay/Simpson_Debugging2013ppt… · Debugging 101 “I got an ERROR message, ... Table WORK.PHONE_CLEANUP doesn't

Copyr i g ht © 2012, SAS Ins t i tu t e Inc . A l l r ights reser ve d .

Typical Syntax ERROR Messages

Page 24: Debugging SAS Code - denversug.orgdenversug.org/presentations/2013CODay/Simpson_Debugging2013ppt… · Debugging 101 “I got an ERROR message, ... Table WORK.PHONE_CLEANUP doesn't

Copyr i g ht © 2012, SAS Ins t i tu t e Inc . A l l r ights reser ve d .

Typical Syntax ERROR Messages

1 proc fomat cntlin=cntlin;-----14

ERROR: Procedure FORMAT not found.WARNING 14-169: Assuming the symbol FORMAT was misspelled as fomat.2 run;

NOTE: The SAS System stopped processing this step because of errors.NOTE: PROCEDURE FOMAT used (Total process time):

real time 0.04 secondscpu time 0.00 seconds

Page 25: Debugging SAS Code - denversug.orgdenversug.org/presentations/2013CODay/Simpson_Debugging2013ppt… · Debugging 101 “I got an ERROR message, ... Table WORK.PHONE_CLEANUP doesn't

Copyr i g ht © 2012, SAS Ins t i tu t e Inc . A l l r ights reser ve d .

Other ERRORs

166 proc means data=nbp(where=(new_prdct_flag2>0) nway noprint;____ _22 22

79ERROR 22-7: Invalid option name NWAY.ERROR 22-322: Missing ')' parenthesis for data set option listERROR 79-322: Expecting a ).167 class segment2 /*acct_bucket*/ nbp_flag;ERROR: Variable new_prdct_flag2 is not on file WORK.NBP.ERROR: No data set open to look up variables.ERROR: No data set open to look up variables.168 var new_prdct_flag;ERROR: No data set open to look up variables.169 output out=overall_rates mean=add_rate;170 run;

NOTE: The SAS System stopped processing this step because of errors.WARNING: The data set WORK.OVERALL_RATES may be incomplete. When this step was stopped there were 0 observations and 0 variables..WARNING: Data set WORK.OVERALL_RATES was not replaced because this step was stopped.

Page 26: Debugging SAS Code - denversug.orgdenversug.org/presentations/2013CODay/Simpson_Debugging2013ppt… · Debugging 101 “I got an ERROR message, ... Table WORK.PHONE_CLEANUP doesn't

Copyr i g ht © 2012, SAS Ins t i tu t e Inc . A l l r ights reser ve d .

Other ERRORs

ERROR: You cannot open WORK.TEST.DATA for output access with member-level control because

WORK.TEST.DATA is in use by you in resource environment IOM ROOT COMP ENV.

• Usually seen with Enterprise Guide

• Can appear with Base SAS (DMS)

• Close the table viewer for that table

• Use EG Option to automatically close all tables

before submitting code

Page 27: Debugging SAS Code - denversug.orgdenversug.org/presentations/2013CODay/Simpson_Debugging2013ppt… · Debugging 101 “I got an ERROR message, ... Table WORK.PHONE_CLEANUP doesn't

Copyr i g ht © 2012, SAS Ins t i tu t e Inc . A l l r ights reser ve d .

Other ERRORs

ERROR: You cannot open WORK.TEST.DATA for output access with member-level control because

WORK.TEST.DATA is in use by you in resource environment IOM ROOT COMP ENV.

Page 28: Debugging SAS Code - denversug.orgdenversug.org/presentations/2013CODay/Simpson_Debugging2013ppt… · Debugging 101 “I got an ERROR message, ... Table WORK.PHONE_CLEANUP doesn't

Copyr i g ht © 2012, SAS Ins t i tu t e Inc . A l l r ights reser ve d .

Other ERRORs

ERROR: You cannot open WORK.TEST.DATA for output access with member-level control because

WORK.TEST.DATA is in use by you in resource environment IOM ROOT COMP ENV.

Page 29: Debugging SAS Code - denversug.orgdenversug.org/presentations/2013CODay/Simpson_Debugging2013ppt… · Debugging 101 “I got an ERROR message, ... Table WORK.PHONE_CLEANUP doesn't

Copyr i g ht © 2012, SAS Ins t i tu t e Inc . A l l r ights reser ve d .

Errors that aren’t really ERRORs

NOTE: Invalid argument to function INPUT at line 295 column 167.----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0

32020 |1125364|10136927|BLN|CI_PERM|C&I PERMANET - MISC|C|05||FS|1351445.00|1367597.20|19990728|2042570|LE101 XINGTON/VA - COMME|N|BR|A||||N|Y|N|N|||20131228|2000000||.05875|N||1125364||19131ND|2042502|N||N|N|N201 || 202

_W_NumericValue = INPUT(_W_StringValue, COMMA32.);

Page 30: Debugging SAS Code - denversug.orgdenversug.org/presentations/2013CODay/Simpson_Debugging2013ppt… · Debugging 101 “I got an ERROR message, ... Table WORK.PHONE_CLEANUP doesn't

Copyr i g ht © 2012, SAS Ins t i tu t e Inc . A l l r ights reser ve d .

Are We Speaking the Same Language?

PROC SQL;

15 CREATE TABLE BRAND.FINAL_CL_LIST AS SELECT PHF.*,

16 ETH.A_ETHNY_ETHNIC_CODE,

17 CASE WHEN ETH.A_ETHNY_ETHNIC_CODE = 20 THEN Y ELSE " " END AS

HISP_HH_FLAG

18 FROM WORK.PHONE_FNL PHF

19 LEFT JOIN ETHN.ETHNIC ETH ON (PHF.CG_ID = ETH.CG_ID);

ERROR: Expression using equals (=) has components

that are of different data types.

ERROR: The following columns were not found in

the contributing tables: Y.

NOTE: PROC SQL set option NOEXEC and will

continue to check the syntax of statements.

20 ;

21 QUIT;

NOTE: The SAS System stopped processing this step

Page 31: Debugging SAS Code - denversug.orgdenversug.org/presentations/2013CODay/Simpson_Debugging2013ppt… · Debugging 101 “I got an ERROR message, ... Table WORK.PHONE_CLEANUP doesn't

Copyr i g ht © 2012, SAS Ins t i tu t e Inc . A l l r ights reser ve d .

Common ERRORs Using PROC SQL

ERROR: Could not expand T1.*, correlation name not found.

ERROR: Unresolved reference to table/correlation name T1.

ERROR: The following columns were not found in the contributing tables: T1.

ERROR: The SUM summary function requires a numeric argument.

ERROR: The following columns were not found in the contributing tables:

RTL_CHKG_DPST_CNT.

ERROR: Table WORK.PHONE_CLEANUP doesn't have any columns. PROC SQL requires each of

its tables to have at least 1 column.

ERROR: Column CG_ID could not be found in the table/view identified with the correlation name

PHONE_CLEANUP.

Page 32: Debugging SAS Code - denversug.orgdenversug.org/presentations/2013CODay/Simpson_Debugging2013ppt… · Debugging 101 “I got an ERROR message, ... Table WORK.PHONE_CLEANUP doesn't

Copyr i g ht © 2012, SAS Ins t i tu t e Inc . A l l r ights reser ve d .

Common ERRORs Using PROC SQL

ERROR: The following columns were not found as CALCULATED references in the immediate query:

CMRCL_BNDL_PRDCT_CNT.

Page 33: Debugging SAS Code - denversug.orgdenversug.org/presentations/2013CODay/Simpson_Debugging2013ppt… · Debugging 101 “I got an ERROR message, ... Table WORK.PHONE_CLEANUP doesn't

Copyr i g ht © 2012, SAS Ins t i tu t e Inc . A l l r ights reser ve d .

Debugging Macro Variables

%macro wrttxt(text=Something we really want to write to the log!);

%put text;

%mend wrttxt;

%wrttxt

Resolves to text

Page 34: Debugging SAS Code - denversug.orgdenversug.org/presentations/2013CODay/Simpson_Debugging2013ppt… · Debugging 101 “I got an ERROR message, ... Table WORK.PHONE_CLEANUP doesn't

Copyr i g ht © 2012, SAS Ins t i tu t e Inc . A l l r ights reser ve d .

Debugging Macro Variables

%macro wrttxt(text=Something we really want to write to the log!);

%put &txt;

%mend wrttxt;

%wrttxt

WARNING: Apparent symbolic reference TXT not resolved.

&txt

Page 35: Debugging SAS Code - denversug.orgdenversug.org/presentations/2013CODay/Simpson_Debugging2013ppt… · Debugging 101 “I got an ERROR message, ... Table WORK.PHONE_CLEANUP doesn't

Copyr i g ht © 2012, SAS Ins t i tu t e Inc . A l l r ights reser ve d .

Debugging Macro Variables

ERROR: Open code statement recursion detected.

27 %LET _CLIENTPROJECTNAME=;

WARNING: Apparent symbolic reference A not resolved.

WARNING: Apparent symbolic reference A not resolved.

ERROR: The text expression FIRST_NAME2='ANNE' AND

LAST_NAME2='SHULER'";PROC

PRINT DATA=RESPONDERS2;WHERE &A.;VAR

FIRST_NAME2 LAST_NAME2

STREET_ADDRESS CITY2 STATE2;RUN;PROC PRINT

DATA=MAILFILE2;WHERE &A.;VAR

FIRST_NAME2 LAST_NAME2 STREET_ADDRESS

CITY2 STATE2;RUN;;*';*" contains a recursive reference to the macro variable A. The macro

variable will be assigned the null value.

Page 36: Debugging SAS Code - denversug.orgdenversug.org/presentations/2013CODay/Simpson_Debugging2013ppt… · Debugging 101 “I got an ERROR message, ... Table WORK.PHONE_CLEANUP doesn't

Copyr i g ht © 2012, SAS Ins t i tu t e Inc . A l l r ights reser ve d .

Macro Options

MPRINT|NOMPRINT

Displays generated code in the SAS Log

Default: NOMPRINT

MLOGIC|NOMLOGIC

Displays execution of each macro statement

Default: NOMLOGIC

Page 37: Debugging SAS Code - denversug.orgdenversug.org/presentations/2013CODay/Simpson_Debugging2013ppt… · Debugging 101 “I got an ERROR message, ... Table WORK.PHONE_CLEANUP doesn't

Copyr i g ht © 2012, SAS Ins t i tu t e Inc . A l l r ights reser ve d .

Macro Options

SYMBOLGEN|NOSYMBOLGEN

Tells you what each Macro variable called by your

program resolves to.

Default: NOSYMBOLGEN

Page 38: Debugging SAS Code - denversug.orgdenversug.org/presentations/2013CODay/Simpson_Debugging2013ppt… · Debugging 101 “I got an ERROR message, ... Table WORK.PHONE_CLEANUP doesn't

Copyr i g ht © 2012, SAS Ins t i tu t e Inc . A l l r ights reser ve d .

New Macro Functions for 9.3

%SYSMACEXEC

Indicates whether a macro is currently executing

%SYSMACEXIST

Indicates whether macro is defined in WORK.SASMACR

%SYSMEXECDEPTH

Returns the depth of macro nesting from the point of call

%SYSMEXECNAME

Returns the name of the macro executing at a nesting level

Page 39: Debugging SAS Code - denversug.orgdenversug.org/presentations/2013CODay/Simpson_Debugging2013ppt… · Debugging 101 “I got an ERROR message, ... Table WORK.PHONE_CLEANUP doesn't

Copyr i g ht © 2012, SAS Ins t i tu t e Inc . A l l r ights reser ve d .

New Macro Statements

%SYSMACDELETE

Deletes a macro definition from WORK.SASMACR

%SYSMSTORECLEAR

Closes stored compiled macros and clears SASMSTORE=

Page 40: Debugging SAS Code - denversug.orgdenversug.org/presentations/2013CODay/Simpson_Debugging2013ppt… · Debugging 101 “I got an ERROR message, ... Table WORK.PHONE_CLEANUP doesn't

Copyr i g ht © 2012, SAS Ins t i tu t e Inc . A l l r ights reser ve d .

%SYSMSTORECLEAR

The code below produces the following errors:

ERROR: Unable to clear or re-assign the library MACTEST because it is still in use.

ERROR: Error in the LIBNAME statement.

libname mactest 'c:\atrash';

options mstored sasmstore=mactest;

%macro test1 / store;

%put test1;

%mend;

libname mactest 'c:\newrpt'; /*mactest has not been closed so error

will occur*/

options sasmstore=mactest;

%macro test2 / store;

%put test2;

%mend;

Page 41: Debugging SAS Code - denversug.orgdenversug.org/presentations/2013CODay/Simpson_Debugging2013ppt… · Debugging 101 “I got an ERROR message, ... Table WORK.PHONE_CLEANUP doesn't

Copyr i g ht © 2012, SAS Ins t i tu t e Inc . A l l r ights reser ve d .

%SYSMSTORECLEAR

The following code processes correctly.

libname mactest 'c:\temp';

options mstored sasmstore=mactest;

%macro test1 / store;

%put test1;

%mend;

%sysmstoreclear;

libname mactest 'c:\newrpt';

options sasmstore=mactest;

%macro test2 / store;

%put test2;

%mend;

Page 42: Debugging SAS Code - denversug.orgdenversug.org/presentations/2013CODay/Simpson_Debugging2013ppt… · Debugging 101 “I got an ERROR message, ... Table WORK.PHONE_CLEANUP doesn't

Copyr i g ht © 2012, SAS Ins t i tu t e Inc . A l l r ights reser ve d .

Debugging Access to DB2

ERROR: CLI cursor fetch error: [IBM][CLI Driver] SQL1224N

The database manager is not able to accept new requests,

has terminated all requests in progress,

or has terminated your particular request due to an error or a force interrupt.

SQLSTATE=55032

Just Search the Web for it!

Page 43: Debugging SAS Code - denversug.orgdenversug.org/presentations/2013CODay/Simpson_Debugging2013ppt… · Debugging 101 “I got an ERROR message, ... Table WORK.PHONE_CLEANUP doesn't

Copyr i g ht © 2012, SAS Ins t i tu t e Inc . A l l r ights reser ve d .

Page 44: Debugging SAS Code - denversug.orgdenversug.org/presentations/2013CODay/Simpson_Debugging2013ppt… · Debugging 101 “I got an ERROR message, ... Table WORK.PHONE_CLEANUP doesn't

Copyr i g ht © 2012, SAS Ins t i tu t e Inc . A l l r ights reser ve d .

Page 45: Debugging SAS Code - denversug.orgdenversug.org/presentations/2013CODay/Simpson_Debugging2013ppt… · Debugging 101 “I got an ERROR message, ... Table WORK.PHONE_CLEANUP doesn't

Copyr i g ht © 2012, SAS Ins t i tu t e Inc . A l l r ights reser ve d .

Debugging Access to DB2

ERROR: CLI error trying to establish connection: [IBM][CLI Driver] SQL30082N Attempt to establish

connection failed with security

reason "19" ("USERID DISABLED or RESTRICTED"). SQLSTATE=08001

DB2 Version 9.5 for Linux, UNIX, and Windows

SQL30082N

Security processing failed with reason reason-code (reason-string).

Explanation

An error occurred during security processing. The cause of the security error is described by the

reason-code and corresponding reason-string value.

The following is a list of reason codes and corresponding reason strings:

19 (USERID DISABLED or RESTRICTED)

The userid has been disabled, or the userid has been restricted from accessing the

operating environment at this time.

Page 46: Debugging SAS Code - denversug.orgdenversug.org/presentations/2013CODay/Simpson_Debugging2013ppt… · Debugging 101 “I got an ERROR message, ... Table WORK.PHONE_CLEANUP doesn't

Copyright © 2011, SAS Institute Inc. All rights reserved.

Questions?

Jeff SimpsonSr. Systems Engineer