data post_urls; infile datalines dsd; length post_url $300; input post_url; datalines; http://blogs.sas.com/content/sasdummy/2012/03/06/be-a-code-poet-laureate/ http://blogs.sas.com/content/sasdummy/2012/03/07/sasgf2012-closing-sessio/ http://blogs.sas.com/content/sasdummy/2012/03/12/making-up-for-lost-time-utc-dst/ http://blogs.sas.com/content/sasdummy/2012/03/15/how-many-obs-sysnobs/ http://blogs.sas.com/content/sasdummy/2012/03/20/sas-program-by-processing/ http://blogs.sas.com/content/sasdummy/2012/03/23/improving-on-a-sas-programming-pattern/ http://blogs.sas.com/content/sasdummy/2012/04/01/new-certification-program-sas-versions-professional/ http://blogs.sas.com/content/sasdummy/2012/04/03/64-bit-versus-32-bit-apps/ http://blogs.sas.com/content/sasdummy/2012/04/11/the-heme-finder-where-ill-be-during-sas-global-forum/ http://blogs.sas.com/content/sasdummy/2012/04/12/build-your-own-sas-data-set-viewer-using-powershell/ http://blogs.sas.com/content/sasdummy/2012/04/17/doing-more-with-sas-enterprise-guide-automation/ http://blogs.sas.com/content/sasdummy/2012/04/18/sas-tech-talks/ http://blogs.sas.com/content/sasdummy/2012/04/19/myths-about-64-bit-computing-on-windows/ http://blogs.sas.com/content/sasdummy/2012/04/29/the-makeup-of-sas-global-forum/ http://blogs.sas.com/content/sasdummy/2012/05/01/64-bit-gotchas/ http://blogs.sas.com/content/sasdummy/2012/05/09/powershell-read-sas-data-files/ http://blogs.sas.com/content/sasdummy/2012/05/15/how-long-will-eg-process-run/ http://blogs.sas.com/content/sasdummy/2012/05/18/using-proc-sql-to-get-the-schema-of-a-mysql-database/ http://blogs.sas.com/content/sasdummy/2012/05/22/windows-reg-query-from-sas/ http://blogs.sas.com/content/sasdummy/2012/05/23/sas-on-a-video-game-system/ http://blogs.sas.com/content/sasdummy/2012/06/04/top-gear-for-sas-professionals-knowledge/ http://blogs.sas.com/content/sasdummy/2012/06/07/egp-search-tool/ http://blogs.sas.com/content/sasdummy/2012/06/12/high-performance-analytics-it-may-be-a-show-is-no-act/ http://blogs.sas.com/content/sasdummy/2012/06/14/read-a-microsoft-date-time-value-into-a-sas-date-time-value/ http://blogs.sas.com/content/sasdummy/2012/07/06/social-media-counts-in-sas/ http://blogs.sas.com/content/sasdummy/2012/07/11/sas-professionals-provides-climate-for-success/ http://blogs.sas.com/content/sasdummy/2012/07/16/listing-the-data-sets-in-a-library-within-your-custom-task/ http://blogs.sas.com/content/sasdummy/2012/07/18/behind-the-scenes-with-sas-visual-analytics/ http://blogs.sas.com/content/sasdummy/2012/07/19/performance-enhancing-sas-notes/ http://blogs.sas.com/content/sasdummy/2012/07/30/fastats-from-sas-eg/ http://blogs.sas.com/content/sasdummy/2012/08/07/im-a-wuss-and-proud-of-it/ http://blogs.sas.com/content/sasdummy/2012/08/14/proc-contents-into-excel/ http://blogs.sas.com/content/sasdummy/2012/08/15/comparing-data-set-schemas-in-sas/ http://blogs.sas.com/content/sasdummy/2012/08/22/using-a-regular-expression-to-validate-a-sas-variable-name/ http://blogs.sas.com/content/sasdummy/2012/08/31/the-case-for-xcmd-privileges-in-sas-enterprise-guide/ http://blogs.sas.com/content/sasdummy/2012/09/18/having-clause-fun-with-sas-enterprise-guide/ http://blogs.sas.com/content/sasdummy/2012/09/24/sas-custom-tasks-wrap-your-variable-names-appropriately/ http://blogs.sas.com/content/sasdummy/2012/10/02/a-custom-tasks-book-by-the-numbers/ http://blogs.sas.com/content/sasdummy/2012/10/03/using-sas-to-convert-ip-addresses-into-numerical-ip-values/ http://blogs.sas.com/content/sasdummy/2012/10/09/special-macro-vars-in-eg/ http://blogs.sas.com/content/sasdummy/2012/10/15/unconventional-typographical-conventions/ http://blogs.sas.com/content/sasdummy/2012/10/19/creating-a-somewhat-unique-id-using-the-uuidgen-function/ http://blogs.sas.com/content/sasdummy/2012/10/29/scm-with-sas-eg/ http://blogs.sas.com/content/sasdummy/2012/11/09/validate-npi-with-sas/ http://blogs.sas.com/content/sasdummy/2012/11/18/sas-data-classes-for-custom-tasks/ http://blogs.sas.com/content/sasdummy/2012/11/30/why-programmer-is-not-in-my-job-title/ http://blogs.sas.com/content/sasdummy/2012/12/06/copy-files-in-sas-eg/ http://blogs.sas.com/content/sasdummy/2012/12/18/using-sas-to-access-data-stored-on-dropbox/ http://blogs.sas.com/content/sasdummy/2013/01/02/a-new-years-surprise/ http://blogs.sas.com/content/sasdummy/2013/01/04/best-sas-tips-from-2012/ http://blogs.sas.com/content/sasdummy/2013/01/07/controlling-access-to-custom-tasks-in-sas-enterprise-guide/ http://blogs.sas.com/content/sasdummy/2013/01/14/a-weekend-full-of-bad-decisions/ http://blogs.sas.com/content/sasdummy/2013/01/15/its-raining-analytics/ http://blogs.sas.com/content/sasdummy/2013/01/16/side-effects-of-a-gptw/ http://blogs.sas.com/content/sasdummy/2013/01/21/turn-your-data-set-into-a-data-step-program/ http://blogs.sas.com/content/sasdummy/2013/01/25/egp-search-tool2/ http://blogs.sas.com/content/sasdummy/2013/01/30/tracking-progress-with-dosubl/ http://blogs.sas.com/content/sasdummy/2013/02/04/hats-and-apps-for-sasgf13/ http://blogs.sas.com/content/sasdummy/2013/02/09/if-netflix-had-used-my-viewing-history-to-create-its-new-show/ http://blogs.sas.com/content/sasdummy/2013/02/12/mathematical-squiggles-in-sas/ http://blogs.sas.com/content/sasdummy/2013/02/22/using-windows-powershell-to-connect-to-a-sas-metadata-server/ http://blogs.sas.com/content/sasdummy/2013/02/25/windows-powershell-sas-metadata-query/ http://blogs.sas.com/content/sasdummy/2013/02/26/upcoming-sas-talks-custom-tasks-for-sas-enterprise-guide/ ; run; proc sql noprint; select count(post_url) into :post_Count from work.post_urls; quit; %macro li_check; /* create a dummy data set to collect results */ data li_shares; length url $ 300 lishares 8; stop; run; /* squelch expected warnings from long URLs */ options noquotelenmax; %do i = 1 %to &post_count; /* pull the next URL off the stack */ proc sql noprint; SYSECHO "Fetching URL &i. of &post_count."; select post_url into :url from work.post_urls(firstobs=&i obs=&i); quit; /* temp holding area for LinkedIn response */ filename li temp; /* call the LinkedIn API */ proc http url="http://www.linkedin.com/countserv/count/share?url=&url." method='GET' /* Specify PROXYHOST= if necessary behind corp firewall */ /* proxyhost="http://yourproxy.com" */ out=li; run; /* use RegEx to gather the "count":n value */ data liresult (keep=url lishares); length line $ 1000 lishares 8; length url $ 300; url = "&url."; infile li; input line; if _n_ = 1 then do; retain li_regex; li_regex = prxparse("/\""count\""\:([0-9]*)/"); end; position = prxmatch(li_regex,line); if (position ^= 0) then do; call prxposn(li_regex, 1, start, length); lishares = substr(line,start,length); end; run; /* clear our temp response file */ filename li clear; /* simple check to make sure we have a data record */ proc sql noprint; select * from liresult; quit; /* if so, append it to the result file */ %if &sqlobs ^= 0 %then %do; proc append base=li_shares data=liresult; run; %end; %end; %mend; %li_check;