* ВОПРОС: В данных имеются номер, название школы и некоторый балл для каждой школы. Как вывести в заголовок графика или таблицы названия школ? * ОТВЕТИЛ: rlevesque@videotron.ca. DATA LIST FREE /school (F8.0) s_name(A12) score (F8.0). BEGIN DATA 1 'первая' 19 1 'первая' 14 1 'первая' 29 1 'первая' 20 2 'вторая' 13 2 'вторая' 24 2 'вторая' 24 2 'вторая' 22 3 'третья' 20 3 'третья' 34 3 'третья' 27 3 'третья' 25 7 'седьмая' 40 7 'седьмая' 44 7 'седьмая' 22 7 'седьмая' 26 END DATA. SORT CASES BY school. SAVE OUTFILE='c:\\temp\\temp.sav'. * Подсчитаем число школ. AGGREGATE /OUTFILE=* /BREAK=school /s_name = FIRST(s_name). RANK VARIABLES=school (A) /RANK /N INTO n_school. * Запишем в макрос число школ. DO IF $casenum=1. WRITE OUTFILE 'c:\\temp\\temp.sps' /"DEFINE !n_sch()"/n_school/"!ENDDEFINE.". END IF. EXECUTE. INCLUDE FILE='c:\\temp\\temp.sps'. * Определим макрос, содержащий имена школ. STRING str_nam(A8). COMPUTE str_nam=CONCAT('!nam',LTRIM(STRING(rschool,F8.0)," "),"()"). DO REPEAT r=1 TO !n_sch. + DO IF rschool=r. + WRITE OUTFILE 'c:\\temp\\temp.sps' /"DEFINE "str_nam /s_name/"!ENDDEFINE.". + END IF. END REPEAT. EXECUTE. INCLUDE 'c:\\temp\\temp.sps'. MATCH FILES /TABLE=* /FILE='C:\\temp\\temp.sav' /BY school. *Определяем макрос, непосредственно строящий графики. *////////////////////////////////////. DEFINE !doit(). !DO !sch=1 !TO !EVAL(!n_sch). COMPUTE filter_=(rschool=!sch). FILTER BY filter_. * Читателю: замените ниже названия, графики и таблицы на те, которые вам необходимы. !LET !title1=!QUOTE(!EVAL(!CONCAT('Гистограмма: ','!nam',!sch))) !LET !title2=!QUOTE(!EVAL(!CONCAT('Сводка: ','!nam',!sch))) GRAPH /TITLE=!title1 /HISTOGRAM=score . SUMMARIZE /TABLES=score /FORMAT=NOLIST TOTAL /TITLE=!title2 /MISSING=VARIABLE /CELLS=COUNT MEDIAN VAR . FILTER OFF. !DOEND !ENDDEFINE. *////////////////////////////////////. *Вызываем макрос. !doit.