→ a88241050:作出來了,3Q 06/21 12:29
※ 引述《a88241050 (再回頭已是百殘身)》之銘言:
: [軟體程式類別]:SAS
: [程式問題]:資料處理
: [軟體熟悉度]:中
: [問題敘述]:昨天考的一題,寫出一個巨集程式,把輸入的錢數換成錢的張數
: EX:輸入487 跑出"領出487元,換得100元4張,50元1張,10元3張,5元1張,1元2張
: [程式範例]:
: %MACRO test(money);
: DATA final;
: N=&money;
: RUN;
: DATA final2;
: SET final;
: a=INT(N/100);
: b=INT((N-100*a)/50);
: c=INT((N-100*a-50*b)/10);
: d=INT((N-100*a-50*b-10*c)/5);
: e=N-100*a-50*b-10*c-5*d;
: LABEL N='領出錢數' a='100元張數' b='50元張數' c='10元張數' d='5元張數' e='1元
: 張數';
: RUN;
: PROC PRINT DATA=final2 LABEL;
: TITLE"領出 &&money 元,換得100元 &a 張,50元 &b 張,10元 &c 張,5元 &d 張,1元 &e
: 張";
: RUN;
: %MEND;
: %test(487)
: 執行結果:
: 領出 487 元,換得100元 &a 張,50元 &b 張,10元 &c 張,5元 &d 張,1元 &e 張
: Obs 領出錢數 100元張數 50元張數 10元張數 5元張數 1元張數
: 1 487 4 1 3 1 2
: 我現在問題是a,b,c,d,e不是巨集變數,所以標題的張數不會隨著輸入的N值變動
: 可是a,b,c,d,e是由N所產生的,不知道怎麼把他弄到巨集裡
: 因為剛學巨集,有些指令還不太熟,希望有人能指點一下,3Q
%MACRO test(money);
DATA final;
N=&money;
RUN;
DATA final2;
SET final;
a=INT(N/100);
b=INT((N-100*a)/50);
c=INT((N-100*a-50*b)/10);
d=INT((N-100*a-50*b-10*c)/5);
e=N-100*a-50*b-10*c-5*d;
call symput('a',compress(a));
call symput('b',compress(b));
call symput('c',compress(c));
call symput('d',compress(d));
call symput('e',compress(e));
LABEL N='領出錢數' a='100元張數' b='50元張數' c='10元張數' d='5元張數' e='1元張數';
RUN;
PROC PRINT DATA=final2 LABEL;
TITLE"領出 &&money 元,換得100元 &a 張,50元 &b 張,10元 &c 張,5元 &d 張,1元 &e 張";
RUN;
%MEND;
%test(487)
用call symput產生 a b c d e的macro variable便可~~
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.228.18.11