Notei que o código correto apresenta apenas if flag_lancamento, sem o =1. Isso quer dizer que por padrão, o SAS já considera o 1 como sendo a verdade para o banco que será criado a partir do THEN OUTPUT?
DATA base_lancamentos base_outros;
set alura.cadastro_produto_v3;
if flag_lancamento
then output base_lancamentos;
else output base_outros;
RUN;