Contents Publish Package Interface Previous Next

Example: Publishing in the Data Step

The 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=Alpine 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;


Contents Publish Package Interface Previous Next