<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Saving matrices as sas datasets when using macro and do loop (SAS University Edition) in SAS/IML Software and Matrix Computations</title>
    <link>https://communities.sas.com/t5/SAS-IML-Software-and-Matrix/Saving-matrices-as-sas-datasets-when-using-macro-and-do-loop-SAS/m-p/319042#M3148</link>
    <description>&lt;P&gt;Thank&amp;nbsp;you for the quick reply!&amp;nbsp;It made&amp;nbsp;things much clearer. I solved the problem by changing the placement&amp;nbsp;for END / QUIT&amp;nbsp;and PROC IML. I decided to only look at one year (since not all 14 are of interest and I have limited time at the moment to discover new fancy comands), and thus also not to&amp;nbsp;use a macro. The code is below, if interested.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thank you again!&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;data tmpi; set iiodat.WIO;&lt;BR /&gt;if year = 2000;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;data va; set iiodat.WVA(keep = ctr sec year tva tout);&lt;BR /&gt;if year = 2000;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;data invgo; set invout;&lt;BR /&gt;if year = 2000;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;data fd0; set iiodat.WFD;&lt;BR /&gt;if year = 2000;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;data fd0; set fd0(drop=year);&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;data texpfd; set iiodat.texpfgd;&lt;BR /&gt;if year = 2000;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;data texpfd; set texpfd(drop=year);&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;data texpi; set iiodat.texpint;&lt;BR /&gt;if year = 2000;&lt;BR /&gt;if sec = "TOT" then delete;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;data texpi; set texpi(drop=year);&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;proc iml;&lt;BR /&gt;use&amp;nbsp; tmpi(drop=year);&lt;BR /&gt;read all var _all_ into IO;&lt;BR /&gt;use va(keep=tout);&lt;BR /&gt;read all var _all_ into GO;&lt;BR /&gt;use va(keep=tva);&lt;BR /&gt;read all var _all_ into VA;&lt;BR /&gt;use invgo(keep = invgo);&lt;BR /&gt;read all var _all_ into invgo;&lt;BR /&gt;use fd0;&lt;BR /&gt;read all var _all_ into fd0;&lt;BR /&gt;use texpi(drop = texpi);&lt;BR /&gt;read all var _all_ into expi;&lt;BR /&gt;use texpfd(drop = texpfd domdmd);&lt;BR /&gt;read all var _all_ into expf;&lt;BR /&gt;use texpfd(keep = domdmd);&lt;BR /&gt;read all var _all_ into dfd;&lt;BR /&gt;use texpfd(keep = texpfd);&lt;BR /&gt;read all var _all_ into texpf;&lt;BR /&gt;use texpi(keep = texpi);&lt;BR /&gt;read all var _all_ into texpi;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;texp = expi + expf;&lt;/P&gt;&lt;P&gt;A = IO#t(invgo);&lt;BR /&gt;av = VA#(invgo);&lt;BR /&gt;I2464 = I(2464);&lt;/P&gt;&lt;P&gt;/*Leontief inverse*/&lt;BR /&gt;tcof = inv(i2464-a);&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;store a av tcof fd0 dfd;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;/* Create datasets from matrices */&lt;BR /&gt;create F from fd0;&lt;BR /&gt;append from fd0;&lt;BR /&gt;create av from av;&lt;BR /&gt;append from av;&lt;BR /&gt;create B from tcof;&lt;BR /&gt;append from tcof;&lt;BR /&gt;quit;&lt;/P&gt;</description>
    <pubDate>Wed, 14 Dec 2016 20:32:27 GMT</pubDate>
    <dc:creator>biringstad</dc:creator>
    <dc:date>2016-12-14T20:32:27Z</dc:date>
    <item>
      <title>Saving matrices as sas datasets when using macro and do loop (SAS University Edition)</title>
      <link>https://communities.sas.com/t5/SAS-IML-Software-and-Matrix/Saving-matrices-as-sas-datasets-when-using-macro-and-do-loop-SAS/m-p/318941#M3134</link>
      <description>&lt;P&gt;I construct 3 matrices of interest (&lt;STRONG&gt;av&lt;/STRONG&gt;, &lt;STRONG&gt;fd0&lt;/STRONG&gt; and &lt;STRONG&gt;tcof / denoted V, F and B later&lt;/STRONG&gt;) from 3 sas datasets (WIO, WFD and WVA) through using a macro and do&amp;nbsp;loop below. &lt;STRONG&gt;I want to transform V, F and B&amp;nbsp;to sas datasats&lt;/STRONG&gt; in the end of the loop (highlighted in bold in the code below), but I am not able to do this. &lt;STRONG&gt;Any suggestions on what I can do to fix this?&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The only error message I get in the &lt;STRONG&gt;log&lt;/STRONG&gt; is:&lt;/P&gt;&lt;DIV class="sasWarning"&gt;WARNING: The quoted string currently being processed has become more than 262 bytes long. You&lt;/DIV&gt;&lt;DIV class="sasWarning"&gt;might have unbalanced quotation marks.&lt;/DIV&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Also: when I try to print the matrices after running the code below&amp;nbsp;(using: proc print data = F; run;) nothing happens.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Code:&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;%Macro trade;&lt;BR /&gt;%do j = 2000 %to 2014;&lt;/P&gt;&lt;P&gt;data tmpi; set iiodat.WIO;&lt;BR /&gt;if year = &amp;amp;j;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;data va; set iiodat.WVA(keep = ctr sec year tva tout);&lt;BR /&gt;if year = &amp;amp;j;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;data invgo; set invout;&lt;BR /&gt;if year = &amp;amp;j;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;data &lt;STRONG&gt;fd0&lt;/STRONG&gt;(drop = year); set iiodat.WFD;&lt;BR /&gt;if year = &amp;amp;j;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;data texpfd(drop=year); set iiodat.texpfgd;&lt;BR /&gt;if year = &amp;amp;j;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;data texpi(drop = year); set iiodat.texpint;&lt;BR /&gt;if year = &amp;amp;j;&lt;BR /&gt;if sec = "TOT" then delete;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;proc iml;&lt;BR /&gt;use tmpi(drop=year);&lt;BR /&gt;read all var _all_ into IO;&lt;BR /&gt;use va(keep=tout);&lt;BR /&gt;read all var _all_ into GO;&lt;BR /&gt;use va(keep=tva);&lt;BR /&gt;read all var _all_ into VA;&lt;BR /&gt;use invgo(keep = invgo);&lt;BR /&gt;read all var _all_ into invgo;&lt;BR /&gt;use&lt;STRONG&gt; fd0&lt;/STRONG&gt;;&lt;BR /&gt;read all var _all_ into &lt;STRONG&gt;fd0&lt;/STRONG&gt;;&lt;BR /&gt;use texpi(drop = texpi);&lt;BR /&gt;read all var _all_ into expi;&lt;BR /&gt;use texpfd(drop = texpfd domdmd);&lt;BR /&gt;read all var _all_ into expf;&lt;BR /&gt;use texpfd(keep = domdmd);&lt;BR /&gt;read all var _all_ into dfd;&lt;BR /&gt;use texpfd(keep = texpfd);&lt;BR /&gt;read all var _all_ into texpf;&lt;BR /&gt;use texpi(keep = texpi);&lt;BR /&gt;read all var _all_ into texpi;&lt;BR /&gt;end;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;A = IO#t(invgo);&lt;BR /&gt;&lt;STRONG&gt;av&lt;/STRONG&gt; = VA#(invgo);&lt;BR /&gt;I2464 =I(2464);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;/* lieontif inverse */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;tcof&lt;/STRONG&gt; = inv(i2464-a);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;store a &lt;STRONG&gt;av tcof fd0&lt;/STRONG&gt;;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#00ff00"&gt;/* I denote fd0 = F, av = V and tcof= B */&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;proc iml;&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;create F from fd0;&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;append from fd0;&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;close F;&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;create V from av;&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;append from av;&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;close V;&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;create B from tcof;&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;append from tcof;&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;close B;&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;end;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;data F&amp;amp;i; &lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;run;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;data V&amp;amp;i;&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;run;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;data B&amp;amp;i;&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;run;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;%end;&lt;BR /&gt;%mend trade;&lt;BR /&gt;%trade;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Log:&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;DIV class="sasSource"&gt;1 OPTIONS NONOTES NOSTIMER NOSOURCE NOSYNTAXCHECK;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;2 TITLE;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;3 FOOTNOTE;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;4 OPTIONS LOCALE=nb DFLANG=LOCALE;&lt;/DIV&gt;&lt;DIV class="sasWarning"&gt;&lt;FONT color="#ff0000"&gt;WARNING: The quoted string currently being processed has become more than 262 bytes long. You&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV class="sasWarning"&gt;&lt;FONT color="#ff0000"&gt;might have unbalanced quotation marks.&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;5 DATA _NULL_;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;6 RUN;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;7 OPTIONS VALIDVARNAME=V7;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;8 FILENAME _HTMLOUT TEMP;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;9 FILENAME _RTFOUT TEMP ENCODING='UTF-8';&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;10 FILENAME _PDFOUT TEMP;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;11 FILENAME _GSFNAME TEMP;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;12 FILENAME _DATAOUT TEMP;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;13 %LET SYSCC=0;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;14 %LET _CLIENTAPP=SAS Studio;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;15 %LET _CLIENTAPPVERSION=3.5;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;61 &amp;amp;GRAPHTERM; ;*';*";*/;RUN;QUIT;&lt;/DIV&gt;&lt;DIV class="sasError"&gt;______________&lt;/DIV&gt;&lt;DIV class="sasError"&gt;49&lt;/DIV&gt;&lt;DIV class="sasNote"&gt;NOTE 49-169: The meaning of an identifier after a quoted string might change in a future SAS&lt;/DIV&gt;&lt;DIV class="sasNote"&gt;release. Inserting white space between a quoted string and the succeeding identifier&lt;/DIV&gt;&lt;DIV class="sasNote"&gt;is recommended.&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;16 %LET _SASPROGRAMFILE = %BQUOTE(/folders/myfolders/sasprogram4.sas);&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;17 %LET _BASEURL = %BQUOTE(http://localhost:10080/SASStudio/);&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;18 %LET _EXECENV=SASStudio;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;19 DATA _NULL_;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;20 CALL&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;20 ! SYMPUT("GRAPHINIT"&lt;/DIV&gt;&lt;DIV class="sasError"&gt;_&lt;/DIV&gt;&lt;DIV class="sasError"&gt;49&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;20 ! ,"");&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;21 CALL&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;21 ! SYMPUT("GRAPHTERM"&lt;/DIV&gt;&lt;DIV class="sasError"&gt;_&lt;/DIV&gt;&lt;DIV class="sasError"&gt;49&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;21 ! ,"");&lt;/DIV&gt;&lt;DIV class="sasNote"&gt;NOTE 49-169: The meaning of an identifier after a quoted string might change in a future SAS&lt;/DIV&gt;&lt;DIV class="sasNote"&gt;release. Inserting white space between a quoted string and the succeeding identifier&lt;/DIV&gt;&lt;DIV class="sasNote"&gt;is recommended.&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;22 RC=TSLVL('GEOCODE','N');&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;23 _ERROR_=0;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;24 IF (RC^=' ') THEN DO;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;25 CALL SYMPUT("GRAPHINIT","GOPTIONS RESET=ALL GSFNAME=_GSFNAME;");&lt;/DIV&gt;&lt;DIV class="sasError"&gt;___ ________________&lt;/DIV&gt;&lt;DIV class="sasError"&gt;49 49&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;26 CALL SYMPUT("GRAPHTERM","GOPTIONS NOACCESSIBLE;");&lt;/DIV&gt;&lt;DIV class="sasError"&gt;___ ___________________________________&lt;/DIV&gt;&lt;DIV class="sasError"&gt;49 49&lt;/DIV&gt;&lt;DIV class="sasNote"&gt;NOTE 49-169: The meaning of an identifier after a quoted string might change in a future SAS&lt;/DIV&gt;&lt;DIV class="sasNote"&gt;release. Inserting white space between a quoted string and the succeeding identifier&lt;/DIV&gt;&lt;DIV class="sasNote"&gt;is recommended.&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;27 END;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;28 RUN;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;29 DATA _NULL_;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;30 RC=SYSPROD("PRODNUM002"&lt;/DIV&gt;&lt;DIV class="sasError"&gt;_&lt;/DIV&gt;&lt;DIV class="sasError"&gt;49&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;30 ! );&lt;/DIV&gt;&lt;DIV class="sasNote"&gt;NOTE 49-169: The meaning of an identifier after a quoted string might change in a future SAS&lt;/DIV&gt;&lt;DIV class="sasNote"&gt;release. Inserting white space between a quoted string and the succeeding identifier&lt;/DIV&gt;&lt;DIV class="sasNote"&gt;is recommended.&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;31 IF (RC^=1) THEN DO;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;32 CALL&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;32 ! SYMPUT("GRAPHINIT"&lt;/DIV&gt;&lt;DIV class="sasError"&gt;_&lt;/DIV&gt;&lt;DIV class="sasError"&gt;49&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;32 ! ,"");&lt;/DIV&gt;&lt;DIV class="sasNote"&gt;NOTE 49-169: The meaning of an identifier after a quoted string might change in a future SAS&lt;/DIV&gt;&lt;DIV class="sasNote"&gt;release. Inserting white space between a quoted string and the succeeding identifier&lt;/DIV&gt;&lt;DIV class="sasNote"&gt;is recommended.&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;33 CALL SYMPUT("GRAPHTERM","");&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;34 END;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;35 RUN;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;36 %LET _DATAOUT_MIME_TYPE=;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;37 %LET _DATAOUT_NAME=;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;38 %LET _DATAOUT_TABLE=;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;39 %LET _DATAOUT_URL=;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;40 %SYMDEL _DATAOUT_MIME_TYPE _DATAOUT_NAME _DATAOUT_URL _DATAOUT_TABLE;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;41 %LET _SASWS_ = %BQUOTE(/folders/myfolders);&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;42 %LET _SASWSTEMP_=%BQUOTE(/folders/myfolders/.images/8f8d00a9-0c97-4413-b01c-af46324a0b01)&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;42 ! ;&lt;/DIV&gt;&lt;DIV class="sasWarning"&gt;&lt;FONT color="#ff0000"&gt;WARNING: The quoted string currently being processed has become more than 262 bytes long. You&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV class="sasWarning"&gt;&lt;FONT color="#ff0000"&gt;might have unbalanced quotation marks.&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;43 ODS LISTING CLOSE;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;44 OPTIONS PRINTERPATH=PDF;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;45 ODS AUTONAVIGATE OFF;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;46 ODS GRAPHICS ON;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;47 ODS HTML5 (ID=WEB) DEVICE=PNG GPATH="&amp;amp;_SASWSTEMP_" ENCODING=utf8 FILE=_HTMLOUT&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;47 ! (TITLE='Results: sasprogram4.sas') STYLE=Htmlblue OPTIONS(BITMAP_MODE='INLINE'&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;47 ! SVG_MODE='INLINE' CSS_PREFIX='.ods_8f8d00a9-0c97-4413-b01c-af46324a0b01'&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;47 ! BODY_ID='div_8f8d00a9-0c97-4413-b01c-af46324a0b01' );&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;48 ODS RTF (ID=WEB) STYLE=Rtf FILE=_RTFOUT sasdate;&lt;/DIV&gt;&lt;DIV class="sasWarning"&gt;&lt;FONT color="#ff0000"&gt;WARNING: The quoted string currently being processed has become more than 262 bytes long. You&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV class="sasWarning"&gt;&lt;FONT color="#ff0000"&gt;might have unbalanced quotation marks.&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;49 ODS PDF (ID=WEB) STYLE=Pearl FILE=_PDFOUT;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;50 &amp;amp;GRAPHINIT;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;51 OPTIONS FIRSTOBS=1;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;52 OPTIONS OBS=MAX;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;53 OPTIONS DTRESET DATE NUMBER NOTES;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;54 OPTIONS NOTES STIMER SOURCE NOSYNTAXCHECK;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;55&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;56 libname IIOdat '/folders/myfolders';&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;57&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;58 options pagesize = 400;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;59 options linesize = 100;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;60 options missing = '.';&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;61&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;62 PROC IMPORT DATAFILE="/folders/myfolders/mapfile.xlsx"&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;63 OUT=ctrlabel&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;64 DBMS=xlsx&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;65 REPLACE;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;66 Getnames=YES;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;67 sheet=ctr;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;68&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;69 proc sort; by ctr;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;70 RUN;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;71&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;72&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;73 /* avoid division by zero in matrix computation */&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;74&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;75 data invout; set iiodat.wva(keep = ctr sec year tout);&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;76 if tout &amp;gt; 0 then invgo = 1/tout;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;77 else invgo = 0;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;78 run;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;79&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;80 data yearlabel(keep = ctr sec); set iiodat.wva;&lt;/DIV&gt;&lt;DIV class="sasWarning"&gt;&lt;FONT color="#ff0000"&gt;WARNING: The quoted string currently being processed has become more than 262 bytes long. You&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV class="sasWarning"&gt;&lt;FONT color="#ff0000"&gt;might have unbalanced quotation marks.&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;81 if year = 2000;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;82 run;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;83&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;84 /* Macro to decompose each country's gross exports at sector level */&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;85&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;86 %Macro trade;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;87 %do j = 2000 %to 2014;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;88&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;89 data tmpi; set iiodat.WIO;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;90 if year = &amp;amp;j;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;91 run;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;92&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;93 data va; set iiodat.WVA(keep = ctr sec year tva tout);&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;94 if year = &amp;amp;j;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;95 run;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;96&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;97 data invgo; set invout;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;98 if year = &amp;amp;j;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;99 run;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;100&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;101 data fd0(drop = year); set iiodat.WFD;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;102 if year = &amp;amp;j;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;103 run;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;104&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;105 data texpfd(drop=year); set iiodat.texpfgd;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;106 if year = &amp;amp;j;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;107 run;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;108&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;109 data texpi(drop = year); set iiodat.texpint;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;110 if year = &amp;amp;j;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;111 if sec = "TOT" then delete;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;112 run;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;113&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;114 proc iml;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;115 use tmpi(drop=year);&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;116 read all var _all_ into IO;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;117 use va(keep=tout);&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;118 read all var _all_ into GO;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;119 use va(keep=tva);&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;120 read all var _all_ into VA;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;121 use invgo(keep = invgo);&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;122 read all var _all_ into invgo;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;123 use fd0;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;124 read all var _all_ into fd0;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;125 use texpi(drop = texpi);&lt;/DIV&gt;&lt;DIV class="sasWarning"&gt;&lt;FONT color="#ff0000"&gt;WARNING: The quoted string currently being processed has become more than 262 bytes long. You&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV class="sasWarning"&gt;&lt;FONT color="#ff0000"&gt;might have unbalanced quotation marks.&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;126 read all var _all_ into expi;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;127 use texpfd(drop = texpfd domdmd);&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;128 read all var _all_ into expf;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;129 use texpfd(keep = domdmd);&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;130 read all var _all_ into dfd;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;131 use texpfd(keep = texpfd);&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;132 read all var _all_ into texpf;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;133 use texpi(keep = texpi);&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;134 read all var _all_ into texpi;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;135 end;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;136&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;137 texp = expi + expf;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;138&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;139 A = IO#t(invgo);&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;140 av = VA#(invgo);&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;141 I2464 =I(2464);&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;142&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;143 /* lieontif inverse */&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;144 tcof = inv(i2464-a);&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;145&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;146 store a av tcof fd0;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;147&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;&lt;STRONG&gt;148 proc iml;&lt;/STRONG&gt;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;&lt;STRONG&gt;149 create F from fd0;&lt;/STRONG&gt;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;&lt;STRONG&gt;150 append from fd0;&lt;/STRONG&gt;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;&lt;STRONG&gt;151 close F;&lt;/STRONG&gt;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;&lt;STRONG&gt;152 create V from av;&lt;/STRONG&gt;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;&lt;STRONG&gt;153 append from av;&lt;/STRONG&gt;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;&lt;STRONG&gt;154 close V;&lt;/STRONG&gt;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;&lt;STRONG&gt;155 create B from tcof;&lt;/STRONG&gt;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;&lt;STRONG&gt;156 append from tcof;&lt;/STRONG&gt;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;&lt;STRONG&gt;157 close B;&lt;/STRONG&gt;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;&lt;STRONG&gt;158 end;&lt;/STRONG&gt;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;&lt;STRONG&gt;159&lt;/STRONG&gt;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;&lt;STRONG&gt;160 data F&amp;amp;i;&lt;/STRONG&gt;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;&lt;STRONG&gt;161 run;&lt;/STRONG&gt;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;&lt;STRONG&gt;162&lt;/STRONG&gt;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;&lt;STRONG&gt;163 data V&amp;amp;i;&lt;/STRONG&gt;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;&lt;STRONG&gt;164 run;&lt;/STRONG&gt;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;&lt;STRONG&gt;165&lt;/STRONG&gt;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;&lt;STRONG&gt;166 data B&amp;amp;i;&lt;/STRONG&gt;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;&lt;STRONG&gt;167 run;&lt;/STRONG&gt;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;&lt;STRONG&gt;168&lt;/STRONG&gt;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;169 %end;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;170 %mend trade;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;171 %trade;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;172&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;173 OPTIONS NONOTES NOSTIMER NOSOURCE NOSYNTAXCHECK;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;174 ODS HTML CLOSE;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;175 &amp;amp;GRAPHTERM; ;*';*";*/;RUN;QUIT;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;176 QUIT;RUN;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;177 ODS HTML5 (ID=WEB) CLOSE;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;178&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;179 ODS RTF (ID=WEB) CLOSE;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;180 ODS PDF (ID=WEB) CLOSE;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;181 FILENAME _GSFNAME;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;182 DATA _NULL_;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;183 RUN;&lt;/DIV&gt;&lt;DIV class="sasSource"&gt;184 OPTIONS NOTES STIMER SOURCE SYNTAXCHECK;&lt;/DIV&gt;</description>
      <pubDate>Wed, 14 Dec 2016 14:31:10 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-IML-Software-and-Matrix/Saving-matrices-as-sas-datasets-when-using-macro-and-do-loop-SAS/m-p/318941#M3134</guid>
      <dc:creator>biringstad</dc:creator>
      <dc:date>2016-12-14T14:31:10Z</dc:date>
    </item>
    <item>
      <title>Re: Saving matrices as sas datasets when using macro and do loop (SAS University Edition)</title>
      <link>https://communities.sas.com/t5/SAS-IML-Software-and-Matrix/Saving-matrices-as-sas-datasets-when-using-macro-and-do-loop-SAS/m-p/318945#M3135</link>
      <description>&lt;P&gt;The unbalanced quotes issue is probably from some previous drafts. Exit SAS and restart. In the future, you can &lt;A href="http://blogs.sas.com/content/iml/2013/08/19/errors-that-cause-sas-to-freeze.html" target="_self"&gt;submit the MAGIC STRING&lt;/A&gt; to eliminate close any open&amp;nbsp;quotes/comments/etc.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;In your program, I see at least two mistakes:&lt;/P&gt;
&lt;P&gt;1. The END statement is used to complete a DO/END block. &amp;nbsp;Perhaps you are confusing END with QUIT, which exits PROC IML.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;2. When you type PROC IML, SAS exits any previous procedures and starts PROC IML in a fresh/new state. &amp;nbsp;In your program you use PROC IML before you attempt to write the SAS data sets. &amp;nbsp;That statement exits the previous program and clears memory, so the SAS data sets will not be written correctly. Delete the entire line just after the comment &lt;SPAN&gt;/* I denote fd0 = F, av = V and tcof= B */&lt;/SPAN&gt;&amp;nbsp;.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I'll add that you don't nee the macro at all. &amp;nbsp;SAS/IML can read multiple data sets in a single session, and supports where clauses so that you can&amp;nbsp;read each year at a time. See&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.sas.com/content/iml/2013/07/31/read-100-data-sets-into-matrices.html" target="_self"&gt;Read multiple data sets into SAS/IML&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.sas.com/content/iml/2016/04/04/where-clause-in-sasiml.html" target="_self"&gt;The WHERE clause in SAS/IML&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;and for a very advanced example&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.sas.com/content/iml/2015/11/02/search-all-variables.html" target="_self"&gt;Search all variables in all data sets&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Or you can keep the macro. Your choice! &lt;span class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;🙂&lt;/span&gt;&lt;/P&gt;</description>
      <pubDate>Wed, 14 Dec 2016 14:58:17 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-IML-Software-and-Matrix/Saving-matrices-as-sas-datasets-when-using-macro-and-do-loop-SAS/m-p/318945#M3135</guid>
      <dc:creator>Rick_SAS</dc:creator>
      <dc:date>2016-12-14T14:58:17Z</dc:date>
    </item>
    <item>
      <title>Re: Saving matrices as sas datasets when using macro and do loop (SAS University Edition)</title>
      <link>https://communities.sas.com/t5/SAS-IML-Software-and-Matrix/Saving-matrices-as-sas-datasets-when-using-macro-and-do-loop-SAS/m-p/318967#M3136</link>
      <description>&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;I put the following  magic string on function 12.
All I have to do is hit F12, highlight and hit RMB.
Takes about 1 second for me to fix the issue.

Works best in the more powerfull old text editor?, not EE, EG or SAS Studio

;;;;/*'*/ *);*};*];*/;/*"*/;%mend;run;quit;%end;end;run;endcomp;%utlfix;

%macro utlfix(dum);
* fix frozen sas and restore to invocation ;
 dm "odsresults;clear;";
ods results off;
 options ls=171 ps=65;run;quit;
 ods listing;
 ods select all;
 ods excel close;
 ods graphics off;
 proc printto;run;
 goptions reset=all;
 endsubmit;
 endrsubmit;
 run;quit;
 %utlopts;

%mend utlfix;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Wed, 14 Dec 2016 15:43:19 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-IML-Software-and-Matrix/Saving-matrices-as-sas-datasets-when-using-macro-and-do-loop-SAS/m-p/318967#M3136</guid>
      <dc:creator>rogerjdeangelis</dc:creator>
      <dc:date>2016-12-14T15:43:19Z</dc:date>
    </item>
    <item>
      <title>Re: Saving matrices as sas datasets when using macro and do loop (SAS University Edition)</title>
      <link>https://communities.sas.com/t5/SAS-IML-Software-and-Matrix/Saving-matrices-as-sas-datasets-when-using-macro-and-do-loop-SAS/m-p/318970#M3137</link>
      <description>As a side note&lt;BR /&gt;I always use the combination&lt;BR /&gt;run;quit;&lt;BR /&gt;for two reasons&lt;BR /&gt;It always works and will give an error for run group processing , which I can then fix.&lt;BR /&gt;&lt;BR /&gt;1. If I highlight a datastep and RMB then I am assured it will run.&lt;BR /&gt;&lt;BR /&gt;2. I am getting old and do not want to clutter my mind with 'less; useful commands.&lt;BR /&gt;&lt;BR /&gt;I also always use 'cards4' and ';;;;' because it seems to always work and again I am getting old and rather not clutter my mind.&lt;BR /&gt;&lt;BR /&gt;</description>
      <pubDate>Wed, 14 Dec 2016 15:48:41 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-IML-Software-and-Matrix/Saving-matrices-as-sas-datasets-when-using-macro-and-do-loop-SAS/m-p/318970#M3137</guid>
      <dc:creator>rogerjdeangelis</dc:creator>
      <dc:date>2016-12-14T15:48:41Z</dc:date>
    </item>
    <item>
      <title>Re: Saving matrices as sas datasets when using macro and do loop (SAS University Edition)</title>
      <link>https://communities.sas.com/t5/SAS-IML-Software-and-Matrix/Saving-matrices-as-sas-datasets-when-using-macro-and-do-loop-SAS/m-p/319042#M3148</link>
      <description>&lt;P&gt;Thank&amp;nbsp;you for the quick reply!&amp;nbsp;It made&amp;nbsp;things much clearer. I solved the problem by changing the placement&amp;nbsp;for END / QUIT&amp;nbsp;and PROC IML. I decided to only look at one year (since not all 14 are of interest and I have limited time at the moment to discover new fancy comands), and thus also not to&amp;nbsp;use a macro. The code is below, if interested.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thank you again!&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;data tmpi; set iiodat.WIO;&lt;BR /&gt;if year = 2000;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;data va; set iiodat.WVA(keep = ctr sec year tva tout);&lt;BR /&gt;if year = 2000;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;data invgo; set invout;&lt;BR /&gt;if year = 2000;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;data fd0; set iiodat.WFD;&lt;BR /&gt;if year = 2000;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;data fd0; set fd0(drop=year);&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;data texpfd; set iiodat.texpfgd;&lt;BR /&gt;if year = 2000;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;data texpfd; set texpfd(drop=year);&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;data texpi; set iiodat.texpint;&lt;BR /&gt;if year = 2000;&lt;BR /&gt;if sec = "TOT" then delete;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;data texpi; set texpi(drop=year);&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;proc iml;&lt;BR /&gt;use&amp;nbsp; tmpi(drop=year);&lt;BR /&gt;read all var _all_ into IO;&lt;BR /&gt;use va(keep=tout);&lt;BR /&gt;read all var _all_ into GO;&lt;BR /&gt;use va(keep=tva);&lt;BR /&gt;read all var _all_ into VA;&lt;BR /&gt;use invgo(keep = invgo);&lt;BR /&gt;read all var _all_ into invgo;&lt;BR /&gt;use fd0;&lt;BR /&gt;read all var _all_ into fd0;&lt;BR /&gt;use texpi(drop = texpi);&lt;BR /&gt;read all var _all_ into expi;&lt;BR /&gt;use texpfd(drop = texpfd domdmd);&lt;BR /&gt;read all var _all_ into expf;&lt;BR /&gt;use texpfd(keep = domdmd);&lt;BR /&gt;read all var _all_ into dfd;&lt;BR /&gt;use texpfd(keep = texpfd);&lt;BR /&gt;read all var _all_ into texpf;&lt;BR /&gt;use texpi(keep = texpi);&lt;BR /&gt;read all var _all_ into texpi;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;texp = expi + expf;&lt;/P&gt;&lt;P&gt;A = IO#t(invgo);&lt;BR /&gt;av = VA#(invgo);&lt;BR /&gt;I2464 = I(2464);&lt;/P&gt;&lt;P&gt;/*Leontief inverse*/&lt;BR /&gt;tcof = inv(i2464-a);&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;store a av tcof fd0 dfd;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;/* Create datasets from matrices */&lt;BR /&gt;create F from fd0;&lt;BR /&gt;append from fd0;&lt;BR /&gt;create av from av;&lt;BR /&gt;append from av;&lt;BR /&gt;create B from tcof;&lt;BR /&gt;append from tcof;&lt;BR /&gt;quit;&lt;/P&gt;</description>
      <pubDate>Wed, 14 Dec 2016 20:32:27 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-IML-Software-and-Matrix/Saving-matrices-as-sas-datasets-when-using-macro-and-do-loop-SAS/m-p/319042#M3148</guid>
      <dc:creator>biringstad</dc:creator>
      <dc:date>2016-12-14T20:32:27Z</dc:date>
    </item>
  </channel>
</rss>

