pagesize和linesize不同屏幕分辨率%窗口的标准

时间:2015-08-17 16:10:16

标签: window sas resolution

我编写了一个非常强大的程序,允许用户与SAS中的%窗口功能进行交互。

现在,它运作得很好,我对我达到的结果非常满意。但是当我将这个程序发送给一些应该运行它的用户时,他们发现并不是所有的文本都在输出窗口中提示。 经过一些尝试后,我发现我的程序打算在我的电脑分辨率1280x1024(不太好)和我的lineize和pagesize标准选项下运行。

这些其他用户正在使用具有不同分辨率的系统,例如其中一个使用1366x768的笔记本电脑,并且他很容易看到窗口的一部分从其内容中切割出来。 即使她试图设置我的lineize和pagesize(我使用%put%sysfunc(getoption(linesize));)她仍然没有看到整个窗口。

我该如何处理这类问题?如何为每种不同的分辨率找到不同输出尺寸的文档?

我知道我应该发布一些代码尝试,但这不是代码请求,但我不认为这个问题与代码完全相关。也许你们中的一个人对此有过一些经验。

谢谢。

编辑:我想使用SAS-AF,但我没有获得许可证。

SAMPLE WINDOW CODE:
%macro windows();
        %window thiswindow

                #2 @5 "/-----------------------------------------------------------------------------\"
                #3 @5 "|------------------xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-------------------|"
                #4 @5 "|------------------------------------------------------------xxxxxxxxxxxxxx---|"
                #5 @5 "| xxxxxxxxxxx"
                #5 @83 "|"
                #6 @5 "| xxxxxxxxxxxxx"
                #6 @83 "|"
                #7 @5 "| xxxxxx"
                #7 @45 "  xxxxxxxxxxxx"
                #7 @83 "|"
                #8 @5 "\-----------------------------------------------------------------------------/"

                #10 @2  "001"               
                #10 @7 "&macrovar1"
                #10 @45 "041"
                #10 @50 "&macrovar41"
                #10 @88 "081"
                #10 @93 "&macrovar81"

                #11 @2  "002"
                #11 @7 "&macrovar2"
                #11 @45 "042"
                #11 @50 "&macrovar42"
                #11 @88 "082"
                #11 @93 "&macrovar82"

                #12 @2  "003"
                #12 @7 "&macrovar3"
                #12 @45 "043"
                #12 @50 "&macrovar43"
                #12 @88 "083"
                #12 @93 "&macrovar83"

                #13 @2  "004"
                #13 @7 "&macrovar4"
                #13 @45 "044"
                #13 @50 "&macrovar44"
                #13 @88 "084"
                #13 @93 "&macrovar84"

                #14 @2  "005"
                #14 @7 "&macrovar5"
                #14 @45 "045"
                #14 @50 "&macrovar45"
                #14 @88 "085"
                #14 @93 "&macrovar85"

                #15 @2  "006"
                #15 @7 "&macrovar6"
                #15 @45 "046"
                #15 @50 "&macrovar46"
                #15 @88 "086"
                #15 @93 "&macrovar86"

                #16 @2  "007"
                #16 @7 "&macrovar7"
                #16 @45 "047"
                #16 @50 "&macrovar47"
                #16 @88 "087"
                #16 @93 "&macrovar87"

                #17 @2  "008"
                #17 @7 "&macrovar8"
                #17 @45 "048"
                #17 @50 "&macrovar48"
                #17 @88 "088"
                #17 @93 "&macrovar88"

                #18 @2  "009"
                #18 @7 "&macrovar9"
                #18 @45 "049"
                #18 @50 "&macrovar49"
                #18 @88 "089"
                #18 @93 "&macrovar89"

                #19 @2  "010"
                #19 @7 "&macrovar10"
                #19 @45 "050"
                #19 @50 "&macrovar50"
                #19 @88 "090"
                #19 @93 "&macrovar90"

                #20 @2  "011"
                #20 @7 "&macrovar11"
                #20 @45 "051"
                #20 @50 "&macrovar51"
                #20 @88 "091"
                #20 @93 "&macrovar91"

                #21 @2  "012"
                #21 @7 "&macrovar12"
                #21 @45 "052"
                #21 @50 "&macrovar52"
                #21 @88 "092"
                #21 @93 "&macrovar92"

                #22 @2  "013"
                #22 @7 "&macrovar13"
                #22 @45 "053"
                #22 @50 "&macrovar53"
                #22 @88 "093"
                #22 @93 "&macrovar93"

                #23 @2  "014"
                #23 @7 "&macrovar14"
                #23 @45 "054"
                #23 @50 "&macrovar54"
                #23 @88 "094"
                #23 @93 "&macrovar94"

                #24 @2  "015"
                #24 @7 "&macrovar15"
                #24 @45 "055"
                #24 @50 "&macrovar55"
                #24 @88 "095"
                #24 @93 "&macrovar95"

                #25 @2  "016"
                #25 @7 "&macrovar16"
                #25 @45 "056"
                #25 @50 "&macrovar56"
                #25 @88 "096"
                #25 @93 "&macrovar96"

                #26 @2  "017"
                #26 @7 "&macrovar17"
                #26 @45 "057"
                #26 @50 "&macrovar57"
                #26 @88 "097"
                #26 @93 "&macrovar97"

                #27 @2  "018"
                #27 @7 "&macrovar18"
                #27 @45 "058"
                #27 @50 "&macrovar58"
                #27 @88 "098"
                #27 @93 "&macrovar98"

                #28 @2  "019"
                #28 @7 "&macrovar19"
                #28 @45 "059"
                #28 @50 "&macrovar59"
                #28 @88 "099"
                #28 @93 "&macrovar99"

                #29 @2  "020"
                #29 @7 "&macrovar20"
                #29 @45 "060"
                #29 @50 "&macrovar60"
                #29 @88 "100"
                #29 @93 "&macrovar100"

                #30 @2  "021"
                #30 @7 "&macrovar21"
                #30 @45 "061"
                #30 @50 "&macrovar61"
                #30 @88 "101"
                #30 @93 "&macrovar101"

                #31 @2  "022"
                #31 @7 "&macrovar22"
                #31 @45 "062"
                #31 @50 "&macrovar62"
                #31 @88 "102"
                #31 @93 "&macrovar102"

                #32 @2  "023"
                #32 @7 "&macrovar23"
                #32 @45 "063"
                #32 @50 "&macrovar63"
                #32 @88 "103"
                #32 @93 "&macrovar103"

                #33 @2  "024"
                #33 @7 "&macrovar24"
                #33 @45 "064"
                #33 @50 "&macrovar64"
                #33 @88 "104"
                #33 @93 "&macrovar104"

                #34 @2  "025"
                #34 @7 "&macrovar25"
                #34 @45 "065"
                #34 @50 "&macrovar65"
                #34 @88 "105"
                #34 @93 "&macrovar105"

                #35 @2  "026"
                #35 @7 "&macrovar26"
                #35 @45 "066"
                #35 @50 "&macrovar66"
                #35 @88 "106"
                #35 @93 "&macrovar106"

                #36 @2  "027"
                #36 @7 "&macrovar27"
                #36 @45 "067"
                #36 @50 "&macrovar67"
                #36 @88 "107"
                #36 @93 "&macrovar107"

                #37 @2  "028"
                #37 @7 "&macrovar28"
                #37 @45 "068"
                #37 @50 "&macrovar68"
                #37 @88 "108"
                #37 @93 "&macrovar108"

                #38 @2  "029"
                #38 @7 "&macrovar29"
                #38 @45 "069"
                #38 @50 "&macrovar69"
                #38 @88 "109"
                #38 @93 "&macrovar109"

                #39 @2  "030"
                #39 @7 "&macrovar30"
                #39 @45 "070"
                #39 @50 "&macrovar70"
                #39 @88 "110"
                #39 @93 "&macrovar110"

                #40 @2  "031"
                #40 @7 "&macrovar31"
                #40 @45 "071"
                #40 @50 "&macrovar71"
                #40 @88 "111"
                #40 @93 "&macrovar111"

                #41 @2  "032"
                #41 @7 "&macrovar32"
                #41 @45 "072"
                #41 @50 "&macrovar72"
                #41 @88 "112"
                #41 @93 "&macrovar112"

                #42 @2  "033"
                #42 @7 "&macrovar33"
                #42 @45 "073"
                #42 @50 "&macrovar73"
                #42 @88 "113"
                #42 @93 "&macrovar113"

                #43 @2  "034"
                #43 @7 "&macrovar34"
                #43 @45 "074"
                #43 @50 "&macrovar74"
                #43 @88 "114"
                #43 @93 "&macrovar114"

                #44 @2  "035"
                #44 @7 "&macrovar35"
                #44 @45 "075"
                #44 @50 "&macrovar75"
                #44 @88 "115"
                #44 @93 "&macrovar115"

                #45 @2  "036"
                #45 @7 "&macrovar36"
                #45 @45 "076"
                #45 @50 "&macrovar76"
                #45 @88 "116"
                #45 @93 "&macrovar116"

                #46 @2  "037"
                #46 @7 "&macrovar37"
                #46 @45 "077"
                #46 @50 "&macrovar77"
                #46 @88 "117"
                #46 @93 "&macrovar117"

                #47 @2  "038"
                #47 @7 "&macrovar38"
                #47 @45 "078"
                #47 @50 "&macrovar78"
                #47 @88 "118"
                #47 @93 "&macrovar118"

                #48 @2  "039"
                #48 @7 "&macrovar39"
                #48 @45 "079"
                #48 @50 "&macrovar79"
                #48 @88 "119"
                #48 @93 "&macrovar119"

                #49 @2  "040"
                #49 @7 "&macrovar40"
                #49 @45 "080"
                #49 @50 "&macrovar80"
                #49 @88 "120"
                #49 @93 "&macrovar120"


                #52 @5 "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
                #53 @5 "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
                #54 @5 "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

                #55 @5 ncoded 80 attr=underline;
%mend;

然后,我使用以下方法逐步填充每个宏变量的数据集的前120个观察值:

%let rc= %sysfunc(open(dataset));
%let nobs= %sysfunc(attrn(&rc.,nlobs));
%let cl= %sysfunc(close(&rc.)); 
%syscall(set(dataset)); 
%do i=1 %to &nobs;
%let fetcher= %sysfunc(fetchobs(dataset,&i.));
%let macrovar&i.=&variable.;
%end;

无论如何,如果您只需要重现这种情况,您可以运行以下代码:

%macro a();
%do i=1 %to 120;
%let macrovar&i.= this_is_the_&i._macrovar;
%end;
%windows();
%mend a; %a();

我用这个示例代码显示填充了所有观察结果的窗口:

data _null_;
%display thiswindow;
run;

现在,我的电脑分辨率为1280x1024,窗口显示正确,但是使用另一种分辨率,例如1366x768的笔记本电脑,我会显示截断的内容:

this is the truncated sample

1 个答案:

答案 0 :(得分:1)

窗口中适合的ROWS和COLUMNS的数量取决于使用的字体和终端分辨率。您可以找到/更改FONT选项使用的字体。

%let save=%sysfunc(getoption(font));
options font=(Sasfont 8) ;
%window ...
...
options font=&save ;

但我不确定如何找到窗口或屏幕的大小。我建议只是同意适用于所有普通用户的尺寸。