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

Is it possible to (simply) write lst output to the SAS log?  In my case I want to see a very short Proc Print in the log itself.  Seems to me there should be a

    proc printto print=log;

kind of option... not?

I'm on Linux Base SAS 9.4M6.

1 ACCEPTED SOLUTION

Accepted Solutions
Tom
Super User Tom
Super User

Are you running interactively or not?  It not you might be able to do something using Unix redirection and the -stdio command line option.

 

Otherwise you will need a lot more code to first point PRINT to a file, using PROC PRINTTO or ODS LISTING, close it, read it in and dump it to the log.

 

Example:

1167  filename print2 temp;
1168  proc printto print=print2; run;

NOTE: PROCEDURE PRINTTO used (Total process time):
      real time           0.00 seconds
      cpu time            0.00 seconds


1169  proc print data=sashelp.class (obs=3); run;

NOTE: There were 3 observations read from the data set SASHELP.CLASS.
NOTE: PROCEDURE PRINT used (Total process time):
      real time           0.01 seconds
      cpu time            0.01 seconds


1170  proc printto print=print; run;

NOTE: PROCEDURE PRINTTO used (Total process time):
      real time           0.00 seconds
      cpu time            0.00 seconds


1171  data _null_;
1172    infile print2;
1173    input;
1174    put _infile_;
1175  run;

NOTE: The infile PRINT2 is:

      Filename=...#LN00070,
      RECFM=V,LRECL=32767,File Size (bytes)=313,
      Last Modified=10Jan2020:09:23:52,
      Create Time=10Jan2020:09:23:52

SAS 9.4 on WINDOWS                                                       19:09 Monday, January 6, 2020 1753

Obs     Name      Sex    Age    Height    Weight

  1    Alfred      M      14     69.0      112.5
  2    Alice       F      13     56.5       84.0
  3    Barbara     F      13     65.3       98.0
NOTE: 7 records were read from the infile PRINT2.
      The minimum record length was 0.
      The maximum record length was 107.
NOTE: DATA statement used (Total process time):
      real time           0.01 seconds
      cpu time            0.00 seconds

View solution in original post

2 REPLIES 2
Tom
Super User Tom
Super User

Are you running interactively or not?  It not you might be able to do something using Unix redirection and the -stdio command line option.

 

Otherwise you will need a lot more code to first point PRINT to a file, using PROC PRINTTO or ODS LISTING, close it, read it in and dump it to the log.

 

Example:

1167  filename print2 temp;
1168  proc printto print=print2; run;

NOTE: PROCEDURE PRINTTO used (Total process time):
      real time           0.00 seconds
      cpu time            0.00 seconds


1169  proc print data=sashelp.class (obs=3); run;

NOTE: There were 3 observations read from the data set SASHELP.CLASS.
NOTE: PROCEDURE PRINT used (Total process time):
      real time           0.01 seconds
      cpu time            0.01 seconds


1170  proc printto print=print; run;

NOTE: PROCEDURE PRINTTO used (Total process time):
      real time           0.00 seconds
      cpu time            0.00 seconds


1171  data _null_;
1172    infile print2;
1173    input;
1174    put _infile_;
1175  run;

NOTE: The infile PRINT2 is:

      Filename=...#LN00070,
      RECFM=V,LRECL=32767,File Size (bytes)=313,
      Last Modified=10Jan2020:09:23:52,
      Create Time=10Jan2020:09:23:52

SAS 9.4 on WINDOWS                                                       19:09 Monday, January 6, 2020 1753

Obs     Name      Sex    Age    Height    Weight

  1    Alfred      M      14     69.0      112.5
  2    Alice       F      13     56.5       84.0
  3    Barbara     F      13     65.3       98.0
NOTE: 7 records were read from the infile PRINT2.
      The minimum record length was 0.
      The maximum record length was 107.
NOTE: DATA statement used (Total process time):
      real time           0.01 seconds
      cpu time            0.00 seconds
DougZ
Obsidian | Level 7

Tom,

I'm running in batch mode, Linux SAS. Thanks - that's a good solution - that would work and I may use it later.  And thanks for your quick reply!  In the meantime I employed the lost art of the  data _null_ report...

 

        data _null_;
            if _n_ = 1 then do;
                put @01/ 132*"=";
                put @01 Count of Oracle table rows and available SAS BRI input load file rows,  %sysfunc(datetime(),datetime19.)";
                put @01 "    Dataset printed: &out,  Program: %sysfunc(getoption(sysin))" /;
                put / @01 "db      schema     table     ora_ct    sas_ct    diff           sas_file" /;
            end;

            set &out END=lastrec;

            put @01 db
                @09 schema
                @20 table
                @30 ora_ct
                @40 sas_ct
                @50 diff
                @65 sas_file
                ;

            if lastrec then put / 132*"=" /;
        run;

SAS Innovate 2025: Save the Date

 SAS Innovate 2025 is scheduled for May 6-9 in Orlando, FL. Sign up to be first to learn about the agenda and registration!

Save the date!

How to Concatenate Values

Learn how use the CAT functions in SAS to join values from multiple variables into a single value.

Find more tutorials on the SAS Users YouTube channel.

SAS Training: Just a Click Away

 Ready to level-up your skills? Choose your own adventure.

Browse our catalog!

Discussion stats
  • 2 replies
  • 1623 views
  • 0 likes
  • 2 in conversation