Call Questionnaires

Call questionnaires allow you to create sub-questionnaires that are called by the main questionnaire.

A sub-questionnaire can be called again and again as many times as is needed on a given survey.  The sub-questionnaire is referred to as the “child” and the main questionnaire is referred to as the “parent”. If you go multiple layers deep, you can then have a “grandchild” survey and so forth and so on.

An example of when this is useful is if you have a survey asking households about all the shopping trips they have taken in the last month.  You could create an overall household demographic questionnaire and have it call a questionnaire for each person in the household and then have that questionnaire call another questionnaire to ask the questions about each shopping trip.  You do not need to worry about setting limits about the number of members in the household or what the maximum number of trips a given household member might have taken.

There is no effective limit to the number of call questionnaires or levels. Survox has tested 150 sub-questionnaires that went five levels deep in a single study.

You must have a case ID assigned prior to executing the first Call question.  This is necessary to tie all the data in the child interviews back to the original parent.  You will want to use either the SPECIAL,ASSIGN_NEXT_CASEID statement to assign the next case ID or the SPECIAL,ASSIGN_CASEID_FROM_DATA statement if you have some other piece of data like the phone number that you want to be the identifying piece of information.

Use the local scratch area (SPECIAL,DATA_TO_LOCAL_SCRATCH and SPECIAL, FROM_LOCAL_SCRATCH_TO_DATA) to pass data from the parent to/from any child. Your local scratch area will retain information across interviews within a called set of questionnaires.  The local scratch area is not cleared between interviews in the parent questionnaire, so you will likely need to clear it at the top of each parent interview.

CALL statements can be placed within !RESUME, !SUSPEND, !SPECIAL and !AFTER_QUIT blocks.

The syntax for call questionnaires is:

!CALL,subtype,<questionnaire to call>

Valid Subtypes

  • Child
  • Switch


Shortform: !CALL,1

This is the default subtype. It redirects the interview to another QFF file, but uses the original FON and  QUO files. A separate data record is saved into the “child” data (TR) file each time the called questionnaire is executed.

When the called questionnaire is completed, it returns to the point just after where it was called in the original questionnaire.


Shortform: !CALL,2

This subtype allows changing of phone, quota, and data information. It redirects the interview to another QFF file, and gives total control to that QFF file. The QFF file, FON file, QUO file, etc., all use the new study name. It lets you keep information in the local scratch area as you switch from one questionnaire to the other (e.g., carry respondent’s name from the main to the called questionnaire). This would be used for example, if you want a menu of studies for an interviewer to choose from.

WARNING:   The !CALL,SWITCH option operates like the !SPECIAL,ABORT_INTERVIEW statement to abort an interview on the current questionnaire.  If you want to save any of the current data you will need to do !SPECIAL,WRITE_OR_UPDATE_CASE before executing the !CALL,SWITCH.  Likewise you will need to use the NOW option on any quota statements to update the original quota file.

If you “abort” a called interview by using !SPECIAL,ABORT_INTERVIEW or !SPECIAL,ABORT_INTERVIEW_NO_CR commands, it returns control to the calling interview if it is in a questionnaire called using !CALL,CHILD or it will return to the interviewing prompt/top of next interview it is called from a questionnaire using !CALL,SWITCH.

NOTE: You can use Coding mode on a CALL questionnaire.

CALL,CHILD Questionnaires and Quota Files

If you are using !CALL,CHILD  and you will be updating quotas in the child questionnaire, then the quota structure for each child must match the parent. Do this by having a block of matching quota references (like !TARGET commands) at the top of each questionnaire.  It is usually safer to do all quota updates in the parent.  If an event occurs in the child that you want to update a quota, you can store some information in the local scratch area and then use that information to update the quota when you have returned to the parent.

CALL,CHILD Questionnaires with Suspend Blocks

When using !CALL,CHILD questionnaires, the last question in the Suspend block must be executed. The simplest way to guarantee this is to use a passive (receiving) GOTO question as the last question.

NOTE: See Call Questionnaire Example in the Survox Customer Support Solution Center for an example of using child questionnaires.