NIPO ODIN Version 5.17
Scenario 1: Using System-defined Interview Numbers
This scenario applies the following directives:
- We start the survey with household records (each household a separate record).
- For the first respondent in the household we ask the family size and the names of all family members.
- For each extra respondent in the family a new family member record is created.
- The system defines the interview numbers to be used for these new records.
- When the second, third, et cetera family member are interviewed, the screener questions about family size are skipped.
- For each extra family member a new record is created in the data file.
Extra Sample table fields for scenario 1
InterviewNumber
|
DisplayField1
|
DisplayField2
|
AskHousehold
|
FamilySize
|
Int
|
Varchar(45)
|
Varchar(35)
|
Int
|
Int
|
00000001
|
New household record
|
Family #1
|
1
|
0
|
00000002
|
New household record
|
Family #2
|
1
|
0
|
00000003
|
New household record
|
Family #3
|
1
|
0
|
Example NIPO ODIN questionnaire for *NEXTRECORD : scenario 1
*SAMPLEDATA TTDisplayField1, TTDisplayField2 *SAMPLEDATA AskHousehold, FamilySize, TTInterviewNumber *TEXTVARS Name[9],NewNumber
*TAB 30
************************************************* **** Ask household situation only first time **** *************************************************
*IF [AskHousehold <> 1] *GOTO 3
*QUESTION 1 *NUMBER 61L1 *SAVE FamilySize How many family members are in this household?
*QUESTION 1001 *CODES 62L9 *MULTI *DUMMY
*REPEAT 9 *IF [?R <= Q1] *INCLUDE Q1001 [?R] *ENDREP
*QUESTION 2 *FORM *CONTROL Q1001 W What are the names of your family members?
1: 1st person *ALPHA 71L35 *SAVE Name[1] 2: 2nd person *ALPHA 106L35 *SAVE Name[2] 3: 3rd person *ALPHA 141L35 *SAVE Name[3] 4: 4th person *ALPHA 176L35 *SAVE Name[4] 5: 5th person *ALPHA 211L35 *SAVE Name[5] 6: 6th person *ALPHA 246L35 *SAVE Name[6] 7: 7th person *ALPHA 281L35 *SAVE Name[7] 8: 8th person *ALPHA 316L35 *SAVE Name[8] 9: 9th person *ALPHA 351L35 *SAVE Name[9]
*PUT TTDisplayField1 '*?Name[1]' *PUT AskHousehold [0]
*REPEAT 9 *CONTROL Q1001 W *** make sure that the NewNumber variable is reset *** before each call to *NEXTRECORD! *PUT NewNumber [0] *IF [?R > 1] *NEXTRECORD NewNumber "TTDisplayField1=*?Name[?R], \ FamilySize=*?FamilySize, AskHousehold=*?AskHousehold" *ENDREP
****************************************************** *** Questions for all family members ***************** ******************************************************
*QUESTION 3 *CODES 386L1 Does *?TTDisplayField1 have his/her own mobile telephone?
1: Yes 2: No
*QUESTION 4 *OPEN 387L1 *IF [Q3,1] Who is the provider of that mobile telephone?
*QUESTION 9999 These were all questions for *?TTDisplayField1.
If any persons left in the household, the interview is restarted for the next.
*END
The field AskHouseHold is used to skip the screening questions if further household members are interviewed.
If the value of NewNumber is set to 0, the *NEXTRECORD command creates a record and automatically assigns an unused InterviewerNumber value. For any value in the range 1-99999999, it attempts to create a record with that InterviewNumber value. Make sure that the NewNumber variable is initialized in the *REPEAT loop every time. If you forget to initialize it with zero, it would attempt to either create or update consecutive records with the given value, which results in a runtime error message "Error in *NEXTRECORD: Sample record [n] is not valid for interviewing" . A failed attempt to create or update a record returns the value -1 for NewNumber .
Note that the InterviewNumber values created by the system are not linked to the original family member records. If you require a link between these values, it is highly recommended to save a family member ID with the sample records.
|