Seria:
%PUT A alíquota de &IMPOSTO em &UF é de &ICMS_SP;
Segue
%LET ICMS_SP = 0.020;
%LET ICMS_RJ = 0.025;
%LET ISS_SP = 0.030;
%LET ISS_RJ = 0.028;
%LET UF = SP;
%LET IMPOSTO = ICMS_;
%PUT A alíquota de &IMPOSTO em &UF é de &&&IMPOSTO&UF.;
%PUT A alíquota de &IMPOSTO em &UF é de Symget(&IMPOSTO.!!_!!&UF);
Eu respondi da seguinte forma:
%LET ICMS_SP = 0.020;
%LET ICMS_RJ = 0.025;
%LET ISS_SP = 0.030;
%LET ISS_RJ = 0.028;
%LET UF = SP;
%LET IMPOSTO = ICMS;
%PUT A alíquota de &IMPOSTO em &UF é de &&&IMPOSTO._&UF;
Desta forma o %PUT fica bem automatizado, ele traz de forma automática o nome do imposto, uf e alíquota de imposto correta, e o código fica bem dinâmico
É preciso colocar o "gatilho" de macro, o & mais 2 vezes antes da combinação de macros, ficando:
&&&IMPOSTO._&UF
se colocarmos apenas &IMPOSTO._&UF ou &&IMPOSTO._&UF, a macro será resolvida para "ICMS_SP", mas não estará chamando a macro &ICMS_SP. Por isso a necessidade de mais 2 & antes da combinação,
Faltou um ponto para separar o que até onde vai o nome da macro. Além disso após criar o nome que desejamos chamar, devemos chmar novamente a macro com &&&& antes de &IMPOSTO._&UF
Ficaria assim:
%LET ICMS_SP = 0.020;
%LET ICMS_RJ = 0.025;
%LET ISS_SP = 0.030;
%LET ISS_RJ = 0.028;
%LET UF = SP;
%PUT A alíquota de &IMPOSTO em &UF é de &&&&&IMPOSTO._&UF;
%PUT A alíquota de &IMPOSTO em &UF é de &IMPOSTO._&UF;
%PUT A alíquota de &IMPOSTO em &UF é de &&&IMPOSTO._&UF.;
Alem da declaração final estar errada, existe um espaço no inicio do %let iniciais. o correto seria a forma abaixo:
%LET ICMS_SP = 0,020;
%LET ICMS_RJ = 0,025;
%LET ISS_SP = 0,030;
%LET ISS_RJ = 0,028;
%LET UF = SP;
%LET IMPOSTO = ICMS;
%PUT A alíquota de &IMPOSTO em &UF é de &ICMS_SP ;
Final: &ICMS_SP;
Registration is now open for SAS Innovate 2025 , our biggest and most exciting global event of the year! Join us in Orlando, FL, May 6-9.
Sign up by Dec. 31 to get the 2024 rate of just $495.
Register now!