<?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: %CIF macro in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/CIF-macro/m-p/688197#M209020</link>
    <description>&lt;P&gt;I know nothing about this macro, but there is a very telling error in your log&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;SPAN&gt;ERROR: Procedure IML not found.&lt;/SPAN&gt;&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;P&gt;Do you have IML installed?&lt;/P&gt;</description>
    <pubDate>Thu, 01 Oct 2020 13:57:22 GMT</pubDate>
    <dc:creator>CurtisMackWSIPP</dc:creator>
    <dc:date>2020-10-01T13:57:22Z</dc:date>
    <item>
      <title>%CIF macro</title>
      <link>https://communities.sas.com/t5/SAS-Programming/CIF-macro/m-p/688190#M209015</link>
      <description>&lt;P&gt;Using SAS 9.4&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I am attempting to run the %CIF macro running the following code:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;options mprint;&lt;/P&gt;
&lt;P&gt;%CIF (data= check,out= CIF, time= TT_censor_date, status= binary_amputation, group=binary_gender, event=1);&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;TT_censor_date is a numeric variable&lt;/P&gt;
&lt;P&gt;binary_amputation is 1/0 numeric variable (0 indicates no amp)&lt;/P&gt;
&lt;P&gt;binary_gender&amp;nbsp;1/0 numeric variable (0 indicates male)&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Below is an example of the variables I am using from my data set:&lt;/P&gt;
&lt;P&gt;data have;&lt;BR /&gt;input id tt_censor_date binary_amputation binary_gender;&lt;BR /&gt;datalines;&lt;BR /&gt;1 8 1 0&lt;BR /&gt;2 50 0 1&lt;BR /&gt;3 100 1 1&lt;BR /&gt;4 200 0 0&lt;BR /&gt;5 679 1 0&lt;BR /&gt;;&lt;BR /&gt;run;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;when I run the macro I get the following error in the log:&lt;/P&gt;
&lt;P&gt;1 The SAS System 08:06 Thursday, October 1, 2020&lt;/P&gt;
&lt;P&gt;1 ;*';*";*/;quit;run;&lt;BR /&gt;2 OPTIONS PAGENO=MIN;&lt;BR /&gt;3 %LET _CLIENTTASKLABEL='CR_100120';&lt;BR /&gt;4 %LET _CLIENTPROCESSFLOWNAME='Process Flow';&lt;BR /&gt;5 %LET _CLIENTPROJECTPATH='';&lt;BR /&gt;6 %LET _CLIENTPROJECTPATHHOST='';&lt;BR /&gt;7 %LET _CLIENTPROJECTNAME='';&lt;BR /&gt;8 %LET _SASPROGRAMFILE='G:\Outcomes Research\Foot and Ankle Projects\Davis\FA079 and FA088 - TMA Amputation - Hodges&lt;BR /&gt;8 ! Davis\TMA to BKA or AKA\data\September 2020\CR_100120.sas';&lt;BR /&gt;9 %LET _SASPROGRAMFILEHOST='OCRSPC028';&lt;BR /&gt;10 &lt;BR /&gt;11 ODS _ALL_ CLOSE;&lt;BR /&gt;12 OPTIONS DEV=PNG;&lt;BR /&gt;13 GOPTIONS XPIXELS=0 YPIXELS=0;&lt;BR /&gt;14 FILENAME EGSR TEMP;&lt;BR /&gt;15 ODS tagsets.sasreport13(ID=EGSR) FILE=EGSR&lt;BR /&gt;16 STYLE=HTMLBlue&lt;BR /&gt;17 STYLESHEET=(URL="file:///C:/Program%20Files%20(x86)/SASHome/x86/SASEnterpriseGuide/7.1/Styles/HTMLBlue.css")&lt;BR /&gt;18 NOGTITLE&lt;BR /&gt;19 NOGFOOTNOTE&lt;BR /&gt;20 GPATH=&amp;amp;sasworklocation&lt;BR /&gt;21 ENCODING=UTF8&lt;BR /&gt;22 options(rolap="on")&lt;BR /&gt;23 ;&lt;BR /&gt;24 &lt;BR /&gt;25 GOPTIONS ACCESSIBLE;&lt;BR /&gt;26 options mprint;&lt;BR /&gt;MPRINT(CIF): ;&lt;BR /&gt;27 %CIF (data= check,out= CIF, time= TT_censor_date, status= binary_amputation, group=binary_gender, event=1, title=CIF&lt;BR /&gt;27 ! curves);&lt;BR /&gt;MPRINT(CIF): options nonotes;&lt;BR /&gt;MPRINT(CIF): proc contents data=check noprint out=_c;&lt;BR /&gt;MPRINT(CIF): run;&lt;BR /&gt;MPRINT(CIF): data _null_;&lt;BR /&gt;MPRINT(CIF): length x y $32;&lt;BR /&gt;MPRINT(CIF): set _c;&lt;BR /&gt;MPRINT(CIF): x=lowcase(NAME);&lt;BR /&gt;MPRINT(CIF): y=lowcase("TT_censor_date");&lt;BR /&gt;MPRINT(CIF): if x=y then do;&lt;BR /&gt;MPRINT(CIF): if TYPE=1 then call symput('TimeVar', put(0,1.));&lt;BR /&gt;MPRINT(CIF): else call symput('TimeVar', put(2,1.));&lt;BR /&gt;MPRINT(CIF): end;&lt;BR /&gt;MPRINT(CIF): y=lowcase("binary_amputation");&lt;BR /&gt;MPRINT(CIF): if x=y then do;&lt;BR /&gt;MPRINT(CIF): if TYPE=1 then call symput('StatusVar', put(0,1.));&lt;BR /&gt;MPRINT(CIF): else call symput('StatusVar', put(2,1.));&lt;BR /&gt;MPRINT(CIF): end;&lt;BR /&gt;MPRINT(CIF): y=lowcase("binary_gender");&lt;BR /&gt;MPRINT(CIF): if x=y then do;&lt;BR /&gt;MPRINT(CIF): if TYPE=1 then call symput('GroupVar', put(0,1.));&lt;BR /&gt;MPRINT(CIF): else call symput('GroupVar', put(2,1.));&lt;BR /&gt;MPRINT(CIF): end;&lt;BR /&gt;MPRINT(CIF): ;&lt;BR /&gt;MPRINT(CIF): call symput('StrataVar', put(3,1.));&lt;BR /&gt;MPRINT(CIF): run;&lt;BR /&gt;MPRINT(CIF): data _null_;&lt;BR /&gt;MPRINT(CIF): list= lowcase(symget('options'));&lt;BR /&gt;MPRINT(CIF): i = index(list, 'noplot');&lt;BR /&gt;2 The SAS System 08:06 Thursday, October 1, 2020&lt;/P&gt;
&lt;P&gt;MPRINT(CIF): if i then substr(list, i, 6) = ' ';&lt;BR /&gt;MPRINT(CIF): call symput('noplotflag', put(i gt 0, 1.));&lt;BR /&gt;MPRINT(CIF): i = index(list, 'plotcl');&lt;BR /&gt;MPRINT(CIF): if i then substr(list, i, 6) = ' ';&lt;BR /&gt;MPRINT(CIF): call symput('plotclflag', put(i gt 0, 1.));&lt;BR /&gt;MPRINT(CIF): i = index(list, 'notest');&lt;BR /&gt;MPRINT(CIF): if i then substr(list, i, 6) = ' ';&lt;BR /&gt;MPRINT(CIF): call symput('notestflag', put(i gt 0, 1.));&lt;BR /&gt;MPRINT(CIF): i = index(list, 'nocifest');&lt;BR /&gt;MPRINT(CIF): if i then substr(list, i, &lt;span class="lia-unicode-emoji" title=":smiling_face_with_sunglasses:"&gt;😎&lt;/span&gt; = ' ';&lt;BR /&gt;MPRINT(CIF): call symput('nocifestflag', put(i gt 0, 1.));&lt;BR /&gt;MPRINT(CIF): alpha=.05;&lt;BR /&gt;MPRINT(CIF): alpha=.05;&lt;BR /&gt;MPRINT(CIF): call symput('Confidence',trim(put(100*(1-alpha),best8. -l)));&lt;BR /&gt;MPRINT(CIF): ne=countw(symget('event'),' ');&lt;BR /&gt;MPRINT(CIF): call symput('ne',put(ne,best8. -l));&lt;BR /&gt;MPRINT(CIF): ncens=countw(symget('censored'),' ');&lt;BR /&gt;MPRINT(CIF): call symput('ncens',put(ncens,best8. -l));&lt;BR /&gt;MPRINT(CIF): run;&lt;BR /&gt;MPRINT(CIF): data _null_;&lt;BR /&gt;MPRINT(CIF): set check;&lt;BR /&gt;MPRINT(CIF): array _event_[1 ] _temporary_(1);&lt;BR /&gt;MPRINT(CIF): array censored[1 ] _temporary_(0);&lt;BR /&gt;MPRINT(CIF): ;&lt;BR /&gt;MPRINT(CIF): zevent=0;&lt;BR /&gt;MPRINT(CIF): zcensored=0;&lt;BR /&gt;MPRINT(CIF): do i=1 to 1 ;&lt;BR /&gt;MPRINT(CIF): if binary_amputation = _event_[i] then do;&lt;BR /&gt;MPRINT(CIF): zevent=1;&lt;BR /&gt;MPRINT(CIF): goto skip1;&lt;BR /&gt;MPRINT(CIF): end;&lt;BR /&gt;MPRINT(CIF): end;&lt;BR /&gt;MPRINT(CIF): skip1:;&lt;BR /&gt;MPRINT(CIF): do i=1 to 1 ;&lt;BR /&gt;MPRINT(CIF): if binary_amputation = censored[i] then do;&lt;BR /&gt;MPRINT(CIF): zcensored=1;&lt;BR /&gt;MPRINT(CIF): go to skip2;&lt;BR /&gt;MPRINT(CIF): end;&lt;BR /&gt;MPRINT(CIF): end;&lt;BR /&gt;MPRINT(CIF): skip2:;&lt;BR /&gt;MPRINT(CIF): if zevent=1 and zcensored=1 then do;&lt;BR /&gt;MPRINT(CIF): call symput('s11',trim(left(put(binary_amputation,best8.))));&lt;BR /&gt;MPRINT(CIF): stop;&lt;BR /&gt;MPRINT(CIF): end;&lt;BR /&gt;MPRINT(CIF): if zevent=1 then do;&lt;BR /&gt;MPRINT(CIF): call symput('nev',put(1,1.));&lt;BR /&gt;MPRINT(CIF): end;&lt;BR /&gt;MPRINT(CIF): run;&lt;BR /&gt;MPRINT(CIF): run;&lt;BR /&gt;MPRINT(CIF): data _null_;&lt;BR /&gt;MPRINT(CIF): set check;&lt;BR /&gt;MPRINT(CIF): length l $ 60;&lt;BR /&gt;MPRINT(CIF): call vname(TT_censor_date, l);&lt;BR /&gt;MPRINT(CIF): call symputx('tname', l, 'L');&lt;BR /&gt;MPRINT(CIF): call label(TT_censor_date, l);&lt;BR /&gt;MPRINT(CIF): call symputx('tlabel', l, 'L');&lt;BR /&gt;MPRINT(CIF): call vname(binary_gender, l);&lt;BR /&gt;MPRINT(CIF): call symputx('gname', l, 'L');&lt;BR /&gt;3 The SAS System 08:06 Thursday, October 1, 2020&lt;/P&gt;
&lt;P&gt;MPRINT(CIF): call label(binary_gender, l);&lt;BR /&gt;MPRINT(CIF): call symputx('glabel',l , 'L');&lt;BR /&gt;MPRINT(CIF): call symputx('grpFmt', VFORMAT(binary_gender));&lt;BR /&gt;MPRINT(CIF): call symputx('stratlabel',"Strata" , 'L');&lt;BR /&gt;MPRINT(CIF): call symputx('stratname', "Strata", 'L');&lt;BR /&gt;MPRINT(CIF): ;&lt;BR /&gt;MPRINT(CIF): run;&lt;BR /&gt;MPRINT(CIF): data _d(drop=binary_gender);&lt;BR /&gt;MPRINT(CIF): set check;&lt;BR /&gt;MPRINT(CIF): fbinary_gender= put(binary_gender, BEST12.);&lt;BR /&gt;MPRINT(CIF): IF CMISS(TT_censor_date,binary_amputation, fbinary_gender) &amp;gt; 0 THEN DELETE;&lt;BR /&gt;MPRINT(CIF): run;&lt;BR /&gt;MPRINT(CIF): data _null_;&lt;BR /&gt;MPRINT(CIF): call symputx('nobs0',nobs0);&lt;BR /&gt;MPRINT(CIF): stop;&lt;BR /&gt;MPRINT(CIF): set check nobs=nobs0;&lt;BR /&gt;MPRINT(CIF): run;&lt;BR /&gt;MPRINT(CIF): data _null_;&lt;BR /&gt;MPRINT(CIF): call symputx('nobs1',nobs1);&lt;BR /&gt;MPRINT(CIF): stop;&lt;BR /&gt;MPRINT(CIF): set _d nobs=nobs1;&lt;BR /&gt;MPRINT(CIF): run;&lt;BR /&gt;ERROR: Procedure IML not found.&lt;BR /&gt;MPRINT(CIF): proc iml;&lt;BR /&gt;MPRINT(CIF): use _d;&lt;BR /&gt;MPRINT(CIF): read all var{TT_censor_date} into time;&lt;BR /&gt;MPRINT(CIF): read all var{binary_amputation} into status;&lt;BR /&gt;MPRINT(CIF): nobs= nrow(time);&lt;BR /&gt;MPRINT(CIF): read all var{fbinary_gender} into group;&lt;BR /&gt;MPRINT(CIF): strat= j(nobs,1,1);&lt;BR /&gt;MPRINT(CIF): close _d;&lt;BR /&gt;MPRINT(CIF): * subroutine to calculate the cumulative incidence and variance;&lt;BR /&gt;MPRINT(CIF): start estimate_cif(y, causecode) global(time, cif, vcif1, vcif2, n2);&lt;BR /&gt;MPRINT(CIF): surv_km= 1;&lt;BR /&gt;MPRINT(CIF): v11= 0;&lt;BR /&gt;MPRINT(CIF): v21= 0;&lt;BR /&gt;MPRINT(CIF): v12= 0;&lt;BR /&gt;MPRINT(CIF): v22= 0;&lt;BR /&gt;MPRINT(CIF): v13= 0;&lt;BR /&gt;MPRINT(CIF): v23= 0;&lt;BR /&gt;MPRINT(CIF): cif_pos= 1;&lt;BR /&gt;MPRINT(CIF): n= nrow(y);&lt;BR /&gt;MPRINT(CIF): nrisk=n;&lt;BR /&gt;MPRINT(CIF): ut=unique(y)`;&lt;BR /&gt;MPRINT(CIF): n_ut=nrow(ut);&lt;BR /&gt;MPRINT(CIF): cif= j(n2,1,0);&lt;BR /&gt;MPRINT(CIF): vcif1= j(n2,1,0);&lt;BR /&gt;MPRINT(CIF): vcif2= j(n2,1,0);&lt;BR /&gt;MPRINT(CIF): do i=1 to n_ut;&lt;BR /&gt;MPRINT(CIF): *compute the number of events of interest and competing events;&lt;BR /&gt;MPRINT(CIF): nevent=sum(causecode[loc(y=ut[i])]=1);&lt;BR /&gt;MPRINT(CIF): ncompetevent=sum(causecode[loc(y=ut[i])]=2);&lt;BR /&gt;MPRINT(CIF): n_allevents = nevent+ ncompetevent;&lt;BR /&gt;MPRINT(CIF): *compute survival function and cumulative incidence function;&lt;BR /&gt;MPRINT(CIF): if n_allevents^= 0 then do;&lt;BR /&gt;MPRINT(CIF): *overall survival changes whenever a failure occurs;&lt;BR /&gt;MPRINT(CIF): if (i&amp;gt;1) then nrisk =n - min(loc(y=ut[i]))+1 ;&lt;BR /&gt;MPRINT(CIF): surv_km_n= surv_km* (nrisk- n_allevents)/ nrisk;&lt;BR /&gt;4 The SAS System 08:06 Thursday, October 1, 2020&lt;/P&gt;
&lt;P&gt;MPRINT(CIF): if nevent&amp;gt; 0 then do;&lt;BR /&gt;MPRINT(CIF): cif_pos= cif_pos +1;&lt;BR /&gt;MPRINT(CIF): cif[cif_pos]= cif[cif_pos-1]+ surv_km * nevent/ nrisk;&lt;BR /&gt;MPRINT(CIF): end;&lt;BR /&gt;MPRINT(CIF): * variance estimator using delta method- (10.12) in Marubini and Valsecchi (1995);&lt;BR /&gt;MPRINT(CIF): * Analysing Survival Data from Clinical Trials and Observational Studies;&lt;BR /&gt;MPRINT(CIF): t1=0;&lt;BR /&gt;MPRINT(CIF): if (nrisk- n_allevents&amp;gt;0) then t1= n_allevents/ nrisk/ (nrisk- n_allevents);&lt;BR /&gt;MPRINT(CIF): t2= surv_km* nevent/ nrisk/ nrisk;&lt;BR /&gt;MPRINT(CIF): t3= surv_km* (1- nevent/ nrisk)* t2;&lt;BR /&gt;MPRINT(CIF): t4= cif[cif_pos]* cif[cif_pos];&lt;BR /&gt;MPRINT(CIF): v11= v11+ t1;&lt;BR /&gt;MPRINT(CIF): v12= v12-2* (cif[cif_pos]* t1+ t2);&lt;BR /&gt;MPRINT(CIF): v13= v13+ t4* t1+2* cif[cif_pos]* t2 + t3;&lt;BR /&gt;MPRINT(CIF): vcif1[cif_pos]= t4* v11+ cif[cif_pos]* v12+ v13;&lt;BR /&gt;MPRINT(CIF): *variance estimator using counting process- Gray (1988);&lt;BR /&gt;MPRINT(CIF): if (ncompetevent&amp;gt; 0 &amp;amp; surv_km_n&amp;gt; 0) then do;&lt;BR /&gt;MPRINT(CIF): vt1=1;&lt;BR /&gt;MPRINT(CIF): if( ncompetevent &amp;gt; 1) then vt1= 1- (ncompetevent -1)/(nrisk-1);&lt;BR /&gt;MPRINT(CIF): vt2= surv_km* surv_km* vt1* ncompetevent/(nrisk* nrisk);&lt;BR /&gt;MPRINT(CIF): vt3= 1/ surv_km_n;&lt;BR /&gt;MPRINT(CIF): vt4= cif[cif_pos]/ surv_km_n;&lt;BR /&gt;MPRINT(CIF): v21= v21+ vt2* vt4* vt4;&lt;BR /&gt;MPRINT(CIF): v22= v22+ vt2* vt3* vt4;&lt;BR /&gt;MPRINT(CIF): v23= v23+ vt2* vt3* vt3;&lt;BR /&gt;MPRINT(CIF): end;&lt;BR /&gt;MPRINT(CIF): if (nevent&amp;gt; 0) then do;&lt;BR /&gt;MPRINT(CIF): vt1=1;&lt;BR /&gt;MPRINT(CIF): if( nevent&amp;gt; 1 ) then vt1= 1-(nevent-1)/(nrisk-1);&lt;BR /&gt;MPRINT(CIF): vt2= surv_km* surv_km* vt1* nevent/(nrisk* nrisk);&lt;BR /&gt;MPRINT(CIF): if surv_km_n&amp;gt; 0 then vt3= 1/ surv_km_n;&lt;BR /&gt;MPRINT(CIF): else vt3= 0;&lt;BR /&gt;MPRINT(CIF): vt4= 1+ vt3* cif[cif_pos];&lt;BR /&gt;MPRINT(CIF): v21= v21+ vt2* vt4* vt4;&lt;BR /&gt;MPRINT(CIF): v22= v22+ vt2* vt3* vt4;&lt;BR /&gt;MPRINT(CIF): v23= v23+ vt2* vt3* vt3;&lt;BR /&gt;MPRINT(CIF): vcif2[cif_pos]= v21 -2*cif[cif_pos]*v22 + cif[cif_pos]*cif[cif_pos]*v23;&lt;BR /&gt;MPRINT(CIF): end;&lt;BR /&gt;MPRINT(CIF): surv_km= surv_km_n;&lt;BR /&gt;MPRINT(CIF): end;&lt;BR /&gt;MPRINT(CIF): end;&lt;BR /&gt;MPRINT(CIF): if cif_pos&amp;lt; n2 then do;&lt;BR /&gt;MPRINT(CIF): cif_pos= cif_pos+1;&lt;BR /&gt;MPRINT(CIF): *time[cif_pos]= ut[n_ut];&lt;BR /&gt;MPRINT(CIF): cif[cif_pos]= cif[cif_pos-1];&lt;BR /&gt;MPRINT(CIF): vcif1[cif_pos]= vcif1[cif_pos-1];&lt;BR /&gt;MPRINT(CIF): vcif2[cif_pos]= vcif2[cif_pos-1];&lt;BR /&gt;MPRINT(CIF): end;&lt;BR /&gt;MPRINT(CIF): if (sum(vcif1&amp;lt;0)&amp;gt;0) then vcif1[loc(vcif1&amp;lt;0)]=0;&lt;BR /&gt;MPRINT(CIF): if (sum(vcif2&amp;lt;0)&amp;gt;0) then vcif2[loc(vcif2&amp;lt;0)]=0;&lt;BR /&gt;MPRINT(CIF): vcif1= sqrt(vcif1);&lt;BR /&gt;MPRINT(CIF): vcif2= sqrt(vcif2);&lt;BR /&gt;MPRINT(CIF): finish estimate_cif;&lt;BR /&gt;MPRINT(CIF): start test_ksample(y, causecode, ig, rho) global(score, vcov);&lt;BR /&gt;MPRINT(CIF): * y is the failure times (sorted in ascending order) * causecode is cause indicator * (= 0 if censored, =1 if failed &lt;BR /&gt;from the cause of interest, * 2 if failed from some other causes.) * ig denotes group membership * rho is the power of the weight &lt;BR /&gt;function in the test statistic * ng denotes the number of groups, ng1= ng-1;&lt;BR /&gt;MPRINT(CIF): ng= ncol(unique(ig));&lt;BR /&gt;5 The SAS System 08:06 Thursday, October 1, 2020&lt;/P&gt;
&lt;P&gt;MPRINT(CIF): * risk set size in each at the current failure time (= sample size at 0);&lt;BR /&gt;MPRINT(CIF): nrisk= j(ng,1,0);&lt;BR /&gt;MPRINT(CIF): do i= 1 to ng;&lt;BR /&gt;MPRINT(CIF): nrisk[i]= nrisk[i] + sum(ig=i);&lt;BR /&gt;MPRINT(CIF): end;&lt;BR /&gt;MPRINT(CIF): ng1=ng-1;&lt;BR /&gt;MPRINT(CIF): ng2= ng* ng1/ 2;&lt;BR /&gt;MPRINT(CIF): score= j(ng1,1,0);&lt;BR /&gt;MPRINT(CIF): vcov= j(ng2,1,0);&lt;BR /&gt;MPRINT(CIF): l= 0;&lt;BR /&gt;MPRINT(CIF): cifgleft= j(ng,1,0);&lt;BR /&gt;MPRINT(CIF): cifg= j(ng,1,0);&lt;BR /&gt;MPRINT(CIF): cif0left= 0;&lt;BR /&gt;MPRINT(CIF): cif0= 0;&lt;BR /&gt;MPRINT(CIF): vtvec= j(ng,1,0);&lt;BR /&gt;MPRINT(CIF): skmgleft= j(ng,1,1);&lt;BR /&gt;MPRINT(CIF): skmg= j(ng,1,1);&lt;BR /&gt;MPRINT(CIF): vtmatrix= j(ng1,ng,0);&lt;BR /&gt;MPRINT(CIF): c= j(ng,ng,0);&lt;BR /&gt;MPRINT(CIF): ll= 1;&lt;BR /&gt;MPRINT(CIF): ut=unique(y)`;&lt;BR /&gt;MPRINT(CIF): n_ut=nrow(ut);&lt;BR /&gt;MPRINT(CIF): do i=1 to n_ut;&lt;BR /&gt;MPRINT(CIF): d= j(3,ng,0);&lt;BR /&gt;MPRINT(CIF): yloc=loc(y=ut[i]);&lt;BR /&gt;MPRINT(CIF): do ii= yloc[1] to yloc[ncol(yloc)];&lt;BR /&gt;MPRINT(CIF): k= causecode[ii]+1;&lt;BR /&gt;MPRINT(CIF): * causes code:0, 1, 2;&lt;BR /&gt;MPRINT(CIF): d[k,ig[ii]]= d[k,ig[ii]] +1;&lt;BR /&gt;MPRINT(CIF): end;&lt;BR /&gt;MPRINT(CIF): nd1= d[2,+];&lt;BR /&gt;MPRINT(CIF): nd2= d[3,+];&lt;BR /&gt;MPRINT(CIF): if (nd1^= 0 | nd2^= 0) then do;&lt;BR /&gt;MPRINT(CIF): *hdot is sum(hhat), Rdot is sum(R), skmgleft is Shat, nrisk is Y, cifgleft is CIF;&lt;BR /&gt;MPRINT(CIF): hdot= 0;&lt;BR /&gt;MPRINT(CIF): Rdot= 0;&lt;BR /&gt;MPRINT(CIF): do g= 1 to ng;&lt;BR /&gt;MPRINT(CIF): if (nrisk[g]&amp;gt; 0) then do;&lt;BR /&gt;MPRINT(CIF): td= d[2,g] + d[3,g];&lt;BR /&gt;MPRINT(CIF): skmg[g]= skmgleft[g]* (nrisk[g]- td)/ nrisk[g];&lt;BR /&gt;MPRINT(CIF): cifg[g]= cifgleft[g]+ skmgleft[g]* d[2,g]/ nrisk[g];&lt;BR /&gt;MPRINT(CIF): hdot= hdot+ nrisk[g]/ skmgleft[g];&lt;BR /&gt;MPRINT(CIF): Rdot= Rdot+ nrisk[g]* (1 - cifgleft[g])/ skmgleft[g];&lt;BR /&gt;MPRINT(CIF): end;&lt;BR /&gt;MPRINT(CIF): end;&lt;BR /&gt;MPRINT(CIF): cif0= cif0left+ nd1/hdot;&lt;BR /&gt;MPRINT(CIF): grho= (1- cif0left)**rho;&lt;BR /&gt;MPRINT(CIF): * score statistic;&lt;BR /&gt;MPRINT(CIF): do g=1 to ng1;&lt;BR /&gt;MPRINT(CIF): if (nrisk[g]&amp;gt; 0) then score[g]= score[g]+ grho* (d[2,g]- nd1* nrisk[g]* (1- cifgleft[g])/ skmgleft[g]/ Rdot);&lt;BR /&gt;MPRINT(CIF): end;&lt;BR /&gt;MPRINT(CIF): a= j(ng, ng,0);&lt;BR /&gt;MPRINT(CIF): do g= 1 to ng;&lt;BR /&gt;MPRINT(CIF): if (nrisk[g]&amp;gt; 0) then do;&lt;BR /&gt;MPRINT(CIF): t1= nrisk[g]/ skmgleft[g];&lt;BR /&gt;MPRINT(CIF): a[g,g]= grho* t1* (1- t1/ hdot);&lt;BR /&gt;MPRINT(CIF): c[g,g]= c[g,g]+ a[g,g]* nd1/hdot/(1- cif0left);&lt;BR /&gt;MPRINT(CIF): k= g +1;&lt;BR /&gt;6 The SAS System 08:06 Thursday, October 1, 2020&lt;/P&gt;
&lt;P&gt;MPRINT(CIF): *if (k&amp;lt;= ng) then do j= k to ng;&lt;BR /&gt;MPRINT(CIF): do j= g+1 to ng;&lt;BR /&gt;MPRINT(CIF): if (nrisk[j]&amp;gt; 0) then do;&lt;BR /&gt;MPRINT(CIF): a[g,j]= - grho* t1* nrisk[j]/ skmgleft[j]/ hdot;&lt;BR /&gt;MPRINT(CIF): a[j,g]= a[g,j];&lt;BR /&gt;MPRINT(CIF): c[g,j]= c[g,j]+ a[g,j]* nd1/ hdot/ (1 - cif0left);&lt;BR /&gt;MPRINT(CIF): c[j,g]= c[g,j];&lt;BR /&gt;MPRINT(CIF): end;&lt;BR /&gt;MPRINT(CIF): end;&lt;BR /&gt;MPRINT(CIF): end;&lt;BR /&gt;MPRINT(CIF): end;&lt;BR /&gt;MPRINT(CIF): * variance estimators;&lt;BR /&gt;MPRINT(CIF): if nd1&amp;gt; 0 then do k=1 to ng;&lt;BR /&gt;MPRINT(CIF): if (nrisk[k]&amp;gt; 0) then do;&lt;BR /&gt;MPRINT(CIF): if skmg[k]&amp;gt; 0 then vt1= 1- (1- cif0)/ skmg[k];&lt;BR /&gt;MPRINT(CIF): else vt1= 1;&lt;BR /&gt;MPRINT(CIF): if nd1&amp;gt; 1 then vt2= 1- (nd1-1)/ (hdot* skmgleft[k]-1);&lt;BR /&gt;MPRINT(CIF): else vt2= 1;&lt;BR /&gt;MPRINT(CIF): vt3= vt2* skmgleft[k]* nd1/ (hdot* nrisk[k]);&lt;BR /&gt;MPRINT(CIF): vtvec[k]= vtvec[k]+ vt1* vt1* vt3;&lt;BR /&gt;MPRINT(CIF): do g= 1 to ng1;&lt;BR /&gt;MPRINT(CIF): vt4= a[g,k]- vt1* c[g,k];&lt;BR /&gt;MPRINT(CIF): vtmatrix[g,k]= vtmatrix[g,k]+ vt4* vt1* vt3;&lt;BR /&gt;MPRINT(CIF): do j=1 to g;&lt;BR /&gt;MPRINT(CIF): l= g* (g-1)/ 2+ j;&lt;BR /&gt;MPRINT(CIF): vt5= a[j,k]- vt1* c[j,k];&lt;BR /&gt;MPRINT(CIF): vcov[l]= vcov[l]+ vt3* vt4* vt5;&lt;BR /&gt;MPRINT(CIF): end;&lt;BR /&gt;MPRINT(CIF): end;&lt;BR /&gt;MPRINT(CIF): end;&lt;BR /&gt;MPRINT(CIF): end;&lt;BR /&gt;MPRINT(CIF): if (nd2^= 0) then do k=1 to ng;&lt;BR /&gt;MPRINT(CIF): if (skmg[k]&amp;gt; 0 &amp;amp; d[3,k]&amp;gt; 0) then do;&lt;BR /&gt;MPRINT(CIF): vt1= (1- cif0)/ skmg[k];&lt;BR /&gt;MPRINT(CIF): vt2= 1;&lt;BR /&gt;MPRINT(CIF): if (d[3,k]&amp;gt; 1) then vt2= 1- (d[3,k] -1)/ (nrisk[k]-1);&lt;BR /&gt;MPRINT(CIF): vt3= vt2* ((skmgleft[k]** 2)* d[3,k])/ (nrisk[k]** 2);&lt;BR /&gt;MPRINT(CIF): vtvec[k]= vtvec[k]+ vt1* vt1* vt3;&lt;BR /&gt;MPRINT(CIF): do g=1 to ng1;&lt;BR /&gt;MPRINT(CIF): vt4= vt1* c[g,k];&lt;BR /&gt;MPRINT(CIF): vtmatrix[g,k]= vtmatrix[g,k]- vt4* vt1* vt3;&lt;BR /&gt;MPRINT(CIF): do j=1 to g;&lt;BR /&gt;MPRINT(CIF): l= g* (g-1)/ 2+ j;&lt;BR /&gt;MPRINT(CIF): vt5= vt1* c[j,k];&lt;BR /&gt;MPRINT(CIF): vcov[l]= vcov[l]+ vt3* vt4* vt5;&lt;BR /&gt;MPRINT(CIF): end;&lt;BR /&gt;MPRINT(CIF): end;&lt;BR /&gt;MPRINT(CIF): end;&lt;BR /&gt;MPRINT(CIF): end;&lt;BR /&gt;MPRINT(CIF): end;&lt;BR /&gt;MPRINT(CIF): *update the risk sets and the index of the next failure time;&lt;BR /&gt;MPRINT(CIF): do ii= yloc[1] to yloc[ncol(yloc)];&lt;BR /&gt;MPRINT(CIF): nrisk[ig[ii]]= nrisk[ig[ii]] -1;&lt;BR /&gt;MPRINT(CIF): end;&lt;BR /&gt;MPRINT(CIF): cif0left= cif0;&lt;BR /&gt;MPRINT(CIF): cifgleft= cifg;&lt;BR /&gt;MPRINT(CIF): skmgleft= skmg;&lt;BR /&gt;MPRINT(CIF): end;&lt;BR /&gt;7 The SAS System 08:06 Thursday, October 1, 2020&lt;/P&gt;
&lt;P&gt;MPRINT(CIF): pos= 0;&lt;BR /&gt;MPRINT(CIF): do g= 1 to ng1;&lt;BR /&gt;MPRINT(CIF): do j= 1 to g;&lt;BR /&gt;MPRINT(CIF): pos= pos+1;&lt;BR /&gt;MPRINT(CIF): do k= 1 to ng;&lt;BR /&gt;MPRINT(CIF): vcov[pos]= vcov[pos]+ c[g,k]* c[j,k]* vtvec[k];&lt;BR /&gt;MPRINT(CIF): vcov[pos]= vcov[pos]+ c[g,k]* vtmatrix[j,k];&lt;BR /&gt;MPRINT(CIF): vcov[pos]= vcov[pos]+ c[j,k]* vtmatrix[g,k];&lt;BR /&gt;MPRINT(CIF): end;&lt;BR /&gt;MPRINT(CIF): end;&lt;BR /&gt;MPRINT(CIF): end;&lt;BR /&gt;MPRINT(CIF): finish test_ksample;&lt;BR /&gt;MPRINT(CIF): * subroutines end and the calculation starts here;&lt;BR /&gt;MPRINT(CIF): * status need to be numerical value;&lt;BR /&gt;MPRINT(CIF): x= time|| status;&lt;BR /&gt;MPRINT(CIF): *call sort(x, {1 2});&lt;BR /&gt;MPRINT(CIF): call sortndx(sidx, x, {1 2});&lt;BR /&gt;MPRINT(CIF): x=x[sidx,];&lt;BR /&gt;MPRINT(CIF): group=group[sidx];&lt;BR /&gt;MPRINT(CIF): strat=strat[sidx];&lt;BR /&gt;MPRINT(CIF): ugg= unique(group);&lt;BR /&gt;MPRINT(CIF): ng= ncol(ugg);&lt;BR /&gt;MPRINT(CIF): call symput('ng',left(char(ng)));&lt;BR /&gt;MPRINT(CIF): * censind= 0 if censored, =1 if failed;&lt;BR /&gt;MPRINT(CIF): censList={0}`;&lt;BR /&gt;MPRINT(CIF): eventList={1}`;&lt;BR /&gt;MPRINT(CIF): censind=j(nrow(x),1,0);&lt;BR /&gt;MPRINT(CIF): eventind=censind;&lt;BR /&gt;MPRINT(CIF): do i= 1 to 1 ;&lt;BR /&gt;MPRINT(CIF): censind= censind |(x[,2]= censList[i]);&lt;BR /&gt;MPRINT(CIF): end;&lt;BR /&gt;MPRINT(CIF): do i= 1 to 1 ;&lt;BR /&gt;MPRINT(CIF): eventind= eventind |(x[,2]= eventList[i]);&lt;BR /&gt;MPRINT(CIF): end;&lt;BR /&gt;MPRINT(CIF): causecode= 2* (^censind)- eventind;&lt;BR /&gt;MPRINT(CIF): * prepare the data;&lt;BR /&gt;MPRINT(CIF): x= x|| censind|| causecode;&lt;BR /&gt;MPRINT(CIF): if ng&amp;gt; 1 then do;&lt;BR /&gt;MPRINT(CIF): ng1= ng -1;&lt;BR /&gt;MPRINT(CIF): ng2= ng* ng1/ 2;&lt;BR /&gt;MPRINT(CIF): vv= j(ng1,ng1,0);&lt;BR /&gt;MPRINT(CIF): *the final covariance matrix;&lt;BR /&gt;MPRINT(CIF): vcov_st= j(ng2,1,0);&lt;BR /&gt;MPRINT(CIF): vcov= vcov_st;&lt;BR /&gt;MPRINT(CIF): *vcov_st for each stratum, vs add v across strata ;&lt;BR /&gt;MPRINT(CIF): score_st= j(ng1,1,0);&lt;BR /&gt;MPRINT(CIF): score= score_st;&lt;BR /&gt;MPRINT(CIF): *s is test statiatics by stratum,ss add s across strata;&lt;BR /&gt;MPRINT(CIF): end;&lt;BR /&gt;MPRINT(CIF): ust= unique(strat);&lt;BR /&gt;MPRINT(CIF): nstrata= ncol(ust);&lt;BR /&gt;MPRINT(CIF): call symput('nstrata',left(char(nstrata)));&lt;BR /&gt;MPRINT(CIF): if (0=0) then do;&lt;BR /&gt;MPRINT(CIF): do k= 1 to nstrata;&lt;BR /&gt;MPRINT(CIF): do g= 1 to ng;&lt;BR /&gt;MPRINT(CIF): gind= (group= ugg[g]);&lt;BR /&gt;MPRINT(CIF): *ncg= sum(gind);&lt;BR /&gt;MPRINT(CIF): * subset of data for group g and stratum k;&lt;BR /&gt;8 The SAS System 08:06 Thursday, October 1, 2020&lt;/P&gt;
&lt;P&gt;MPRINT(CIF): grpstra=(gind= 1) &amp;amp; (strat= ust[k]) &amp;amp; (x[,4]=1);&lt;BR /&gt;MPRINT(CIF): if (sum(grpstra)&amp;gt;0) then do;&lt;BR /&gt;MPRINT(CIF): xsub= x[loc((gind= 1) &amp;amp; (strat= ust[k])), ];&lt;BR /&gt;MPRINT(CIF): * aa are failure times for cause 1, n2 is the length of CIF;&lt;BR /&gt;MPRINT(CIF): aa= xsub[loc(xsub[,4]= 1), 1];&lt;BR /&gt;MPRINT(CIF): n2 = ncol(unique(aa))+2;&lt;BR /&gt;MPRINT(CIF): run estimate_cif(xsub[,1], xsub[,4]);&lt;BR /&gt;ERROR: Unrecognized form of the RUN statement. Use either RUN; or RUN CANCEL;.&lt;BR /&gt;MPRINT(CIF): time1=0//(unique(aa))`//xsub[nrow(xsub),1];&lt;BR /&gt;MPRINT(CIF): tmp= time1|| cif|| vcif1|| vcif2;&lt;BR /&gt;MPRINT(CIF): *time,CI,variance,group;&lt;BR /&gt;MPRINT(CIF): if (g= 1 &amp;amp; k=1) then do;&lt;BR /&gt;MPRINT(CIF): cifEST= tmp;&lt;BR /&gt;MPRINT(CIF): grpLabel=j(n2,1,ugg[g]);&lt;BR /&gt;MPRINT(CIF): if(nstrata&amp;gt;1) then stratLabel=j(n2,1,ust[k]);&lt;BR /&gt;MPRINT(CIF): end;&lt;BR /&gt;MPRINT(CIF): else do;&lt;BR /&gt;MPRINT(CIF): cifEST= cifEST//tmp;&lt;BR /&gt;MPRINT(CIF): grpLabel= grpLabel//j(n2,1,ugg[g]);&lt;BR /&gt;MPRINT(CIF): if(nstrata&amp;gt;1) then stratLabel=stratLabel//j(n2,1,ust[k]);&lt;BR /&gt;MPRINT(CIF): end;&lt;BR /&gt;MPRINT(CIF): end;&lt;BR /&gt;MPRINT(CIF): end;&lt;BR /&gt;MPRINT(CIF): end;&lt;BR /&gt;MPRINT(CIF): *cifloc=loc(cifEST[,2]&amp;gt;0);&lt;BR /&gt;MPRINT(CIF): cifloc=loc((cifEST[,2]&amp;gt;1e-12) &amp;amp; (cifEST[,2]&amp;lt;exp(-1e-12)));&lt;BR /&gt;MPRINT(CIF): ncif= nrow(cifEST);&lt;BR /&gt;MPRINT(CIF): lowci=j(ncif, 1, .);&lt;BR /&gt;MPRINT(CIF): upci =j(ncif, 1, .);&lt;BR /&gt;MPRINT(CIF): z=probit(1-.05/2.0);&lt;BR /&gt;MPRINT(CIF): *lowci[cifloc] = cifEST[cifloc, 2]##exp((-z*cifEST[cifloc, 3]) /(cifEST[cifloc,2]#LOG(cifEST[cifloc,2])));&lt;BR /&gt;MPRINT(CIF): *upci[cifloc] = cifEST[cifloc, 2]##exp((z*cifEST[cifloc, 3]) /(cifEST[cifloc,2]#LOG(cifEST[cifloc,2])));&lt;BR /&gt;MPRINT(CIF): if (1=1) then do;&lt;BR /&gt;MPRINT(CIF): lowci[cifloc] = cifEST[cifloc, 2]##exp((-z*cifEST[cifloc, 4]) /(cifEST[cifloc,2]#LOG(cifEST[cifloc,2])));&lt;BR /&gt;MPRINT(CIF): upci[cifloc] = cifEST[cifloc, 2]##exp((z*cifEST[cifloc, 4]) /(cifEST[cifloc,2]#LOG(cifEST[cifloc,2])));&lt;BR /&gt;MPRINT(CIF): cifEST=cifEST[, (1:2||4)];&lt;BR /&gt;MPRINT(CIF): cifEST = cifEST || lowci || upci;&lt;BR /&gt;MPRINT(CIF): create CIFplot from cifEST[colname={"TT_censor_date" "CIF" "StdErr" "LowerCI" "UpperCI"}];&lt;BR /&gt;MPRINT(CIF): end;&lt;BR /&gt;MPRINT(CIF): else do;&lt;BR /&gt;MPRINT(CIF): lowci[cifloc] = cifEST[cifloc, 2]##exp((-z*cifEST[cifloc, 3]) /(cifEST[cifloc,2]#LOG(cifEST[cifloc,2])));&lt;BR /&gt;MPRINT(CIF): upci[cifloc] = cifEST[cifloc, 2]##exp((z*cifEST[cifloc, 3]) /(cifEST[cifloc,2]#LOG(cifEST[cifloc,2])));&lt;BR /&gt;MPRINT(CIF): cifEST=cifEST[,(1:3)];&lt;BR /&gt;MPRINT(CIF): cifEST = cifEST|| lowci || upci;&lt;BR /&gt;MPRINT(CIF): create CIFplot from cifEST[colname={"TT_censor_date" "CIF" "StdErr" "LowerCI" "UpperCI"}];&lt;BR /&gt;MPRINT(CIF): end;&lt;BR /&gt;MPRINT(CIF): append from cifEST;&lt;BR /&gt;MPRINT(CIF): close CIFplot;&lt;BR /&gt;MPRINT(CIF): create _outgrpLabel from grpLabel[colname={"binary_gender"}] ;&lt;BR /&gt;MPRINT(CIF): append from grpLabel;&lt;BR /&gt;MPRINT(CIF): close _outgrpLabel;&lt;BR /&gt;MPRINT(CIF): if (nstrata&amp;gt;1) then do;&lt;BR /&gt;MPRINT(CIF): create outstratLabel from stratLabel[colname={"Strata"}] ;&lt;BR /&gt;MPRINT(CIF): append from stratLabel;&lt;BR /&gt;MPRINT(CIF): close outstratLabel;&lt;BR /&gt;MPRINT(CIF): end;&lt;BR /&gt;MPRINT(CIF): end;&lt;BR /&gt;MPRINT(CIF): if ( ng&amp;gt;1 &amp;amp;(^0)) then do;&lt;BR /&gt;9 The SAS System 08:06 Thursday, October 1, 2020&lt;/P&gt;
&lt;P&gt;MPRINT(CIF): grpcode=j(nrow(x), 1, 0);&lt;BR /&gt;MPRINT(CIF): do g= 1 to ng;&lt;BR /&gt;MPRINT(CIF): grpcode[loc(group= ugg[g])]=g;&lt;BR /&gt;MPRINT(CIF): end;&lt;BR /&gt;MPRINT(CIF): do k= 1 to nstrata;&lt;BR /&gt;MPRINT(CIF): * subset of data for stratum k;&lt;BR /&gt;MPRINT(CIF): xsub= x[loc(strat= ust[k]), ];&lt;BR /&gt;MPRINT(CIF): grpcodesub=grpcode[loc(strat= ust[k])];&lt;BR /&gt;MPRINT(CIF): if (ncol(unique(grpcodesub))=ng) then do;&lt;BR /&gt;MPRINT(CIF): Run test_ksample(xsub[,1], xsub[,4], grpcodesub, 0);&lt;BR /&gt;ERROR: Unrecognized form of the RUN statement. Use either RUN; or RUN CANCEL;.&lt;BR /&gt;MPRINT(CIF): score_st= score_st+ score;&lt;BR /&gt;MPRINT(CIF): vcov_st= vcov_st+ vcov;&lt;BR /&gt;MPRINT(CIF): end;&lt;BR /&gt;MPRINT(CIF): else call symput('inconsistentgrpnumflag',left(char(1)));&lt;BR /&gt;MPRINT(CIF): end;&lt;BR /&gt;MPRINT(CIF): pos= 0;&lt;BR /&gt;MPRINT(CIF): do i= 1 to ng1;&lt;BR /&gt;MPRINT(CIF): do j= 1 to i;&lt;BR /&gt;MPRINT(CIF): pos= pos+1;&lt;BR /&gt;MPRINT(CIF): vv[i,j]= vcov_st[pos];&lt;BR /&gt;MPRINT(CIF): vv[j,i]= vv[i,j];&lt;BR /&gt;MPRINT(CIF): end;&lt;BR /&gt;MPRINT(CIF): end;&lt;BR /&gt;MPRINT(CIF): * test statistic and p-value;&lt;BR /&gt;MPRINT(CIF): test_stat= score_st`* ginv(vv)* score_st;&lt;BR /&gt;MPRINT(CIF): df= ng1;&lt;BR /&gt;MPRINT(CIF): pval= 1- probchi(test_stat, df);&lt;BR /&gt;MPRINT(CIF): Test= test_stat || df || pval;&lt;BR /&gt;MPRINT(CIF): create TestResult from Test[colname={ "test_stat" "df" "pval"}];&lt;BR /&gt;MPRINT(CIF): append from Test;&lt;BR /&gt;MPRINT(CIF): close TestResult;&lt;BR /&gt;MPRINT(CIF): end;&lt;BR /&gt;MPRINT(CIF): quit;&lt;BR /&gt;MPRINT(CIF): data CIFplot;&lt;BR /&gt;MPRINT(CIF): merge _outgrpLabel CIFplot;&lt;BR /&gt;ERROR: File WORK._OUTGRPLABEL.DATA does not exist.&lt;BR /&gt;MPRINT(CIF): if (0) then set check(keep=TT_censor_date);&lt;BR /&gt;MPRINT(CIF): run;&lt;BR /&gt;WARNING: The data set WORK.CIFPLOT may be incomplete. When this step was stopped there were 0 observations and 1 variables.&lt;BR /&gt;WARNING: Data set WORK.CIFPLOT was not replaced because this step was stopped.&lt;BR /&gt;WARNING: Apparent symbolic reference NSTRATA not resolved.&lt;BR /&gt;ERROR: A character operand was found in the %EVAL function or %IF condition where a numeric operand is required. The condition was: &lt;BR /&gt;(&amp;amp;nstrata&amp;gt;1) &lt;BR /&gt;ERROR: The macro CIF will stop executing.&lt;BR /&gt;28 &lt;BR /&gt;29 &lt;BR /&gt;30 GOPTIONS NOACCESSIBLE;&lt;BR /&gt;31 %LET _CLIENTTASKLABEL=;&lt;BR /&gt;32 %LET _CLIENTPROCESSFLOWNAME=;&lt;BR /&gt;33 %LET _CLIENTPROJECTPATH=;&lt;BR /&gt;34 %LET _CLIENTPROJECTPATHHOST=;&lt;BR /&gt;35 %LET _CLIENTPROJECTNAME=;&lt;BR /&gt;36 %LET _SASPROGRAMFILE=;&lt;BR /&gt;37 %LET _SASPROGRAMFILEHOST=;&lt;BR /&gt;38 &lt;BR /&gt;39 ;*';*";*/;quit;run;&lt;BR /&gt;40 ODS _ALL_ CLOSE;&lt;BR /&gt;10 The SAS System 08:06 Thursday, October 1, 2020&lt;/P&gt;
&lt;P&gt;41 &lt;BR /&gt;42 &lt;BR /&gt;43 QUIT; RUN;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;My question am I calling the macro incorrectly causing the error or is it an error within the macro itself? Thank you&lt;/P&gt;</description>
      <pubDate>Thu, 01 Oct 2020 13:30:41 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/CIF-macro/m-p/688190#M209015</guid>
      <dc:creator>GS2</dc:creator>
      <dc:date>2020-10-01T13:30:41Z</dc:date>
    </item>
    <item>
      <title>Re: %CIF macro</title>
      <link>https://communities.sas.com/t5/SAS-Programming/CIF-macro/m-p/688197#M209020</link>
      <description>&lt;P&gt;I know nothing about this macro, but there is a very telling error in your log&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;SPAN&gt;ERROR: Procedure IML not found.&lt;/SPAN&gt;&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;P&gt;Do you have IML installed?&lt;/P&gt;</description>
      <pubDate>Thu, 01 Oct 2020 13:57:22 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/CIF-macro/m-p/688197#M209020</guid>
      <dc:creator>CurtisMackWSIPP</dc:creator>
      <dc:date>2020-10-01T13:57:22Z</dc:date>
    </item>
  </channel>
</rss>

