@alvonkorff And for processing efficiency and improved "readability" you could also change logic like...
IF T1DM = 1 THEN SAMPLE = 1;
IF AGE LE 9 THEN SAMPLE = 0;
IF TRAN_IN = 1 THEN SAMPLE = 0;
IF TRAN_IN = 2 THEN SAMPLE = 0;
IF TRAN_OUT = 1 THEN SAMPLE = 0;
IF TRAN_OUT = 2 THEN SAMPLE = 0;
...to...
IF DIED = 1 THEN SAMPLE = 0;
else IF TRAN_OUT = 2 THEN SAMPLE = 0;
else IF TRAN_OUT = 1 THEN SAMPLE = 0;
else IF TRAN_IN = 2 THEN SAMPLE = 0;
else IF TRAN_IN = 1 THEN SAMPLE = 0;
else IF AGE LE 9 THEN SAMPLE = 0;
else IF T1DM = 1 THEN SAMPLE = 1;
and also here instead of...
DEPR=0;
ARRAY MENTDEP(39) $ I10_DX2 - I10_DX40;
DO m=1 TO 39;
IF SUBSTR(MENTDEP(m),1,4)='F320' OR SUBSTR(MENTDEP(m),1,4)='F321' OR SUBSTR(MENTDEP(m),1,4)='F322' OR SUBSTR(MENTDEP(m),1,4)='F323'
OR SUBSTR(MENTDEP(m),1,4)='F324' OR SUBSTR(MENTDEP(m),1,4)='F325' OR SUBSTR(MENTDEP(m),1,4)='F328' OR SUBSTR(MENTDEP(m),1,4)='F328'
OR SUBSTR(MENTDEP(m),1,4)='F329' OR SUBSTR(MENTDEP(m),1,4)='F330' OR SUBSTR(MENTDEP(m),1,4)='F331' OR SUBSTR(MENTDEP(m),1,4)='F332'
OR SUBSTR(MENTDEP(m),1,4)='F333' OR SUBSTR(MENTDEP(m),1,4)='F334' OR SUBSTR(MENTDEP(m),1,4)='F334'
OR SUBSTR(MENTDEP(m),1,4)='F334' OR SUBSTR(MENTDEP(m),1,4)='F338' OR SUBSTR(MENTDEP(m),1,4)='F339' OR SUBSTR(MENTDEP(m),1,4)='F340'
OR SUBSTR(MENTDEP(m),1,4)='F341' OR SUBSTR(MENTDEP(m),1,4)='F348'
OR SUBSTR(MENTDEP(m),1,4)='F349' OR SUBSTR(MENTDEP(m),1,4)='F39' THEN
DEPR=1;
END;
...limit looping and how many times you use the substr() function to the necessary minimum...
DEPR=0;
ARRAY MENTDEP(39) $ I10_DX2 - I10_DX40;
DO m=1 TO dim(MENTDEP);
if SUBSTR(MENTDEP(m),1,4) in ('F320','F321','F322','F323','F324','F325','F328','F328','F329','F330','F331','F332','F333',
'F334','F334','F334','F338','F339','F340','F341','F348','F349','F39') then
do;
DEPR=1;
leave;
end;
END;
... View more