I have also used FLIP, SELECT CASES and a back-FLIP to get rid of empty variables in a dataset: * Example dataset with 6 variables & several missing data *. DATA LIST LIST/var1 TO var6. BEGIN DATA 1.0 7.5 -999 -999 -999 -999 1.0 6.2 -999 -999 -999 4 1.0 6.9 -999 -999 -999 -999 1.0 7.4 -999 -999 -999 -999 1.0 9.2 -999 -999 -999 -999 1.0 8.3 1 -999 -999 -999 1.0 7.6 -999 -999 -999 -999 2.0 5.8 -999 -999 -999 -999 2.0 7.3 -999 -999 -999 -999 2.0 8.2 -999 -999 -999 -999 2.0 7.1 -999 -999 -999 -999 2.0 7.8 -999 -999 -999 -999 2.0 7.2 -999 -999 -999 2 2.0 7.3 -999 -999 -999 -999 3.0 5.9 -999 -999 -999 -999 3.0 6.2 -999 -999 -999 -999 3.0 5.8 -999 -999 -999 -999 3.0 4.7 -999 -999 -999 -999 3.0 7.3 5 -999 -999 -999 3.0 7.2 -999 -999 -999 -999 3.0 6.2 -999 -999 -999 -999 4.0 6.2 -999 -999 -999 -999 4.0 6.8 -999 -999 -999 -999 4.0 5.7 -999 -999 -999 -999 4.0 4.9 -999 -999 -999 7 4.0 6.2 -999 -999 -999 -999 4.0 5.8 -999 -999 -999 -999 4.0 5.4 -999 -999 -999 -999 END DATA. RECODE var3 var4 var5 var6 (-999=SYSMIS) . EXECUTE . * All cases for var4 & var5 are sysmiss *. LIST. STRING newvar(A8). COMPUTE newvar=CONCAT('f',LTRIM(STRING($CASENUM,F7))). PRESERVE. SET ERRORS=NONE RESULTS=NONE. FLIP /NEWNAME=newvar. * The following lines were contributed by someone at the list, they simplified my original code *. COMPUTE xxx=$SYSMIS. COMPUTE ncases = NVALID(f1 TO xxx) . * End of added lines *. SELEC IF ncases NE 0. MATCH FILES FILE=* /DROP=ncases xxx. FLIP /NEWNAME=CASE_LBL . MATCH FILES FILE=* /DROP=CASE_LBL. EXEC. RESTORE. LIST.