INCLUDE в зависимости от содержимого файла данных
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 | * Данный синтаксис иллюстрирует метод условного исполнения какого-то внешнего файла синтаксиса INCLUDE), т.е. при некоторых условиях, которым удовлетворяют данные. * Такая возможность полезна, если вы имеете для исполнения 1. большой файл синтаксиса, который выполняется долго; 2. синтакс выполняется на самых разных файлах данных; 3. в зависимости от наличия или отсутствия некоторых данных крупные куски синтаксиса становятся бесполезными и в их выполнении нет необходимости. * Автор: Raynald Levesque, rlevesque@videotron.ca. Во-первых ,сохраните следующие 2 файла: *--------------Сохранить как "c:\\temp\\syntax when NO 88.sps"-----------. ************. * Этот синтаксис будет исполняться когда в данных нет значений, равных 88. * Ничего не делаем. *------------------------------------------------------------. *--------------Сохранить как "c:\\temp\\syntax when 88.sps"-----------. ************. * Этот синтаксис будет исполняться когда в данных есть значения, равные 88. FREQ VAR=M1R25REC. *------------------------------------------------------------. Теперь запустите следующий синтаксис. * Создаём 2 разных набора данных для примера. DATA LIST FREE /M1R25REC. BEGIN DATA 25 12 41 52 45 88 25 88 21 88 251 4 2 41 52 END DATA. LIST. SAVE OUTFILE='c:\\temp\\mydata1.sav'. DATA LIST FREE /M1R25REC. BEGIN DATA 25 12 41 52 45 44 25 45 21 46 251 4 2 41 52 END DATA. LIST. SAVE OUTFILE='c:\\temp\\mydata2.sav'. * Откроем файл, где есть значения, равные 88, чтобы показать, что запускается нужный файл синтаксиса. GET FILE='c:\\temp\\mydata1.sav'. COMPUTE testvar=(M1R25REC EQ 88). COMPUTE dummy=1. AGGREGATE /OUTFILE='C:\\temp\\AGGR.SAV' /BREAK=dummy /nbcases = SUM(testvar). MATCH FILES /FILE=* /TABLE='C:\\temp\\AGGR.SAV' /BY dummy. DO IF $CASENUM=1 & nbcases=0. WRITE OUTFILE='c:\\temp\\mysyntax.sps' /"INCLUDE FILE='c:\\temp\\syntax when NO 88.sps.'". ELSE IF $CASENUM=1 & nbcases>0. WRITE OUTFILE='c:\\temp\\mysyntax.sps' /"INCLUDE FILE='c:\\temp\\syntax when 88.sps.'". END IF. EXECUTE. GET FILE='c:\\temp\\mydata1.sav'. INCLUDE FILE='c:\\temp\\mysyntax.sps'. * Дальше можно выполнять нужные вам остальные преобразования. *######## Проиллюстрируем работу, когда в данных нет значений, равных 88. GET FILE='c:\\temp\\mydata2.sav'. COMPUTE testvar=(M1R25REC EQ 88). COMPUTE dummy=1. AGGREGATE /OUTFILE='C:\\temp\\AGGR.SAV' /BREAK=dummy /nbcases = SUM(testvar). MATCH FILES /FILE=* /TABLE='C:\\temp\\AGGR.SAV' /BY dummy. DO IF $CASENUM=1 & nbcases=0. WRITE OUTFILE='c:\\temp\\mysyntax.sps' /"INCLUDE FILE='c:\\temp\\syntax when NO 88.sps.'". ELSE IF $CASENUM=1 & nbcases>0. WRITE OUTFILE='c:\\temp\\mysyntax.sps' /"INCLUDE FILE='c:\\temp\\syntax when 88.sps.'". END IF. EXECUTE. GET FILE='c:\\temp\\mydata2.sav'. INCLUDE FILE='c:\\temp\\mysyntax.sps'. * Дальше можно выполнять нужные вам остальные преобразования. |
Related pages
...