Desktop productivity for business analysts and programmers

Multi-line prompt input text

Accepted Solution Solved
Reply
Occasional Contributor
Posts: 6
Accepted Solution

Multi-line prompt input text

Hi,

 

I have created a multi-line prompt input inside SAS EG. 

 

multiline_prompt.png

 

After receving the input, I tried to output to the report via ODS statement.

ods text = "^{style [color=#808080 fontfamily='<serif> , <MTserif> , Times' fontsize=9PT LEFTMARGIN=1.5cm]■}^{style [color=black fontfamily='<serif> , <MTserif> , Times' fontsize=9PT]       &highlights }";

However, the line break seems to be missing inside the report.

multiline_prompt_output.png

Is there any way to add back the link breaks to the report?

 

Thanks.


Accepted Solutions
Solution
‎04-08-2016 05:55 AM
SAS Super FREQ
Posts: 676

Re: Multi-line prompt input text

[ Edited ]

Hi

 

Linebreaks are not preserved by the multi-line prompt.

 

As a possible workaround I suggest to use a prompt definition like this:

Capture.PNG

 

This will give you an individual macro variable for each line. See part of the log below. The name of the prompt used in this example is MULTILINE.

 

32         %put _user_;
GLOBAL MULTILINE line1
GLOBAL MULTILINE0 2
GLOBAL MULTILINE1 line1
GLOBAL MULTILINE2 line2
GLOBAL MULTILINE_COUNT 2

You can then use the individual macro variables to put together your text that you need. I agree not the most elegant way, but might be a possible workaround.

 

This is an example code to handle the multiple macro variables


%macro generateText;
  %local i;
  %global newMultiline;
  %let newMultiline =;

  %if &MULTILINE_COUNT = 1 %then %do;
    %global MULTILINE1;
    %let MULTILINE1 = &multiline1;
  %end;

  %do i = 1 %to &MULTILINE_COUNT;
    %let newMultiline = &newmultiline.^{NEWLINE}&&multiline&i;
  %end;
%mend;

%generateText

ods escapechar="^";
ods text="&newMultiline";

proc print data=sashelp.class;
run;

 

Bruno

 

 

View solution in original post


All Replies
Solution
‎04-08-2016 05:55 AM
SAS Super FREQ
Posts: 676

Re: Multi-line prompt input text

[ Edited ]

Hi

 

Linebreaks are not preserved by the multi-line prompt.

 

As a possible workaround I suggest to use a prompt definition like this:

Capture.PNG

 

This will give you an individual macro variable for each line. See part of the log below. The name of the prompt used in this example is MULTILINE.

 

32         %put _user_;
GLOBAL MULTILINE line1
GLOBAL MULTILINE0 2
GLOBAL MULTILINE1 line1
GLOBAL MULTILINE2 line2
GLOBAL MULTILINE_COUNT 2

You can then use the individual macro variables to put together your text that you need. I agree not the most elegant way, but might be a possible workaround.

 

This is an example code to handle the multiple macro variables


%macro generateText;
  %local i;
  %global newMultiline;
  %let newMultiline =;

  %if &MULTILINE_COUNT = 1 %then %do;
    %global MULTILINE1;
    %let MULTILINE1 = &multiline1;
  %end;

  %do i = 1 %to &MULTILINE_COUNT;
    %let newMultiline = &newmultiline.^{NEWLINE}&&multiline&i;
  %end;
%mend;

%generateText

ods escapechar="^";
ods text="&newMultiline";

proc print data=sashelp.class;
run;

 

Bruno

 

 

Occasional Contributor
Posts: 6

Re: Multi-line prompt input text

Thanks Bruno. It works nicely. Smiley Very Happy

☑ This topic is SOLVED.

Need further help from the community? Please ask a new question.

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