Controlling the Sample with Markets

Often you will need to call sample that is controlled and reported on in groups, and you know the characteristics of each group in advance. We will call each of these groups a “market.” These groups are often geographic, such as north, south, east, and western regions, but can be based on anything we already know about the sample, type of business, income level, etc.

In order to use market controls, you must have a market name in each phone record. You could just assign a number to each market, and thus name them “001”, “002”, and so on, or you can give more meaningful names up to 20 characters long.

NOTE: We recommend using market names that are meaningful for reporting purposes.

For instance, you may wish to control the sample in groups defined by gender of respondent by city (where the cities are New York, Atlanta, Boston, and Detroit). You could then create market areas with the city name NEW_YORK, BOSTON, DETROIT, or ATLANTA followed by the gender. You could then have t markets which would be NEW_YORK_MALE, NEW_YORK_FEMALE, BOSTON_MALE, and so on.

When using market areas, you can control the relative amount of calling to a particular market during the study using market weights, either in FONEBULD initially, or in SURVSUPR while supervising, or programmatically in Survent.  More particularly, this feature is usually used in conjunction with quotas such that when a market reaches its target quota, it will immediately shut down a market for calling. This has three distinct advantages over using quotas by themselves to control the sample:

  1. The numbers can be weighted up so that if you are falling short in a particular market’s target sample, you can pick up more numbers without completely shutting down other markets using the HIDE command or setting their target quotas down.
  2. You can shut down a market using a market weight of 0. These numbers will then never be picked up by Survent, which will improve the study speed over using quotas to stop calling.
    1. Quota checks require you to first pick up the number in Survent, putting a heavy load on the system if you have met many of your quotas.
    2. Setting the market weight to 0 completely removes this load and the market is simply not called.
  3. You will not have to use the HIDE and REVEAL options in SURVSUPR or FONEUTIL to stop calling a market, which takes time and CPU, is often difficult to specify and cannot easily be tracked.

NOTE: Specific timed callbacks and numbers already in a special interviewer or ownership stack are not affected by any market weight other than 0.

If the market weight is set to 0, and the system wants to call one of these numbers, it will automatically status the number with the call status that is assigned by the MARKETWEIGHT_ZERO_STATUS parameter in the server’s PARMFILE.  If this value is not set, the program will send the number to an interviewing station, to let Survent determine what to do with this number.

For example, if you set MARKETWEIGHT_ZERO_STATUS: 213 in the parmfile, the program will hide timed callbacks instead of dialing them in markets with a weight of zero.

You can get reports by market area in PHONERPT and see the bucket layout for each market in the supervisor program SURVSUPR.

Setting up the Markets

Before building a market phone file, you must specify the set of markets to be used. The market in which a number is put will be specified in the phone text. Each record in a market will have the same string in the market location of the sample record.

To build the phone file with markets, run FONEBULD as always, but include the following commands in this order before the file is built.


If you want to allocate space for some maximum number of market areas that are going to be defined, use this. The number specified must be less than 960. If not specified, the number of MARKET commands (see below) for this phone file determines the maximum, and you will not be able to add any additional markets in the future without rebuilding the file.

NOTE: We recommend setting the maximum_markets higher than your actual number of markets.  This will allow for additional markets to be added at a later time without having to rebuild the file.

The maximum number of markets depends on the number of time zones used.

Markets * time zones * (10 buckets per time zone) must be <=9650 and the maximum markets must be <=960.

# time zones Maximum markets
1 960
2 480
3 320
4 240
5 192
6 160
7 137
8 120

Says where in the phone text to get the market area specifier. The location must be between 51 and 4900 in the phone text area. The width is 1 if not specified, and may be 1-20.


This assigns the various markets. There should be one MARKET command for each market used in the study, or each string found in the MARKET_LOCATION in the phone records.

If you say “MARKET=???” all phone records with no other market specified will be assigned to this market. If no “catchall” market such as this is specified, a number that does not have a matching market name will be an error, and be left out of the phone file.

  • <name> is the name of the market that is stored in the phone text.
    • This may include any ASCII character except blank.
    • The comparison ignores case of alphabetic characters.
  • <number> is the market area number.
    • It can be left out in in which case Fonebuld will assign the next available number.
    • If the number is assigned, make sure that each assigned number is sequential without skipping any numbers.
    • The number must be between 1 and MAXIMUM_MARKETS if specified.
  • <weight> is the initial calling weight, that is, how often a number will be chosen from this market relative to the other markets when a system call is made.
    • If not specified it will default to 1.
    • Weights can be a number from 0 to 9, just like the time zone weights.
    • Generally weights will be 1 (to call the market) or 0 (to suppress calling to the market), but you may also slant the dialing to hit some markets more than others by changing the weight.
    • Market weights can also be changed in FONEUTIL or SURVSUPR, or programmatically in the Survent interview by executing a PHONE,ASSIGN_MARKET_WEIGHT statement. (See Market Related Phone Statements for more information).

After the market commands are specified, enter “GO” to read the sample file in and have the phone file built.

Adding numbers to an existing phone file

  1. If you are adding numbers to an existing phone file, you can also add new markets if space has been left for them by using the MAXIMUM_MARKETS command; specify the new markets exactly as before.
  2. If you say MARKET_LOCATION again, it must be the same as the first time.
  3. Be sure to specify a market number, as otherwise it will try to start at 1 again, which will already be in use.
  4. When you specify the number for a market, it must not be used by another market.

Here is an example command file to make markets with FONEBULD:


NOTE: See Change a non-market fone file into markets in the Survox Customer Support Solution Center for an example on how to convert an existing market controlled job into a non-market job or vice versa, or change the market numbers in an existing study.

Reporting on markets and changing market weights

SURVSUPR and FONEUTIL have a MARKET command to show and/or change the weights for a particular market.

The syntax for showing and/or changing weights is:

MARKET <studycode> <market name> <-ZERO>
  • If the <market name> is specified you will see the timezone/bucket array for the specified market (and you can see others by using the + and – keys).
  • If the <market name> is left off you will see a list of all the markets, the number of records in the market, and their weight, and you can modify market weights if you wish.
  • If “-ZERO” is specified, you will not see markets whose weights are currently set to 0.

Using Survent to Control Market Weights

Survent allows specific setting of the market weights. This is usually used when you check whether the target quota has been met for a particular market, and if so, to shut down the market by setting the weight to 0.

To control market weights, the PHONE,ASSIGN_MARKET_WEIGHT statement is used.   See Market Related Phone Statements for more information.

Controlling Nonsystem Numbers when a Market is Closed

Market weights only control system callbacks, so by default timed callbacks, special interviewer numbers, and owned numbers in a market continue to be released even if the market weight has been set to 0.

But, if you want the server not to call these numbers in markets that are closed (because you set the market weight to 0 when quotas are full, for instance) you may do so using the MARKETWEIGHT_ZERO_STATUS parameter in the server’s PARMFILE. This tells the server that you want it to assign a status to these numbers instead of giving them to an interviewer or dialer to be called.

Using this keeps you from having to write code in your questionnaire to check whether you have a number in an over quota group to resolve after you have closed the market.

  • Likely statuses to use would be 188 or 213 to hide the numbers, 189 or 214 to place in bucket “9” (timezone holding area), or 11- 69 to resolve the numbers.
  • If the status is set to 0, or the command is not in the parmfile, the program will continue to hand the number to the interviewer or dialer.
  • Statuses 83 (bad phone number), 186 and 211 (put in front of current stack), 187 or 212 (put in back of current stack) are not allowed.

Note: Like all PARMFILE commands, this is set for ALL studies under the server. You cannot assign a different status for these numbers from two different studies running under the same Survox server at the same time.