LISTSERV at the University of Georgia
Menubar Imagemap
Home Browse Manage Request Manuals Register
Previous messageNext messagePrevious in topicNext in topicPrevious by same authorNext by same authorPrevious page (June 2011)Back to main SPSSX-L pageJoin or leave SPSSX-L (or change settings)ReplyPost a new messageSearchProportional fontNon-proportional font
Date:         Fri, 17 Jun 2011 11:24:19 -0400
Reply-To:     Gene Maguin <emaguin@buffalo.edu>
Sender:       "SPSSX(r) Discussion" <SPSSX-L@LISTSERV.UGA.EDU>
From:         Gene Maguin <emaguin@buffalo.edu>
Subject:      Re: [SPSS] Using a loop/vector to run a syntax file
In-Reply-To:  <3C19EB3C-6698-4177-AB50-F6E50F8F3131@inghamisd.org>
Content-Type: text/plain; charset="us-ascii"

John,

Although there are some things I'm not clear about, I'm not sure that you need a macro. From your example code, it looks like your data are all in one file with a strucure like this:

SchID SchName Grade v1 ... V345

You could sort by schid and grade and then Split file by schid grade. Frequencies ... Ctables ...

Split file off.

What you don't get with split files is the changing title.

You could do this with a looping macro and there is an example of one, I seem to recall, in the macro section of the syntax reference, which you should have on the help menu. I don't know much about macros but others on the list are macro stars.

I'd suggest that you check the split file command first.

Gene Maguin

-----Original Message----- From: SPSSX(r) Discussion [mailto:SPSSX-L@LISTSERV.UGA.EDU] On Behalf Of John Endahl Sent: Friday, June 17, 2011 10:48 AM To: SPSSX-L@LISTSERV.UGA.EDU Subject: [SPSS] Using a loop/vector to run a syntax file

I am a self-taught SPSS user, and have struggled with creating a loop structure to run a syntax file that generates several custom tables in the vanilla version of SPSS Statistics 19. After doing additional research, I *think* the proper method to handle this issue is to place the reporting syntax into a macro structure, and call that macro within a loop or vector structure.

I need to run this syntax dozens of times, and would like to automate that process. Ideally, I would like to send the school number and school name into the macro, and have the macro search using the school number and add the school name in the TITLE command. (The school number would be substituted for "07621" in the filter condition of line 3 of the syntax, and the school name would probably need to be CONCATed in the TITLE call on line 13 in place of Holt Central HS).

As an example, if I had three buildings:

ID Name 123 First School 253 Second School 521 Third School

Then the macro call might look like !myreport schoolnum schoolname.

The reporting syntax follows:

> > USE ALL. > COMPUTE filter_$=(Building = "07621" AND (Grade<=12 OR Grade = 14)). > * COMPUTE filter_$=(OperatingDistrict = "33170" AND (Grade<=12 OR Grade = 14)). > VALUE LABELS filter_$ 0 'Not Selected' 1 'Selected'. > FORMATS filter_$ (f1.0). > FILTER BY filter_$. > EXECUTE. > > /**** Q1 - Total School Enrollment ****/. > /***** TABLE 1 ********/. > > TITLE Holt Central HS 2007-08 Pg. 4 - Student Enrollment by Subgroup. > FREQUENCIES VARIABLES=EDFlag SWDFlag LEPFlag HomeFlag MigFlag > /ORDER=ANALYSIS. > > /***** TABLE 2 & 3 *******/. > > TITLE "Pg. 5/6 - Grade Level Attendance/Grade Level Enrollment". > CTABLES > /VLABELS VARIABLES=Grade ATTFlag EXPFlag DISPLAY=LABEL > /TABLE Grade [C] BY ATTFlag [C][COUNT 'N' F40.0, ROWPCT.COUNT '%' PCT40.1] + EXPFlag [C][COUNT F40.0] + DRPFlag [C][COUNT F40.0] > /CATEGORIES VARIABLES=Grade ORDER=A KEY=VALUE EMPTY=EXCLUDE > /CATEGORIES VARIABLES=ATTFlag [1.00, .00, OTHERNM] EMPTY=INCLUDE TOTAL=YES POSITION=BEFORE > /CATEGORIES VARIABLES=EXPFlag ORDER=A KEY=VALUE EMPTY=INCLUDE > /CATEGORIES VARIABLES=DRPFlag ORDER=A KEY=VALUE EMPTY=INCLUDE. > > > /***** TABLE 4 & 5 ********/. > TITLE "Pg. 6/7 - Sub-Group Enrollment/Sub-Group Attendance". > CTABLES > /VLABELS VARIABLES=EDFlag EthWFlag EthBFlag EthHisFlag EthAsFlag EthAmIndFlag EthHawFlag SWDFlag > LEPFlag HomeFlag MigFlag GenMFlag GenFFlag ATTFlag EXPFlag DRPFlag > DISPLAY=LABEL > /TABLE EDFlag [C][COUNT F40.0] + EthWFlag [C][COUNT F40.0] + EthBFlag [C][COUNT F40.0] + > EthHisFlag [C][COUNT F40.0] + EthAsFlag [C][COUNT F40.0] + EthAmIndFlag [C][COUNT F40.0] + > EthHawFlag [C][COUNT F40.0] + SWDFlag [C][COUNT F40.0] + LEPFlag [C][COUNT F40.0] + HomeFlag > [C][COUNT F40.0] + MigFlag [C][COUNT F40.0] + GenMFlag [C][COUNT F40.0] + GenFFlag [C][COUNT F40.0] > BY ATTFlag [C] + EXPFlag [C] + DRPFlag [C] > /CATEGORIES VARIABLES=EDFlag EthWFlag EthBFlag EthHisFlag EthAsFlag EthAmIndFlag EthHawFlag > SWDFlag LEPFlag HomeFlag MigFlag GenMFlag GenFFlag EXPFlag DRPFlag ORDER=A KEY=VALUE EMPTY=INCLUDE > /CATEGORIES VARIABLES=ATTFlag [1.00, .00, OTHERNM] EMPTY=INCLUDE TOTAL=YES POSITION=BEFORE. >

Am I headed in the right direction? How would I "step through" my school IDs and school names for the repeated calls to the macro? In my old BASIC days, it would be a simple DATA-READ pair within a FOR-NEXT loop, and I'd assign the values to an array. I'd then use a second FOR-NEXT loop to step through the elements of the ARRAY as I called the subroutine. Unfortunately, my BASIC experiences don't seem to have much application in the SPSS syntax arena.

Unfortunately, I find the SPSS documentation to be far too comprehensive (too many options and flags) to act as a good learning tool, and haven't been able to find a tutorial online that addresses this type of process, or that doesn't require far greater knowledge of the control structures than I currently possess. Can anyone on the list offer some assistance, or point me to a good beginning-intermediate resource for learning these types of control structures? Thanks, in advance.

...and if this isn't the type of question that is appropriate for this list, my apologies!

--> John -- John Endahl, Data Services Specialist Ingham Intermediate School District (517) 244-1233

"A mind is a fire to be kindled, not a vessel to be filled."

===================== To manage your subscription to SPSSX-L, send a message to LISTSERV@LISTSERV.UGA.EDU (not to SPSSX-L), with no body text except the command. To leave the list, send the command SIGNOFF SPSSX-L For a list of commands to manage subscriptions, send the command INFO REFCARD

===================== To manage your subscription to SPSSX-L, send a message to LISTSERV@LISTSERV.UGA.EDU (not to SPSSX-L), with no body text except the command. To leave the list, send the command SIGNOFF SPSSX-L For a list of commands to manage subscriptions, send the command INFO REFCARD


Back to: Top of message | Previous page | Main SPSSX-L page