|
Publishing Framework
Example: Publishing in the Data StepThe following example builds a package, and then explicitly publishes to two queues, and then publishes to a channel defined within the LDAP directory. This example uses the data step, but easily can be changed to use the macro interface.
filename f 'c:\frame.html';
filename c 'c:\contents.html';
filename p 'c:\page.html';
filename b 'c:\body.html';
ods html frame = f contents =c(url="contents.html")
body = b(url="body.html") page=p(url="page.html");
/* run some data steps/procs to generate ODS output */
data b;
do i= 1 to 1000;
output;
end;
run;
data emp;
input fname $ lname $ ages state $ siblings;
cards;
Steph Lyons 32 NC 4
Richard Jones 40 NC 2
Mary White 74 NC 1
Kai Burns 3 NC 1
Dakota Nelson 1 NC 1
Paul Black 79 NC 8
Digger Harris 5 NC 0
Coby Thomas 1 NC 0
Julie Mack 6 NC 1
Amy Gill 3 NC 1
Brian Meadows 16 HA 1
Richard Wills 17 HA 1
Diane Brown 48 CO 4
Pamela Smith 42 HA 4
Joe Thompson 44 WA 10
Michael Grant 23 IL 1
Michael Ford 31 NM 4
Ken Bush 28 NC 1
Brian Carter 27 NC 1
Laurie Clinton 32 NC 1
Kevin Anderson 33 NC 1
Steve Kennedy 33 NC 1
run;
quit;
proc print;run;
proc contents;run;
ods html close;
data _null_;
rc=0;a='a';b='b';c='c';d='d';
length filename $64 mimeType $24 fileType
$10 nameValue $100 description $100;
pid = 0;
nameValue="type=(test) coverage=(filtering,
transports)";
call package_begin(pid,"Main results package.",
nameValue, rc);
if (rc eq 0) then put 'Package begin successful.';
else do;
msg = sysmsg();
put msg;
end;
gifpid=0;
call package_begin(gifpid,"Gif nested package.",'', rc);
if (rc eq 0) then put 'Gif package begin successful.';
else do;
msg = sysmsg();
put msg;
end;
nameValue="type=report, topic=census";
description="North Carolina residents.";
libname = "WORK";
memname="EMP";
call insert_dataset(pid, libname, memname,
description, nameValue, rc);
if rc ne 0 then do;
msg = sysmsg();
put msg;
end;
else
put 'Insert data set successful.';
call insert_html(pid,"fileref:b", "",
"fileref:f", "",
"fileref:c", "",
"fileref:p", "", "ODS HTML Output",'', rc);
if rc ne 0 then do;
msg = sysmsg();
put msg;
end;
else
put 'Insert html successful.';
call insert_dataset(pid,"WORK","b",
"B dataset...",'', rc);
if rc ne 0 then do;
msg = sysmsg();
put msg;
end;
else
put 'Insert data set successful';
/* insert package (nested package */
call insert_package(pid, gifpid,rc);
if rc eq 0 then put 'Insert package successful';
else do;
msg = sysmsg();
put msg;
end;
description = "Gif for marketing campaign.";
filename = "filename:campaign01.01.gif";
fileType = "Binary";
mimeType = "Image/Gif";
call insert_file(gifpid, filename, fileType,
mimeType, description,'', rc);
if rc ne 0 then do;
msg = sysmsg();
put msg;
end;
else
put 'Insert file (gif) successful.';
description = "Test VRML file.";
filename = "filename:test.wrl";
fileType = "text";
mimeType = "model/vrml";
call insert_file(pid,filename, fileType,
mimeType, description,'', rc);
if rc ne 0 then do;
msg = sysmsg();
put msg;
end;
else
put 'Insert file (vrml) successful.';
/* send package to the two queues that are specified */
properties='';
call package_publish(pid, "TO_QUEUE", rc, properties,
"MQSERIES://JSMITH.LOCAL", "MSMQ://JSMITH\transq");
if rc ne 0 then do;
msg = sysmsg();
put msg;
end;
else
put 'Publish successful';
/* publish to the filter test channel
defined in LDAP directory */
ldapinfo =
"LDAP://alpair01.unx.sas.com:8010/o=Alphalite Airways,
c=US";
channel1= 'FilterTest1';
properties='channel_store, subject';
subject="Filter Testing Results";
call package_publish(pid, "TO_SUBSCRIBERS", rc,
properties, ldapinfo, subject, channel1);
if rc ne 0 then do;
msg = sysmsg();
put msg;
end;
else
put 'Publish successful';
call package_end(pid,rc);
if rc ne 0 then do;
msg = sysmsg();
put msg;
end;
else
put 'Package end successful';
run;
quit;
|