/********************************************************************/
/* */
/* The LIB.INSDATA data set: */
/* */
/* ID INSTYPE ADDR */
/* ------------------------------ */
/* 09 HOUSE Mountain Road */
/* 10 HOUSE Old Town 10 */
/* 11 AUTO Old Street 11 */
/* 11 BOAT Old Street 11 */
/* 11 HOUSE Old Street 11 */
/* 11 LEISURE Old Street 11 */
/* 12 AUTO Kings Road 12 */
/* 12 BOAT Kings Road 12 */
/* 12 HOUSE Kings Road 12 */
/* 14 */
/* */
/********************************************************************/
/* */
/* The LIB.NEWADDR data set: */
/* */
/* ID NEWADDR */
/* -------------------- */
/* 08 */
/* 11 New Street 21 */
/* 12 Main Street 22 */
/* 15 */
/* */
/********************************************************************/
/********************************************************************/
/* TEST1 */
options msglevel=i;
data test1;
merge lib.insdata
lib.newaddr (rename=(newaddr=addr));
by id;
run;
/********************************************************************/
/* TEST2 */
data test2 (drop=newaddr);
merge lib.insdata
lib.newaddr;
by id;
if newaddr ne "" then addr=newaddr;
run;
/********************************************************************/
/* TEST3 */
data test3 (drop=newaddr);
merge lib.insdata (IN=ina)
lib.newaddr;
by id;
if not(ina) then delete;
if newaddr ne "" then addr=newaddr;
run;
/********************************************************************/
/* TEST3a */
data test3a;
merge lib.insdata (IN=ina)
lib.newaddr (IN=inb);
by id;
if not(ina) then delete;
if inb then addr=newaddr;
run;
/********************************************************************/
/* TEST4 */
data vnewaddr / view=vnewaddr;
set lib.newaddr;
by id;
if last.id then output;
run;
data test4;
merge lib.insdata (in=ina)
vnewaddr;
by id;
if not(ina) then delete;
if newaddr ne "" then addr=newaddr;
run;
/********************************************************************/
/* TEST5 */
data test5;
merge lib.insdata (in=ina)
lib.newaddr (in=inb rename=(newaddr=addr));
by id;
ka=ina;
kb=inb;
run;
/********************************************************************/
/* TEST6 */
data test6;
merge lib.insdata (in=ina)
lib.newaddr (in=inb);
by id;
ka=ina;
kb=inb;
if newaddr ne "" then addr=newaddr;
run;
/********************************************************************/
/* TEST7 */
data test7;
retain ra rb;
ina=0;
inb=0;
merge lib.insdata (in=ina)
lib.newaddr (in=inb);
by id;
if first.id then do;
ra=0;
rb=0;
end;
ka=ina;
kb=inb;
ra=max(ra,ina);
rb=max(rb,inb);
f_id=first.id;
l_id=last.id;
if newaddr ne "" then addr=newaddr;
run;
/********************************************************************/
/* TEST8 */
data vnewaddr / view=vnewaddr;
set lib.newaddr;
by id;
if last.id then output;
run;
data test8;
merge lib.insdata (in=ina)
vnewaddr (in=inb);
by id;
if not(ina) then delete;
if not(inb) then delete;
if newaddr ne "" then addr=newaddr;
run;
/********************************************************************/
/* TEST9 */
data test9;
ina=0; /* Reset if multiple BY values occur in lib.insdata. */
inb=0; /* Reset if multiple BY values occur in vnewaddr. */
merge lib.insdata (in=ina drop=addr)
vnewaddr (in=inb rename=(newaddr=addr));
by id;
if not(ina) then delete; /* Delete OBS with changes and no */
/* customers. */
if not(inb) then delete; /* Delete OBS with customers and */
run; /* no changes. */
/********************************************************************/
/* TEST10 */
data test10;
merge lib.insdata (in=ina drop=addr)
vnewaddr (in=inb rename=(newaddr=addr));
by id;
if not(ina) then delete; /* Delete OBS with changes and no */
/* customers. */
if not(inb) then delete; /* Delete OBS with customers and no */
/* changes. */
if last.id then output; /* Output only the last of all */
/* multiple BY values. */
run;
/********************************************************************/
/* TEST11 */
data vnewaddr / view=vnewaddr;
set lib.newaddr;
by id;
if first.id and last.id then output;
run;
data test11;
merge lib.insdata (in=ina)
vnewaddr (in=inb);
by id;
if not(ina) then delete;
if not(inb) then delete;
if newaddr ne "" then addr=newaddr;
run;
/********************************************************************/
/* TEST12 */
data test12;
retain naddr;
inb=0;
merge lib.insdata (in=ina drop=instype addr)
lib.newaddr (in=inb rename=(newaddr=addr));
by id;
if not(ina) then delete;
if first.id then naddr=0;
if inb then naddr=naddr+1;
if last.id AND naddr=1 then output;
run;
/********************************************************************/
/* TEST13 */
data vnewaddr / view=vnewaddr;
rename newaddr=addr;
retain naddr 0;
set lib.newaddr;
by id;
if first.id then naddr=0;
naddr = naddr + 1;
if last.id AND naddr GE 2 then output;
run;
data test13;
merge lib.insdata (in=ina drop=instype addr)
vnewaddr (in=inb drop=naddr);
by id;
if not(ina) then delete;
if not(inb) then delete;
run;
/********************************************************************/
/* TEST14 */
data test14;
merge lib.insdata (drop=instype)
lib.newaddr (in=inb keep=id);
by id;
if inb then delete;
run;
/********************************************************************/