BookmarkSubscribeRSS Feed
🔒 This topic is solved and locked. Need further help from the community? Please sign in and ask a new question.
aiaimanel
Obsidian | Level 7

Hello everyone,

 

I'm new to this forum and I'm new in SAS DIS.

 

I'm using a old version of SAS DIS (Version 3.4 , yup, don't be scared.. its a pain to do jobs here when you're used to other ETL Tools).

 

I've done some enable parallel processing in my loops, and the job itself runs perfectly on SAS, however, whenever I try to run the same job in my SH, it gives the following error:

 

ERROR: Errors printed on pages....

 

Does anyone has an idea of why is this giving this error?

Is it the way I define the libname ?

 

I know this may be kind of vague, I'm just looking for alternative thinkings regarding possible problems here.

1 ACCEPTED SOLUTION

Accepted Solutions
FreelanceReinh
Jade | Level 19

Good news for you, @aiaimanel!

 

Thanks a lot for providing the log files. This was the breakthrough.

 

As you've noticed, the pages where the errors were reported to have occurred (p. 223 and p. 229) are not part of the big log file, but of the small one, L18_1_log.txt. Even more confusingly, this log file contains several pages "twice"! More precisely: There are two different pages numbered 223 and two numbered 229 (and similar for other page numbers). In each case, one version is from 12:24 o'clock and the other from 12:28 o'clock today.

 

Indeed, errors were reported on pages 223 and 229 of 12:28, but not on the earlier pages with the same numbers from 12:24. What made them even harder to find was that they were one of the rare exceptions in SAS where errors are not denoted as "ERROR" in the log!

 

Please search for the string "NOTE 49-169" in the log. You will find two occurrences of this note (one on p. 223 and one on p. 229 of 12:28) saying that "The meaning of an identifier after a quoted string may change in a future SAS release. Inserting white space between a quoted string and the succeeding identifier is recommended."

 

These are just NOTEs, not ERRORs, but they are preceded by a code excerpt in which the string '0' is underlined and tagged with the number 49. Do you see these places? These underlinings and the number 49 would be printed in red (like errors!) if the log was shown in the log window rather than written to a file.

 

You can generate this type of error in a simple data step:

data test;
x=1; output;
if 'A'='A'and 1 then put 'OK!';
x=2; output;
run;

As you can see, the data step creates the correct result: Dataset TEST is created correctly and "OK!" is written to the log, because the IF condition is true. The only issue SAS has with this code is that there is no blank between the closing single quote of the second 'A' and the operator "and". And just because the "meaning of an identifier after a quoted string might change in a future SAS release", it classifies this as an error, which eventually leads to the real "ERROR" message you found at the bottom of the large log file.

 

In your code it is the keyword "when" which should be separated by a blank from the preceding closing single quote of '0'. So, please add the blank at the appropriate places and all the notes "49-169" the "49"s and the final ERROR message will vanish. It's also good news that the "errors" were harmless and did not influence your results anyway.

 

Strangely enough, the same "error" is documented on p. 226 from 12:24 and was underlined and tagged with "49", but not commented with a note 49-169. I'm not sure why, but it seems that due to the absence of the NOTE, p. 226 was not mentioned in the list of pages where the errors occurred. Of course, you should insert the blank also in this place (if it was a separate place at all and not, e.g., macro code called several times).

View solution in original post

14 REPLIES 14
FreelanceReinh
Jade | Level 19

Hello @aiaimanel,

 

I don't use SAS DIS and I don't know what "SH" stands for (script host? shell? ...). But I do know that this error message is just a reference to individual error messages which should be printed earlier in the log (namely "on pages ..."). I'm sure, it would help the SAS DIS users in the forum to narrow down the cause of the error if you looked into the pages referenced in this message (maybe do a full-text search for "ERROR") and revealed the individual error messages.

 

Similarly, an error in the libname definition could be diagnosed much easier if you showed us how you defined the libname. But the individual error messages mentioned above would most probably point to that definition anyway if it was incorrect.

 

Good luck.

aiaimanel
Obsidian | Level 7

Hi @FreelanceReinh,

 

It means Shell Script, sorry, missed that on my post.

 

I did searched the log files, manually and using grep -F but I'm not finding any error.

 

It runs smoothly on SAS DIS, but when called in the Shell Script, it gives that error, but it does not write any type of error in the logs.

 

So in our configuration file, we have the following:

 

options dldmgaction=repair;
options msglevel=I;
options sasmstore=macros mstored ;
options symbolgen;
options connectstatus;
options dflang = 'PORTUGUESE';
options details;
options source;
options source2;
options date;
options notes;
options cmpopt=all;
options fullstimer;
options errors=1000000;
options compress=YES;
options autosignon=yes;
options comamid=tcp remote=flagship ;

 

LIBNAME NAMEXX ORACLE PATH=DWCPD1 SCHEMA=NAMEXX USER=ODSXXXX PASSWORD="passwordxxx" ;
LIBNAME NAMEYY ORACLE PATH=DWCPD1 SCHEMA=NAMEYY USER=DMXXXX PASSWORD="passwordyyy" ;

FreelanceReinh
Jade | Level 19

Thanks, @aiaimanel, for providing additional details. What you describe sounds similar to the situation reported in this older thread: The log contains that summarizing error message, but no individual error messages. There, however, it could be explained why this occurred (redirecting part of the log).

 

Have you been able to find the pages in the log whose numbers are referenced in the "Errors printed on pages ..." message? Are there any other indications that something went wrong (incomplete or incorrect results)? Are the log files produced by SAS DIS and via the shell script similar enough that you could compare them (e.g. find matching messages about steps that were successfully completed)?

aiaimanel
Obsidian | Level 7

Everything looks normal and according to the normal process, whenever I check the log files in those pages.

 

I did found the other post but I couldn't understand the solution. The code seems to ilustrate the lock that may be done to a SAS Dataset and in my opinion, that could make sense but I don't know how to remove that.

FreelanceReinh
Jade | Level 19

I think, the suggested solution in the other thread addressed the specific cause of the error messages (not shown in their log) which had to do with locked datasets. It wouldn't apply to your situation, unless your code also locks datasets.

 

So, you're saying that essentially the only difference between your two log files is that the second one has the "Errors printed on pages ..." message at the bottom? And you don't redirect parts of the log so that the interesting pages could be missing in the second log file?

aiaimanel
Obsidian | Level 7

I can't tell if SAS is blocking the DATASET. If he is, it should give an error when I run the JOB itself but it does not.

 

I've checked all the logs created from the execution itself but no ERROR can be found. I've done a search in the entire folder but not getting any luck at all.

FreelanceReinh
Jade | Level 19

I would be surprised if a dataset lock happened to be the reason for the error message (as it was the case in the other thread, where they did not use or at least mention SAS DIS at all). Without seeing the code and the logs (and without knowing about the specifics of SAS DIS), I'm sorry, I can't guess what caused the error.

 

I don't know if your logs are similar to the familiar SAS log files (and how large they are). There, one could track step by step which parts of the program have executed and obtain information, e.g. about datasets which have been created etc. Now, if two such log files contained exactly the same messages except for the additional "Errors printed on pages ..." message at the end of one log file, it would be hard to explain why this happened.

 

As a last resort, one could reduce the code (by commenting out suitable parts) more and more, until the error message vanishes. Thus, one should be able to narrow down the cause of the error.

aiaimanel
Obsidian | Level 7

I've attached the log file where the error points, and the log of the job itself.

 

You'll see that no ERROR is presented, and that the WORK Table has row on it as part of the execution.

 

The job without the enable parallel runs smoothly both on SAS and on Shell Script, only fails with the Parallel enabled.

FreelanceReinh
Jade | Level 19

Good news for you, @aiaimanel!

 

Thanks a lot for providing the log files. This was the breakthrough.

 

As you've noticed, the pages where the errors were reported to have occurred (p. 223 and p. 229) are not part of the big log file, but of the small one, L18_1_log.txt. Even more confusingly, this log file contains several pages "twice"! More precisely: There are two different pages numbered 223 and two numbered 229 (and similar for other page numbers). In each case, one version is from 12:24 o'clock and the other from 12:28 o'clock today.

 

Indeed, errors were reported on pages 223 and 229 of 12:28, but not on the earlier pages with the same numbers from 12:24. What made them even harder to find was that they were one of the rare exceptions in SAS where errors are not denoted as "ERROR" in the log!

 

Please search for the string "NOTE 49-169" in the log. You will find two occurrences of this note (one on p. 223 and one on p. 229 of 12:28) saying that "The meaning of an identifier after a quoted string may change in a future SAS release. Inserting white space between a quoted string and the succeeding identifier is recommended."

 

These are just NOTEs, not ERRORs, but they are preceded by a code excerpt in which the string '0' is underlined and tagged with the number 49. Do you see these places? These underlinings and the number 49 would be printed in red (like errors!) if the log was shown in the log window rather than written to a file.

 

You can generate this type of error in a simple data step:

data test;
x=1; output;
if 'A'='A'and 1 then put 'OK!';
x=2; output;
run;

As you can see, the data step creates the correct result: Dataset TEST is created correctly and "OK!" is written to the log, because the IF condition is true. The only issue SAS has with this code is that there is no blank between the closing single quote of the second 'A' and the operator "and". And just because the "meaning of an identifier after a quoted string might change in a future SAS release", it classifies this as an error, which eventually leads to the real "ERROR" message you found at the bottom of the large log file.

 

In your code it is the keyword "when" which should be separated by a blank from the preceding closing single quote of '0'. So, please add the blank at the appropriate places and all the notes "49-169" the "49"s and the final ERROR message will vanish. It's also good news that the "errors" were harmless and did not influence your results anyway.

 

Strangely enough, the same "error" is documented on p. 226 from 12:24 and was underlined and tagged with "49", but not commented with a note 49-169. I'm not sure why, but it seems that due to the absence of the NOTE, p. 226 was not mentioned in the list of pages where the errors occurred. Of course, you should insert the blank also in this place (if it was a separate place at all and not, e.g., macro code called several times).

aiaimanel
Obsidian | Level 7

@FreelanceReinh, I do not know who are you, but from the bottom of my heart, thanks!!!

 

I was in pain for the last 3 days, testing, compilling, doing everything I can, and you discovered the error found on a !@%$#@ space!!!!

 

I've done already some testing and it is working, so once again, THANK YOU!!!

 

You're the best!

 

I've accepted as a solution! 😄

FreelanceReinh
Jade | Level 19

You're welcome, @aiaimanel. I'm glad to read, your log is now error-free.

 

Many thanks for your nice reply, the like and accepting my solution. It's this kind of success and feedback why I love this forum and my work as a SAS programmer in general. I'm just a German freelancer (mathematician) with 18+ years of SAS experience, who has built up the reputation of being able to find hidden errors in files, no matter how large. Smiley Happy

aiaimanel
Obsidian | Level 7

Guten Morgen,

 

Once again, my thanks to you for your amazing help!

 

The like and accept as solution is the minimum I can do for your help.

 

If you wouldn't mind, I would like your professional on my other post: https://communities.sas.com/t5/SAS-Data-Management/Parallel-Job-SAS-DIS-Old-Version/m-p/241484#M6276 .

 

Thank you and have a good day!

 

Auf Wiedersehen mein Freund!

 

PS: I miss Deutsch, it was a complicated language but nowadays it is a must!

 

FreelanceReinh
Jade | Level 19

Hello @aiaimanel,

 

I've looked into the other thread, but I'm afraid I can't help you with that one. Having no experience with Data Integration Studio or any other ETL tool, I could hardly follow the discussion, let alone participate. Maybe you can break down the task into smaller steps and try to tackle one at a time. Then, if problems occur, you will be able to ask more specific questions, which the DIS experts in the forum or SAS Technical Support can answer more easily.

 

Good luck!

aiaimanel
Obsidian | Level 7

Hi @FreelanceReinh,

 

My thank you for having a look into the other thread, it's always helpfull for other user, specially with such an experience to look and give a honest opinion.

 

Best regards and keep up the excellent work!

sas-innovate-2024.png

Join us for SAS Innovate April 16-19 at the Aria in Las Vegas. Bring the team and save big with our group pricing for a limited time only.

Pre-conference courses and tutorials are filling up fast and are always a sellout. Register today to reserve your seat.

 

Register now!

How to connect to databases in SAS Viya

Need to connect to databases in SAS Viya? SAS’ David Ghan shows you two methods – via SAS/ACCESS LIBNAME and SAS Data Connector SASLIBS – in this video.

Find more tutorials on the SAS Users YouTube channel.

Discussion stats
  • 14 replies
  • 10164 views
  • 5 likes
  • 2 in conversation