看板 Statistics 關於我們 聯絡資訊
※ 引述《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
a88241050:作出來了,3Q 06/21 12:29