Cspro User'S Guide
Cspro User'S Guide
Version 4.1
International Programs Center Population Division U.S. Census Bureau Washington DC 20233-8860 Phone: 1-301-763-1451 Fax: 1-301-763-4282 E-mail: [email protected]
12 December 2011
Table of Contents
The CSPro System .......................................................................................................................... 1 What is CSPro? ........................................................................................................................... 1 CSPro Capabilities ...................................................................................................................... 2 CSPro Applications ..................................................................................................................... 3 Data Entry Applications.......................................................................................................... 3 Batch Edit Applications .......................................................................................................... 3 Tabulation Applications .......................................................................................................... 4 Data Dictionary ....................................................................................................................... 5 Forms Design .......................................................................................................................... 5 Tool List .................................................................................................................................. 5 CSPro General Concepts............................................................................................................. 7 CSPro Initial Screen Layout ................................................................................................... 7 Trees........................................................................................................................................ 8 Windows ................................................................................................................................. 9 How To ... ................................................................................................................................... 9 Create a CSPro Application .................................................................................................... 9 Open an Existing Application ............................................................................................... 10 Change the View ................................................................................................................... 11 Change Windows .................................................................................................................. 11 Add Files to an Application .................................................................................................. 11 Drop Files from an Application ............................................................................................ 11 Change the Print Page Setup ................................................................................................. 11 iii
CSPro User's Guide Print All or Part of a Document ............................................................................................ 12 Get Help ................................................................................................................................ 12 Save an Application .............................................................................................................. 13 Close an Application ............................................................................................................. 13 Save an Application with a New Name ................................................................................ 13 Specify Application File Names ........................................................................................... 13 Pack an Application .............................................................................................................. 14 Data Dictionary Module ............................................................................................................... 17 Introduction to Data Dictionary ................................................................................................ 17 Organization .............................................................................................................................. 17 Questionnaire and Dictionary Organization ......................................................................... 17 Data File Type Structure ....................................................................................................... 19 Dictionary Hierarchy ............................................................................................................ 20 Dictionary Concepts.................................................................................................................. 20 General .................................................................................................................................. 21 Labels ................................................................................................................................ 21 Names ............................................................................................................................... 21 Notes ................................................................................................................................. 21 Levels .................................................................................................................................... 21 Level Description .............................................................................................................. 21 Level Properties ................................................................................................................ 22 Records ................................................................................................................................. 23 Record Description ........................................................................................................... 23
iv
Table of Contents Record Properties .............................................................................................................. 23 Record Type ...................................................................................................................... 24 Required Record ............................................................................................................... 24 Maximum Number ............................................................................................................ 25 Items ...................................................................................................................................... 25 Item Description................................................................................................................ 25 Identification Items ........................................................................................................... 25 Subitems ............................................................................................................................ 26 Item Properties .................................................................................................................. 27 Starting Position ................................................................................................................ 27 Length ............................................................................................................................... 28 Data Type .......................................................................................................................... 28 Occurrences....................................................................................................................... 28 Decimal Places .................................................................................................................. 29 Decimal Character ............................................................................................................ 29 Zero Fill ............................................................................................................................ 29 Value Sets ............................................................................................................................. 30 Value Sets Description...................................................................................................... 30 Value Set Properties .......................................................................................................... 30 Values ................................................................................................................................... 31 Value Description ............................................................................................................. 31 Value Properties ................................................................................................................ 31 Relations ............................................................................................................................... 32
CSPro User's Guide Relation Description ......................................................................................................... 32 Relation Properties ............................................................................................................ 32 Data Dictionary Application ..................................................................................................... 33 Creating a Dictionary for a New File .................................................................................... 33 Creating a Dictionary for an Existing File ............................................................................ 34 Data Dictionary Screen layout .............................................................................................. 34 Data Dictionary Tree............................................................................................................. 36 Relative and Absolute Mode ................................................................................................. 36 Dictionary Types................................................................................................................... 37 Reconciling Dictionary Changes .......................................................................................... 38 How to ... ................................................................................................................................... 38 Open an Existing Dictionary Application ............................................................................. 38 Move Around a Dictionary ................................................................................................... 38 View the Dictionary Layout.................................................................................................. 39 Add Dictionary Elements ...................................................................................................... 39 Modify Dictionary Elements................................................................................................. 39 Add or Modify Levels ........................................................................................................... 40 Add or Modify Records ........................................................................................................ 40 Add or Modify Items ............................................................................................................ 40 Add or Modify Value Sets .................................................................................................... 41 Linked Value Sets ................................................................................................................. 41 Generate Numeric Value Set ................................................................................................ 42 Add or Modify Values .......................................................................................................... 43
vi
Table of Contents Undo and Redo Changes....................................................................................................... 43 Select Several Dictionary Elements ...................................................................................... 44 Insert Dictionary Elements ................................................................................................... 44 Delete Dictionary Elements .................................................................................................. 44 Move Dictionary Elements ................................................................................................... 45 Find Dictionary Elements ..................................................................................................... 45 Document Dictionary Elements ............................................................................................ 45 Convert Items to Subitems .................................................................................................... 46 Select Relative or Absolute Positioning ............................................................................... 46 Create Dictionary with No Record Types ............................................................................. 46 Add or Modify Relations ...................................................................................................... 46 Print the Dictionary File........................................................................................................ 46 Save Dictionary As New File ............................................................................................... 47 The CSPro Language .................................................................................................................... 49 Introduction to CSPro Language .............................................................................................. 49 Data Requirements .................................................................................................................... 49 The CSPro Program Structure .................................................................................................. 50 Debugging CSPro Programs ..................................................................................................... 51 Declaration Section ................................................................................................................... 51 Compiler Mode ..................................................................................................................... 51 Files ....................................................................................................................................... 52 Variables ............................................................................................................................... 52 Arrays .................................................................................................................................... 52
vii
CSPro User's Guide User-Defined Functions ........................................................................................................ 53 Procedural Sections................................................................................................................... 53 Statements ............................................................................................................................. 53 Proc Statement ...................................................................................................................... 54 Preproc Statement ................................................................................................................. 54 Postproc Statement................................................................................................................ 55 Logic ......................................................................................................................................... 56 View Logic............................................................................................................................ 56 Create and Edit Logic ........................................................................................................... 56 Find and Replace Logic ........................................................................................................ 57 Set Compiler Defaults ........................................................................................................... 57 Compile Logic ...................................................................................................................... 57 Language Elements ................................................................................................................... 58 Delimiters .............................................................................................................................. 58 Comments ............................................................................................................................. 58 Variables and Constants ........................................................................................................ 59 Data Items ......................................................................................................................... 59 This Item ($) ..................................................................................................................... 59 Subscripts .......................................................................................................................... 59 Numbers ............................................................................................................................ 60 Text Strings ....................................................................................................................... 60 Expressions ........................................................................................................................... 61 Expressions ....................................................................................................................... 61
viii
Table of Contents Substring Expressions ....................................................................................................... 61 Special Values ................................................................................................................... 62 Operators ............................................................................................................................... 63 Operators ........................................................................................................................... 63 In Operator ........................................................................................................................ 64 If and Only If Operator <=> ............................................................................................. 64 Operator Precedence ......................................................................................................... 65 And/Or Truth Table .......................................................................................................... 65 Files ....................................................................................................................................... 66 External Files .................................................................................................................... 66 Lookup Files ..................................................................................................................... 66 Working Storage File ........................................................................................................ 67 Message File ..................................................................................................................... 67 Program Information File ................................................................................................. 68 Data Entry Module........................................................................................................................ 69 Introduction to Data Entry ........................................................................................................ 69 Data Entry Application ............................................................................................................. 69 General Data Entry Concepts................................................................................................ 69 Data Entry Philosophies.................................................................................................... 69 Skip Issues ........................................................................................................................ 69 Errors at Data Entry .......................................................................................................... 70 Adding Logic .................................................................................................................... 71 CSPro Data Entry Concepts .................................................................................................. 71
ix
CSPro User's Guide Operator vs. System Controlled ........................................................................................ 71 Data Entry Path ................................................................................................................. 71 Data Entry Elements ......................................................................................................... 72 Issues to Consider When Designing a Form ..................................................................... 73 Create a Data Entry Application ........................................................................................... 74 Create a New Data Entry Application .............................................................................. 74 Generate Default Data Entry Forms ................................................................................. 76 The Drag Option Menu ..................................................................................................... 76 Data Entry Forms Screen Layout ...................................................................................... 78 Data Entry Tree ................................................................................................................. 80 Run a Data Entry Application ........................................................................................... 81 Run Production Data Entry ............................................................................................... 81 Generate Binary Data Entry Application .......................................................................... 83 Change Data Entry Characteristics ....................................................................................... 84 Change the Order of Entry ................................................................................................ 84 Change Data Entry Options .............................................................................................. 84 Change Default Text Font................................................................................................. 88 Change Field Font ............................................................................................................. 88 Change Error Sound .......................................................................................................... 89 Use Arabic Text in Data Entry.......................................................................................... 89 Forms Designer ..................................................................................................................... 89 Introduction to Forms Design ........................................................................................... 90 Add Things to a Form ....................................................................................................... 90
Table of Contents Add a Form ................................................................................................................... 90 Add Fields to a Form .................................................................................................... 90 Add a Roster to a Form ................................................................................................. 91 Add Things to a Roster ................................................................................................. 91 Add Text to a Form ....................................................................................................... 92 Add Lines or Boxes to a Form ...................................................................................... 92 Modify Things in a Form .................................................................................................. 93 Selecting Items .............................................................................................................. 93 Field Properties ............................................................................................................. 93 Field Capture Type ....................................................................................................... 94 Move Things ................................................................................................................. 96 Align Things ................................................................................................................. 97 Undo and Redo Changes............................................................................................... 98 Cut, Copy, or Paste Things ........................................................................................... 98 Resize and Reposition Things in a Roster .................................................................... 99 Join and Split Roster Columns ...................................................................................... 99 Delete Form Elements................................................................................................... 99 Matching the Application to the Data Dictionary ....................................................... 100 Change Form Properties ................................................................................................. 100 Change Forms File Properties ..................................................................................... 100 Change Level Properties ............................................................................................. 100 Change Form Properties ............................................................................................. 101 Change Field Properties .............................................................................................. 102
xi
CSPro User's Guide Change Roster Properties ............................................................................................ 103 Change Column Heading Properties ........................................................................... 104 Change Row Heading Properties ................................................................................ 105 Change Text Properties ............................................................................................... 106 Data Entry Editing .................................................................................................................. 107 Introduction to Data Entry Editing ..................................................................................... 107 Editing Concepts ................................................................................................................. 107 Type of Edits in Data Entry ............................................................................................ 107 Structure Edits ................................................................................................................. 108 Consistency Edits ............................................................................................................ 109 Checking errors ............................................................................................................... 109 Writing Logic ...................................................................................................................... 110 Data Entry Logic Screen Layout..................................................................................... 110 Moving Around a Logic Application .............................................................................. 112 Order of Executing Data Entry Events ........................................................................... 112 Sequence dictated by designer ........................................................................................ 114 Compile an Application .................................................................................................. 114 Run as Batch ................................................................................................................... 115 CAPI Data Entry ..................................................................................................................... 116 Introduction to CAPI........................................................................................................... 116 CAPI Features ..................................................................................................................... 117 Extended Controls............................................................................................................... 117 CAPI Strategies ................................................................................................................... 120
xii
Table of Contents Forms .............................................................................................................................. 120 Fields ............................................................................................................................... 121 Questions......................................................................................................................... 121 Values ............................................................................................................................. 122 Organization of the Instrument ....................................................................................... 122 Using Multiple Languages .............................................................................................. 122 Breaking Off the Interview ............................................................................................. 123 Coming Back Later ......................................................................................................... 123 How to ... ............................................................................................................................. 123 Create a New CAPI Application ..................................................................................... 123 Define Languages ........................................................................................................... 124 Organize Forms ............................................................................................................... 125 Enter Question Text ........................................................................................................ 125 Create Fills In Questions................................................................................................. 125 Create Standard Forms .................................................................................................... 125 Change Formatting.......................................................................................................... 125 Add Pictures .................................................................................................................... 126 Use Multiple Language ................................................................................................... 127 Create Conditional Questions ......................................................................................... 127 Display Questions Without Scrolling ............................................................................. 127 Structure Movement........................................................................................................ 128 Create Helps for Fields ................................................................................................... 128 Show Values for Selection .............................................................................................. 128
xiii
CSPro User's Guide Show Images and Values for Selection .......................................................................... 128 Show Full Screen Value Sets .......................................................................................... 129 Handle Don't Know and Refused.................................................................................... 129 Handle Multiple Answers ............................................................................................... 130 Choose Topic Sections .................................................................................................... 130 Create General Helps ...................................................................................................... 131 Test Application .............................................................................................................. 132 Pocket PC (PPC) Data Entry................................................................................................... 132 Introduction to Pocket PC (PPC) Data Entry ...................................................................... 132 PPC Requirements .............................................................................................................. 132 How To ... ........................................................................................................................... 133 Install CSPro on a Pocket PC.......................................................................................... 133 Write PPC Data Entry Application ................................................................................. 136 Deploy PPC Application to the Pocket PC ..................................................................... 138 Run PPC Application on the Pocket PC ......................................................................... 139 Retrieve Data Files from the Pocket PC ......................................................................... 141 Batch Editing Applications ......................................................................................................... 143 Introduction to Batch Editing.................................................................................................. 143 Create a Batch Edit Application ............................................................................................. 143 Create a New Batch Edit Application ................................................................................. 143 Batch Application Screen Layout ....................................................................................... 145 Batch Edit Tree ................................................................................................................... 147 Run a Batch Edit Application ............................................................................................. 148
xiv
Table of Contents Order of Editing ...................................................................................................................... 149 Order of Executing Batch Edit Events ................................................................................ 149 Batch Edit Order ................................................................................................................. 149 Change Edit Order .............................................................................................................. 150 Correcting Errors .................................................................................................................... 150 Methods of Correcting Data................................................................................................ 150 Guidelines for Correcting Data ........................................................................................... 151 Imputation ........................................................................................................................... 152 Static Imputation ................................................................................................................. 152 Dynamic Imputation (Hot Deck) ........................................................................................ 153 DeckArrays ......................................................................................................................... 154 Types of Edits in Batch Editing .......................................................................................... 157 How to ... ................................................................................................................................. 159 Manipulate Automatic Reports ........................................................................................... 159 Create a Specialized Report ................................................................................................ 159 Use Hot Decks .................................................................................................................... 160 Initialize Hot Decks In Program Logic ............................................................................... 160 Initialize Hot Decks Using Saved Arrays ........................................................................... 161 Interpret Reports ................................................................................................................. 162 Run Production Batch Edits ................................................................................................ 164 Steps in Developing a Batch Editing Program ....................................................................... 166 General Issues ..................................................................................................................... 166 Review Edit Specifications ................................................................................................. 166
xv
CSPro User's Guide Define Coding Standards .................................................................................................... 167 Code Edits of Individual Data Items ................................................................................... 167 Develop Comprehensive Test File ...................................................................................... 168 Test CSPro Program ........................................................................................................... 168 Re-Test with Live Data ....................................................................................................... 168 Begin Production Editing.................................................................................................... 168 Tabulation Applications .............................................................................................................. 171 Introduction to Tabulation ...................................................................................................... 171 Parts of a Table ....................................................................................................................... 171 Common Uses of Tabulation Applications ............................................................................. 174 Capabilities of Tabulation ....................................................................................................... 175 Cross Tabulations................................................................................................................ 175 Tabulate Counts or Percents ............................................................................................... 176 Tabulate Values and/or Weights ......................................................................................... 176 Produce Summary Statistics ............................................................................................... 176 Restrict a Universe .............................................................................................................. 177 Format Tables for Printing .................................................................................................. 177 Load and Save Formatting Preferences .............................................................................. 177 Produce Tables by Area ...................................................................................................... 178 Save Tabulations in Different Formats ............................................................................... 178 Copy Table to Other Formats ............................................................................................. 178 Copy and Paste Table Specification ................................................................................... 178 Map Results by Geographic Area ....................................................................................... 179
xvi
Table of Contents Create Multiple Subtables ................................................................................................... 179 Change Unit of Tabulation.................................................................................................. 181 Tally Items from Related Records ...................................................................................... 181 Creating Tables ....................................................................................................................... 181 Create a New Tabulation Application................................................................................. 181 Create a Table ..................................................................................................................... 183 Create Tables with Multiple Variables ............................................................................... 184 Implications of Data Dictionary Value Sets ....................................................................... 186 Tabulate Items with Multiple Occurrences ......................................................................... 187 Tally Attributes for a Variable ............................................................................................ 188 Tally Attributes for a Table................................................................................................. 193 Add, Insert, and Delete Tables ............................................................................................ 196 Move Between Tables......................................................................................................... 197 Run a Tabulation Application ............................................................................................. 197 Renaming Tables and Table Applications .......................................................................... 197 How To ... ........................................................................................................................... 198 Add a Variable to a Tabulation ....................................................................................... 198 Remove a Variable from a Tabulation ............................................................................ 200 Define a Universe for a Table ......................................................................................... 200 Add Weights to a Table .................................................................................................. 202 Tabulate Values Instead of Frequencies ......................................................................... 202 Include/Exclude Special Values in a Variable ................................................................ 203 Hide or Change the Position of the Total........................................................................ 204
xvii
CSPro User's Guide Add Percents to a Table .................................................................................................. 204 Add Summary Statistics to a Table................................................................................. 206 Include/Exclude Tables from Run .................................................................................. 206 Debug Table Totals ......................................................................................................... 207 Formatting Tables ................................................................................................................... 209 Formats for a Part of a Table .............................................................................................. 209 Formats for a Table ............................................................................................................. 213 Formats for an Application ................................................................................................. 214 Formats for Printing ............................................................................................................ 216 Views of Tables .................................................................................................................. 219 How To ... ........................................................................................................................... 220 Customize Table Text ..................................................................................................... 220 Hide or Show a Row or Column ..................................................................................... 221 Hide Rows Containing All Zeros.................................................................................... 223 Change the Number of Decimal Places Displayed ......................................................... 223 Add a Footnote (Pagenote or Endnote) ........................................................................... 224 Add Header/Footer Text to a Table ................................................................................ 225 Add a Subtitle ................................................................................................................. 226 Add Stub Leadering ........................................................................................................ 226 Add Borders .................................................................................................................... 227 Add Reader Breaks ......................................................................................................... 228 Change the Way Numbers are Displayed ....................................................................... 229 Change the Automatically Generated Text ..................................................................... 230
xviii
Table of Contents Change Fonts or Colors .................................................................................................. 231 Change Indentation or Alignment ................................................................................... 232 Add Borders to Cells....................................................................................................... 232 Make Captions Span Data Cells ..................................................................................... 234 Reset Format of Table Item to Default ........................................................................... 235 Change the Repeating of Boxheads ................................................................................ 235 Change Stub Column Position ........................................................................................ 236 Use Arabic Text in Tables .............................................................................................. 237 Creating Tables by Geographic Area ...................................................................................... 237 Area Processing .................................................................................................................. 237 Create an Area Names File ................................................................................................. 238 Area Dialog Box ................................................................................................................. 240 Area Captions...................................................................................................................... 241 Custom Consolidation......................................................................................................... 243 Create a Thematic Map of Results ...................................................................................... 245 How To ... ........................................................................................................................... 246 Display Results for One Geographic Area...................................................................... 246 Tabulate only Certain Levels of Geography ................................................................... 247 Printing Tables ........................................................................................................................ 247 Using Print Preview ............................................................................................................ 247 Navigating Between Pages, Tables, and Areas ................................................................... 248 Viewing Multiple and Facing Pages ................................................................................... 249 Modifying Row and Column Spacing for Printing ............................................................. 250
xix
CSPro User's Guide Print Preview Options ......................................................................................................... 250 Print Setup ........................................................................................................................... 253 Sending Tables to the Printer .............................................................................................. 254 How To ... ........................................................................................................................... 255 Undo or Reset Changes in Print Preview ........................................................................ 255 Print Only Selected Tables or Pages ............................................................................... 256 Tabulation Preferences............................................................................................................ 256 Preferences and Default Formats ........................................................................................ 256 Modifying Preferences ........................................................................................................ 257 Loading and Saving Preferences ......................................................................................... 258 How To ... ........................................................................................................................... 259 Share the Same Format on Multiple Computers ............................................................. 259 Saving and Copying Table Data ............................................................................................. 259 Save Tables for the Table Viewer ....................................................................................... 259 Saving Tables as Text, HTML or Rich Text....................................................................... 260 Select and Copy Table Data to Other Applications ............................................................ 261 Using Table Data in the Map Viewer ................................................................................. 262 How To ... ........................................................................................................................... 263 Distribute Finished Tables to Other Users ...................................................................... 263 Copy Table Data to a Spreadsheet or Word Processor ................................................... 264 Prepare Tables for Posting to the Web ........................................................................... 264 Table Post Calculation ............................................................................................................ 264 Introduction to Table Post Calculation ............................................................................... 264
xx
Table of Contents Adding Rows and Columns For Post Calculation .............................................................. 265 Post Calculation For Individual Cells ................................................................................. 266 Post Calculation For Rows, Columns and Ranges.............................................................. 269 Row and Column Indexing for Post Calculation ................................................................ 271 Run Production Tabulations ................................................................................................... 273 Introduction to Production Tabulations .............................................................................. 273 Run All in Batch ................................................................................................................. 274 Run in Parts ......................................................................................................................... 275 Introduction to Run in Parts ............................................................................................ 275 Run Tabulate Interactively .............................................................................................. 275 Run Tabulate in Batch .................................................................................................... 276 Run Consolidate Interactively......................................................................................... 278 Run Consolidate in Batch ............................................................................................... 279 Run Format Interactively ................................................................................................ 280 Run Format in Batch ....................................................................................................... 281 Advanced Table Topics .......................................................................................................... 282 Using Subtables .................................................................................................................. 282 Changing the Unit of Tabulation ........................................................................................ 283 Table Logic (tablogic)......................................................................................................... 284 Tabulations Using Relations ............................................................................................... 288 How To ... ........................................................................................................................... 289 Tabulate Items in Relations ............................................................................................ 289 Table Tips and Tricks ............................................................................................................. 290
xxi
CSPro User's Guide Add Subtotals to a Table ..................................................................................................... 290 Tabulate Categories With Disjoint Values ......................................................................... 292 Format/Hide Rows and Columns in Subgroupings ............................................................ 293 Recodes in Tables Using Value Sets and Subtables ........................................................... 297 Use Expressions in Universe and Value Tallied ................................................................. 301 CSPro Statements and Functions ................................................................................................ 303 Alphabetical List ..................................................................................................................... 303 Statement Format Symbols ..................................................................................................... 306 List of Reserved Words .......................................................................................................... 306 Declaration Statements ........................................................................................................... 308 Set Statement ...................................................................................................................... 308 File Statement ..................................................................................................................... 309 Numeric Statement.............................................................................................................. 309 Alpha Statement .................................................................................................................. 309 Array Statement .................................................................................................................. 310 Relation Statement .............................................................................................................. 312 Function Statement ............................................................................................................. 313 Program Control Statements ................................................................................................... 315 Break Statement .................................................................................................................. 315 Do Statement....................................................................................................................... 315 Exit Statement ..................................................................................................................... 316 For Statement ...................................................................................................................... 317 If Statement ......................................................................................................................... 317
xxii
Table of Contents Next Statement .................................................................................................................... 318 Universe Statement ............................................................................................................. 319 While Statement .................................................................................................................. 319 Assignment Statements ........................................................................................................... 320 Assignment Statement ........................................................................................................ 320 Recode (Box) Statement ..................................................................................................... 320 Impute Function .................................................................................................................. 322 Data Entry Statements and Functions ..................................................................................... 324 Accept Function .................................................................................................................. 324 Advance Statement ............................................................................................................. 324 Demode Function ................................................................................................................ 325 Display Orientation ......................................................................................................... 326 GetOrientation Function ..................................................................................................... 326 SetOrientation Function ...................................................................................................... 326 Editnote Function ................................................................................................................ 326 Endlevel Statement ............................................................................................................. 327 Endgroup Statement ............................................................................................................ 327 Enter Statement ................................................................................................................... 328 Getcapturetype Function ..................................................................................................... 328 Getlanguage Function ......................................................................................................... 329 Getnote Function ................................................................................................................. 329 Getoperatorid Function ....................................................................................................... 329 Getrecord Function ............................................................................................................. 330
xxiii
CSPro User's Guide Getusername Function ........................................................................................................ 330 GPS Function ...................................................................................................................... 330 Highlighted Function .......................................................................................................... 332 Ispartial Function ................................................................................................................ 332 Killfocus Statement ............................................................................................................. 332 Move Statement .................................................................................................................. 333 Noinput Statement .............................................................................................................. 334 Onfocus Statement .............................................................................................................. 334 Onkey Global Function ....................................................................................................... 335 Onstop Global Function ...................................................................................................... 338 Putnote Function ................................................................................................................. 339 Randomizevs Function........................................................................................................ 340 Reenter Statement ............................................................................................................... 340 Savepartial Function ........................................................................................................... 341 Selcase Function ................................................................................................................. 341 Set Attributes Statement ..................................................................................................... 343 Set Behavior Canenter Statement ....................................................................................... 345 Setcapturepos Function ....................................................................................................... 345 Setcapturetype Function...................................................................................................... 346 Set Errmsg Statement .......................................................................................................... 346 Setlanguage Function .......................................................................................................... 348 Setvalueset Function ........................................................................................................... 349 Setvaluesets Function.......................................................................................................... 350
xxiv
Table of Contents Format: ................................................................................................................................ 350 Show Function .................................................................................................................... 351 Skip Statement .................................................................................................................... 352 Userbar Function ................................................................................................................. 353 Visualvalue Function .......................................................................................................... 357 Batch Edit Statements ............................................................................................................. 357 Endcase Statement .............................................................................................................. 357 Export Statement ................................................................................................................. 357 Getdeck Function ................................................................................................................ 359 Putdeck Function ................................................................................................................ 359 Set Behavior Export Statement ........................................................................................... 360 Skip Case Statement ........................................................................................................... 360 Numeric Functions .................................................................................................................. 360 Abs Function ....................................................................................................................... 360 Cmcode Function ................................................................................................................ 361 Countnonspecial Function .................................................................................................. 361 Exp Function ....................................................................................................................... 362 High Function ..................................................................................................................... 363 Inc Function ........................................................................................................................ 363 Int Function ......................................................................................................................... 363 Log Function ....................................................................................................................... 364 Low Function ...................................................................................................................... 364 Random Function ................................................................................................................ 364
xxv
CSPro User's Guide Randomin Function ............................................................................................................. 365 Seed Function...................................................................................................................... 365 Sqrt Function ....................................................................................................................... 366 Set Behavior SpecialValues Statement ............................................................................... 366 String Functions ...................................................................................................................... 367 Compare Function ............................................................................................................... 367 Concat Function .................................................................................................................. 367 Edit Function ....................................................................................................................... 368 Getbuffer Function .............................................................................................................. 368 Length Function .................................................................................................................. 369 Maketext Function .............................................................................................................. 370 Pos Function........................................................................................................................ 371 Poschar Function ................................................................................................................. 372 Strip Function...................................................................................................................... 372 Tolower Function ................................................................................................................ 373 Tonumber Function ............................................................................................................. 373 Toupper Function ................................................................................................................ 373 Multiple Occurrence Functions............................................................................................... 374 Average Function ................................................................................................................ 374 Count Function.................................................................................................................... 374 Curocc Function .................................................................................................................. 375 Delete Function ................................................................................................................... 376 Insert Function .................................................................................................................... 376
xxvi
Table of Contents Max Function ...................................................................................................................... 377 Maxocc Function ................................................................................................................ 378 Min Function ....................................................................................................................... 378 Noccurs Function ................................................................................................................ 379 Seek Function...................................................................................................................... 379 Soccurs Function................................................................................................................. 380 Sort Function ....................................................................................................................... 380 Sum Function ...................................................................................................................... 381 Swap Function .................................................................................................................... 381 Totocc Function .................................................................................................................. 382 General Functions ................................................................................................................... 382 Clear Function ..................................................................................................................... 383 Datediff Function ................................................................................................................ 383 Errmsg (Display) Function ................................................................................................. 384 Execsystem Function .......................................................................................................... 386 ExecPFF Function............................................................................................................... 387 Getlabel Function ................................................................................................................ 387 Getsymbol Function ............................................................................................................ 388 Invalueset Function ............................................................................................................. 388 Pathname Function.............................................................................................................. 389 Special Function.................................................................................................................. 389 Stop Function ...................................................................................................................... 389 Sysdate Function ................................................................................................................. 390
xxvii
CSPro User's Guide Sysparm Function ............................................................................................................... 391 Systime Function ................................................................................................................ 391 Trace Function .................................................................................................................... 392 External File Functions ........................................................................................................... 394 Close Function .................................................................................................................... 394 Delcase Function ................................................................................................................. 394 Fileconcat Function ............................................................................................................. 395 Filecopy Function ............................................................................................................... 395 Filecreate Function.............................................................................................................. 396 Fileexist Function................................................................................................................ 396 Filedelete Function.............................................................................................................. 397 Filename Function .............................................................................................................. 397 Fileread Function ................................................................................................................ 397 Filerename Function ........................................................................................................... 398 Filesize Function ................................................................................................................. 398 Filewrite Function ............................................................................................................... 399 Find Function ...................................................................................................................... 399 Key Function ....................................................................................................................... 400 Loadcase Function .............................................................................................................. 400 Locate Function .................................................................................................................. 401 Open Function ..................................................................................................................... 401 Retrieve Function ................................................................................................................ 402 Setfile Function ................................................................................................................... 403
xxviii
Table of Contents Writecase Function ............................................................................................................. 403 Write Function .................................................................................................................... 404 Appendix ..................................................................................................................................... 407 Appendix A - Installation........................................................................................................ 407 Hardware and Software Requirements ............................................................................... 407 Installing CSPro .................................................................................................................. 407 Uninstalling CSPro ............................................................................................................. 409 Installing a Newer Version ................................................................................................. 410 Installing Data Entry Applications...................................................................................... 410 Changing Language or Components ................................................................................... 411 Creating Limited CSPro Installations for Redistribution.................................................... 412 Appendix B - Keys Summary ................................................................................................. 412 Data Dictionary Keys .......................................................................................................... 412 Data Entry Keys .................................................................................................................. 413 Batch Edit Keys .................................................................................................................. 414 Tabulation Keys .................................................................................................................. 415 Appendix C - Menu Summary ................................................................................................ 416 CSPro Menu ........................................................................................................................ 417 Data Dictionary Menu......................................................................................................... 417 Data Entry Menu ................................................................................................................. 418 Batch Editing Menu ............................................................................................................ 420 Tabulation Menu ................................................................................................................. 420 Appendix D - Toolbar Summary ............................................................................................ 421
xxix
CSPro User's Guide CSPro Toolbar .................................................................................................................... 421 Data Dictionary Toolbar ..................................................................................................... 422 Data Entry Toolbar ............................................................................................................. 422 Batch Editing Toolbar ......................................................................................................... 423 Tabulation Toolbar.............................................................................................................. 424 Appendix E - Converting Within IMPS or ISSA.................................................................... 425 Converting a data dictionary ............................................................................................... 425 Converting within IMPS ..................................................................................................... 425 Converting within ISSA...................................................................................................... 426 Converting an IMPS Data Entry Application ..................................................................... 427 Converting an ISSA Data Entry Application ...................................................................... 427 Appendix F - Errors in Censuses and Surveys........................................................................ 427 The Nature of Census and Survey Data .............................................................................. 427 Errors in Censuses and Surveys .......................................................................................... 428 Appendix G - File Types......................................................................................................... 430 File Types............................................................................................................................ 430 Locking Application Files................................................................................................... 431 Temporary Data File ........................................................................................................... 431 Files Description ................................................................................................................. 433 Data Dictionary File (.DCF) ........................................................................................... 433 Binary Data Entry Application File (.ENC) ................................................................... 433 Data Entry Application File (.ENT)................................................................................ 434 Form File (.FMF) ............................................................................................................ 434
xxx
Table of Contents Logic File (.APP) ............................................................................................................ 434 Messages File (.MGF) .................................................................................................... 435 Question File (.QSF) ....................................................................................................... 435 Data File .......................................................................................................................... 435 Data File Index (.IDX) .................................................................................................... 435 Notes File (.NOT) ........................................................................................................... 435 Data File Status (.STS) ................................................................................................... 436 Listing File (.LST) .......................................................................................................... 436 Tabulation Application File (.XTB) ............................................................................... 436 Table Specifications File (.XTS) .................................................................................... 436 Tables File (.TBW) ......................................................................................................... 436 Area Names File (.ANM) ............................................................................................... 436 Table Matrices File (.TAB)............................................................................................. 437 Table Matrices Index File (.TAI) .................................................................................... 437 Batch Edit Application File (.BCH)................................................................................ 437 Edit Order File (.ORD) ................................................................................................... 437 Frequency file (.FRQ) ..................................................................................................... 437 Map Data File (.MDF) .................................................................................................... 438 Map File (.MPC) ............................................................................................................. 438 Program Information File (.PFF) .................................................................................... 438 Frequency Specification file (.FQF) ............................................................................... 438 Operator Statistics File (.LOG) ....................................................................................... 438 Saved Arrays File (.SVA) ............................................................................................... 439
xxxi
xxxii
CSPro Capabilities
Process Census or Survey Data Given an existing data file, a user can develop a CSPro application that will examine the file for inconsistencies, structural defects, or other errors. CSPro permits the user to generate detailed reports on all errors found; the user may also create subfiles from the original data, and may use multiple lookup files during the validation and/or report-generation process. Enter, Modify, and Verify Data CSPro users can create data entry forms (screens) for data capture. The application designer has full control over form layout. CSPro supports rosters, consistency checks and skip patterns of unlimited complexity, user-defined messages and menus, multiple lookup files, and produces operator statistics. Once a case has been completely entered, the operator can modify any part of the existing data and can add or remove information, as well (subject to application constraints). CSPro supports both dependent and independent verification (double keying) to ensure the accuracy of the data entry operation. Using independent verification, operators can key data into separate data files and use CSPro utilities to compare them. Using dependent verification, operators can key data a second time and have CSPro immediately compare it to what was keyed the first time on a field-by-field basis. Manipulate Data Files CSPro permits the user to re-structure existing data files and to create subsets of data in separate files. New files can be created by merging two or more case-related files. Data files in software-specific formats may be created for import into spreadsheets and some statistical packages. Tabulate Data The user can create an application to produce frequency distributions or cross-tabulations using two to four variables. Results can be displayed either globally (for the totality of the data file) or according to one or more elements of the geographic hierarchy. Tabulations may show only percentages, or percentages in conjunction with counts. Data may be weighted or unweighted. Create Thematic Maps If computerized maps are available for the relevant geographic areas, CSPro can generate crosstabulations whose results can be joined to the map files to produce thematic maps for display of information. Thematic map display parameters permit a high degree of customization in the presentation of these data. Use and Share External Files When a data file is to be used by more than one person, a CSPro dictionary can be created and distributed among users of the data to facilitate access. Including multiple value sets for variables can cater to the different needs of individual users so that each users requirements are met. Examine Data Files
CSPro Applications
Data Entry Applications
A Data Entry application contains a set of forms (screens) and logic that a data entry operator uses to key data to a disk file. Data entry applications can be used to add new data and to modify existing data. You can have the following run-time features in your data entry application: Add new cases (questionnaires) or retrieve and modify existing cases Logic can be executed and messages displayed after any field is entered Consistency checks and skip patterns of unlimited complexity Multiple look-up files Cases indexed to avoid duplication and for easy retrieval Operator statistics You use CSPro to develop the data entry application. You use CSEntry to run the data entry application. For small surveys and for testing applications, you can run CSEntry directly from CSPro, on the same computer. For large surveys and censuses, which require a production environment, you can transfer the application files to other computers and run CSEntry on them. See also: Create a New Data Entry Application
Tabulation Applications
A Tabulation application contains a set of table specifications and a data dictionary describing a data file to be tabulated. When you create your application, you can use an existing data dictionary or you may create one as you create the application. In a Tabulation application, you can: Cross-tabulate a virtually unlimited number of variables. Tabulate variables created "on the fly" under program control. Select the universe of tabulation. Tabulate values and weights. Tabulate simple counts and percents. Tabulate mean, median, mode, standard deviation, variance, n-tiles, proportions, min, max. Perform table cell manipulation after tabulation. Define detailed table formatting. Save tabulations in several file formats. Copy tables to spreadsheets or word-processing documents.
Produce tables by geographic area. Map results by geographic area. See also: Create a New Tabulation Application
Data Dictionary
A Data Dictionary describes the overall organization of a data file, in other words, it gives a description of how data are stored in a file. CSPro requires that a data dictionary be created for each different file being used. A Data Dictionary file has the extension .DCF. In the Data Dictionary you can: Define simple or complex hierarchical file organization. Define hierarchical levels, identification items, records, items (fields or variables), value sets (categories of values), and values. Create descriptive notes for documentation. Define multiple-occurring items. Produce reports of file organization. See also: Creating a Dictionary for a New File, Creating a Dictionary for an Existing File
Forms Design
You can create an unlimited number of forms (screens) for data entry. These can be designed independently or as part of the data entry application. Forms may be any size; CSEntry will scroll as necessary Forms may contain fields from different physical records Physical records may be split among different forms Forms may contain individual fields or rosters There is usually one Form File (.fmf) per application, but there may be multiple forms files. Each forms file contains one Data Dictionary File (.dcf) that represents the primary data file that is being created or modified. See also: Introduction to Forms Design
Tool List
To run a tool, open the Tools menu and select one of the tools listed below: Text Viewer The Text Viewer will display the contents of any ASCII file up to a maximum of 32,000 characters and up to 2 gigabytes in size. You can copy, save, or print all or part of the contents of the text file. You can
Create a new application This allows you to create a new application when CSPro is launched. After you specify the names of the applications files, the new application is opened. Open an existing application This allows you to open an existing application either by selecting a recently used application from the list provided or to select, using other files, any CSPro application available on the computer or connected servers. If you cancel the dialog box, CSPro will remain open so that you can use CSPro tools or at a later time open an application or create a new application.
Trees
After you create an application, the tree will display the application(s) that are currently open, all the files that belong to that application and their relationships with one another. The files tree is always present. When you close the application or file, it is removed from the files tree. There are five kinds of trees in CSPro: Files tree shows all the applications that are open, and the files they contain.
Dictionaries tree shows all the dictionaries that are open, and their contents. Data entry forms tree shows all the form specifications that are open, and their forms and fields. Batch edits tree shows all the edits specifications that are open, and the order of edits. Tables tree shows all the table specifications that are open, and their contents. The files tree is always available. The other four trees are available only if appropriate applications are open.
To change the tree on the left side, click the tab of the tree you want to see. The tabs at the bottom of the tree indicate which file tree is displayed. To change the tree, click the tab of the tree you want to see. Use Ctrl+T to see the full file names (labels) of the files you have open. Doubleclick on the files tree to switch the frame on the right side of the screen. See also: Data Dictionary Tree, Data Entry Tree, Batch Edit Tree
Windows
The window on the right side of the screen allows you modify the contents of a dictionary or application. Each different window has different functions associated with it. That is, you will see a different menu and toolbar with each different window. Part of the toolbar to the left of the Help button shown below allows you to switch between different types of windows: Dictionary, Forms Design, Batch Editing, and Tabulation.
To change the contents on the right side of the screen press the button of the type of window you want to view. If there is more than one window of that type, the most recent one viewed will be displayed. If you need to select a particular window, from the Window menu, select the file name you want to view.
How To ...
Create a CSPro Application
Click on the toolbar; or from the File menu, select New; or press Ctrl+N. The following dialog box will appear.
Select the type of application you want to create and press OK. You can create one of the following applications: Data Entry Application to enter data from a paper questionnaire or though a computer assisted personal interview (CAPI) Batch Edit Application to detect and correct errors in data file Tabulation Application to produce publication ready tables You will then be prompted to enter the file name of the application. Enter the file name of the application and press Create. The File Associations Dialog will be displayed. Specify the names of other files that make up the application, such as the data dictionary files. You are given a name for the input dictionary. You can change the name of the input dictionary and/or add the names of additional external lookup dictionaries.
10
Change Windows
Cascade Use this command to arrange multiple opened windows in an overlapping fashion. Tile Top-to-Bottom Use this command to arrange multiple opened windows one above the other in a non overlapping fashion. Tile Side-by-Side Use this command to arrange multiple opened windows one beside the other in a non-overlapping fashion. 1,2, View displays a list of currently open files at the bottom of the Window menu. A check mark appears in front of the name of the file in the active window. Activate a window by choosing the name of its file from this list.
on the toolbar or, from the File menu, select To change the page headers, footers, or margins, click "Page Setup". The changes will remain in effect until you change them again. In the page setup dialog box make changes to the page headers, footers, and margins. Header Edit the text to be placed at the top left, top center, and top right of each page. You can use the Date, Time, File, and Page buttons to insert the current date, time, file name, and page number. Footer Edit the text to be placed at the bottom left, bottom center, and bottom right of each page. You can use the Date, Time, File, and Page buttons to insert the current date, time, file name, and page number. Margins Change the size of the top, bottom, left and right margins. Your printer may not allow margins below certain values. To change the page orientation or size, open the File menu and select "Print Setup". In the print setup dialog box make changes to orientation (portrait or landscape) and paper size.
To print part of a document select the text you want to print then click menu, select "Print"; or press Ctrl+P. To preview the printing, click
on the tool bar; or from the File menu, select "Print Preview".
Get Help
Click on the toolbar; or, from the Help menu, select "Help Topics"; or press F1. Most dialog boxes have a Help button. To contact us about problems International Programs Center Population Division U.S. Census Bureau Washington, DC 20233-8860 Phone: 1 (301) 763-1451 Fax: 1 (301) 763-4282 E-mail: [email protected] Visit: www.census.gov/ipc/www/cspro Please contact us for any problem or to get more information on an application. When you contact us, please indicate the version number of the software you are using. You can obtain the version number from the top of the About box. From the Help menu, select "About".
12
The file associated with the current frame (right side of the screen) will be saved. If that file belongs to an application that is open, the entire application will be saved. If the file belongs to more than one application, CSPro will ask you which one you want to save. In that case, select the file or files you wish to close or save and click on "OK". To choose all of the files, click on the Select All button. To choose several files, hold down the Ctrl key and click on files you wish to select. See also: Open an Existing Application
Close an Application
From the File menu, select Close. The file associated with the current frame (right side of the screen) will be closed. If that file belongs to an application that is open, the entire application will be closed. If the file belongs to more than one application, CSPro will ask you which one you want to close. In that case, select the file or files you wish to close or save and click on "OK". To choose all of the files, click on the Select All button. To choose several files, hold down the Ctrl key and click on files you wish to select. See also: Open an Existing Application
13
Only the name of the input dictionary must be supplied. A default input dictionary file name is given, but it may be changed. Other external dictionary file names are specified as needed. If any of the files names specified already exist, those files will be attached to the application. If any of the file names specified are new, those files will be created.
Save As Application When an application is saved under a new name, a files dialog box like the one below is displayed.
Names for all the files requested must be supplied. Default file name are given, but they may be changed. If any of file names specified are new, those files will be created for the new application. If any of the files names is the same as the name in the original application, those files will be shared with the new application. If any other of the files names specified already exists, those files will be overwritten. See also: New Application, Save As Application
Pack an Application 14
There are instances when it is helpful to collect all the files in an application to: Move them to another computer (for example to move data entry applications to all your data entry computers). Give the application to a colleague to use. Send the application when requesting help. There is a CSPro tool to perform this function. This tool copies all the files in the application into a ZIP file. To use this tool go to the Tools menu and select Pack Application. See also: Pack Application
15
Organization
Questionnaire and Dictionary Organization
Questionnaire - Form A questionnaire is a collection of information relating to the same unit of observation (such as a household, person, or factory). A typical questionnaire consists of an identification section followed by other sections grouped by topic. Each section includes a set of related questions, each of which is associated with a list of response values. A questionnaire usually constitutes a case. - Section Any type of questionnaire will have an identification section that uniquely identifies the form, as well as one or more sections on different topics. Some sections may occur once per questionnaire while other sections are repeated many times. For example, in a typical housing and population census, a questionnaire would contain a section for the housing questions, and a section for the population questions. The questions in the housing section will be answered once per questionnaire [household], while the questions on the population section will be answered by every person in the household. If the census is collecting information on vacant housing units then the questions on the population section will not be answered. In a school survey, for example, the questionnaire would have an identification section and only one section to collect basic information for each student. The questionnaires for the different students are not related.
17
- Questionnaire Identification The identification section identifies the questionnaire, usually with numeric geographic codes. The combination of identification codes (such as province, district, village, household) on a questionnaire uniquely identifies the form. These are the codes you would need to locate a specific questionnaire. - Questions The basic element of the questionnaire is the question. Each section of the questionnaire contains a set of one or more questions being asked for this census or survey. - Responses The valid options in response to a question are usually listed in the questionnaire. Some responses are quantitative, such as "size of farm" or "age of person," and some are qualitative, such as "relationship to head of household" or "crop grown." Responses can be numeric or alphanumeric. Most descriptive responses are equated to numeric codes that are placed on the questionnaire. However, some descriptive responses remain as alphabetic text. Data Dictionary - File In the data dictionary a topic section is usually equivalent to a record. A record includes data items (questions) that are associated with one or more value sets (response values). Records with the same identification codes (i.e., Questionnaire Ids) comprise a single questionnaire. - Records Similarly, a data dictionary may have records that occur once and records that repeat many times. The typical housing and population census will have one housing record and as many population records as people in the household; the housing and population records will equate to one questionnaire, and these records are related. If our study permits vacant housing units, then the data file will not include a population record for an unoccupied housing unit. In the school survey each questionnaire will only have one record, and there is no relationship between records in the data file. This type of data file is known as a "flat data file." The records for the different sections will most likely have different structures. Using the data dictionary module you can identify each record structure using a record type name and code. - File Identification Similarly in the data dictionary, you first define the identification items to uniquely identify the questionnaire. These data will appear on every record in a data file, as they are "common" to all of the records. In a data file, if a group of questionnaire ID fields uniquely identify the unit under observation, then those records make up one questionnaire. In the case of the student survey the student identification number could serve as the questionnaire identification. - Data Items In the data dictionary the data item contains the response to a question, and is therefore the most basic element of a questionnaire "age", "income", and "crop-code" are all examples of items. Related items should be placed in the same record. And, just like records and levels, data items possess properties (such as a unique name, label, etc). Items in data files must be fixed format, that is, items must have the same starting position and length in every record where they occur. - Value Sets In the data dictionary, the responses in the questionnaire are defined as value sets. A single value set can contain one or more values. The valid values can be defined as individual values or ranges of values. See also: Record Description, Item Description, Value Sets Description
18
blue text refers to the student identification number. black text describes the individual data items for each specific record. Notice there is no need to have a record type identifier. Multiple record types per questionnaire In a multiple-record data file, several lines of data (and therefore several records) from the data file equate to one questionnaire. This means there is a relationship between records in the data fileand information identifying them as such in the form of Questionnaire Ids will be needed. For example, in a typical housing and population census, a questionnaire might consist of the following records: - one housing record - multiple (zero or more) population records For a given questionnaire there would be one or more population records for one household record, dependent on the number of people in the household. However, if you allowed vacant housing units, then those questionnaires would not have any corresponding population record. A sample (and recommended) file structure could be as follows (not all fields are defined for this example): 11010011122122 (household with 3 persons) 2101001120109196138 2101001212105196732 2101001311707199207 11010031211212 (vacant household) 11010021111121 (household with 2 persons) 2101002110716193069 2101002220812192871 In the example above: Red text refers to the record type. In our example, 1 is a household record, and 2 is a population record.
19
Blue
text refers to the (Id Items). Note that the numbers are unique for each questionnaire: the 101001 household contains three people whereas the 101002 household contains two people. text describes the individual data items for each specific record.
Black
A questionnaire designed for an agricultural census might consist of the following records: - one farm household record - multiple (one or more) crop records - multiple (one or more) farm worker records A questionnaire for a reproductive health survey might consist of the following records: - one record for data on the woman - multiple (zero or more) children-ever-born records - one contraceptive use record - one immunization record
Dictionary Hierarchy
A data dictionary is structured in a hierarchical order. The top hierarchy is the case, followed by the level, then record. Case A case is the primary unit of data in the data file. A case usually corresponds to a questionnaire. However, some complex applications might have a hierarchical set of questionnaires, or many levels. For example, the main questionnaire may consist of a household roster and other household information, and there may be a separate questionnaire for each woman in the household. The data entry application may then contain two levels one for the household and one for each woman in the household. The set of forms corresponding to the household make up level one. The set of forms corresponding to each woman make up level two. Each case would consist of two type of questionnaires: a single level one and a variable number of occurrences for level two. Most applications consist of a single level. Level A level is a type of questionnaire. By default, all new dictionaries have one level. This is normally sufficient to describe, for example, a population or agriculture census. However, if you have a hierarchically-structured set of questionnaires, you will probably need to use additional levels. A level can have many records corresponding to different record types. Record A record usually corresponds to a section of a questionnaire, and consists of a group of related data items. For example, data items related to housing would form a housing record; data items related to individuals would form the population records; data items related to production of a particular crop would form the crop record, and so on. If a dictionary contains more than one record, then you must use the record type item to identify one record from another in the data file. See also: Level Description, Record Description
Dictionary Concepts
20
Names
Names identify the dictionary and its elements when they are referenced in CSPro procedures. Names are required for the dictionary and most of its elements. Names consist of upper case letters (A-Z), digits (0-9), and embedded underlines (_). The first character of a name must be a letter; the last character cannot be an underline (_). Names can vary in length from 1 to 32 characters. Names must not be CSPro reserved words. Names cannot be duplicated within a dictionary. However, the same name can be used in different dictionaries, and in some cases, it maybe desirable to do so. Examples: SEX, RELATIONSHIP, MOTHER_ALIVE, Q102_AGE_CHILD The dictionary tree displays either the labels or names of dictionary elements. You can press Ctrl+T or from the View menu, select Names in Trees at any time to toggle between labels and names.
Notes
Notes document the dictionary and its elements. The designer may create notes for the dictionary as a whole and/or any of its elements: levels, records, items, value sets, values. Notes may contain any printable character and spaces, and can be up to 65,000 characters in length.
Levels
Level Description
A level is a type of questionnaire. By default, all new dictionaries only have one level. The maximum number is three. A good use for a three-level dictionary might be a reproductive health survey that has the following questionnaires: A housing questionnaire A questionnaire for each woman of reproductive age in the household A questionnaire for each womans child in the household
21
In this example, you would want each child to be associated with its mother, rather than the household record. If you were to structure your dictionary in a single level, there would be no way to easily identify which mother and child(ren) belonged together during data entry or during tabulation. To accomplish this, you would want to design your dictionary with three levels, each level containing a single type of record, as follows: Level 1 Household Record Level 2 Woman of Reproductive Age Record Child Record (one for each child) In the Forms Designer you will be required to place each record's data on different forms. However, this facilitates the desired data entry behavior. You will first be asked to enter information from Level 1, i.e., the household. After completing the household form(s), you will then enter information for the first woman and her children (Level 2). When data entry is finished for this woman record the keyer will advance to the child record, and enter information for each child (if any) for this women. If there are no further children (or no children at all for this female), finish the level by pressing F12 (EndLevel Occurrence) and resume entering information for the second woman and her children. Continue in this manner until all women and their children have been entered for the householdwhen finished, press Ctrl+F12 (EndLevel) from the Woman Form to complete data entry for this case. Keep in mind that, when using more than one level, there are implications with respect to the order of executing logic in a data entry application or in a batch edit application. See also: Dictionary Hierarchy, Level Properties, Add or Modify Levels
Level Properties
Level properties are visible when the dictionary has been selected in the tree tab. To reflect your intended usage for a level we suggest you change the level properties pressing Ctrl+M, which will activate the appropriate entry in the right-hand screen. Property Label: Name: Meaning A descriptive text label which identifies this level The name given to this level for use in the CSPro language procedures.
22
Records
Record Description
A record is a group of related data items. In the process of creating a record to define (a portion of) the questionnaire, you will also be defining the physical layout of the data file. For example, suppose your (very simple) population record looks like the following (only item name, starting position, and length properties are shown; starting positions show that ID items occupy the first 9 positions in the record): Item Name Start Pos Length Relationship 10 1 Sex 11 1 Age 12 2 If an operator had keyed a questionnaire for a 35-year-old female (Sex = 2) head of household (Relationship = 1), you would see a line in the data file, corresponding to the population record defined above: 1 2 12345678901234567890 <-- position -------------------1235 <-- line in data file In deciding on a file structure, there is often the choice of defining a record type which occurs once within a questionnaire but contains repeating sets of data, or to define a record type which occurs multiple times within a questionnaire, each with a single occurrence of the data. The application designer should take into consideration the amount of information that recurs and the probable number of occurrences. A common example in a Housing and Population Census is information about deaths in the household during the 12 months prior to the census. If this information (usually sex and age at death of the deceased) is collected during enumeration, the expectation is that 95% of households will have no more than one, or at most two, deaths during the previous 12 months. With this volume of information, it would be practical to have one record type that occurs once within the questionnaire and allows for repeating occurrences of the data, since it is unlikely that even the maximum number of occurrences, multiplied by the number of positions occupied by each occurrence, will exceed the length of the already-existing household and population records. However, in the case of an agricultural survey, a section on crops may include questions about acreage planted, yields, etc., whose cumulative length for each crop mentioned may be quite large in relation to other records in the file. In such a case, it would be more practical to define a record type that occurs multiple times within the questionnaire. Within each occurrence of the record would be found the information relating to one specific crop. See also: Dictionary Hierarchy, Record Properties, Record Type, Required Record, Maximum Number, Add or Modify Records
Record Properties
You can view a record's properties by selecting the questionnaire to which it belongs (via the dictionary tree tab). You may change the default record properties by positioning the cursor in the right window and pressing Ctrl+M.
23
Record Type
The Record Type is an alphanumeric item that uniquely identifies a dictionary record, and therefore helps describe your data file's organization. If your dictionary contains more than one record, CSPro needs to be able to differentiate one record from another in the data file. "Record Type" provides the means for doing this. For example, a typical Housing and Population census data file would most likely have a housing record (describing details of the living unit) and a person record (to describe details on each individual in the household). You could assign a Record Type of '1' to the Housing record and '2' to the Person record to distinguish between them. If your dictionary contains only one record, you do not need to use a Record Type. Therefore, you can 'reclaim' the location that was set aside for the Record Type as follows: Select the (ID Items) set or the one-and-only record your dictionary contains from the dictionary tree. In the view on the right, you'll notice the first line is (record type). Only three values are used, Starting_Position, Length, and Data Type. Of these three values, you can only modify the start position and length. Change the length to 0. This will effectively "remove" the record type. (You can always reinstate it later by resetting the start position and length to non-zero values). Similarly, if you would like to modify the length of the Record Type, proceed as above. The record type value is always alphanumeric. Upper- and lowercase letters are distinct Record Type values (i.e., 'A' is not the same as 'a'). Blank is a valid Record Type value. See also: Record Description, Record Properties, Required Record, Maximum Number, Labels, Names
Required Record
One of a record's properties is whether or not the record is required; the options are "Yes" or "No". If a record is required ["Yes"], it means that for a given questionnaire, there must be at least one occurrence of this record. If there is not at least one occurrence of this record, the questionnaire will not be complete and the system will issue an error message to inform the keyer. If the record is not required ["No"], the questionnaire may or may not contain an occurrence of this record. The questionnaire can be considered complete without an occurrence of this record.
24
Suppose you are designing a dictionary for a census. You'll probably have at least two types of records: one for the household, and one for each person in that household. You can have four scenarios: If you allow vacant housing units (i.e., you collect information on unoccupied housing units), then the household record is required and the person record is not required. If you allow homeless people, then the household record is not required and the person record is required. If you allow homeless persons and vacant housing units, then neither the housing record nor the population record will be required record types, but because the two conditions will never occur simultaneously, you will never have a questionnaire without one of the other type of record. If you allow neither homeless persons nor vacant housing units, then both the housing record and the population record will be required record types. This means that a valid questionnaire will always have one housing record and at least one population record. See also: Record Description, Record Type, Maximum Number. Labels, Names
Maximum Number
This record property specifies, for the given record, the maximum number of occurrences of that record allowed in one questionnaire. For example, suppose you are designing a dictionary for a census. You will probably have at least two types of records: one for the household, and one for each person in that household. There should be only one occurrence of the household record, but for the person record you will of course need more than one occurrence, as there will likely be more than one person in a household. Thus, the maximum for the person record could be 25, if limiting yourself to a family unit, or larger, if enumerating group facilities (military barracks, hospitals, mental institutions, etc.). The maximum number of occurrences that may be specified for any record is 9,999. However, for greater program efficiency we recommend that you never have this many occurrences and that you keep the maximum to the lowest value that is appropriate for your particular application. See also: Record Description, Record Type, Required Record, Labels, Names.
Items
Item Description
An item describes the response to a question or helps identify the questionnaire. The item is the most basic element of a questionnaire: "age," "income," and "crop-code" are all examples of items. Related items should be placed in the same record. And, just like records and levels, data items possess properties (such as a unique name, label, etc). An item can be redefined into sub-items See also: Identification Items, Item Properties, Add or Modify Items
Identification Items
Identification items (i.e., ID items) are those data items that uniquely identify the questionnaire and define hierarchical levels. They are usually geographic items, such as Province, District, or Enumeration Area, or
25
Subitems
This item property specifies whether the data is an Item or a Subitem. Subitems allow items to be broken up into smaller pieces, or across broad categories. In this respect, they let you redefine data items and refer to the same data field in several different ways. The start position of a subitem must be within its parent item (the previous item). One useful application of subitems involves date and time fields. A date item, for example, could be referred to as a single 8-digit entity: DDMMYYYY. However, this does not allow you to easily manipulate or refer to a portion of the date (such as the day, month, or year itself). Suppose you had the following definition for date (for demonstrative purposes, not all item properties are being shown): Item Label Item Type Starting_Position Len Date of birth Item 20 8 To redefine this item into subitems, you only need to add the following subitems: Item Label Item Type Starting_Position Len Day of birth Subitem 20 2 Month of birth Subitem 22 2 Year of birth Subitem 24 4 Another reason for using subitems is to make data references available across larger categories. Censuses and surveys often have items of three or four digits in length representing categories such as industry, occupation, or ethnicity. For occupation codes, the full value refers to a very detailed occupation, such as bus driver. The first digit alone refers to the 'major' division, such as 'public service'. The first two digits together refer to a more detailed 'major' division, such as 'public transportation'. It may be useful to test the ranges with the CSPro language at the item level. In tabulation applications, tables can be made at the major (1- or 2-digit) or minor (3- or 4-digit) divisions. The following example could represent part of an economic survey: Item Label Item Type Starting_Position Len Occupation Item 45 4 Occupation, Major Subitem 45 1 Occupation, Sub-major Subitem 45 2 Occupation, Minor Subitem 45 3 In IMPS 3.1, the predecessor to CSPro, it was very common to use subitems to redefine data items. This is now more easily accomplished with value sets. NOTE: Identification items cannot have subitems.
26
Item Properties
You can view an item's properties by selecting the record to which it belongs (via the dictionary tree tab). When creating an item, the following fields must be set: Property Label Meaning A descriptive text label that identifies the item. It is used as default field text in data entry forms and in default titles in tabulation. The name given to this item for use in CSPro language procedures. Indicates the starting position of the item within the record Indicates the length of the data item (i.e., the number of characters necessary to represent the values for the item). Indicates the type of data (numeric or alphanumeric) that will be found in the item. Indicates whether the item is or is not subordinate to, or part of, another item. If the item is part of another item, it is considered a "subitem". If not, it is identified as an "item". Identification items cannot have subitems. The number of times this item will repeat within the record. The default value is "1". Identification items cannot have multiple occurrences. The number of decimal places (if any) in the item. The default number of decimals is "0". Identification items cannot have decimals. This specifies whether the item should be stored in the data file with an explicit decimal character. This applies only to items or subitems which have been defined with the "Dec" property grater than zero (i.e., Dec >= 1). This item property states whether the numeric data item should contain leading zeros or blanks.
Data Type
Item Type
Occ
Dec
Dec Char
Zero Fill
Press the Esc key to quit modifying without making changes. Press Ctrl+Enter to finish making changes. Use undo if you completed the modification incorrectly. There is no limit on the number of items within a record. See also: Item Description, Sub-Items, Identification Items, Add or Modify Items
Starting Position
This item property indicates the starting location of a data item. In conjunction with the length property, it specifies the location of the item in a record. In absolute positioning mode, you cannot give a starting position that will cause the item to overlap with another item.
27
Length
This item property indicates the total length of the data item (i.e., the number of characters necessary to represent the values for the item). In conjunction with the "start" property, it specifies the location of the item in a record. In absolute positioning mode, you cannot give a length that will cause the item to overlap with another item. The maximum length of a Numeric item is 15 digits. The maximum length of an Alpha item is 255 characters. See also: Item Properties
Data Type
This item property specifies what type of data (numeric or alphanumeric) that will be found in the item. The default item type is "Numeric". Numeric items can contain numbers or blanks, and they may be negative or positive in value. Numeric values will be right-justified and, if requested, zero-filled. Alphanumeric items can contain any character, letter, numeric digit(s), blanks, or special characters. These values will be left-justified and are blank-filled, whether or not "zero-fill" has been selected. Declaring 'M' or 'F' for gender is an example of an alphanumeric value. Some responses are quantitative, such as size of farm, and some are qualitative, such as relationship to head of household. Most descriptive responses, such as 'head of household', are equated to numeric codes which are placed on the questionnaire. However, some descriptive responses remain as alphabetic text. Numeric responses can be discrete values or continuous values. An example of a discrete value is gender, 1 (male) or 2 (female). An example of a continuous value is yearly income, which can range from zero to a value limited only by the number of digits permitted for the response. A discrete value may be used to represent a grouping of continuous values. For example, when asking income, one may be asked to select from a choice of ranges of incomes rather than specify the exact income. Thus, the possible responses to the income question could, for example, be a code between 1 and 10. See also: Item Properties
Occurrences
This item property defines the number of consecutive repetitions of the item in the data record. The dictionary will reserve space equal to the product of the length of the item times the declared number of occurrences for the item. For example: A census collects information on births and deaths, and each questionnaire can list the ages of up to a dozen household members who died during the past year. By defining an item "Age at death" with a length of 2 digits and 12 occurrences, the dictionary will reserve a location 24 characters in length for this item.
28
Decimal Places
This item property lets you specify how many digits of the numeric item represent the decimal portion of the item. CSPro does not expect the decimal point to be in the data file; if your data file does contain the decimal point, you will need to set the decimal character property. Therefore, the length of the item is not affected by the number of decimal places. For example: Suppose you had two data files, each containing an item in the format "##.##". One file has an implied decimal point, the other file physically contains the decimal point. Here are the two ways to define the item (using 12.75 as an example) Length Dec Dec Char 4 2 No (decimal implied; number would appear as "1275") 5 2 Yes (decimal present; number would appear as "12.75") NOTE: ID items cannot have decimals. See also: Item Properties
Decimal Character
This item property applies to those numbers specified as decimal. If the number is a decimal value, this states whether or not the decimal point is present in the data file. Your valid choices are: Yes the data file contains a decimal point for this item, or No the data file does not contain a decimal point for this item. Note that if your item does not have a "numeric" data type, the Data Dictionary will not allow any value other than No. You can set this option for all items by clicking on "DecChar Default 'Yes'" on the Option menu. See also: Item Properties
Zero Fill
This item property states whether the numeric data item should contain leading zeros or blanks. For example: During data entry a numeric item with a length of 3 is encountered. A value of '92' was keyed. How will this value be stored in the data file? If zero-fill had been set to Yes, the value would appear as '092' If zero-fill has been set to No, the value would appear as ' 92'
29
You can set this option for all items by clicking on "ZeroFill Default 'Yes" on the Option menu. See also: Item Properties
Value Sets
Value Sets Description
Value sets let you specify one or more group of values for a data item or subitem. When using Tabulation applications or MapViewer, you will want to choose Value Set labels to tabulate/map, as it will give you more descriptive results. The resulting tables (or maps) will contain row and column labels (or region labels) that correspond to the value labels (or numeric distributions, if no value label is present). In a Batch Edit or Data Entry application, the use of value sets can help you when using the vset option to the impute function. For example, suppose you have a survey that needs to classify people's ages three different ways: by discrete value, by 5-year cohorts, or by category, such as "Child," "Adult," etc. This is easily done by adding value sets for the AGE data item: Value Set Label Value Set Name Value Label From To Age AGE 0 98 Not Reported 99 Age by 5 years AGE_5YRS 0 to 4 years 0 4 5 to 9 years 5 9 10 to 14 years 10 14 15 to 19 years 15 19 20 to 24 years 20 24 25 to 29 years 25 29 30 to 34 years 30 34 35 to 39 years 35 39 40 to 44 years 40 44 45 to 49 years 45 49 50 to 55 years 50 54 55 to 59 years 55 59 60 years and over 60 98 Age by Category AGE_CATEGORY Infant 0 0 Child 1 12 Teenager 13 19 Adult 20 59 Senior 60 98 The AGE item now has three defined value sets: AGE, AGE_5YRS, and AGE_CATEGORY. The first value set defines the acceptable range for data entry, while the second and third value sets give a breakdown as you might want to see the data tabulated. The value set will always be added to the end of the item's value set listings. If you add to the wrong place, press the <Esc> key to stop the add. Use undo if you added at the wrong place. See also: Value Set Properties
30
You can view a value sets properties by selecting the item to which it belongs (via the dictionary tree tab). When creating an item, the following must be set. Property Value Set Label Meaning A descriptive text label for a collection of categories of an item. Used by the Tabulation module to select items for tabulation and in table titles. The name of this item for use in the CSPro language procedures.
Values
Value Description
A single value set can contain one or more values. To add multiple ranges to a value, enter one or more spaces as the value label on the next value(s), and the values that follow will become part of the previous value. Multiple ranges are indicated by the lack of a notes box at the beginning of the value line. Zeroes should be avoided in assigning codes to identification items that identify geographic areas, because zeroes are used in CSPro to describe summarized geographic levels. If zeroes are already in the data, they can be recoded to other values using the CSPro logic. You can assign a negative number to a value or the starting and/or ending value of a range. Negative numbers have a leading minus (-) sign. Positive numbers have no sign. The minus sign will be displayed in the data file immediately to the left of the value. If the item is "zero-fill", the minus sign will be displayed in the left-most position. New values will always be added to the end of the existing value set listings. If you add to the wrong place, press the Esc key to stop the add. Use "undo" if you added at the wrong place. See also: Value Properties
Value Properties
Property Value Label Meaning The descriptive text for a single value or range of values. This label is used by the CrossTab module when creating column headings and stubs. This is the single value, or starting value of a range associated with the value label. To add multiple ranges to a value, enter one or more spaces as the value label on the next value(s), the values which follow become part of the previous value. Multiple ranges are indicated by the lack of a "notes" box at the beginning of the value line. This value is the upper limit of the range of values being defined. It must always be greater than the "From" value on the same line. Where only a single value is associated with the "value label," the "to" value
From
To
31
Special
Relations
Relation Description
Relations provide a way of linking one multiple record or item to one or more multiple records or items. For example, suppose a questionnaire contains two record types, child records and mother records. Each child record contains a data item that gives the sequence number of the mother record of the child's mother. A relation can be defined which links child records to mother records so that when data items from a child record are processes, the corresponding mother record data items are available for processing. Relations work much like database joins. Relations have one primary multiple record or item. Each instance of the primary element in a case is processed one at a time. A relation has one or more secondary records or items. The corresponding secondary elements are linked to the primary element during processing. There are four types of linking that can defined by relations. Occurrence to Occurrence Corresponding occurrences of the primary record or item and secondary record or item are linked, that is first occurrences are linked, second occurrences are linked and so on. Item to Occurrence The value of an item on the primary record is a pointer to the occurrence of the secondary record. Occurrence to Item The value of an item on the secondary record is a pointer to the occurrence of the primary record. Item to Item The value of an item on the primary record is compared to the value of an item on the secondary record. If the values are equal, the records are linked. Relations can be used in for statements in batch programs and in the Export Data tool. See also: Relation Properties
Relation Properties
Meaning The name of this item for use in for statements in the CSPro language. This is the name of multiply occurring record or item. Items in the secondary are linked to items in the primary. This is either (occ) or the name of an item. If the primary is a record, then this is the name of an item within the primary record. If the primary is an item, then this is a the name of a subitem within the primary item. This is the name of multiply occurring record or item. Items within the secondary are linked to item in the primary. The secondary cannot be
Secondary
32
Secondary Link
In the Object window select Data Dictionary Provide a name for the new dictionary (you need not provide the dictionary extension (.dcf); it will be automatically appended to the name). Select the folder where the dictionary (object) is to be stored. You can press the "Browse" button to locate an existing folder. If the dictionary file already exists, it will be used. If the dictionary file does not exist, it will be created. Press "Next" to advance to the Summary Screen and review your choices. If everything looks correct, press Finish to complete the operation. If you are creating a dictionary to describe an existing data file, you may want to use absolute mode, in the event there are any "holes" in the data file(s). Or, if you want to use only a subset of the data file's
33
34
CSPro created a dictionary ("Poverty") with one level ("Poverty questionnaire"), and that level contains a set of ID Items ("(Id Items)") and one record ("Poverty record"). The screen on the right displays detailed information for the highlighted object in the left-hand screen. For example, if in the left-hand screen the focus [cursor or highlight] is on the first line ( ), the right-hand screen will display information about the dictionary [file] as a whole. If the focus in the left-hand screen is moved to the second line ( ) questionnaire or case level, the right-hand screen will display information about the questionnaire [case], which is the basic element of the file. As the focus is moved down the dictionary tree, the right-hand screen changes to reflect the different items of interest at each successive level. The tabs at the bottom of the right-hand display are marked "Files" and "Dicts". Clicking on either of these tabs will bring up the appropriate tree. In addition, each tree [File Tree and Dictionary Tree] can be toggled [using Ctrl + T] between views. In the case of the File Tree, the views will show either the internal or external names of the files; in the case of the Dictionary Tree, the views will show either the name or the label of each entity in the file. The first thing we suggest you do is to change the level properties to reflect your intended usage for them. Next, change the record properties [e.g., maximum number of records for each type, whether a given record type is required or optional, etc.] and create any needed additional records for the level. Once you create a record, you can start creating the ID and data item value sets and values.
35
The Data Dictionary Tree contain the following items: Data Dictionary File: This if the highest node, the identification of the data dictionary file. Level: This is the second-tier tree node and identifies the level or questionnaire or case or Identification Item(s) or Record: Represent the identification, or the record Field: Represent the individual items. If the item has more than one value set, then the field will show the symbol "+" indicating that the item can be expanded. Value sets are always designated with the symbol . If the item contains sub-items, these will be designated with the symbol .
36
- Each data item will be placed after all defined ID items (even those defined at a higher level than the record) in the record. - There are no gaps or "holes" between items. - As items are added, inserted, modified, or deleted, other items are automatically moved as needed to maintain the above arrangement. - Changing the starting position of an item will move it and any following items to give the implied relative arrangement. Absolute mode - Use absolute mode to create a dictionary from an existing data file. - The record type, ID items and data items can be positioned at any location in a record. - All items will remain in their assigned locations, unless specifically moved by the user. - When inserting or adding an item, there must be room (i.e., a "gap") for the item at the specified location. - When items are deleted, gaps may be created. - When an item's starting position or length is changed, room for the item must exist.
Dictionary Types
Every dictionary associated with an application has a type value that indicates how it is being used. For the primary dictionary (i.e., the one upon which your application was created), this will be your main dictionary. Other dictionaries (ones that are inserted either directly or secondarily via a forms file) can have additional properties, as explained below. To see your dictionary's type, go to the Files tab, right-click on the dictionary in question, and select "Dict Type." You will then see the following four choices (which may or may not be active, depending on their use): Main This is the principal dictionary upon which the application was built. You cannot give the dictionary another status as it will always be the primary dictionary for the application. External When you add a dictionary to an application, its type can either be "external" or "working". If it is an external dictionary, it must have an associated data file. When external dictionary variables are used in an application, their default values will be Not Applicable (Notappl). Working When you add a dictionary to an application, its type can either be "external" or "working". If it is a working dictionary, it does not need an associated data file. When working dictionary variables are used in an application, their default values will be blank (if the variable type is alphanumeric) or zero (if the variable type is numeric). Special Output
37
How to ...
Open an Existing Dictionary Application
You can display several data dictionary files in the tree. Click on the toolbar; or from the File menu, select Open; or press Ctrl+O. Select any file with extension .DCF. If you already have a data dictionary application open, the new dictionary will be added to the Files tree. You may open a data dictionary and make changes to it, even if it already belongs to an application. Be aware that if you later open an application to which it belongs, CSPro will automatically make necessary adjustments in other files. For example, if you delete or rename a dictionary item, then later open an application that uses this modified data dictionary, any corresponding fields on the data entry forms will be deleted.
38
The layout shows you where, physically, each item in each record is located, how much space has been allocated to it, and if there are any gaps in your file (which is possible when the file's status is absolute). The color scheme used is the following: denotes the Record Type denotes Id Items denotes record Items denotes Subitems Click on the item on the layout window to move the cursor to the specific item in the dictionary window Single click on an item to move to the item's definition. Double click on an item to show its value set(s). Press Ctrl+L a second time to close the view.
You can modify any of the dictionary's items (i.e., a level, record, item, value set, or value). You can modify an item from either the tree or view in either case, the dictionary's menu bar and pop-up menu listing (displayed if you right-click over a tree item or the view) are context-sensitive. Therefore, depending on what you've selected, your choice will be to modify the properties of a level, record, item, value set or value. The Ctrl+M key combination invokes the "modify" process; or, from the Edit menu, choose the "Modify [element]" option. See also: Add Dictionary Elements
From the dictionary tree, select the item within the ID Items or record you wish to add or modify. Right-click to get the pop-up menu; select "Add Item", or press Ctrl+A; or select "Modify Item", or press Ctrl+M. Complete the item properties requested. When you are finished entering data items and wish to stop adding, press the Esc key. There is no limit on the number of items within a record. The item will always be added at the end of the record. After selecting an item in the tree, you can press to initiate add mode.
If you add to the wrong place, press the Esc key to stop adding. Use undo if you added at the wrong place.
41
After pasting the link the value set will turn pink as a way of indicating that the value set is shared across two or more items. Modify or add values to the value set as you would for a regular value set.
Remove a Value Set Link Right-click on the value set name and select "Remove Value Set Link." If the value set is linked to more than two items, you can chose to remove the link for only the item that you right-clicked on, or you can remove all the linkages. When a link is removed the value set is no longer colored pink. The values remain but now modifying the value set does not affect the value sets in the items to which it had previously been linked.
42
Value Set Label: A descriptive text label for a collection of categories of an item. Used by the Tabulation module to select tabulation categories. This cannot be left blank. Value Set Name: The name of this value for use in the CSPro language procedures. From: The smallest value in the value set. To: The largest value in the value set. Interval: The size of the interval in each value range generated. For example, if 5 year age groups are desired, then the interval is 5. The interval must be greater than 0. If the interval is the smallest positive number that can be contained in the data item, then single values are produced. Value Label Template: A model for descriptive text of each value or value range that is generated. The characters %s in the template are replaced by the from and to values for each value range. All other characters are output as entered.
CSPro keeps track (in an "undo stack") of the 12 most recent changes you have made to your application. Please be aware that not all changes can be undone. on the toolbar; or from the Edit menu, select If you have made a mistake and want to undo it, press Undo; or press Ctrl+Z. CSPro will try to restore your forms to the state previous to last change you made. To undo the next-to-last change, press the Undo button again. Sometimes you may undo several changes and realize you have gone too far back. Press toolbar; or from the Edit menu, select Redo; or press Ctrl+Y. Redo is an "undo" of an undo. on the
If you delete the wrong object, click on the toolbar to undo the operation and recover the deleted material. You can select multiple lines by dragging the mouse over the desired lines or pressing down on the Shift key while you use the up or down arrow to adjust the selection.
44
45
46
Detail You can select Complete to print the data dictionary with the value sets and notes; or Brief to obtain a listing of the items only. Order This option allows the user to place either the item name or the item label in the first column of the listing. You can also print part of a document by selecting the desired text and then pressing Ctrl+P. To preview the printing click on the tool bar; or from the File menu, select Print Preview.
47
Data Requirements
Data files appear in many different formats and structures, but all data files used by CSPro must be ASCII text files (i.e., you must be able to view them in a text editorthey can not be encrypted in any way). If you are using data files created by another software package, you must save the data in a separate ASCII text file before you can use it with CSPro. Data files are limited to 2 gigabytes in overall size; the maximum length of any record in the file is 32,000 characters. CSPro processes one case at a time. Each record must contain a unique questionnaire identification code in the same position in each record. This number must be the same for all records of the same case. If the file is a flat file, meaning that each questionnaire contains only one record, the questionnaire identification becomes irrelevant. In this case, any data item can be used as the questionnaire identification, but it should be unique for each record. CSPro uses the case identification values to determine where one case ends, and the next one begins. Records belonging to the same case must be contiguous within the data file, but there is no requirement that the data file be sorted by case identifier. CSPro can handle a data file with multiple record types -- for example, housing and population -- but a record type code must identify the type of record. This code must be in the same position in each record. Within the same record type, each data field must be in the same position. CSPro can process one input data file at a time, but it can access one or more external files. These files must also be described in a data dictionary and must be in ASCII format. In some survey data, especially where the total number of data items is great but only a few responses are expected, the user may choose a format in which each data field is preceded by a source code relating it back to the original document. By using this scheme, non-response fields (empty responses) need not be entered. With this type of format, each data field is not in a pre-defined location on the record. Before a file like this can be processed by CSPro, it must be reformatted so that the data fields are in fixed positions. Items in data files must be fixed format, that is, items must have the same starting position and length in every record where they occur.
49
50
Declaration Section
Compiler Mode
The CSPro compiler operates in one of two modes: Explicit mode You must declare all variables not defined in your dictionary; otherwise, the variables will be flagged as errors by the compiler. The advantage of this mode is that you do not have to worry about misspelled names. The default compiler mode is explicit, which means that any variable used in a program must be declared in a numeric or alpha statement. Implicit mode This allows you to declare a variable "on the fly", i.e., anywhere in your program. For example, simply coding "myvar = 3;" in any procedure or function automatically declares a numeric variable "myvar". All such declarations are global in scope, meaning you can assign or get the value from any other procedure. User-Defined Functions, string variables, and arrays must still be declared in PROC GLOBAL. The advantage of this mode is that you can write your code more quickly. The danger in using this mode is that you may misspell the name of a variable or dictionary item. If you do this, the compiler
51
Files
Files whose structure is defined by a data dictionary are automatically declared by their dictionary names. Files that do not have associated data dictionaries and need to be named at run time are defined by the file statement. Such files can be used in the file manipulation functions such are filecopy, filedelete, fileread, filewrite, etc. They can also be used in export statements. The file statement gives a name to a file that is local to that application. The physical name of the file is requested in the files dialog box when the application is run.
Variables
In CSPro you can declare numeric or alphanumeric variables. Variable names must contain only letters, numbers, or the underscore (_) character, and must begin with a letter. Names can be up to 32 characters long and are case insensitive, that is, uppercase and lowercase letters are considered the same. For example, "myvar", "MYVAR", and "MyVar" are all equivalent. Variables of all types follow the same rules for names. Numeric Variables In CSPro, numeric variables are stored internally in floating point format. They can accommodate numbers of extremely small or large size, positive or negative. Numeric variables are global in scope, meaning you can assign or get the value of a variable from any other event. A numeric variable may be up to 15 digits in size. It is equivalent to a float or double variable. If you include set implicit in the global procedure, then you may declare a numeric variable "on the fly" ( i.e., variables not associated with any dictionary) in any part of the program. If you include set explicit (or permit it as the default option) in the global procedure, then you must declare all numeric variables in the PROC GLOBAL section using the numeric statement. String Variables String variables in CSPro store alphanumeric data. You must declare a string variable in the global procedure, using the alpha statement. This is true whether you have chosen "Set explicit" or "Set implicit" for numeric variables. See Also: Mode, Arrays, Set Statement, Text Strings
Arrays
CSPro supports numeric or alphanumeric arrays of up to three dimensions. You must declare arrays in the global procedure, using the array statement. Only one variable can be defined in each array statement.
52
Array names can contain only letters, numbers, or the underscore (_) character, and must begin with a letter. They can be up to 32 characters long. Array names are not case sensitive, meaning that uppercase and lowercase letters are considered the same. For example, "myvar" and "MyVar" would refer to the same variable. Whenever the array variable is used in the application, a value or numeric expression for each dimension must be given. The initial array contents are zero (if numeric) and blank (if alphanumeric) until a value for each dimension is assigned.
User-Defined Functions
User-defined functions are coded in the declaration portion (PROC GLOBAL) of an application. Once defined, they can be used anywhere in an application. Functions are used to perform operations that are used in several different places in an application. Functions are of the form: Return-value = function-name(parameter-list) Functions must include a parameter list which can vary depending on the function calls requirements. This list may be null (that is, it contains no parameters between the opening and closing parentheses) or it may contain one or more parameters. Each parameter specifies a variable or array that is used by the statements within the function. Numeric and alphanumeric variables are local to the function. That is, if a variable is passed as a parameter, its value in the rest of the application will not be changed by actions within the function. On the other hand, arrays passed as parameters refer to the source array and changing values of the array within the function also change the source array. A user-defined function: Returns a single value, either numeric or alphanumeric. Can contain CSPro statements and functions, as well as other user-defined functions. If no return value is assigned to the function, a default value is returned. Cannot be recursive (i.e., it cannot call itself though it can call other user-defined or system-supplied functions). The Function Statement allows the creation of a user-defined function.
Procedural Sections
Statements
A procedure contains a series of statements. Each statement is a complete instruction to the computer. Executable Statements Begin with a command and ends with a semicolon (;). They are made up of a combination of commands, keywords, expressions, and functions. Example: skip to Q103; Skip is a command, to is a keyword and "Q103" is the name of a data entry field.
53
Assignment Statements The assignment statement sets a variable equal to the value of an expression and do not contain commands. If the expression is a string-expression, then the variable must be alphanumeric. If the expression is numeric or conditional, then the variable must be numeric. Format: numeric-variable = numeric-expression; string-variable = string-expression; Examples: age = 10; Q102 = prev_age; Y = sqrt(X); name = "John Doe"; sex_ration = males / females;
Proc Statement
Format: PROC procedure-name Description: The proc statement declares the beginning of the procedures for a data entry or batch processing element. The procedure name must always be the name of an object in the forms or edit tree. If you are in the logic view and select a processing element from the forms or edit tree, the logic view will automatically generate the "PROC <item-name>" heading for you. Example: PROC AGE If you plan to write logic for more than one procedure, the order of procedures must be as follows: PROC <item-name> preproc <statements> onfocus { data entry only } <statements> killfocus { data entry only } <statements> postproc <statements>
See also: Preproc Statement, Postproc Statement, Onfocus Statement, Killfocus Statement, Order of Executing Data Entry Events, Order of Executing Batch Edit Events
Preproc Statement
Format: preproc Description: The preproc statement declares that the following statements are executed at the beginning of a run, case, level, record, form, roster, or field.
54
In data entry applications, the statements in a preproc procedure are executed when you move forward onto an object, that is, when the execution flow moves the cursor onto the object, or when the user goes forward to the object by any means (mouse-click, tab, arrow keys, etc.). Preproc statements are NOT executed when you move backward onto an object, that is, the keyer reenters value, goes backwards with a mouse click, or uses Shift+tab to move back to it. If you want to execute the statements when you move both forward and backward onto a field, code them in the onfocus procedure. In Batch Edit applications, the preproc is used to execute logic at the beginning of a run, case, level, or record. For a data item there is no difference between placing all your logic in a preproc or postproc. Remember, if you dont code a preproc or postproc in a proc, all instructions in the proc are considered postproc statements by default. Example: PROC DATE preproc { must immediately follow the "PROC" declaration } DATE = sysdate("DDMMYYYY"); {postproc would go here, if desired }
See also: Proc Statement, Postproc Statement, Onfocus Statement, Killfocus Statement, Order of Executing Data Entry Events, Order of Executing Batch Edit Events
Postproc Statement
Format: postproc Description: The postproc statement declares that the following statements are executed at the end of a run, case, level, record, form, roster, or field. A postproc procedure can be coded in a proc for any run, case, level, record, form, roster, or field. In data entry applications, statements in a postproc procedure are executed when you complete an object, that is flow off of it. Postproc statements are NOT executed when you click off a field, manually skip from a field, use Shift+tab to move backward from a field, or go to another field. If you want to execute the statements in these situations, code them in the killfocus procedure. In batch edit applications, a postproc is used to execute logic at the end of a run, case, level, or record. For a data item there is no difference between placing all your logic in a preproc or postproc. Remember, if you dont code a preproc or postproc in a proc, all instructions in the proc are considered postproc statements by default. Example: PROC SEX {preproc would go here, if desired } postproc if ($ = 2 and AGE < 5) then reenter; endif; See also: Proc Statement, Preproc Statement, Onfocus Statement, Killfocus Statement, Order of Executing Data Entry Events, Order of Executing Batch Edit Events
55
Logic
View Logic
To view the logic in a data entry application you can press icon; or in the View menu select "Logic";
; or in the View menu select "Form"; or press Ctrl+M. or press Ctrl+L. To go back to the forms press From the Logic Window you can create or modify procedures that add logic to your application. The view is divided into two areas:
Top: Text editor, where you write the logic statements Bottom: Message tab, where you create messages to be displayed during, or at the completion of, the execution of your application. This area is also used to display the results of the compiler after you compile a program. If you have errors in the logic, the compiler will display the error messages; otherwise it will display "Compile Successful". Click on any element of the data entry or batch edit tree to see the logic which corresponds to that symbol. For example, if you click on a field, you see the logic for only that field. A group or level can also have logic associated with it. Click on the forms file node (usually the topmost node on form tree) to see the logic for the whole application. This is the way to see and enter logic for the global procedures. See also: Create and Edit Logic, Order of Executing Data Entry Events, Order of Executing Batch Edit Events
56
System Setting Program Setting Result Set Explicit set explicit; No affect, as program matches system setting Set Explicit set implicit; Program overrides system setting, variables do not need to be declared Set Explicit set explicit; Program overrides system setting of implicit variables must be declared Set Explicit set implicit; No affect, as program matches system setting
Compile Logic
When CSPro compiles your logic, it checks the logic you have written to see if there are any errors or warnings. Typical errors including spelling a command incorrectly, not using proper command syntax, and putting logic in the wrong place. Error messages appear in the panel at the bottom of the screen and a
57
Language Elements
Delimiters
Delimiters separate elements in the CSPro language. Delimiter Blank Comma Quotation mark Apostrophe Semi-colon Colon Parentheses Brackets Symbol , " " ' ' ; : ( ) [ ] Usage Separate any language symbol Separate parameters within functions Specify the beginning and end of strings Specify the beginning and end of strings Specify the end of statements Separate the beginning and end of substrings Specify the beginning and end of function parameters Specify substrings
Comments
Comments make applications easier to understand. They are used to explain the purpose of specific statements or to temporarily disable statements to help find errors. Any text enclosed by braces { } is a comment. The text within the brackets will be green. Comments can be placed anywhere in an application and are not checked for syntax errors. Comments can be nested, that is, comments within comments are allowed. Any text following double slashes // until the end of the line is also a comment. The second line in the example below is a comment; a comment is also appended to the code in line four. It is highly recommended that the user document CSPro applications through the liberal use of comments. PROC HHDAY {Do not allow June to have more than 30 days} if HHMONTH = 6 and $ > 30 then X = errmsg (1, "June", 30, $); // if error, then display message reenter;
58
Subscripts
Items with multiple occurrences or in multiple records have one name (the item name), but can occur multiple times. In order to indicate the specific occurrence of the item, you may need to use an index or subscript. The subscripts are integers and are numbered from 1. Imagine that the SEX is an item in the multiple record CHILD. The expressions SEX(1) SEX(3) SEX(i) refers to the sex of the first child. refers to the sex of the third child. refers to the sex of the ith child.
Subscripts can be numeric expressions as well as numeric constants. For example, the expression SEX(curocc(CHILD)); refers to the current occurrence of CHILD. (curocc is a function that returns the current occurrence of a multiple record). When referring to multiply-occurring items within the scope of their repetition, you do not need to use subscripts, as the current occurrence will be assumed. For example, suppose you have a
59
Numbers
Numbers may be any positive or negative integer or decimal value. Negative numbers have a leading minus (-) sign. Positive numbers have no sign, but can have an optional leading plus [+] sign. Numbers can have up to 15 significant digits. Numbers must not have thousands separators. Decimal points can be either period (.) or comma (,) depending on the "Regional Options" setting of the computer.
Text Strings
A text string is any set of characters in the computers character set enclosed between a pair of quotation marks (") or apostrophes (). Any spaces enclosed within the quotation marks or apostrophes are considered part of the text string. Upper- and lower-case letters may be used. However, a text string a is different from a text string A. The maximum length of a text string is 250 characters. If you wish to have apostrophes () embedded within your string, you must use the quotation marks (") to enclose it, and viceversa. For example,
60
MyString=Thats great!; would set MyString to "that", and the trailing "s great!" would be considered outside the string,and would therefore provoke a compiler error. Thus, if you wanted to accomplish the above, you must write: MyString="Thats great!"; Similarly, if you wanted to embed quotation marks within your string, you must write the string as follows: MyString=The chair is 23" high; Strings that are surrounded by quotation marks will appear in pink. Strings that are surrounded by apostrophes will appear in black. We recommend using quotation marks ["], if the text of the string does not turn pink when you think you have completed entering it, it will be quickly apparent that you have not terminated your string properly.
Expressions
Expressions
An expression is a combination of operators and operands. Operands can be constants, items, variables, functions, or some combination thereof. Operators can be arithmetic (+, -, *, /), relational (=, <>, >, <, >=, <=) or logical (and, or, not). Every expression evaluates to a value and can therefore be used as a subexpression of other expressions. There are three types of expressions: numeric, string, and logical. Numeric They evaluate to numbers. The following are numeric expressions: 4 4+5 A / B A*(B+C/D) A + sqrt(B) String They evaluate to strings. The following are string expressions: answer="Yes"; concat(FIRST_NAME, " ", LAST_NAME); edit("ZZZZ9", A + B); Logical Logical expressions (conditions) evaluate to true (1) or false (0). The following are logical conditions: KIDS > 5 SEX = 2 and AGE > 12
Substring Expressions
Format: String [start:length] Description:
61
Special Values
There are three special values in the CSPro language: missing, notappl, and default. They have the following meaning and uses: Missing The value missing indicates that a data item was supposed to have a response and no response was given. Other terms for this are "not stated" and "non-response". To properly utilize this special value, you must create a value set for this item in the dictionary, setting one of the value set entries to the special value "missing." For example, you could set 8 (or 88, 888, etc.) or 9 (or 99, 999, etc.) to missing. Finally, although you must associate a number with the special value missing, you can only
62
Operators
Operators
Arithmetic Operators Operation Addition Subtraction Multiplication Division Modulo (remainder) Exponentiation Symbol + * / % ^
Relational Operators Operation Equal to Not equal to Less than Less than or equal to Greater than Greater than or equal to In range Symbol = <> < <= > >=
in
63
Logical Operators Operation Negation Conjunction Disjunction If and only if Symbol ! & | <=> Keyword not and or
Either the symbol or keyword can be used. When more than one operator exists in an expression, the order in which the operators are evaluated is determined by their precedence.
In Operator
This operator is used in logical expressions to test whether an item or variable is within a set of values or ranges. The item or variable can be numeric or alphanumeric. A range of values is separated by a colon, for example 1:5. Elements of a list of values or ranges are separated by commas, for example 1, 3:5, 7. Example 1: if RELATIONSHIP in 1:5 then is the same as if RELATIONSHIP >= 1 and RELATIONSHIP <= 5 then Example 2: if WORK in 1,3,5 then is the same as if WORK = 1 or WORK = 3 or WORK = 5 then Example 3: if X in 1:4, missing, notappl then is the same as if (X >= 1 and X <= 4) or X = missing or X = notappl then Example 4: if NAME in "A":"MZZ" then is the same as if NAME >= "A" and NAME <= "NZZ" then
64
The following two sets of code give the same result: if (SEX = 2 and AGE >= 10) <=> (CHILDREN_BORN <> notappl) then errmsg("Children ever born incorrect"); endif; and if (SEX = 2 and AGE >= 10) then if CHILDREN_BORN = notappl) then errmsg("Children ever born incorrect"); endif; else if CHILDREN_BORN <> notappl) then errmsg("Children ever born incorrect"); endif; endif; See also Operators, Operator Precedence
Operator Precedence
The table below shows the order of precedence for operators. When operators of the same precedence are in an expression, they are evaluated from left to right. The order of precedence can be changed using parentheses. Operators in parentheses are evaluated first. Order 1 2 3 4 5 6 7 8 Operator ^ * / % + = < > <= >= <> in not ! and & or | <=>
65
Files
External Files
An external file is an ASCII text file other than the primary data file that you can use in a data entry or batch application. You can read and/or write to external files, using CSPro logic. You must create a data dictionary that describes the format of any external file you want to use. An external file dictionary can contain only one level. You can share external files across a network. If an external file is accessed only by read functions (loadcase, locate, find, key, retrieve), no special programming actions need to be taken to share the file. Multiple users can read the file at any time. However, if an external file is accessed by any write functions (writecase or delcase) only one user at a time may use the file. For write functions, the external file is like a file in a filing cabinet. When one person has taken out the file for use, no one else can use the file until the person has returned it. You can control when the file is in use by coding open and close functions. The file is in use between the execution of the open and the close function. This gives you complete control over when the file is in use. You should try to minimize the time the file is in use in order to allow other users to access the file. If open and close functions are not coded for an external file used for writing, the following "open" and "close" rules apply: In batch processing, the file is opened at the beginning of the run and closed at the end. In data entry processing, the file is opened just before any external file function is executed and is closed immediately following the function, unless one of the following functions is used on the file: - loadcase without a var-list - retrieve - key When any of the above functions is used, the file is opened just before the first file function is executed, but is left open after the function is completed. These functions depend on remembering the current position of the file. If the file is closed, the current position is lost. See also: Insert or Drop a File from an Application, Lookup Files
Lookup Files
66
Message File
The message file for a data entry application stores the error message text that is displayed during data entry. The message file for a batch application stores the error message text that will be included in the execution report. The message file has the filename <application-name>.msg. During data entry design, the message text is modified at the bottom of the logic screen. Basic Messages Each line in the message file contains one message. A message consists of a message number followed by text. The message text can be up to 240 characters long. It is displayed on the entry screen when an errmsg function with the message number is executed in a data entry application. It is written to the execution report when an errmsg function with the message number is executed in a batch application. For example, suppose a message file contains the following lines:
67
1 This is the first message 2 This is the second message When an errmsg(1) function is executed in a data entry application, the message "This is the first message" is displayed on screen. When an errmsg(2) function is executed, the message "This is the second message" will be displayed on screen. Messages with Parameters Parameters can be specified in the errmsg function. These parameters can be numeric expressions or string expressions. String parameters in the error message text are indicated by %s. Integer numeric parameters are indicated with %d. Decimal numeric parameters are indicated with %f. Any number of different messages can be included in the message file. The errmsg function can be used in any dictionary, form, group, or field procedure, or in a user-defined function. The maximum number of parameters in an errmsg function is 20. For example, an error message file might contain the following: 1 The month of %s has only %d days. You entered %d! The application could use this as follows: x = errmsg (1,"June",30,31); When the errmsg function is executed, it knows to use error message "1", and substitute the word "June" for %s in the message text, the number 30 for the first %d, and 31 for the second %d. The message "The month of June has only 30 days. You entered 31!" will be displayed on the screen. Example: The more general the parameters of the message, the more flexible the message. In the example below, the value of the variable HHDAY is used as a parameter. The error message will use the value of HHDAY if the errmsg function is executed. PROC HHDAY if HHMONTH = 6 and HHDAY > 30 then x = errmsg (1, "June", 30, HHDAY); reenter; endif;
68
Skip Issues
To skip or not to skip. "Skipping"causing the cursor to jump over one or more fields during the data entry operationis an issue that provokes discussion both pro and con. The decision of the application designer to use (or not use) skips will depend entirely on the type of application and the data entry staff.
69
When the data capture operation is expected to be "heads-down," as it would be for a census or similar high-volume application, it will cause less confusion to the keyer if all skips are controlled by the operator rather than the application. There will then be no "surprises" for the keyer when the application logic forces the cursor to one field when the keyer, looking not at the screen but at the form, expects the cursor to be in a different field altogether. Thus, instead of speeding up the entry operation by anticipating probable cursor movement, this tactic eventually slows down the operation when there are inconsis tencies in the data or, simply, keying errors. When the data capture operation is of smaller volume, or with a more complex questionnaire or forms, it may make sense to use application-controlled skipping. The operator will be more likely to be aware of the cursor movement and less likely to be surprised by unexpected interruptions in the normal sequence. Of course, a combination of operator-controlled and application-controlled skipping may be used in any given application; the designer will have to weigh the keying environment and the forms to be entered to make the appropriate decision. Manual Skips During data entry, there may be times when you want the operator to be able to skip over certain fields that do not apply to the current case. For example, in a Population record, the fertility fields do not apply to males or to underage females, nor do questions on economic activity apply to children under a certain age. In CSEntry, the + key on the numeric keypad is always active as a skip key. Every field has a skip field value associated with it. The default value is next, meaning that when the cursor is on that field and the skip key (+) is pressed the cursor will move to the next field in sequence. CSEntry allows you to change this value to any later field in the sequence, or to the end of the screen or form. This approach corresponds to the "operator-controlled " option in CSPro. Automatic skips Automatic, or application-controlled, skips depend on information already keyed to direct the cursor movement. For example, in a household survey, if a female respondent states that she has at least one child living with her, the cursor can skip automatically to the form for capturing information about that child (and any others). Conversely, if the female indicates that no children are present, the cursor can be directed to skip over the information about children. It is clear that such skips depend entirely on the accuracy of the data keyed prior to the skip; if a "Yes" response is mistakenly entered as a "No", the cursor will be misdirected and the operator will find that the screen(s) presented for keying do not correspond to the information in the paper forms. This will cause loss of time as the operator seeks to uncover the error. Automatic skips, when used, must be well-documented so that the keyer is aware of the possibilities of non-sequential cursor movement. This approach corresponds to the "systemcontrolled" option in CSPro.
70
71
Rosters A roster is a grid that shows multiple occurrences of a group at the same time. Many questionnaires have rosters printed on them. A typical example would show each person as a row and each column as a variable, as shown below. Rosters can also have a vertical orientation, in which case the rows and columns would be reversed.
In CSPro, you can show repeating groups as a roster on a single form or as individual fields on a form that repeats. The darker gray area at the top of each column is called a column heading. In the example above, the column headings contain the text "Line number", "Relationship", "Sex", and "Age". The text in the
72
See also: Add a Form, Add a Roster to a Form, Add Fields to a Form
73
Select Data Entry Application and press OK. A file dialog box will appear. Enter the name of the application file. Make sure you are located in the folder where you want to place the application files. Then press Create. The following dialog box will appear.
74
A default name of the data dictionary describing the data enter file is given. You can use this name or change it. If you give the name of a dictionary file that already exists, that data dictionary will be used by the application. If you give the name of a dictionary that does not exist, a new data dictionary will be created. If you are using an existing CSPro data dictionary, then the system displays the question: "Would you like CSPro to create a set of forms for you, based on the input dictionary? If you answer "Yes" CSPro will automatically generate default data entry forms and will display the the drag option menu. If you answer "No" you may begin creating data entry forms. If you are creating a new CSPro data dictionary, you will need to enter information into the dictionary about records, items, and values before you can create forms. Data entry applications consist of the following files:
Data Entry Application File (.ent) This specifies all other files contained in the application and includes other application information. Form File (.fmf) There is usually one forms file per application, but there may be multiple forms files. Each forms file contains one Data Dictionary file (.dcf) which represents the primary data file that is being created or modified. Logic File (.app) Contains CSPro language statements. Message File (.mgf) Optional file, it contains text for messages displayed during data entry.
75
Question File (.qsf) Optional, contains text for CAPI text and help screens displayed during data entry. Other Data Dictionary Files (.dcf) Optional, it represents secondary data files (such as lookup files) that are read and/or written to during data entry.
76
The following choices are available to customize your drag-and-drop operation: Text Options When fields are dragged onto a form from the dictionary, the dictionary text associated with the item is usually also included. You can select whether the items label, the items name, or neither of these (no text) is dragged onto the form. You can also select whether the text is placed to the left or to the right of the data entry box. (This setting has no effect if the item is rostered.) Roster Options This affects dictionary records and items with more than one occurrence. To enter this type of data, you either need a form that repeats (to allow for the multiple occurrences of the data), or you need a roster. If you choose "Horizontal" CSPro will make rosters in which the occurrences are the rows and the fields are the columns. In CSEntry the cursor will move from left to right. If you choose "Vertical" CSPro will make rosters in which the occurrences are the columns and the fields are the rows. In CSEntry the cursor will move from top to bottom. If you choose "Dont Roster" CSPro will make forms that repeat. Require Enter Key on Entry? This option determines whether the Enter key must be pressed to advance an operator to the next data entry field. If left unchecked, the cursor will automatically advance to the next field as soon as the maximum number of characters are entered for the field (that is, if the field length is two, then after entering two
77
78
If you opted for creating the forms yourself then the system will display the data dictionary tree and the Dict tab on the left, and a blank form on the right. You are now ready to start dragging items and/or records from the dictionary to the form(s). If you did not have a data dictionary, then the system will display the data dictionary tree and the Dict tab on the left, and the dictionary window on the right. Use the Window menu to display a list of currently open files at the bottom of the Window menu. A check mark appears in front of the name of the file in the active window. Activate a window by choosing the name of its file from this list.
79
You can also switch between the forms and dictionary window by pressing either
or
in the Toolbar.
Forms File: This is the highest level node, i.e., the root node. It is the owner of all code, which is to say [1] level-, record-, and item-related code, [2] user-defined functions, and the [3] global routine. Level: This is the second-tier tree node, just below the root. It has a 1-to-1 correspondence with the same-named dictionary level. Form: This is the third-tier tree node, just below its level. It represents the form and all the items in that form. Roster: It represents the roster and all the items included in the roster. Field: This is the terminal or "leaf"-node; i.e., the lowest accessible level. It has a 1-to-1 correspondence with a dictionary item. You are free to rename any of the above the unique names via the properties dialog box, but it is recommended that you retain the original name, so that it is easier for you to see which dictionary entity is being referenced. The data entry tree represents the order in which the data entry is keyed.
80
Enter the name of a file (any extension). If this is a new file, the system will ask if you want to create it and ask for the operators ID. The system keeps track of the operators keying record and display the operator's statistics in CSEntry. You may turn off this window in data entry options. You will, of course, want to test the behavior of your data entry application before using it in a production environment, so this is just a quick way to launch CSEntry. When your application is ready for production, you will want to launch CSEntry independently of CSPro as it will use less memory this way. To assistance with this, see Run Production Data Entry.
81
Create it yourself using an ASCII editor (such as Notepad or Wordpad), Simply run CSEntry once, and a PFF file will be automatically created for youit will be placed in the same folder as your data entry application, and it will have the same name as your application, but with a ".pff" extension instead of ".ent". For example, if your data entry application was named "MySurvey.ent", the system-generated PFF would be called "MySurvey.pff". The following section shows the options available to you for a CSEntry PFF file. Please note that a PFF file is not case sensitive, so you may use any combination of upper and lower case text. [Run Information] Version=CSPro 4.1 AppType=Entry [DataEntryInit] OperatorID=John StartMode=add Interactive=ask Lock=Verify,Stats FullScreen=Yes NoFileOpen=Yes [Files] Application=MyCensus.ent InputData=.\Prov12\Dist05.dat [ExternalFiles] LOOKUP_DCF=.\Prov12.lup [Parameters] Parameter=your choice [DataEntryIDs] Province=12 District=05 The [Run Information] block is required and must appear exactly as shown in the example above. The [DataEntryInit] block, as is all its possible entries, is optional. It gives you the opportunity to choose the following run-time characteristics: OperatorID=John "John" will be used as the operator ID for the purposes of logging operator statistics. If this line is not present but your data entry application has been set to ask for this, then CSEntry will prompt the operator for one at run time. StartMode=add CSEntry will drop immediately into add mode. If this line is not present, one of two things will occur: [1] if the data file does not exist, then the operator will be dropped into add mode; or [2] if the data file does exist, then CSEntry will wait for the operator to choose their desired mode. (Note that their choices may be constrained due to options indicated in "Lock," the next feature). The other two permissible entries are "modify" or "verify".
82
83
84
Type This choice is very important and will have a large effect at data entry time. Please see Operator vs System Controlled for more information. Ask for operator ID If this box is checked, CSEntry will prompt the operator to enter an operator ID. Confirm end-of-case If this box is checked, CSEntry will prompt the operator to accept the case at the end of each case entered Allow partial save If this box is checked, CSEntry will allow the operator, when in add, mofidy, or verify mode, to save a case which has not been completed. Show case tree If this box is checked, CSEntry will allow the operator to view a tree on the left showing each item in the case currently being added, modified, or verified and its value. CAPI mode If this box is checked, CSEntry will display the Computer-Assisted Personal Interviewing (CAPI) window. The top part is for question text (to be read during the interview), the bottom is for the normal form contents.
85
Center forms on screen If this box is checked, CSEntry will center forms horizontally in the display window. Require Enter Key At data entry time, the operator may be required to press the Enter key to advance to the next field, or the system may advance automatically when the field is filled with the correct number of digits. In the latter case, the operator can still advance by pressing Enter if the digits are not all filled. You may set this attribute individually for each field. - All fields All fields in the forms file require Enter key to advance. This option adds keystrokes for the operator, but allow the operator to control the cursor movement. Thus it is more consistent with the "heads-up" methodology. Selecting this option will change the setting for all fields. - No fields All fields in the forms file advance automatically. This option means the operator will ultimately hit fewer keystrokes, but will have to be aware that the cursor will move automatically when the correct number of digits has been entered in a field. This option is more consistent with the "heads down" methodology. Selecting this option will change the setting for all fields in the form. - Some fields You cannot select this option; it is permanently deactivated. If this option is selected, it means there is a combination of enter options in effecti.e., at least one field in the application has its "Use Enter Key" option checked, and at least one other field in the application has its "Use Enter Key" option unchecked. Select one of the other two options to force all fields to the same setting. Force Out-of-range At data entry time, CSEntry shows a message every time the keyer enters a value that is out of range according to the data dictionary. You may set the attribute to override the message and force the outof-range value into the data file. If this attribute is not selected, the keyer cannot proceed until a valid value is entered. - All fields When this option is checked, all fields in the forms file can be forced. This option allows out-of-range values to be entered in the data file. To be sure of a file with only valid information, such values must be edited and corrected after keying is completed. - No fields No field in the form file may be forced. Checking this option prevents any out-of-range values from being entered in the data file. However, this forces the keyer to edit out-of-range values. For this reason, it is recommended that "No fields" be used only where the persons carrying out the data capture operation are qualified to make such on-the-spot editing decisions. - Some fields When this option is checked, it indicates that some fields in the forms file permit out-of-range values, and others do not. Checking one of the other two options will force all fields in the forms file to the same setting. Upper Case (alpha only) At data entry time, alphabetic fields can either allow upper- and lower-case text, or they can force any letter entered to upper case. You may set the upper-case attribute for all or some of the alphanumeric fields. - All fields
86
87
You can change this by using the Font radio buttons. If you select Choose new default text font, you can then click on the Choose font button to customize your own font If you want to change the font for all text that is already on forms, you must press the Apply to all items button. See also: Change Field Font, Change Text Properties
Press the "Font" button to change the font in all the field boxes on all the forms. Changing the size of the font will change the size of the field boxes. You can change the language of the characters by choosing a different "Script" in the font dialog box.
88
Forms Designer 89
There are three basic ways to add a new (blank) form. Each method will present you with the "Form Properties" dialog box. From the Form Designer Tree tab Right-click over any of the tree entries (i.e., a Form File, Level, Form, or Item). A pop-up dialog box will appear. Select the Add Form option. From the Form Designer's Menubar Select Edit, then the Add Form option. From the Form itself Right-click anywhere over a form. A pop-up dialog box will appear. Select the "Add Form" option. After you have pressed OK on the "Form Property" dialog box, you will notice on the form tree that the form was placed last in the current level. You can change the order of the forms by dragging forms on the tree. Add Fields to a Form
Drag a Dictionary Item to your Form Expand the dictionary tree so that the desired item is visible. Holding down the left mouse button, select the item ( ) and drag it to the form, releasing the mouse button when the cursor is at the desired location on the form. Depending on the drag option settings, either your item or existing sub) will be dropped onto the form. For example, if you have dragged an item from a record with items ( multiple occurrences and you have chosen (in the "Drag Options" dialog) to roster items when possible, the item will appear as a one-column roster. Dragging additional items from this record and dropping them onto the roster will append the items to the roster. Drag a Dictionary Record to your Form
90
CSPro automatically creates a roster, under appropriate conditions, when you drag a dictionary item onto a form. In most cases where a roster is possible, CSPro obeys the Roster Options on the drag options dialog box. Make sure this option is Horizontal or Vertical before you begin. In some drag and drop operations a roster is not possible and will not be created. In other drag and drop operations a roster is the only alternative. Common ways to create a roster include: Drag a multiple record ( ) from the data dictionary to a blank form. This will generate a roster containing all the items in the record. ) from a multiple record in the data dictionary to a blank form. This will generate a Drag one item ( roster containing only that item. You can then add more items to the roster one at a time. Drag an item from a multiple record, or the record itself, to a form that contains only items from another single record or ID items. Drag a multiple item or sub-item ( ) to a form. If you have a multiple item that has sub-items, and you want to create a roster of the sub-items, make sure you have the "Use sub-items if present" box checked in the Drag Options dialog box. See also: Add Things to a Roster, Change Roster Properties Add Things to a Roster
Add Items Rosters can only include items from the same multiple record, or sub-items from the same multiple item. If you created the roster by dragging the entire multiple record or item onto the form (or by generating a set of forms), there are no more fields that can be added to the roster. Otherwise, you can drag an appropriate field from the data dictionary and drop it on the roster. CSPro will add a column to the end of the roster. If you dont want the fields column to be at the end, you can reposition the column after you add it by dragging and dropping the field in the desired position on the form, or in the list of fields on the Form tree. Be sure to drop the data dictionary item on top of the roster; otherwise, you will create a new roster. Add Text
91
Right click on the light gray space in the desired column of the roster and select "Add Text". You will see the Grid Text Properties window. Note that you can choose the text placement and select whether the text will go only in the cell in which you clicked, or if it will go at the same position in every cell in the column. You can change this attribute later if you want. Add Boxes Right click on the gray space in the roster and select "Add Boxes". Note that you can choose whether the boxes will go only in the cell in which you clicked, or if they will go at the same position in every cell in the column. Drawing boxes in a roster is essentially the same as drawing boxes on a form. Add Text to a Form
When you add a field to a form by dragging it from the dictionary tree, the dictionary item's label is automatically placed on the form. You may also add other text to the form (a heading across the top, for example) by doing the following: Right-click on the form at the point where you want the text to start. Select Add Text from the pop-up menu. Type in the text, and press Enter. See also: Change Text Properties Add Lines or Boxes to a Form
CSPro also allows the user to draw boxes, as a means to both help visually organize your data and make the layout of your form look more professional. For example, if you wish to place fertility data on one portion of your form and then indicate to the viewer that these data are related, you could draw a box around the related items.
92
When you select multiple items with the mouse, you'll notice during the selection process a box that drags with you to show what you're including. To draw a box on a form, it seemed logical to have that same to toggle between mechanism at work, so we've introduced the Select Items/Boxes button. Click on the two states. When you first click on this button it will appear depressed, and a floating toolbar will appear with the following buttons:
Click To Allows you to toggle states between selecting items and drawing boxes without having to close down the toolbar Draw a box with an etched edge Draw a box with a raised edge Draw a box with a thin edge Draw a box with a thick edge When you have finished drawing boxes and no longer need the Box-Draw toolbar, close it down by either toggling the button, or close the Box-Draw toolbar.
When the Forms Designer first opens, the mouse is in selection mode. That is, if you click on a field, roster, or text item, the item becomes selected. Similarly, if you press the left mouse button and hold it down while dragging over a group of fields, rosters, and/or text items, all of those items will be selected. You can then choose to do operations on the selected item(s), such as moving or deleting them. If one item is selected, you can also review its individual (field/roster/text) properties. You can also hold down the Ctrl key while individually clicking on each item to be selected with your left mouse button. To quickly select several fields in their entirety, just grab their data entry boxes. This will cause automatic selection of any accompanying text, as well. To quickly select just the text portion of several fields, be sure that the selection field visible on the screen does not touch any of the data entry boxes. Methods of selection: To select several items, hold down the left mouse button while dragging a selection box around the desired items. Or you can also hold down the Ctrl key while individually clicking on each item (box or text) to be selected with your left mouse button. To select both a data entry box and its associated description text, hold down the Shift key while clicking on either the entry box or its associated text. To select several data entry boxes and their associated descriptions, hold down both the Shift and Ctrl keys while individually clicking on either the edit box or its text for each different field. Field Properties
93
94
Check Box Check Boxes are used to capture a "multiple response" variable. To do this, you must first set up the item and its value set in the data dictionary in the following way. The item must be of type "Alpha", and must have a length equal to the number of possible responses. The value set must have that same number of discrete values. Each value corresponds to one of the responses and will be displayed as a separate check box on the Pocket PC. When the boxes are checked, the corresponding values will be put into the alpha field, from left to right. For example, consider a multiple response question, "Which of the following do you have in the household". The possible answers are "Radio", "Television", "Computer". In this example you would define an "alpha" item in the data dictionary with length three and make a value set with three values:
Drop Down The field must have a value set in the data dictionary. Each value in the first value set will be displayed as a separate line in the response area. The user can tap on the appropriate response, or enter the numerical value.
Combo Box The field must have a value set in the data dictionary. Each value in the first value set will be displayed as a separate line in the response area. The user can tap on the appropriate response, or enter the
95
Text Box The is the capture type when the field has no values defined in the data dictionary. The user must enter a response via the virtual keyboard.
Date The field must have a length of 4, 6, or 8. The choice of "Date format" will determine how the data will be stored in the data file. This capture type gives the user a nice visual interface from which to choose the date.
Move Things
When you drag a dictionary item onto a form, it will be placed on the form at the point where you released the mouse button. The dictionary label will be used as identifying text for the field, and it will be placed on the form according to the Drag Options in effect, which may mean the item becomes rostered. Once the field is on a form, you can fine-tune its placement. Move a Field To move a field, select the box and drag it to the desired location. Each field has a text item associated with it. You can see the text by holding down the Shift key and clicking on the field. This will select both the field and its text. You can now move both of them together by dragging and dropping. You can move a fields associated text separately by simply dragging and dropping only the selected text.
96
If you have developed your form by dragging individual items from the dictionary to the form, it is probable that the fields are not precisely aligned to the left and/or right margins of the form. To correct this problem, you need only select the items you wish to align, and choose one of the alignment schemes below. Left This will take the left-most item (whether the text of a field, the data entry box of a field, a roster, etc.) and use it as the basis for aligning all other selected elements. This alignment method works best for fields that have been placed on the form in a top-to-bottom manner, with text either to the left or right of the respective data entry box. Center This will take the [horizontal] mid-point between the left-most and right-most items (whether the text of a field, the data entry box of a field, a roster, etc.) and use it as the basis for centering all the selected elements. This alignment method works best to center text items that have been placed in a top-tobottom manner, or to center the text of a field over the data entry box. Right This will take the right-most item (whether the text of a field, the data entry box of a field, a roster, etc.) and use it as the basis for aligning all other selected elements. This alignment method works best for fields that have been placed on the form in a top-to-bottom manner, with text either to the left or right of the respective data entry box. Top This will take the top-most item (whether the text of a field, the data entry box of a field, a roster, etc.) and use it as the basis for aligning all other selected elements. This alignment method works best for fields that are spread out across the form in a left-to-right manner, with text either above or below the respective data entry box. Mid This will take the [vertical] mid-point between the top-most and bottom-most items (whether the text of a field, the data entry box of a field, a roster, etc.) and use it as the basis for aligning all the selected elements on the mid-point. This alignment method works best to center text items that have been placed in a left-to-right manner, or to center the text of a field next to the data entry box. Bottom This will take the bottom-most item (whether the text of a field, the data entry box of a field, a roster, etc.) and use it as a basis for aligning all other selected elements. This alignment method works best
97
CSPro keeps track of the last dozen changes you have made to your forms on an "undo stack". Beware that not all changes can be undone. If you have made a mistake and want to undo it, press on the toolbar; or from the Edit menu, select Undo; or press Ctrl+Z. CSPro will try to restore your forms to the state previous to last change you made. To undo the next-to-last change, press the Undo button again. Sometimes you may undo several changes and realize you have gone too far back. Press toolbar; or from the Edit menu, select Redo; or press Ctrl+Y. Redo is an "undo" of an undo. Cut, Copy, or Paste Things on the
To move things around in the Dictionary use cut, copy, and paste. Cut will delete the material from the dictionary and place it on the clipboard. Copy will just place a copy of the material on the clipboard. Paste will place a copy of the material on the clipboard into the dictionary. To cut things Select the material you want to cut, then click press Ctrl+X. To copy things Select the material you want to copy, then click Copy; or press Ctrl+C. To paste things on the Select the place where you want the records, items, or values to be pasted, then click toolbar; or from the Edit menu, select Paste; or press Ctrl+V. You can paste cut or copied material to more than one location. Use undo if you paste to the wrong place. on the toolbar; or from the Edit menu, select on the toolbar; or from the Edit menu, select Cut; or
98
Change roster size Select the roster by clicking on the gray space in any cell. You will see eight small black squares [the resize handles] around the edges at the corners and sides of the roster. Move the mouse pointer on top of any resize handle until the mouse pointer changes to a double-headed arrow. Click and drag to the desired size. CSPro will automatically create or remove scrollbars as needed. Change column width Move the mouse pointer over the right edge of the column you wish to resize until the mouse cursor changes to a double-headed arrow. Click and drag to the desired width. Change row height Move the mouse pointer over the bottom edge of the row you wish to resize until the mouse cursor changes to a double-headed arrow. Click and drag to the desired height. Change order of columns At data entry time, fields are keyed in the same order in which they appear in the roster columns, left to right (or top to bottom if the roster orientation is vertical). To change the order of columns, click on the column heading and drag to the desired position. A gray separator line will tell you where you are about to drop the selected column. Move fields, text, or boxes Select the object by clicking on it. Move the mouse pointer over the object until the mouse pointer changes to a four-headed arrow. Click and drag to the desired position. Join and Split Roster Columns
By default, CSPro puts one field in each column. You can put two or more fields in a column by using the Join facility. To join two or more columns Select two or more adjacent columns. You can do this by holding down the Ctrl key and clicking on each column. Right-click and choose Join and type in the text for the joined column. To split a column Click on the column heading to select it, then right-click and choose Split. If a column already has more than one field in it (from a previous join), you can Split the column so that there is one column for each field. Delete Form Elements
To delete a field from a form: Click on the field on the form, or on the forms tree, then press Delete, or right-click and choose "Delete." To delete a form: Click on the form on the forms tree and press Delete, then choose "Delete form" from the main menu at the top
99
Whenever an existing application is specified, the system automatically checks to make sure the application matches the data dictionary. This is to alert you in case a change was made to the data dictionary after the application was last saved, or in case you typed in the wrong data dictionary name. If the application does not match, the system will indicate that discrepancies exist and will ask you to permit the updating of the application. If you prefer not to accept the update or if you wish to first investigate the cause of the discrepancy, you may answer "No" and the system will not open or update the application. You can then verify that you have the correct dictionary and review any changes that might have been made since the last time the application was opened.
Label This is descriptive text that helps you identify the current forms file. It may contain any characters (including blanks) and be up to 120 characters long. Name This is the name of the forms file which you would use when writing programming logic. It may be up to 32 characters long, and must consist of letters, digits and the underscore ('_') character. It must not begin or end with underscore. You can see either labels or names on the forms tree. Press Ctrl+T to switch back and forth between them. Change Level Properties
100
Label This is descriptive text that helps you identify the current level. It may contain any characters (including blanks) and be up to 120 characters long. Name This is the name of the level which you would use when writing programming logic. It may be up to 32 characters long, and must consist of letters, digits and the underscore ('_') character. It must not begin or end with underscore. You can see either labels or names on the forms tree. Press Ctrl+T to switch back and forth between them. Change Form Properties
Right-click on the form ( ) on the tree and choose "Properties," or right click on empty space on the form itself and choose "Form Properties."
Label This is descriptive text that helps you identify the current forms file. It may contain any characters (including blanks) and be up to 120 characters long. Name This is the name of the forms file which you would use when writing programming logic. It may be up to 32 characters long, and must consist of letters, digits and the underscore ('_') character. It must not begin or end with underscore. Color The button shows the color of the form. To change the form color, click on this button, select a new color and click OK. You can change the form color back to what it was originally (usually gray) by clicking on the "Reset Default Color" button. You can make all forms the same color by clicking on the "Apply to All" button.
101
You can see either labels or names on the forms tree. Press Ctrl+T to switch back and forth between them. Change Field Properties
Right click on the field on the tree or on the form and choose "Properties."
Field-Specific Information Field Name This is the name of the dictionary item associated with this field. It is the name you use to refer to this field when writing logic. Mirror fields will show the dictionary name with three digits appended to it. You cannot change this property. Screen Text This is the text that is associated with the data entry box on the form. You can hold the Shift key and click on a data entry box to see its associated text. Skip to This is the name of the field that will be skipped to if the operator presses the plus (+) key on the numeric keypad. If the "skip to" field it is blank and the plus key is pressed, CSPro skips to the next field in sequence. "Skip to" is available only in operator-controlled data entry mode. Capture type
102
Right click on the gray space in any roster cell and choose "Properties."
103
Label This is descriptive text that helps you identify the current roster. It may contain any characters (including blanks) and be up to 120 characters long. Name This is the name of the roster which you would use when writing programming logic. It may be up to 32 characters long, and must consist of letters, digits and the underscore ('_') character. It must not begin or end with underscore. Orientation This defines whether the cursor will move from left to right or from top to bottom during data entry. Free Movement This defines the order in which to enter a record with multiple occurrences: all the items in a record n times or each item n times before continuing with the next item You can see either labels or names on the forms tree. Press Ctrl+T to switch back and forth between them. Change Column Heading Properties
104
Column Heading This is the text that shows in the heading. CSEntry may automatically wrap text to make two or more lines, if the column width is small. You can force your own multi-line text by using Ctrl+Enter at the end of each line. For example if you type "Age of", then Ctrl+Enter, then "Mother", you will have two lines of text no matter how wide the column is. Horizontal alignment This allows you to force the text to be left-aligned, right-aligned, or centered within the column heading area. Vertical alignment This allows you to force the text to be aligned at the top, middle, or bottom of the column heading area. Font To change the font of the column heading text, choose the "Use custom font for text" radio button then click on the "Choose font" button. Text Color The button shows the color of the selected text. To change the text color, click on this button, select a new color and click "OK." You can change the text color back to what it was originally (usually black) by clicking on the "Reset Defaut Color" button. You can make all text on all forms the same color by clicking on the "Apply to All" button. See also: Change Row Heading Properties Change Row Heading Properties
105
Row Heading This is the text that shows next to the row. CSEntry may automatically wrap text to make two or more lines, if the width of the occurrence label area is small. You can force your own multi-line text by using Ctrl+Enter at the end of each line. For example if you type "College or", then Ctrl+Enter, then "University", you will have two lines of text no matter how wide the occurrence label area is. See "Change Column Heading Properties" for a description of the rest of the properties. Change Text Properties
Select any text item to change the text itself. Select any text item or group of text items to change their font. Once selected, right click and choose "Properties." You can change the font for all text fields on all forms by choosing "Option/Global font" from the main menu.
Text
106
Editing Concepts
Type of Edits in Data Entry
Validate individual data items: These checks are designed to determine whether a response has a value that is inside or outside the valid limits for that response as defined in the Data Dictionary. The data entry application can be designed to allow forcing out-of-range values, to force the operator to reenter a valid value, or not to allow any input on the item. Perform structure or consistency edits You can write code to check the structure of the case or test the consistency within related items. These instructions can be written for any object such as a case, level, form, record, roster, or field. The instructions can be executed before the cursor moves into the object (Onfocus Statement); at the beginning of an object (Preproc Statement); after cursor moves off the object (Killfocus Statement); or at the end of the object (Postproc Statement). You can also perform Interactive Editing after you finish entering a case. Display error messages
107
Structure Edits
Structure edits can be used to check coverage and to establish that each case has the correct number and type of records. The tests that make up a structure edit ensure that the questionnaires are com plete before beginning the consistency edit. In a typical Housing and Population census, the structure edits will check that: For all collective and conventional households within an enumeration area, all required records are present and are in the proper order. Each enumeration area (EA) batch has the correct geographic codes. Where required, each household has one and only one housing record. Each occupied housing unit has at least one person record, and vacant housing units (where permitted) have no person records.
108
Consistency Edits
Consistency edits look at the individual data items within a questionnaire or case, and examine the validity of each item and the consistency of each item with respect to other related items. For example, the degree of educational attainment of an individual should have some predictable relationship with the persons age. This means that it is not expected that a 9-year-old child will have progressed much beyond the fourth or fifth year of elementary school, depending on local standards. If, in the unedited Census data, a 9-year-old indicates educational attainment above that level, it is probable that either the age or the educational level have been incorrectly recorded. Whether the age or the educational level is modified to produce data consistency is a decision left to the subject-matter specialists, who should know whether age data or education data are more correctly reported. It is also important to take into account the method of data capture; some, like scanning, are prone to systemic error (that is, where a "0" is consistently read as a "9," for example). If such error is not recognized and taken into consideration when assessing the reliability of reported information, it can lead to even greater error in the final data. At a minimum, consistency checks should seek to resolve all errors which might eventually lead to doubts about the quality of the data. That is, the subject-matter specialists must consider the types of tabulations to be produced and the uses to which the data may be put in the future. For example, if the plan includes tabulations of educational achievement by age and sex, the edit specifications must include a means of detecting and correcting the data for individuals whose declared educational achievement is not in line with their declared age (as in the example of the preceding paragraph). If a published table shows even one 9-year-old having completed secondary school, the quality of the data will be called into question, simply because (in that particular culture) it is not the norm that a child so young could be so advanced educationally. It makes no difference if, in fact, the child is a prodigy and did indeed complete secondary school; when it is a case of one or two "outliers" and the weight of probability is against them, the values must be changed and brought in line with reasonable expectations. It is not recommended that such changes be made only in the logic which generates the tables; if the data (even a subset) are to be given out to researchers or other users outside the statistical office, they must be clean and consistent throughout before distribution.
Checking errors
You can check for errors at the time you enter the data or perform interactive editing after the data have already been entered. You can use the same programmed logic that was in effect during data entry to find problems that were left unresolved by the original keyer, or you can use different logic to check for other conditions. Improperly identifying errors can waste precious personnel resources, so a precise set of rules should be developed with input from subject-matter specialists. During data entry the system automatically displays a message if value for item is out-of-range. However, you might want to write your own message for missing or out-of-range values. For example, if enumerators had been instructed to record all persons older than 110 years of age as 110, the first-pass check for errors might include the following code: PROC AGE if AGE in 0:110 then
109
Writing Logic
Data Entry Logic Screen Layout
Logic for data entry screens is written when developing the application. Forms Designer permits viewing either the forms or the logic associated with the application on the right-hand side of the split screen. To initiate the process of creating logic for an application, click on or press Ctrl+L. To go back to the forms, click on Ctrl+M. ; or from the View menu select "Logic";
110
The screen is divided into three main work areas: the Tree View, the Logic View and the Message View. Tree View The window on the left half of the screen displays the data entry tree with the first form (
) selected.
Logic View This is the window block in the upper portion of the right half of the screen. It is the programmers "clean slate, to which may be added logic for any part of the data file: any item, any section, any record, even the file as a whole. It is up to the programmer to determine the correct placement and sequence of execution for each logical element. The initial screen (PROC IDSO_FORM) represents the Identification form or initial form. If you move to the top of the tree ( ), then the logic view will display: {Application 'MYDATAENTRY' logic file generated by CSPro } PROC MYDICT_FF PROC GLOBAL This is the beginning of your program. This two lines of code will always be in your application file. You write the declaration statements under PROC GLOBAL, then the procedures for the event.
111
112
113
Compile an Application
When CSPro compiles your application, it checks the logic you have written to see if there are any errors or warnings. Errors typically include spelling a command incorrectly, not using proper command syntax, and putting logic in the wrong place. Error messages appear in the panel at the bottom of the right-hand screen and a red dot appears to the left of the line that contains the error. Warnings usually involve using commands in questionable ways. Warning messages also appear in the panel at the bottom of the righthand screen and a yellow dot appears to the left of the line that contains the warning. You can choose to compile code for a specific item, or for the entire application. To compile code for a specific item, simply select that item from the edit tree. The associated logic for that item will be displayed
114
in the Logic View. Press on the toolbar; or from the File menu, select Compile; or press Ctrl+K. The results of your compile will be displayed in the Compiler Output area at the bottom of the right-hand screen. When you are ready to compile the entire application, select the root node from the data entry or batch edit tree. This will display all logic written for the application in the Logic View. You can then press the "Compile" button or press Ctrl+K. CSPro always compiles your application when you run the application. If there are errors, you cannot proceed until the errors are corrected. During code development, you should compile only the logic for an individual data entry or batch edit entity. This saves time, because the system does not have to recompile the entire logic module. Furthermore, your entire file may not be ready for compilation (i.e., there are unfinished parts awaiting someones input), so it will be more efficient to compile only untested code. If your logic compiles with no problem the system will display "Compile Successful" in the Message View. Now you are ready to run the data entry or batch edit application. See also: Run as Batch
Run as Batch
You might also run the data entry application after you finish entering data for a file. If you select "Run as Batch" under the File menu, the system will display:
Skip Structure If this option is checked, the application will check for entries in items that should be blank when they are skipped under certain conditions, and will list those items. Check Ranges If this option is checked, the application will list the items with out-of-range values. After you press "OK" the system will display the following dialog box:
115
Input Data File This line is required, and asks for the name of the data file against which you wish to run your batch application. This data file will not be modified in any way; it will only be opened, read, and closed. Output File The output file is where the results of correcting your data will be written. If you are not making any corrections in your program, then the generated file will be an exact copy of the original data file. If you are making corrections to your data file, then this will be the corrected data file. The default file extension is .out, but you can use whatever youd like. This field is optional; therefore, if you are making corrections to your data, but forget to specify an output file, no corrected file will be generated. Write File If you have any write functions in your program, they will write information to this file. The default file extension is .wrt, but you can use whatever youd like. This field is optional; therefore, if your program contains write statements, but you forget to specify a write file, no file will be generated. Similarly, if you indicate a write file but your program does not contain any write statements, no file will be generated. Impute Freq File If your program contains any impute statements, the results of this command will be written to this file. The default file extension is .frq, but you can use whatever youd like. This field is optional; therefore, if your program contains impute commands, but you forget to specify a frequency file, no file will be generated. Similarly, if you indicate a frequency file but your program does not contain any impute commands, no file will be generated. Listing File This line is required, and asks for the name of the file to which you want to write the results of the run. Results from errmsg functions will be written here. This file will always be generated, regardless of whether or not your program includes errmsg commands.
116
Help text
Multiple languages
Response boxes
Customized branching
Immediate editing
Extended Controls
Occasionally it may be useful to display to an enumerator or keyer the possible values for a given field in a data entry application. For example, if a survey is being conducting on a tablet computer, it may be easier for an enumerator to use a finger or stylus to select a value rather than to key the value using the screen's touch keyboard. CSPro's extended controls allow for such flexibility by allowing the program to specify the capture type associated with a field. Selecting Extended Controls You can indicate that you want to automatically use extended controls by selecting the Use Extended Controls option in Drag Options. If this option is selected, CSPro will automatically choose a capture type for the field based on the field's primary value set. To manually change the capture type for a field, view the field's properties and select Capture Type -> Change.
117
CSPro only allows you to select a capture type that is suitable for the item's first value set. For more programmatic control, see the setcapturetype function. The CSPro Designer shows the fields that use extended controls by coloring the border of the field in blue. The blue border does not exist when the data entry application is run in CSEntry.
Capture Types Though there are six listed capture types, there are essentially only four extended controls. The Text Box attribute is the default option for a field and indicates that no extended control will be displayed. As of CSPro 4.1, the Drop Down and Combo Box options are the same capture type, though that could change in the future. Radio Button The radio button capture type can be selected if an item is either numeric or alpha and if the primary value set has only discrete values, meaning that there are no "to values" defined.
118
Check Box Check boxes are used to capture multiple response variables. Items using check boxes must be alpha, and the number of values in the primary value set must match the length of the item. Each value in the value set corresponds to one of the responses and will be displayed as a separate check box. When the boxes are checked, the corresponding values will be put into the alpha field, from left to right.
Drop Down / Combo Box This capture type displays all values in the primary value set of a numeric or alpha item. Unlike the radio button capture type, the drop down capture type allows for the displaying of ranges of values (that is, value sets with "to values"). If the enumerator clicks on a value with a range, the first value in the range is placed in the field.
119
Date The date capture type is valid for alpha and numeric items of length 4, 6, or 8. The item does not need to have a value set. The choice of date format affects how the date is stored in the field.
Hiding the Title of an Extended Control Window By default CSEntry displays the label of the value set in the window of the extended control, but this title can be turned off using programmatic logic. set attributes(dictionary-symbol) assisted off(variable(title)); See also: Getcapturetype Function, Setcapturetype Function, Setcapturepos Function
CAPI Strategies
Forms
Form layout should be easy for the interviewer to see and understand. For this reason, its usually best to place fewer items on each form that you might with a non-CAPI application. Also, remember that screen real estate is limited in a CAPI application, since question text will occupy a large portion (sometimes up to half) of the top of the entry window.
120
Fields
In CAPI data entry, consideration needs to be given to the properties of fields used in the application. The following lists field certain field properties and how they might be used: Use enter key This is usually selected, because otherwise the application will automatically advance to the next field, which might be confusing for the interviewer Mirror fields These are very useful in CAPI applications, as they show the contents of fields in other forms. This can assist the interviewer. CAPI applications use protected fields to show calculated or derived values. These provide useful feedback to the interviewer.
Protected fields
Force out-of-range This is almost always tuned off, since the interviewer should only be allowed to enter valid responses. However, you should consider including "not applicable", "dont know", and "refused" response categories. CAPI applications frequently make greater use of alphanumeric responses than to traditional key-entry systems. This is because of the interactive nature of CAPI, and it also makes the interview more interactive (by capturing names, for example).
Questions
CSPro shows customized question text in the top part of the entry window. To help the interviewer distinguish between text for the interviewer and the respondent, consider using different color fonts. For example, things the interviewer should say to the respondent (for example "How many children do you have?") might be shown in black. Instructions to interviewer (for example "Ask of each household member") might be shown in blue. CSPro includes two user defined font, CAPI font #1 and CAPI font #2, which can facilitate this. Question text can be customized using fills, or text substitutions. These fills reference the contents of variables or dictionary items that can be embedded into the question text. They are identified by name of the variable or item surrounding by percent characters (%). During the interview, the value of the variable or data item is substituted into the question text. For example, "How old was %FIRST_NAME% on January 1?" might be transformed into "How old was Edward on January 1?" Fills help customize the question text and frame it for specific respondents.
121
Values
A CAPI application can optionally show a pop-up box containing an items valid values. This makes it easier for the interviewer to read and select response categories. The pop-up box appears to the side of the item, so a response could also be typed in. The list of responses that appears comes from the items first value set. If you decide to use this feature, be sure to create descriptive value sets for your questions, since these will be displayed as during the interview.
122
Note that the optional pop-up box which shows each items response categories will only show the values from the items first value set. It is not possible to switch among multiple sets of response categories.
How to ...
Create a New CAPI Application
1. 2. 3. 4. 5. Create a New Data Entry Application Don't generate forms From the options menu, select Data Entry Options. Check the box "CAPI Mode" Check the box "Partial Save", if you want to use partial save.
123
Notes: o After enabling CAPI mode, the forms screen will be divided horizontally. The top part is for question text (to be read during the interview), the bottom is for the normal form contents.
Define Languages
A CAPI application can contain question text in multiple languages. The interviewer can switch among available languages as needed. 1. From the CAPI Options menu, select Change CAPI Languages. The CAPI Languages dialog box will be displayed, showing the languages currently defined for the application. 2. You can add, remove, or modify the your applications CAPI languages Notes: o Language names follow the same rules as names; that is, they must be unique and cannot contain spaces. Try using abbreviations like ENG (English), SPA (Spanish), FRA (French), or POR (Portuguese). o Language labels can contain any text to describe the language. o During data entry, the interviewer can easily switch among languages See also: Create customized helps
124
Change Formatting
Question text formatting options include:
125
use CAPI font 1 use CAPI font 2 bold italic underline color left center right bullets insert bitmap change CAPI font 1 change CAPI font 2
use the font specifications from CAPI font 1 use the font specifications from CAPI font 2 make text bold italicize text underline text change text color Align text left Align text center Align text right convert text into a bulleted list insert a bitmap file (.BMP extension) into the question text change the font characteristics for CAPI font 1 change the font characteristics for CAPI font 2
Add Pictures
Pictures and other graphics can be added to your question text. The picture or graphic must in a bitmap (*.bmp) file. There are two ways to do this: o Copy and paste them directly into the question window, or o Select Insert Bitmap from the CAPI Options menu. Pictures are limited to 512K bytes in size. You can determine a pictures size by right-clicking on it in the Windows Explorer and selecting Properties. The size, in bytes, will be displayed in the properties window. Bitmaps with 24 bit format take up the most space. Bitmaps with only 16 colors take up the least space. Notes: You can also add bitmaps by right-clicking inside the question window, and choosing the Insert Bitmap option.
126
Notes: Conditions can include dictionary items or variables, and can even call functions. In fact, they can be any expression that could be evaluated in a logical "ifthen" statement in the applications program logic.
127
128
The interviewer can turn the responses on or off during the interview by pressing Ctrl+C or going to the options menu and selecting Show Responses (this field). To use images in value sets, you must first use a text editor (such as Notepad) to insert the following line in the Data Dictionary file (.DCF), in the first section marked [Dictionary]: ValueSetImages=Yes To associate an image with a particular value in a value set, you must create a bitmap file (.BMP) for that value. Then, using the Data Dictionary interface for value sets, which shows the values in the right-hand pane, you click on the gray box in the column to the far right. A dialog box will then come up from which you select the .BMP file. The name of the .BMP file will then appear in the second column from the right.
129
130
B} C} D} E}
Proc NAVIGATE OnFocus $ = "Z"; {need to have a value in the field} PostProc if JumpFlag = 1 then JumpFlag = 0; move to JumpField; endif;
131
Test Application
CAPI applications require even more testing than data entry applications from paper forms because of the enumerator's need to be able to move easily and quickly around the questionnaire. Here are some suggestions on how to test an application. Go through the case in intended sequence to test skip patterns, range checks, and edit checks. If breaking off and restarting the interview are allowed, try doing that from different locations. Can you get back to where you left off easily? Test moving around within the application, moving backward and forward. Test moving between sections, if that is allowed. Test field helps and general helps.
PPC Requirements
In order to develop and run CSPro applications for the Pocket PC you will need the following hardware and software: Pocket PC running Windows Mobile 5.0 or later. Note that earlier versions of Windows Mobile, such as Windows Mobile 2003 and Pocket PC 2002 are not supported. In addition, the SmartPhone versions of Windows Mobile are not supported. Desktop or laptop PC capable of running CSPro 4.1. USB cable or cradle to connect the Pocket PC to the desktop or laptop computer. Microsoft ActiveSync 4.2 or later. This software should come with your Pocket PC. If not, it may be freely downloaded from the Microsoft web site. CSPro 4.1
132
How To ...
Install CSPro on a Pocket PC
Before you can run an application created with CSPro on the Pocket PC, you first need to install CSPro on it. Before you start the installation, first connect your Pocket PC to the desktop or laptop computer using the cradle or USB cable. The installer for the Pocket PC is separate from the installer for the "standard version" of CSPro on a desktop or laptop computer. The Pocket PC install is called CSProMobile.msi and can be found on the CSPro CD or downloaded from the CSPro website. Start by double-clicking on this file.
Follow the instructions in the installer. If your Pocket PC is correctly connected to the computer, it will automatically install CSPro on the Pocket PC. When it is complete, it will ask you to check the screen of your mobile device.
At this point you should see a message on your Pocket PC indicating that the installation was successful.
133
Once the installation has completed, you should test it by running CSPro data entry on Pocket PC. You can access it via Start Menu / Programs / CSPro Data Entry. Installing CSPro Mobile on multiple Pocket PCs Once you have run the CSPro mobile installation once on your desktop or laptop computer, you can install it on multiple Pocket PCs from the desktop computer by using the Add/Remove Programs from the Tools menu in ActiveSync. Simply connect the Pocket PC you wish to install to, launch ActiveSync and choose Add/Remove Programs to bring up the Add/Remove Programs dialog.
In the Add/Remove Programs dialog, check the box next to CSPro Mobile and click OK.
134
Once you click OK, the installation process will begin and lead you through the steps described earlier in this section. If you do not want to connect each Pocket PC to a desktop or laptop computer, you can use a storage card instead to install CSPro Mobile to multiple devices. Once you have installed CSPro Mobile using the procedures described above, there will be a file on the desktop or laptop computer named "CSPro CSProMobile.PPC500.PPC500.CAB". This is usually installed in the "C:\Program Files\CSPro 4.1 Mobile\CSPro 4.1 Mobile" folder. Do the following: Copy "CSPro CSProMobile.PPC500.PPC500.CAB" to the storage card. Insert the storage card into a Pocket PC. Use the Pocket PC's File Explorer to locate this file. Tap on the file to begin the installation.
135
136
Note that labels, additional text and boxes on a form that are visible when running on a desktop computer are not shown on the Pocket PC. We recommend that you place information such as labels and interviewer instructions in the CAPI question text rather than on the form. For this reason, most applications for the Pocket PC will be CAPI data entry applications. Usually the first step, once the application is created, is to go to the "Data Entry Options" dialog box (from the CSPro menu at the top select "Options" / "Data Entry"), then check the box labeled "CAPI Mode". Make sure the box labeled "Use PPC Controls" is also checked. It is also important to pay attention to the value sets in your dictionary that you use for your variables. An additional difference between standard data entry and the Pocket PC is that the values from the first value set for each variable are displayed underneath the field so that the user may choose an option rather than use the virtual keyboard to enter a value. In the image above, the user can simply click on Male or Female. In order for this feature to work, it is important to specify value sets with clear labels for each possible value rather than simply specifying valid ranges. Of course, this will not be possible for all variables. On the Pocket PC, every variable has a field capture type. Depending on the variable's value set, this will be either: radio button, check box, drop down, combo box, text box, or date. You can see or change a variable's capture type, by right-clicking on the field on the form and selecting "Properties". There are a couple of potentially useful commands that have been added to CSPro data entry to better support the Pocket PC. These are (1) the Show function which displays items from a roster in a grid view; and (2) the select clause added to the Errmsg function which adds buttons to the error message dialog that allows the user to choose a field to move to in order to correct the error. Both of these new features are fully documented in the online help and are also used in the Simple CAPI example which can be found in the CSPro examples directory. Some advanced users may want to write a CSPro data entry application that calls another CSPro data entry application. Applications that run on a desktop or laptop would include an Execsystem function to invoke CSEntry.exe. The executable on the Pocket PC that corresponds to CSEntry.exe is named CapiESD.exe. However, due to limitations of the Windows Mobile operating system, you cannot have two instances of CapiESD.exe running at the same time. CSPro therefore installs a file named
137
You can then drag and drop the .PFF and the .ENC from the desktop computer onto the Pocket PC.
138
You should place the .PFF and the .ENC files into either the My Documents folder, a sub-folder of My Documents, or a folder on the storage card if there is one. This is because standard Windows Mobile file dialogs used in CSPro do not look in folders other than these.
Once the files have been copied to the Pocket PC, you are ready to run the application on the Pocket PC.
Launching CSPro Data Entry from the programs folder and choosing a .PFF. Note that you can also launch the application by finding the correct .PFF file through the Pocket PC's File Explorer and tapping on it. If the data file (specified in the .PFF file) has any cases in it, you will first see a list of them, like this:
139
You have the following options: About Add Mod Del Language Exit See general information about CSPro. Add a case to the data file. Modify the selected case in the data file. Delete the selected case from the data file. Change the language of the question text. Exit CSPro.
If you add or modify a case you will see the first question on the screen, like this:
In this example, the user tapped on More simply to show other options. The options are:
Prv
Nxt
Move to the previous field. Move to the next field. Advance to the end of the case.
Adv 140
Data Entry Module Note Save Tree More / Stop More / Language More / Help More / About
Write a note for this field. Save this case. Show a tree with all the data in the case. This is very useful to see where you are in a long interview. You can tap anywhere on the tree to move to that field. Stop adding or modifying the current case. Change the language of the question text. Show the "help" text for this field as defined in the application. See general information about CSPro.
Note that the icon to the right of More brings up the virtual keyboard, which allows you to enter text when needed. Also note that there are two "keys" you can use from the virtual keyboard with operator-controlled applications: Ctrl + / Ctrl + P Exit the current roster or group. Same as the desktop/laptop version. Move to previous persistent field. Equivalent to F7 in desktop/laptop version.
A convenient feature to be aware of is that you can minimize the question text area, and therefore maximize the response area, by tapping on the question text area. The first tap will minimize the screen area that contains the question text and the next tap will restore it. This is useful in cases where the question text is long and the list of responses is also long. Normally the interviewer would have a small window that shows very few of the responses, and requires a lot of scrolling. After reading the question text, they can tap on that window to be able to see more of the responses.
141
143
Select Batch Edit Application and press OK. A file dialog box will appear. Enter the name of the application file. Make sure you are located in the folder where you want to place the application files. Then press Create. The following dialog box will appear.
A default name of the data dictionary describing the data file is given. You can use this name or change it. If you give the name of a dictionary file that already exists, that data dictionary will be used by the application. If you give the name of a dictionary that does not exist, a new data dictionary will be created. If you are using an existing CSPro data dictionary, you may begin creating batch edit procedures. If you are creating a new CSPro data dictionary, you will need to enter information into the dictionary about records, items, and values before you can create edits. Batch edit applications consist of the following files:
144
Batch Edit Application File (.bch) Specifies all other files contained in the application and includes other application information. Edit Order File (.ord) Specifies the order in which logic in the application is executed. There is usually one order file per application, but there may be multiple order files. Each order file contains one Data Dictionary file (.dcf) that represents the primary data file that is being read and/or written. Logic File (.app) Contains CSPro language statements Message file (.mgf) Optional file, it contains text for messages displayed on the output listing Other Data Dictionary Files (.dcf) Optional, it represents secondary data files (such as lookup files) that are read and/or written to during the batch run.
145
The screen is divided into three main work areas: the Tree View, the Logic View and the Message View. Tree View The window on the left half of the screen displays the batch edit tree with the root node (
) selected.
Logic View This is the window block in the upper portion of the right half of the screen. It is the programmers "clean slate, to which may be added logic for any part of the data file: any item, any section, any record, even the file as a whole. It is up to the programmer to determine the correct placement and sequence of execution for each logical element. The initial screen will display: {Application 'MYBATCHEDIT' logic file generated by CSPro } PROC GLOBAL PROC MYDICT_FF These two lines of code will always be in your application file. You can delete them, but they will always be regenerated and placed in your file on open, save, or exit. This is the beginning of your program. You write the declaration statements under PROC GLOBAL, then the procedures for the event.
146
BatchEdit File: This is the highest level node, i.e., the root node. It is the owner of all code, which is to say [1] level-, record-, and item-related code, [2] user-defined functions, and the [3] global routine. BatchEdit Level: This is the second-tier tree node, just below the root. It has a 1-to-1 correspondence with the same-named dictionary level. BatchEdit Record: This is the third-tier tree node, just below its level. It has a 1-to-1 correspondence with the same-named dictionary record. BatchEdit Item: This is the terminal or "leaf"-node; i.e., the lowest accessible level. It has a 1-to-1 correspondence with a dictionary item. You are free to rename any of the above the unique names via the properties dialog box, but it is recommended that you retain the original name, so that it is easier for you to see which dictionary entity is being referenced. The batch edit tree represents the order in which the logic associated with each edit item is executed. If code has been written for a given edit level, record, or item, a check mark will appear superimposed on the icon for that entity. This is how, at a quick glance, you can see where you have placed programming logic. Once one line of code has been written anywhere in the program, a check mark will appear on the root node.
147
Input Data File This line is required, and asks for the name of the data file against which you wish to run your batch application. This data file will not be modified in any way; it will only be opened, read, and closed. Output File The output file is where the results of correcting your data will be written. If you are not making any corrections in your program, then the generated file will be an exact copy of the original data file. If you are making corrections to your data file, then this will be the corrected data file. The default file extension is .out, but you can use whatever youd like. This field is optional; therefore, if you are making corrections to your data, but forget to specify an output file, no corrected file will be generated. Write File If you have any write functions in your program, they will write information to this file. The default file extension is .wrt, but you can use whatever you like. This field is optional; if no write file is specified at run time, the write file lines are placed in the default data entry or batch error report. Impute Freq File If your program contains any impute statements, the results of this command will be written to this file. The default file extension is .frq, but you can use whatever youd like. This field is optional; therefore, if your program contains impute commands, but you forget to specify a frequency file, no file will be generated. Similarly, if you indicate a frequency file but your program does not contain any impute commands, no file will be generated. Listing File
148
Order of Editing
Order of Executing Batch Edit Events
CsPro executes the procedures in an application one case at a time. There are two types of procedures for each element: a preproc and a postproc. If the type of procedure is not named, postproc is assumed. The following diagram illustrates the order of operations for a two-level batch edit application. Level 1 has two records (1 and 2) and level 2 has one form (3). Application File preproc Level 1 (case) preproc Record 1 preproc Item 11 preproc Item 11 postproc : Item 14 preproc Item 14 postproc Record 1 postproc Record 2 preproc Item 21 preproc Item 21 postproc : Item 26 preproc Item 26 postproc Record 2 postproc Level 2 preproc Record 3 preproc Item 31 preproc Item 31 postproc : Item 34 preproc Item 34 postproc Record 3 postproc Level 2 postproc (repeat level 2 procs for other instances of level 2 Level 1 (case) postproc Application File postproc See also: Batch Edit Order
149
Correcting Errors
Methods of Correcting Data
Before you can correct your errors, you need to know what kind of errors you have. You have two methods of finding these errors: manually or automatically. Manually checking large quantities of data is an extremely time-consuming and error-prone task and not recommended. By contrast, automated
150
151
Obvious inconsistencies among the entries should be eliminated. Providing corrected values for erroneous or missing items should be supplied by using other values as a guide; (for example, entries for the housing unit, person, or other persons in the household or comparable group), and always in accordance with specified procedures. Specifications for editing the questionnaire data should be developed at the same time as the questionnaire itself. Information to the computer programmer concerning what checks and imputations should be made in the data are provided through editing instructions or specifications. A subject-matter specialist, in collaboration with the computer specialist, should write editing instructions. The instructions describe the action to be taken on each data item. The editing instructions should be clear, concise, and unambiguous, since they serve as the basis for the CSPro editing program. Specifications for machine editing may be written instructions, decision tables, flowcharts, or pseudo-code. Pseudocode (IF/ELSE logic) is recommended because it can be easily translated to CSPro code. Pseudo-code can be prepared using basic word-processing or text-editing software and can be easily modified. If the hot deck method of imputation is used, it is important that the edit specifications indicate where, during the processing, hot decks are to be updated, that is, at which points in the logic the data items can be considered valid.
Imputation
Imputation refers to the process of providing values for missing, erroneous, or inconsistent responses. For example, if a persons sex code is invalid (i.e., out of range or otherwise unacceptable) or missing; then an appropriate response should be substituted. You may decide that for missing data, youd rather just keep it "missing" and publish your tables with an extra column (or row) for unknown values. This is a very cumbersome method, however, as the number of missing values will vary for each data item, and so the number of missing entries will vary from table to table, making the data difficult to analyze. Inconsistent responses occur when a response yields an impossible situation with respect to another response. For example, if a 5-year-old female reports having children, either her age is wrong, or her fertility data are wrong (i.e., that section should be blank). This type of error must be corrected, as your users will place very little faith in the quality of your data if this type of condition becomes evident in the tabulations. Many users also do not look kindly on "missing" or unreported data. Of course, nothing can correct for bad data, and if you find that a significant amount of your data are bad (poorly designed questionnaire, inadequate field procedures, inattentive coders and keyers, etc), you may want to reconsider whether the data should be released at all. Procedures have been developed to provide the missing information, thereby avoiding discrepancies and the need to determine percentages twice (with and without unknowns). For a detailed discussion on using imputation and the methods available to you, please refer to the United Nations Handbook on Population and Housing Census Edits. Essentially, two methods of imputation are available: static and dynamic.
Static Imputation
Static imputation means providing a value from a pre-determined set of values. Suppose a persons sex is missing or invalid (out of range). If we decide to change the response using static imputation, there are two basic methods to use: hard-coded or from a "cold-deck." Hard-coded
152
(M) (F)
1 2
In the event a female child was found to have a missing age, she would be given the age of 10. If a female head of the household had a missing age, then her age would be given as 32. This method is acceptable if you do not need to use it often; that is, if very little of your data are missing or invalid. Also, if your population is fairly homogeneous (for example if you were correcting for religion and 90% of the population is Muslim), then this will not result in an unrealistic portrayal of your country. However, if you find yourself referring to this table often, or you have a very diverse population where a few static values do not give an accurate portrayal, then your data will end up skewed. For these reasons (and others), dynamic imputation is the preferred method.
153
(M) (F)
1 2
If the person in question is a male 6-year-old child, the table can be updated with new information, giving the following: (head) 1 35 32 (spouse) 2 50 48 (child) 3 6 10 (other rel) 4 41 37 (non-rel) 5 65 68
(M) (F)
1 2
You would proceed in this way for every person in the household who had correct age, sex, and relationship values. Then, when you encounter a person with an invalid or missing age, you can extract from the table, using the sex and relationship of the person, a value for age. This value is more likely to be appropriate for the person than would be a purely random value. (The preceding example is clearly a simplification of the "hot deck" technique, which requires great care in constructing and updating the tables used for allocation.) For a more detailed explanation of how to use hot-decks in your program, view "Use Hot Decks", refer to the CSPro hot-deck example folder or to the United Nations Handbook on Population and Housing Census Edits.
DeckArrays
Using "DeckArrays" in CSPro is a simplified way of working with hotdecks. It is important to understand the hotdeck process well before using DeckArrays because the functions getdeck and putdeck automatically handle recodes and thus hide much of the behavior of hotdecks from the programmer. DeckArrays eliminate the need for the programmer to recode variables to fit within the boundaries of an array as the recodes are processed automatically based on the values in a value set. If using DeckArrays it is very easy to change the parameters of a hotdeck. For instance, if a subject matter specialist decides that a variable should be hotdecked based on five-year intervals of age but later changes the specification to be ten-year intervals, programming such a change is very quick if using DeckArrays, whereas with standard hotdecks reprogramming the recodes may be time-consuming. Declaring a DeckArray Declare a DeckArray in PROC GLOBAL as you would a normal array but instead of using numeric dimensions, specify the name of a value set. The size of the dimension will match the size of the value set. If you make changes to the value set, the size of the array will automatically reflect the changes. array Age_HD_from_Sex(SEX_VS); // same as array Age_HD_From_Sex(2); array Age_HD_from_Sex_Relationship(SEX_VS,RELATIONSHIP_VS); To create a DeckArray, at least one of the dimensions must be a value set, but it is permissible that the other dimensions are declared with a numeric size. Because the program can only recode values for the
154
PROC AGE universe RELATIONSHIP = 1; // we're only editing head of households here // assumption: by now RELATIONSHIP and SEX have been edited for the head of household numeric ptrSpouse = seek(RELATIONSHIP = 2); numeric minSpouseAge = 12; if SEX = 2 then minSpouseAge = 15; // males cannot marry until 15 endif; if AGE in 15:95 then // the head of household has a valid age // the
if ptrSpouse <> 0 and AGE(ptrSpouse) in minSpouseAge:95 then spouse has a valid age
155
else
if ptrSpouse <> 0 and AGE(ptrSpouse) in minSpouseAge:95 then // the spouse has a valid age impute(AGE,getdeck(ageFromSpouseHotdeck, ,AGE(ptrSpouse))); else impute(AGE,getdeck(ageFromHHSizeHotdeck,low(totocc(),maxHHSize))) ; endif;
endif;
Example 2 VS_SEX has two values: 1 (Male) and 2 (Female). VS_EDUC has three levels: 1 (No schooling), 2 (Primary schooling), 3 (Secondary schooling). // Command: // The hotdeck looks like // this after the command: // // // // // // // // 00 00 20 00 20 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 50 00 50 00 00 00 00 00 00 64 00
array ageHotdeck(VS_SEX,VS_EDUC(+));
SEX = 1; EDUC = 1; AGE = 20; putdeck(ageHotdeck,AGE); SEX = 2; EDUC = 3; AGE = 50; putdeck(ageHotdeck,AGE); SEX = 1; EDUC = 8; AGE = 64; putdeck(ageHotdeck,AGE);
156
putdeck(ageHotdeck,28,1,3); putdeck(ageHotdeck,28,0,3); // returns // DEFAULT because 0 is not in VS_SEX // and no (+) specified AGE = getdeck(ageHotdeck,2,300); // AGE = 14 See also: Getdeck Function, Putdeck Function
157
Check case/questionnaire structure: These checks ascertain that all records that should be present for a particular questionnaire [case] are supplied, and that no extra records are included. Validate individual data items: These checks are designed to determine whether a response has a value that is inside or outside the valid limits for that response. Although these checks are normally performed during data entry, you can also perform them with CSBatch. Test consistency between items: In these checks, two or more responses in a questionnaire are compared for consistency. For example a male person reporting having any children is an inconsistency between the response to "sex" and the response to "children born". (Only females report "children born".) The responses being compared may be in the same record or in different records within a questionnaire. Automatic modification: When a census or other large survey is being processed, it would be unduly cumbersome to make most data corrections by visually examining the errors. CSPro provides the facility for not only finding incorrect or inconsistent data, but also making modification to the data. Needless to say, modifications are not always corrections. Moreover, any modifications to data that have been collected must be carefully thought out and monitored through CSPro's edit statistics reports. Generate edit reports automatically: CSPro generates comprehensive statistics about the edit tests carried out and the number of changes made to the data. The user may also create a customized report including or excluding any of the information generated by CSPro during the editing process. Generate reports You can write customize reports to a file. Match files: CSPro allow for matching two files and gathering information from both. The feature is useful, for example, when a file must be created which has a combination of data from two other files. Modify data values: During the editing process, values that are invalid, inconsistent, or otherwise unacceptable will need to be replaced with correct values. Use arrays for imputations Whether you choose to correct data using "hot-" or "cold-deck" methodology, the arrays are easily defined, accessed, and updated. Generate imputation statistics CSBatch will automatically keep track of changes, but users my choose to format reports to their specifications. By specifying a denominator variable, users may obtain rates of imputation, including rates for individual values [e.g., "male" or "female" when imputing the variable "Sex"]. Create additional variables Recoded or composite variables may be created during the editing process. The only requirement is that space be allocated [via the data dictionary for the file] in the output record. The updated output file is automatically created when a file name is specified at the time of execution. Reference multiple lookup files An essentially unlimited number of secondary or auxiliary files may be attached to an application and used as reference or look-up files. The application may read from and write to any of these files.
158
How to ...
Manipulate Automatic Reports
During the testing and debugging stages of developing your application, youll want to write out a lot of error messages to help find problem areas, and keep statistics on the number of times certain code blocks are being executed (or values are being imputed). You may begin to notice that youre using the same error message in several places. Rather than write out the message every time its needed, you can "define" it once, and refer to it whenever needed. For example, suppose you have the following error message scattered throughout your code: errmsg ("Current age after imputation is %d", age); Why bother retyping it each time? You can simply define it once and reference it over and over. Simply do the following: In the Message View, select the Message tab. You will see one line that has been generated for you; it reads: {Message code file generated by CSPro}. Beneath this simply add your error message (well give it number "10"): 10 "Current age after imputation is %d" Then, whenever you want to use this message in your code, simply write (where $ is a shorthand notation for the current PROCs variable): errmsg (10, $); Besides simplifying your work, after you run your program, a convenient summary statistic will be generated for each user-defined error message, indicating how often it was used. A sample listing is shown below: Number Freq Pct. Message text Denom ------ ---- ---- ------------ ----10 24271 - "sex imputed to %d" See the "errmsg " function for a detailed explanation of all the options available to you.
159
PROC QUEST preproc write ("***************"); write (" Province: %3d", PROVINCE); write (" District: %3d", DISTRICT); write (" Village : %3d", VILLAGE); write (" EA : %3d", EA); write ("***************"); write (" "); { blank line } After the execution of the program, the .wrt [report] file would show the following (of course, actual values will vary depending on the questionnaire IDs): *************** Province: 1 District: 7 Village : 30 EA : 4 *************** Additional write statements can be included in the batch edit program to generate a customized report.
{if the value for age is not valid} {assign the value from the hot deck based on sex and relationship} {update the value of the hot deck}
When an age is missing during the data files processing, we will use a value from the array AgeSRDeck; if the age is present, we will "refresh" the age for the person using the current sex and relationship codes as indices into the array. If you wish to use hot-decks in your application, refer to the example provided in the Examples\HotDeck directory. For a more detailed explanation of what hot decks are, refer to the United Nations Handbook on Population and Housing Census Edits.
160
= 27; {male head of HH} {initialize values} = 30; {male spouse of head} = 6; {male child of head} = 58; {father of head} = 11; {male other relative of head} = 24; {male non-relative of head} = 32; {female head of HH} = 25; {female spouse of head} = 8; {female child of head} = 60; {mother of head} = 10; {female other relative of head} = 27; {female non-relative of head}
PROC AGE if AGE = notappl then impute(AGE, AgeSRDeck(SEX, RELATIONSHIP)); else AgeSRDeck(SEX, RELATIONSHIP)= AGE endif;
{if the value for age is not valid} {assign the value from the hot deck based on sex and relationship} {update the value of the hot deck}
For a complete example using use hot decks, refer to the examples provided in the Examples\HotDeck directory. See also: Dynamic Imputation (Hot Deck), Use Hot Decks, Initialize Hot Decks Using Saved Arrays
161
{if the value for age is not valid} {assign the value from the hot deck based on sex and relationship} {update the value of the hot deck}
For a complete example using use hot decks, refer to the examples provided in the Examples\HotDeck directory. See also: Dynamic Imputation (Hot Deck), Use Hot Decks, Initialize Hot Decks In Program Logic, Array Statement
Interpret Reports
After specifying your file(s), a progress dialog bar will be displayed as CSBatch works its way through your data file, then TextViewer is launched and generate the following listing (.lst) report:
162
The "CSPro Process Summary" gives you information about the records and cases. In this example: 29143 records were read from the input file, which represent 100 % of the input file "Ignored" is the sum of "Unknown" and "Erased" cases. "Unknown" represents number of cases with invalid record type code. "Erased" represents number of records with a "~" character The list report contains 47063 messages of which: 36 messages were defined by the user; 9004 are warning messages generated by the system; and 38023 are error messages generated by the system "Level 1" indicates that the following statistics are for Level 1 only. If the application had more than one level, the statistics will be displayed for each level. The input data file included 4872 cases (questionnaires) of which: there were "0" case with bad structure, meaning that no required records were missing; and 4872 cases were written to the output file ("Level Post").
163
The "Process Messages" gives you information on each case: *** Case (010705802820460191) has 12 messages (8 E/ 2 W/ 2 U) Indicates that questionnaire 010705802820460191 (codes correspond to the ID items in the Dictionary) has 12 messages: 8 error messages generated by the system; 2 warning messages generated by the system; and 2 error messages defined by the user. W 88870 Value 01 out of range check P16_IND(1) Indicates that field P16_IND in first person (1) has a value "01" which is out of range because it has not been declared in the Dictionary. This is Warning 88870, generated by the system. U -69 Household tenure is vacant, but there are 5 person records. Message defined by the user in line 69 of the program E 88212 H07_RENT should be blank (currently 000) Indicates that field H07_RENT has a value 000 but it should be blank. (This is a vacant unit) This is Error 88212, generated by the system.
If a write (.wrt) or frequency (.frq) file was generated, then they will also be loaded into TextViewer for display; to rotate between the various files, select the "Window" option from TextViewer, and choose from among the files listed at the bottom. If TextViewer was already running when you launched your application, it will be refreshed with the latest run results. See the explanation given under Run an Application
164
[Files] Application=.\MyEdit.bch InputData=.\p12d05.dat OutputData=.\p12d05e.dat Listing=.\MyEdit.lst WriteData=.\ViewMe.dat ImputeFreqs=.\MyEdit.freq.lst [ExternalFiles] LOOKUP_DCF=.\Prov12.lup [Parameters] ViewListing=Always ViewResults=Yes ListingWidth=80 MessageWrap=No ErrmsgOverride=No Parameter=your choice The [Run Information] block is required and must appear exactly as shown in the example above. The [Files] block is required and defines all files used in the batch run. A description of the files is as follows: Application = the batch edit application you created InputData = the data file against which the batch edit program will run; this file will not be modified during the run OutputData = the revised/corrected input data file will be saved as this file Listing = a report of the batch operation WriteData = if there is one or more write function in your batch program, the text of these statements will be written here ImputeFreqs = if you have any impute statements in your batch program, the results of these statements will be written here If the [ExternalFiles] block is present, it means that a second [or more] dictionary was linked to the data entry application. In the example above, "LOOKUP_DCF" is the internal (unique) dictionary name, and "Prov12.lup" is the name of the data file that contains the lookup codes. If there is a second dictionary linked to your application and you fail to name it in your PFF file, the operator will be prompted to provide it. The [Parameters] block is optional. This section defines parameters for the batch run. ViewListing determines whether you see the batch run report. If this entry is missing or set to "ViewListing=Always", then you will see the generated report. Other available options are "OnError", in which case you will see the report listing only if an error occurred during the run, or "Never", in which case you will never be shown the generated report. ViewResults determines whether or not the write or impute file(s) are displayed with TextViewer at the end of the run. The available choices are "Yes" or "No." If the "ViewResults=" entry is missing, the
165
166
The three types of edit statistics reports are: Case Output listing shows case by case Summary Output listing shows (1) a summary of the number of times each error message was generated, and (2) the number or errors as a percentage of total cases in which the edit test was invoked. Frequency This report is generated when at least one impute statement is coded in the program. It assigns a value to a data item and logs the frequency of assignments. Typically, during the testing phase, the report by case is very useful, because it permits detailed examination of the effects of the logic coded. After testing, it is usually not used because of the volume of reports generated.
167
If no changes to the CSPro program are needed, only the Run program step needs to be executed for each batch of data to be edited. If the data dictionary is changed, then you must re-compile the program before running it again. During production processing, edit statistics for each run should be checked to ensure that the number of errors and imputations are within the normal range. As soon as enough batches have been edited to form a larger geographic area (perhaps all enumeration areas within a district), tabulations should be run at the higher geographic level (in this case, district) to see if any inconsistencies are apparent. If so, it will be necessary to pause and discover the reason for the inconsistencies. This may involve modifying and re-testing the CSPro program until the data are producing satisfactory results. Each time the CSPro program is modified, all previously-edited batches must be re-edited [always starting with the same original data files!] so that final data will all have been edited and corrected following the same logic.
169
Tabulation Applications
Introduction to Tabulation
Tabulation applications in CSPro allow you to tabulate data quickly and easily, producing basic frequency distributions and complex cross-tabulations from one or more data files. The only requirements are that: The data to be tabulated be in ASCII text format, with all items in fixed positions All the data files to be used in a single run share the same format There be a data dictionary describing the data file. Each of these requirements is easily met: if the data are currently in a proprietary format (that is, within a data base, spreadsheet, or other package), they must be exported to ASCII-text format (sometimes called "printer" format); if the data dictionary does not yet exist, CSPro will ask you to create the dictionary while you are creating the tabulation application. When you create your application, you can use an existing data dictionary or you may create one as you create the application. You can produce most tables by way of the menu-driven, point-and-click, dragand-drop interface, i.e. without using the CSPro programming language. The procedural language is available for the most complex kinds of tables. This section contains the following information: Parts of a Table Common Uses of Tabulation Capabilities of Tabulation Creating Tables Formatting Tables Creating Tables by Geographic Area Printing Tables Tabulation Preferences Saving and Copying Table Data Table Post Calculation Run Production Tablulations Advanced Table Topics Table Tips and Tricks
Parts of a Table
Shown below are the terms used by the CSPro software to reference the parts of a table.
171
172
Tabulation Applications
Spanner: An informational text box spanning several columns. Column Head: Text box describing the contents of a column of data. Stub Head: Text box describing the general contents of the stubs (rows). Stub: Text line describing the contents of a row of data. Caption: Text lines interspersed with Stub lines but which do not have data associated with them. Page Note: A text line that appears at the bottom of each page of the table [a footnote on each page] End Note: A text line that appears at the bottom of the LAST page of a table [a footnote at end of table]. Area Caption [Not shown]: When the area option is used for tabulations, this is a caption line that will be replaced by the text in the area name file. Boxhead: This is the union of the Stub Heads, the Spanners, and the Column Heads
173
174
Tabulation Applications
Test Tables Tabulations that are destined for publication and for distribution to outside users must be carefully verified to ensure that the values presented are without error. Tabulation applications are currently designed for use as a custom tabulation package but it can also be useful as a means of comparing the results produced by other tabulation software. In this case, the relative rigidity and transparency of tabulation specifications means that there will be virtually no errors attributable to programming faults; if differences are encountered between the tables produced by CSPro and tables produced by other software, the tables produced by CSPro are likely to be closer to the "true" counts. In any case, tabulation applications can be an effective tool to create publication-quality tabulations or for crosschecking numbers produced by other software.
Capabilities of Tabulation
Cross Tabulations
Cross tabulations can display relationships between two or more data items. You may have both dependent and independent variables in each dimension [row and column].
For example, this table has Urban/Rural and Mother Alive as independent variables; Sex and Literacy as dependent variables. In addition, this table could be produced by area; usually this is a geographic item but it could be any item that meets certain conditions. The area item is basically an extra tabulation variable.
175
The user can elect to display tabulations in terms of actual counts or as percentages of the total, and has the option of counting special and/or undefined values. The counts in tabulations may be unweighted or weighted. Users can produce a table on a subset of a file using the universe option, or select an item or numeric value to be used as a weighting factor during tabulation. The selection of an item as a row or column variable will affect the table layout. See also: Create a Table
176
Tabulation Applications
These do not make sense for some items so you should only use them if you have some understanding of their meaning and purpose. For example, none of these measures have any meaning for an item such as sex. Mean, Mode and Median are measures of central tendency. These are measures of the location of the middle or the center of a distribution. The definition of "middle" or "center" is purposely left somewhat vague so that the term "central tendency" can refer to a wide variety of measures. The mean is the most commonly used measure of central tendency. Mean is the average value of the item, mode is the most common value occurring in the data, and median is the middle value (half of the values occur above this value and half below, e.g., 50th percentile). Minimum and Maximum are the lowest values and highest values, respectively, found for the data item. Standard deviation is a statistic that tells you how tightly all the various values are clustered around the mean in a set of data. This measure is the square root of the variance. Variance is a measure of how spread out a distribution is. It is computed as the average squared deviation of each number from its mean. N-tiles are values that divide the data values into N groups, each of which contain 1/N of the values. If N is two, then this measure is equivalent to a median. See Also: Tally Attributes for a Variable
Restrict a Universe
When you define a universe, CSPro will only tabulate data records in the questionnaires that meet the conditions stipulated by you. The "universe" specification acts as a filter, as the tables produced use only a subset of the data file's records. Therefore, values in the table may be lower than they would be with no universe specified, since the universe restricts the data available for tabulation. Note that each table has its own universe definition, but that a given universe specification may be extended to all tables in an application. See also: Define a Universe
177
178
Tabulation Applications
and paste table specification to assemble them into a single application at the end. If you do this, you must be careful to use the same data dictionary in each application. This feature is also useful if you need to add a table in the same application which is very similar to an existing table. To copy or paste a table specification: From the Tabulation Tree tab Right-click over any of the tree entries. A pop-up dialog box will appear. Select "Copy Table Spec" or "Paste Table Spec". From the Tabulation Menu Select Edit, then "Copy Table Spec" or "Paste Table Spec". From the table itself Right-click anywhere over the cells of a table. A pop-up dialog box will appear. Select "Copy Table Spec" or "Paste Table Spec".
179
In the second example, there are three variables in each subtable, one row variable plus two column variables (the independent variable Urban/Rural and the dependent variable Sex).
Subtables are created automatically as the user builds the table. Every time an independent variable is dropped onto the rows or columns of the table, new subtables are created as appropriate. Subtables are designated as part of the larger tabulation using colored outlines when viewing hidden parts. Each subtable has the same properties available to the entire tabulation, i.e., universe, weight, value tallied and unit of tabulation. These properties may be set differently for each subtable within a table. See Also: Add a Variable to a Tabulation, Using Subtables
180
Creating Tables
Create a New Tabulation Application
To perform tabulations, you will need a data file, and a data dictionary to describe the file. If you do not have a data dictionary, you will need a written description of the data file structure and organization. You can create the CSPro data dictionary as you create the new Tabulation application. Click on the toolbar, or from the File menu, select New. The following dialog box will appear.
181
Select Tabulation Application and press OK. A file dialog box will appear. Enter the name of the application file. Make sure you are located in the folder where you want to place the application files. Then press Create. The following dialog box will appear.
A default name of the data dictionary describing the data file is given. You can use this name or change it. If you give the name of a dictionary file that already exists, that data dictionary will be used by the application. If you give the name of a dictionary that does not exist, a new data dictionary will be created. If you are using an existing CSPro data dictionary, you may now start creating tables. If you are creating a new CSPro data dictionary, you will need to enter information into the dictionary about records, items, and values before you can create tables. Tabulation applications consist of the following files:
Tabulation Application file (.XTB) Specifies all other files contained in the application and includes other application information. Table Specifications file (.XTS) Contains variable names and other parameters which define the tables in the application. Data dictionary file (.DCF) Contains the physical format of the data file(s) to tabulate. See also: CSPro Initial Screen Layout, Introduction to Data Dictionary
182
An item dropped next to an existing item is indicated by the "+" while dragging.
The dropped item will be appended to the existing item, e.g., Total, Male, Female followed by Total, Literate, Illiterate.
An item dropped on top of an existing item is indicated by the "x" while dragging.
183
The dropped item will be crossed with the existing item to make sub-groupings, e.g., Total, Literate, Illiterate under Total, Male and Female. To delete a row/column variable, left-click on one of its value names, then drag and drop it back on the dictionary tree. In the x example above, if "Sex" is deleted, then "Literacy" will also be deleted. However, "Literacy" can be deleted without affecting "Sex".
The rows/columns that are created when you add an item to a table come directly from the value set defined in the dictionary for that item. If you would like to have different rows/columns created for a particular item, you can either modify the value set in the dictionary or create an additional value set for the item and use the new value set instead. To use a different value set, rather than dragging the item itself onto the table, drag the value set instead. For items with more than one value set, the value sets appear underneath the item in the dictionary tree. For more information see Implications of Data Dictionary Value Sets. Optional Definitions Define the universe for the table. Define the area for the table (required if you plan to create a thematic map of results from your table). Select the value Item or constant you want to tabulate. Select the weight Item or constant Add percentages. When two variables are selected for the same dimension (row or column), the first one selected becomes the independent variable and the second one becomes the dependent variable. (See the discussion on row/column variables for more details.) See also: Tabulations, Add a Variable to a Tabulation, Remove a Variable from a Tabulation
184
Tabulation Applications
0 Row/1 Column Variable If a table consists of no row variables and one column variable, the system will produce a table with the tabulation categories in the columns and totals in the single row of the table. 1 Row/1 Column Variable If a table or subtable consists of one row variable and one column variable, the system will produce a normal cross-tabulation, with the tabulation categories of each variable in row or column, as appropriate. By default, totals will appear in the left-most column and in the top-most row (it is possible, however, to change the position of the total). 2 Row/Column Variables When a table or subtable is designed with two variables or value sets in the row and/or column, one of each pair is considered to be the independent [major] variable, and the other is considered to be the dependent [minor] variable. The tabulation categories of the dependent variable appear nested within the categories of the independent variable. Totals for a dependent variable appear as the topmost row or left-most column within each tabulation category of its independent variable. Because there are effectively no limits on the number of rows and columns in a table, the combination of two variables/value sets can produce tabulations which will be extremely difficult to view and to understand. Users should give careful thought to the placement of variables and value sets in rows and columns, particularly when one or more of the items has a large number of tabulation categories. It is almost always easier to manipulate tables with large numbers of rows than those with the same number of columns. Whenever the area processing function is invoked for a table set, the area levels are included as additional row categories within which the other row variables are displayed. Subtables are created by adding variables to the bottom of the existing rows or to the right of the existing columns. When a subtable is created it is usually outlined in color to designate this fact. This is an example.
Notice these are like two separate tables side-by-side; 1) Marital Status by Sex and 2) Marital Status by Literacy. There is a total of 6 columns (3 for Sex plus 3 for Literacy). Note also the wording in the generated title. Compare the above to the following:
185
This is a single table (1 row variable and two column variables) with a total of 9 columns (3 for Sex times 3 for Literacy). Note the wording in the generated title.
186
Tabulation Applications
In the current version of the software, alphanumeric items CANNOT be tallied. By default, certain summary statistics (median, n-tiles and mode) are calculated using the counts in the values/ranges in the value set. The accuracy of these summary statistics is highly dependent on the number and size of values/ranges in the value set. If the range for a particular variable is large and there are a small number of categories in the value set, these statistics will be inaccurate. For best results, when calculating median, mode and n-tiles, use either single values for discrete variables or small, uniformly sized ranges for continuous variables. Note that by setting the appropriate options for n-tiles and median, you can use different categories for the n-tile/median calculation than those in the value set. See Tally Attributes for a Variable for details. See Also: Include/Exclude Special Values in a Variable, Tally Attributes for a Table, Value Sets Description, Create a Table, Add Summary Statistics to a Table, Tabulate categories with disjoint values, Debug Table Totals
187
If you choose a specific occurrence of an item as a row or column variable (e.g., MyItem(2)), only that occurrence will be tabulated across all corresponding records. You may also use items with occurrences as the value or weight item. Note that when the unit of tabulation is not the repeating item, you will get errors when running your table unless you specify the occurrence number to use (e.g., MyItem(2)) or change the unit (e.g., to MyItem). See Also: Create a Table
The Tally Attributes (Variable) Dialog Box contains two lists: on the left is the list of available calculations and on the right is the list of calculations selected for the current variable. To add a new calculation, select the type of calculation in the list on the left by clicking on it and then click the "Add" button. The selected calculation will appear in the list on the right.
188
Tabulation Applications
Each calculation has its own set of options such as percent type for percents, number of tiles for n-tiles, etc. To modify the options for a calculation, first select the calculation by clicking on it in the selected list, and then click the "Options" button to bring up the options dialog box. To remove an existing calculation, click on the calculation in the list of selected calculations on the right and click the "Remove" button. The calculation will be removed from the list of selected calculations. The order that the calculations appear in the selected list will be the same order in which they appear in the table. That is, if you have Total before Median in the selected list, then in your table, you will have a "Total" row or column before the row/column containing the median. To change the order of the calculations, choose a calculation in the selected list by clicking on it and click either the "Up" or "Down" button to change its position in the list. The following calculations are available: Counts: Displays the counts (frequencies) for each value in the value set. Adding counts to the variable will add a row or column to the table corresponding to each value in the value set for the variable. Total: Displays a single row or column with the total for all values in the value set. Percents: Displays the counts for the variable as percentages of the row total, column total or subtable total. Adding percents to the variable will add a row or column to the table for each value in the value set for the variable, but unlike Counts, the results are displayed as percentages. Percents have the following options:
Type: Selects how to calculate percents for the selected variable. Specifically, this gives the base (100%) or denominator for the percent. One of three options can be selected: Total - use the total count for the subtable as a base for each percent. Row - use the total count for the subtable row as the base for the percents in each row. If there is a total column, it will contain 100 %s. Column - use the total count for the subtable column as the base for percents in each column. If there is a total row, it will contain 100 %s.
Interleaved/Separate: Selects whether or not the percents are alternated with the counts. For percents to be interleaved, counts must be present directly before or directly after the percents in the selected list. When percents and counts are interleaved, the order in which the counts and percents appear in the selected list determines whether the first column/row will be a percent or a count -- i.e., if counts appear first in the selected list, then the first row or column will be a count followed by a percent.
189
Interleaved percents
Separate percents Total Percent: Displays a single row or column with the total for all values in the value set expressed as a percentage of the row, column or subtable total. Total percent has the following options:
Type: The type of percent (row, column or total as for percents above). You may also choose (same as percents) to force the total percent to use the setting from the percents.
Mean: Displays the arithmetic mean (average) for each row or column. Median: Displays the median for each row or column. Median has the following options:
Type: Specifies the type of variable either discrete or continuous. This should be set to "Discrete" for discrete variables (such as number of rooms) and to "Continuous" for continuous variables (such as age or income). The median is approximated using linear interpolation based on a frequency distribution for the variable. For discrete variables, 0.5 is subtracted from the result to reflect the fact that values in a category are all equal to the lower limit of the category whereas for continuous variables values in a category are in between the lower and upper limits of the category.
190
Tabulation Applications
Calculation ranges: Controls which frequency distribution is used to calculate the median. If "Use value set ranges for calculation" is checked, then the median will be approximated using a frequency distribution for the value set that was dropped onto the table. Otherwise, you can specify the ranges to use for the distribution by entering the min, max and interval. CSPro will generate ranges of width interval starting at min and going up to max. For example, a "min" of 0, "max" of 20 and "interval" of 5 will generate the following four ranges: 0 up to but not including 5 5 up to but not including 10 10 up to but not including 15 15 up to but not including 20 If the value set you use does not have very many ranges, it is better to generate your own ranges in order to get a closer approximation of the median. For example, using a value set with only three categories for age such as 0-14, 15-49 and 49+ will generally result in a very poor approximation of the median, while using 5-year groupings will generally result in a good approximation. For an even better approximation, turn off "Use value set ranges for calculation" and specify a min of 0, a max of the largest age in the population and an interval of 1. For variables such as "income" or "price of a house", you may need to experiment with different sets of ranges to come up with a good approximation for the median.
Mode: Displays the mode (value with the greatest number of occurrences in the data set) for each row or column. Standard deviation: Displays the standard deviation for each row or column. Variance: Displays the variance for each row or column. N-tiles: Displays percentiles for each row or column. N-tiles has the following options:
Number: Sets the percentiles to show. Set it to 4 for quartiles, 5 for quintiles, etc. Calculation ranges: Controls which frequency distribution is used to calculate the n-tiles. If "Use value set ranges for calculation" is checked, then the n-tiles will be approximated using a frequency distribution for the value set that was dropped onto the table. Otherwise, you can specify the ranges to use for the distribution by entering the min, max and interval. CSPro will generate ranges of width "interval" starting at "min" and going up to "max". For example, a "min" of 0, "max" of 20 and "interval" of 5 will generate the following four ranges: 0 up to but not including 5
191
Type: The type of proportion to display. It may be one of the following values: o Percent: Adds a single row or column to the table showing the counts for the values selected in the range as a percentage of the total. o Percent & Total: Adds two rows/columns to the total: the first showing the percent as above and the second showing the total number of counts for the values selected in the range (i.e., the numerator used to calculate the percent). o Ratio: Adds a single row or column to the table showing the counts for the values selected in the range as a fraction of the total. o Ratio & Total: Adds two rows/columns to the total: the first showing the ratio as above and the second showing the total number of counts for the values selected in the range (i.e., the numerator used to calculate the fraction). Range: Specifies the set of values whose counts will be used in the numerator of the percent or ratio and as the total. Range can be a single value (e.g., 3), multiple values separated by commas (e.g., 1, 2, 5, 17) and it may also include value ranges using colons (e.g., 1, 2, 5:10, 25:30).
192
Tabulation Applications
To show the percentage of the population between 15 and 49 you would add "proportion" to the age variable, set the type to "Percent" and set the range to 15:49. To show the fraction of the population that owns a television, add "proportion" to the variable "owns a television", set the type to "Ratio" and the range to 1 (assuming 1 means "yes"). Note that the values calculated for median, mode and n-tiles are dependent on the value set used. For more information see Implications of Data Dictionary Value Sets. See Also: Hide or Change the Position of the Total, Add Percents to a Table, Add Summary Statistics to a Table
193
The Tally Attributes (Table/Subtable) Dialog Box contains the following settings: Table (Subtables): Allows you to choose to modify the tally attributes of either the entire table or one of the subtables. Any changes made to Unit Tallied, Value Tallied, Weight, Universe, and Tab Logic will only apply to the selected table or subtable. Changes made to Special Values, PostCalc and Lowest Break Level always apply to the entire table. Each subtable may have its own unique settings for Unit Tallied, Value Tallied, Weight, Tab Logic and Universe. If a weight or value tallied is specified for both the entire table, and for a subtable, then the two weights or values (table and subtable) will be multiplied together to compute the final weight or value for the subtable. If a universe is specified for both a subtable and for the entire table, then the two universes will be combined (using the and operator) to compute the final universe for the subtable. If a table has more than one subtable, then you cannot set the unit tallied for the entire table. In this case, there is no unit for the entire table. You must set the unit for each subtable. However, you can set the unit for all subtables in one step by clicking on the Modify All Subtables button.
194
Tabulation Applications
Note that Modify All Subtables only changes the unit for existing subtables. Newly-added subtables will be given the default unit unless you modify them explicitly after they are created. If Tab Logic is specified for both a subtable and for the entire table, the logic for the entire table will be executed for each subtable in addition to any logic for the subtable. The logic for the entire table will be executed before the logic for the subtable.
Note that if you choose Tally Attributes (Subtable), the subtable that you clicked on will automatically be selected in this list. Unit Tallied: Allows you to change the unit of computation for the selected subtable. The unit of computation is the level, record or item in the dictionary that is counted for the tally. For example, when tallying the rent variable of the housing record, by default, the unit would be the housing record so each household would be counted once. However, you could tally the rent variable on a per person basis by setting the unit to the person record. This would count the number of people paying a given rent rather than counting the number of households paying a given rent. In most cases, the unit is left as the default. You can modify the unit for all subtables in a table at once by clicking on the "Modify All Subtables" button. This brings up the following dialog box:
This dialog displays all units that can be applied to all of the subtables. Choose the unit from the drop down and click "OK". Potential units will not be included if they cannot legitimately be applied to one or more of the subtables. For example, if one subtable contains an item from a multiple record (e.g., "sex" on the person record), then only the multiply occurring record, and multiply occurring items on that record, are considered legitimate units to be applied to all subtables. Value Tallied: Optional name of a numeric item in the dictionary whose value would be tallied into the data cells instead of the unit (one) tally. For example, setting the value tallied to children ever born would count the actual number of children instead of counting the number of cases with a given number of children. This can also be a numeric constant. Weight: Optional name of a numeric item in the dictionary that contains the inflation factor (weight) for a survey case. For each tally, this value will be tallied instead of the unit (one) tally. This can also be a numeric constant. Universe: An expression that restricts the data used for tabulation. When you define a universe, CSPro will tabulate only those data records in the questionnaires that meet the conditions stipulated by you. The "universe" specification acts as a filter, as the tables produced use only a subset of the data file's records. Therefore, values in the table may be lower than they would be with no universe specified, since the universe restricts the data available for tabulation. Tab Logic: Optional CSPro logic statements that may be used to modify the values of variables in the case during tabulation. This is used mainly for recodes of existing main dictionary variables into new variables used in the table. For information see Table Logic (tablogic). Logic may be entered directly in the associated edit box or you can click on the Edit button to bring up a larger window in which to modify the logic. PostCalc: Optional CSPro logic statements that may be used to modify values in the table after the tabulation is complete. This logic can be used to add values to the table calculated from the tabulated
195
Any table inserted into the existing table set will always be placed before the currently displayed table, which we will call "Table N". You'll notice a new tab is created with the name "Table #A" (where # is N-1). If you insert another table before this one, it will be created as "Table #AA". If you insert another table before "Table N", it will be created as "Table #B". In both cases # is N-1. Once created, finish the definition of the inserted table by adding dictionary items and specifying any universe definitions or other tabulation parameters desired.
Delete Table The table that is currently on view in the table window is always the one affected when you choose to delete. So if the table you want to delete is not displayed in the table window, you must first make it
196
Tabulation Applications
visible. Either select it from the table tree on the left or by using the table paging arrows in the Tabulation toolbar. You can then delete the table by right-clicking anywhere in the table or on the table name in the table icon on the tree, then selecting Delete Table from the pop-up menu. Alternately you can use the toolbar or select Delete Table from Edit menu. You will need to confirm that you actually want to delete the table.
To go to a specific table select the table title from the Table Tree on the left. If the Table Tree is not showing in the left panel, click on the Tables tab at the bottom of the panel.
Note that you can also stop the processing by using the "Cancel" button. If there are no warnings or errors, the application will display the resulting tables. If your application has generated messages, these will be displayed via a listing in Text Viewer but the results will still be shown in your tables.
197
You can change the name of a table using the table properties dialog. Right-click on the table in the "Tables" tree and choose "Properties". Edit the name of the table and click "OK". Note that the system will not allow you to have two tables with the same name.
You can also change the name and label of the table application by right-clicking on the table application in the "Tables" tree and choosing "Properties". The tables application is always located at the top of the tree. Edit the name and label of the application and click "OK."
How To ...
Add a Variable to a Tabulation
A table (or subtable) is created by selecting an item OR value set [if multiple value sets are available] from the data dictionary and then drag and dropping it into the table window on the right. Dropped in the upper right it becomes a column and in the lower left it becomes a row. Here is an example of dropping a row.
198
Tabulation Applications
In order to create subgroupings of categories already defined in the table, e.g., by sex, drag and drop the subgroup item (sex) anywhere on the existing value set. (See Sex in column below)
In order to create an additional set of row/column categories, drag and drop the item or value set below the existing rows [for additional set of rows] or to the right of the existing columns [for additional set of columns]. (See Place of Birth and Martial Status below)
199
The title of the table is generated by combining the LABELS from the dropped items/values. The word "and" indicates that the second is dependent on the first. The word "by" separates the row labels from the column labels. A comma separates the subtable items in a row or column. In example above: "Marital Status" and "Place of Birth" are two row items (separated by a ","). These two row items are separated from the column items using the word "by". The column item, "Urban/Rural", is subdivided by "Sex" (as indicated with "and").
If an independent item is removed then the associated dependent item will also be removed.
200
Tabulation Applications
Experienced users, always remembering to use item names, can type the universe conditional directly in the box provided by the Tally Attributes menu. Use the Apply All button to the right of the box if the universe is for the entire table and you want to propagate it to all tables currently defined. It will replace any existing Universe in other tables. Less experienced users can access the universe "wizard" from the "Edit" button to the right of the universe box. This brings up the following:
You can type a universe condition statement, as CSPro logic, in the Universe box. Or, you can double click on an item name, press a relation button, and double click on a value. Double click on the item in the left-hand box that you want to use in the universe condition. The item name will appear appended to the text in the universe condition below. Click a relationship button ( =, <>, >, >=, <, <= ). The relation will appear appended to the text in the universe condition below. Double click on a value in the right-hand box. The value, not the text label, will appear appended to the text in the universe condition below. You may enter several conditions using the and / or. You can also add parentheses to modify the order of evaluation of the conditions. To delete the universe simply erase the contents of the universe condition. Press OK when you have completed the universe condition. You can apply a universe to all the tables, by pressing the Apply All button to the right of the Universe box in the Tally Attributes dialog box Examples: To restrict your table to females of reproductive age, you might state: P03_SEX = 2 and P04_AGE in 12:49 To restrict your table to heads of households who are economically active, you might state: P02_RELATION = 1 and ECON_ACTIVE = 1 Notes:
201
Use the Apply All button to the right of the box if the weight is for the entire table and you want to propagate it to all tables currently defined. It will replace any existing weight in other tables. Notes: If the value of the weight data item or expression is not numeric when a tally is to be made, the tally is NOT done. This is equivalent to a tally of zero. If the weight expression is not valid it must be corrected before the Tally Attributes dialog box can be closed.
See also: Tabulate Values and/or Weights, Tally Attributes for a Table
202
Tabulation Applications
The declaration of values to be tallied is available from the Tally Attributes for a Table dialog box. Tally values are available for the entire table and/or individual subtables.
A value to be tallied can be an individual data item, a numeric constant, or any valid expression that can be resolved into a single value. Note: If the value to be tallied is not numeric when a tally is to be made then the tally is NOT done. This is equivalent to a tally of zero. If the tally value expression is not valid it must be corrected before the Tally Attributes dialog box can be closed. A message is issued if the expression is invalid. See also: Tabulate Values and/or Weights, Tally Attributes for a Table
To activate the Special Values portion of then menu, check the Use custom special values box (as shown). After that select the types of special values you want to add to/remove from the value sets of each item in the table by checking the appropriate box. Notappl values counts blanks occurring in the data item. Missing values counts special codes defined as "missing" in the data dictionary. Default values counts the invalid values (shown as asterisks "*" in the data). Undefined values counts any values for the item which is not otherwise counted.
203
204
Tabulation Applications
Type
Total Percents are based on total cell for the table (% cell = (associated cell value * 100) / total of all the cells in the table). Row Percents are based on total for the row (%cell = (associated cell value * 100) / total of all the cells in the row). Column Percents are based on total for the column (%cell = (associated cell value * 100) / total of all the cells in column).
Interleaved/Separate By default, percents and counts are interleaved; that is, for each value in the value set, the frequency for that value is listed in the column/row directly preceding or following the percent for that value. Percents may also be separate, in which case all the frequencies are grouped together and all the percents are grouped together.
Interleaved Percents
Separate Percents For percents to be interleaved, the percents must directly follow or directly precede the counts in the list of selected calculations in the tally attributes dialog. You can change the position of the percents relative to the other selected calculations (including the counts) by selecting the percents in the list on the right-hand side of the dialog and clicking the "Up" or "Down" buttons. To show percents only (percents without counts), add the percents as described above and set the options to "Separate". Then select the counts in the list of selected calculations on the right-hand side of the dialog and click the "Remove" button to delete the counts. Finally, do the same to remove the "Total". To show percents only with a number row, add the percents and remove the counts as above, but do not remove the "Total". The Defaults are set in the Preferences and Default Formats.
205
By default, data in rows and columns containing percents will be displayed with one decimal place (e.g., 12.3). To change the number of decimal places see Change the Number of Decimal Places Displayed. You can also show the percentage of the counts for a subset of the values in a value set (e.g., percent of people with age between 15 and 49) using proportions. See the section on proportions under Tally Attributes for Variable for more information.
206
Tabulation Applications
example, if you already have fully tested many tables and you add another table that you wish to test, you may want to run only that table in order to save time. In this case you would exclude all the other tables from the run. To exclude a table from the run, first make sure the table is selected and appears on the screen. From the Edit menu, select Exclude Table from Run, or right-click on the table name on the table tree on the left and select Exclude from Run. The icon next to the table in the tree on the left will show a red X when the table is excluded.
If a table is already excluded, follow the same steps to change the setting back to included in the run. The red X will disappear.
207
If you have counts for the special value undefined then there are values in your data file that are not in the value set that you are tabulating. You may either edit the data file to eliminate such values or change your value set to include them. To find the actual values that are not in the value set, use the Tabulate Frequencies tool with the Each value found option. If you have counts for the special value notappl then there are blanks in your data file for the variable in question. You will either need to impute the blanks or add an entry for notappl to your value set. If you have counts for the special value default then there are values in your data file that cannot be read by CSPro. This can be because the properties of the variable in the dictionary do not match the data in the file. For example if the data type in the dictionary is numeric but the value in the data file contains non-numeric characters or if there is a decimal character in the data file but none specified for the item in the dictionary. It can also be because when the data file was written the value of the variable overflowed the length specified for the variable in the dictionary. You should examine the data file and the dictionary file for discrepancies and also check any programs that have written to the data file to see if they could be writing default values. There may be some values in your value set that are repeated and are being counted in more than one row or column of the table. For example, in the following value set, age 5 is in both the 0-5 and the 5-10 ranges and therefore each person with and age of 5 will be counted twice: once in the 0-5 category and once in the 5-10 category. The total will be the correct count of the number of persons, however, the sum of the age categories will not match the total.
208
Tabulation Applications
Check your value set to make sure that no single value is repeated and that no ranges overlap. Of course, in some cases, you may want to have overlapping ranges in your value set, for example if you want to show subtotals. See Also: Implications of Data Dictionary Value Sets, Special Values
Formatting Tables
Formats for a Part of a Table
The Format (Table Element) Dialog Box allows you to change the appearance of individual elements of a table such as stubs, column heads, data cells, etc. To bring up the Format (Table Element) Dialog Box, right-click on the element in the table that you wish to modify and choose Format (<element name>) where <element name> is the type of table element that you clicked on (title, stub, column head, etc).
The Format (Table Element) Dialog Box has the following settings: Hide: When checked, the selected element will not be displayed in the table. If a column head or row stub is selected, then the associated column or row will also be hidden. Note that stub heads, titles, and data cells may not be hidden. Hide when All Cells in Row are Zero: Available only for stubs. When checked, if all cells in the row contain the value zero, then the row will be hidden. Custom Text: When checked, the default text generated by CSPro for the selected element will not be displayed. You may add your own text for the selected element by double-clicking on the element and typing in the new text. Note that if you double-click on a table element and add your own text without first
209
(Thick lines extended into cells from a stub (30 to 39 years) and a column head (Separated))
210
Tabulation Applications
Note that the lines between rows and columns are shared between multiple elements. For example, the vertical line between two columns is both the left edge of one column and the right edge of the other column. It may also be the edge of one or more spanners. At times, you may need to change the line setting in more than one of these elements in order to change a line. For example, in order to make the vertical line between two columns disappear, you may have to set the left line of one column to none and the right line of the other column to none. You may also have to set the left or right line of one or more spanners to none. Extend Text Color into Cells: When this is checked for a column head or stub, the text color for the selected element is applied to all cells in the associated column or row. For a stub, all cells in the row of the stub will share the text color of the stub. For a column head, all cells in the column underneath the head will share the text color of the column head. Extend Fill Color into Cells: When this is checked for a column head or stub, the background color for the selected element is applied to all cells in the associated column or row. For a stub, all cells in the row of the stub will share the fill color of the stub. For a column head, all cells in the column underneath the head will share the fill color of the column head. Extend Indentation into Cells: When this is checked for a column head or stub, the indentation setting of the selected element is applied to all cells in the associated column or row. For a stub, all cells in the row of the stub will share the indentation of the stub. For a column head, all cells in the column underneath the head will share the indentation of the column head. Span Cells: This setting applies only to captions. When this is checked for a caption, the caption spans the entire row. By default, captions are placed in the first column of the table along with the stubs, and the cells containing them are the same size as the cells containing the stubs. This means that there are empty cells in all other columns of the caption row. When "span cells" is checked, the empty cells in the caption row are removed and the caption is placed in one large cell that spans the entire row. This allows you, for example, to center or right-justify the caption in the entire row (by setting the alignment). Decimal Places: Sets the number of decimal places used to display numeric values for the selected element. If applied to a data cell, this sets the number of decimal places used for that individual cell. If applied to a column head or stub it sets the number of decimal places for the entire row or column. This may only be applied to data cells, column heads and stubs.
211
In this example multiple stubs have been selected but Total is not.
Use the right-click to access the Format (Stub) menu. Change the indentation to .5 in. then select OK. The result is below.
Similar actions can be performed on columns by selecting multiple column heads. You can also select multiple captions or spanners. Although the formatting option is available for each data cell, it should only be used in the rarest of cases. When working with sub-groupings (one variable dropped on top of another), any formatting applied to one row or column in a sub-grouping will automatically be applied to the corresponding row or column in all of the other sub groupings. In the example below, changing the font for the column "Male" under the spanner "Total" also changes the font for the "Male" column under the "Urban" and "Rural" spanners.
212
Tabulation Applications
You cannot change the format for one row or column in only one sub-grouping but not the others. You can, however, achieve the same result using multiple subtables with universes. See also: Change the Way Numbers are Displayed
The Format (Table) Dialog Box has the following settings: Include Subtitle: When checked, an additional row below the title row is added to the table. You may enter a subtitle to the table by double-clicking on the new row and typing in the text for the subtitle. Include Pagenote: When checked, an additional row is added at the end of the table. You may enter a pagenote for your table by double-clicking on the new row and typing in the text for the pagenote. Pagenotes are displayed at the bottom of each page of the table. Include Endnote: When checked, an additional row is added at the end of the table. You may enter an endnote for your table by double-clicking on the new row and typing in the text for the endnote. Endnotes are displayed only once per table, at the bottom of the last page of the table. Stub Reader Breaks: Sets the frequency of reader breaks in the rows of the table. Reader breaks are blank rows used to break up the table. By default there are no reader breaks. The frequency of reader breaks may be set anywhere from 1 (every other row is blank) to 10 (every 10th row is blank). Note that you can hide individual reader breaks by right-clicking on them and selecting Format (Stub). This allows for finer control over placement of reader breaks.
213
Stub Leadering: Allows you to set a pattern such as . or _ _ _ _ to appear in each row of the table between the end of the stub text and the start of the next column. You may choose different patterns for the stubs on the left and right sides of the table. Note that stub leadering is only visible in print preview and on the printed page.
(Stub leadering on both left and right) Borders: Allows you to set the borders on the top, left, bottom and right sides of the table. Each side may have no border, a thick border, or a thin border.
214
Tabulation Applications
The following settings are available: Decimal Symbol: Sets the symbol used to separate the whole and fractional parts of numbers in data cells. By default this is set to period; however, it may be set to comma or any other symbol. For example, changing the symbol from period to comma would change the display of a number from 3.14 to 3,14 Digit Grouping Symbol: Sets the symbol used to separate groups of digits in large numbers in data cells. By default this is set to comma so that numbers are displayed as 123,456,789 but it can be changed; for example, to a period so that numbers are displayed as 123.456.789 Digit Grouping: Controls how digits are grouped together to be separated by the digit grouping symbol. There are three options: 123,456,789 (default) place the digit grouping symbol between each group of three digits. 123456789 do not use the digit grouping symbol. 12,34,56,789 place the digit grouping symbol between each group of two digits with one group of three digits at the right. Display Leading Zeros: Controls whether or not zero should be displayed before the decimal point of a decimal number between zero and one. Leading zeros are displayed by default. Measurement System: Allows you to switch between US (inches) and metric (centimeters) measurements for page margins. The measurement is used when specifying margins in the Format Print (Table) dialog as well as indentation in the Format (Table Element) dialog. The measurement system is set to US by default.
215
216
Tabulation Applications
The Format Print (Table) Dialog Box has the following settings: Stubs: Controls where stubs will be placed on the printed page. There are four options: Left side, standard (default): place stubs along the left side of every page. If the table is wide enough so that some of the columns go onto a second page, stubs will be placed on the left sides of both pages.
Left side, facing pages: place stubs along the left side of the page but only for the first page of facing pages. If the table is wide enough so that some of the columns go onto a second page, no stubs will be placed on the second page. If the table columns all fit on one page then this is the same as Left side, standard.
217
Left and right sides, standard: place stubs on both the left and right sides of the page for every page. If the table is wide enough so that some of the columns go onto a second page, stubs will be placed on the left and right sides of both pages.
Left and right sides, facing pages: place stubs along the left side the first page of facing pages and on the right side of the second page of facing pages. If the table is wide enough so that some of the columns go onto a second page, stubs will be placed on the left side on the first page and the right side of the second page. If the table columns all fit on one page then this is the same as Left side, standard.
Boxhead Frequency: Controls where the boxheads will be placed on the printed pages. The box head is the area at the top of the table that contains the stub heads, column heads and spanners. You can set the boxhead frequency to any of the following: Top of each page (default): Places a boxhead at the top of every page of the table. No boxheads: No boxheads will be placed at all. Top of table only: Only place the boxhead on the first page of the table and not any of the other pages of the table. Page Margins: Allows you to set the top, bottom, left and right margins of the printed pages for the selected table. By default, margins are measured in inches although you can change it to centimeters by choosing "metric measurement" in the Format (Application) Dialog Box. Use the "Make Equal" button to set all four margins to the currently selected number. Folio Text: Allows you to set header and footer text for each page of the selected table. The header and footer each contain left, center and right portions that can be set separately by entering the desired text in the corresponding edit box.
218
Tabulation Applications
You can modify the fonts used for the header and footer by clicking the Font buttons. The top Font button applies to the header and the bottom button applies to the footer. You can place the current date, current time, page number and file name(s) in any of the header or footer sections by clicking on the appropriate buttons below the header and footer edit boxes or by adding the following text into the appropriate header/footer edit box: Text in header/footer edit box &D &T &P &F &I Replaced with on printed page Current date Current time Page number Name of table file Name of data input file(s)
By default, CSPro places the filename in the left header, the date in the right header and the page number in the center footer. Start Page: Sets the page number to use on the first page for page numbering. If this is set to 1, then the first page of the table will be page 1; the second page will be page 2, etc If it is set to default then the first page of the selected table will be one greater than the last page of the previous table in the file so that the numbers continue from one table to the next with no gaps. For the first table in the file, if the start page is set to default, then the page numbering for that table will start at page 1.
Views of Tables
Beside Print Preview, there are two views of every table. However, unless the table has hidden rows or columns, or multiple subtables, the two views are basically the same. One view, called the "Design view" shows the hidden rows or columns, and the other view, called the "Display" or "Data" view, does not. Users can switch between the two views by using Ctrl+D or checking/unchecking "Hidden parts" under the View menu. Most often, users will see the Design view of the table. This is the one that shows hidden stubs or columns. Such stubs or columns are shaded in gray. In example the "Total" stub is hidden.
219
When a table is first created, you see the design view of the table. When a table is run, the display view is automatically shown and hidden parts of the table are no longer visible. In order to switch back the design view (for example, so that you can select and unhide a part of the table that is hidden), use Ctrl+D or check "Hidden Parts" on the view menu. In addition to showing hidden parts, the design view also marks subtables with a colored outline while the display view does not. It is often useful to switch to the design view in order to be able to more easily set the tally attributes for a subtable. When the colored outline of subtables is displayed, you may right-click inside the outline and choose Tally Attributes (Subtable). See Also: Using Print Preview, Hide or Show a Row or Column
How To ...
Customize Table Text
To customize the text in any table element (title, spanner, column head, stub, etc.) double click on the text you want to change. In the example below the table title has been selected.
220
Tabulation Applications
You can now change the text of the table title. If you want a second line of text, press Ctlr+Enter to create a new line of text.
To go back to the original default text, right click on the text you want to change, select Format (table part), uncheck the Custom Text check box, then press OK.
Note that if you customize the text of a stub or column header in a sub grouping, the text will be changed for all corresponding rows or columns in the sub grouping. In the example below, the text for the column header Male has been changed in one column and the change is reflected in the other sub groupings.
If you wish to change the text in only one sub grouping, you will have to use to multiple subtables with universes. See Also: Change the Automatically Generated Text
221
Similarly, to hide a column, right-click on the column head for the column you wish to hide, select "Format (Column Head)"
and check the "Hide" box. You can hide multiple rows or multiple columns at the same time by first selecting the rows or columns to hide and then right-clicking and choosing "Format (Stub)" or "Format (Column Head)" as above. Multiple selection is done in the usual Windows manner by left-clicking the mouse while using the Shift or Ctrl key. Using the Ctrl key adds each cell in the table that is clicked on to the selection. Using the shift key adds all the cells in between the two cells clicked on to the selection. Hidden rows and columns will be shown with a grey background in the design view and will not be shown at all in the display or print views or on the printed page. To show a hidden row or column, right-click on the stub or column head, choose "Format (Stub)" or "Format (Column Head)" and uncheck the "Hide" box. If you are not in the design view, you may need to first switch to the design view in order to see the row or column that you wish to unhide. To switch to the design view, use Ctrl-D or select "Hidden Parts" from the View menu. When working with sub-groupings (one variable dropped on top of another), hiding or showing a row or column in one sub-grouping will automatically hide or show the corresponding row or column in all of the
222
Tabulation Applications
sub groupings. In the example below, hiding the column "Male" under the spanner "Total", also hides the "Male" column under the "Urban" and "Rural" spanners.
You cannot hide a row or column in only one sub-grouping but not the others. You can, however, achieve the same result using multiple subtables with universes. To automatically hide rows when all data in the row is zero see Hide Rows Containing All Zeros. See Also: Formats for a Part of a Table, Formatting Row, Column, or Cell Data, Hide or Change the Position of the Total
To have CSPro automatically hide a row if all values in the row are zero, right-click on the stub for the row and choose "Format (stub)". In the "Format (stub)" dialog, check the box "Hide when All Cells in Row are Zero". When you run the table, the row will be hidden if all cells are zero. To view the row again, in order to able to select it, switch to the design view. To switch to the design view, use Ctrl-D or select "Hidden Parts" from the View menu. You can hide multiple rows if they contain all zeros at the same time by first selecting the rows and then right-clicking and choosing "Format (Stub)" as above. Multiple selection is done in the usual Windows manner by left-clicking the mouse while using the Shift or Ctrl key. Using the Ctrl key adds each cell in the table that is clicked on to the selection. Using the shift key adds all the cells in between the two cells clicked on to the selection.
223
Rows or columns containing percentages are automatically designated as having one decimal place. If you change the number of decimal places in a data cell to a number other than the default setting (indicated by the word "Default" in the pulldown), then the setting for the data cell will override any settings made for rows or columns containing that data cell. For example, if the data cell is set to one decimal place, and you change the row to have two decimal places, the data cell will still have one decimal place although other cells in the row will change. In order to make the number of decimal places in the data cell follow the number of decimal places set in the row or column, change the setting in the data cell to the default. You can change the default number of decimal places for data cells in the preferences.
Click to add a check mark to either the pagenote or endnote and then click OK. This will add a new row at the bottom of the table. Double click on this new row and type in the text for your footnote. A pagenote will be displayed at the bottom of every page when the table is printed while an endnote will only be displayed on the last page of the printed table. To remove a pagenote or endnote, uncheck the corresponding box in Format (Table). Format (Table) allows you add a pagenote or endnote to an individual table. To add an endnote or pagenote for all tables in a file, use the preferences. See also: Add Header/Footer Text to a Table
224
Tabulation Applications
Add Header/Footer Text to a Table
To add header or footer text to a table, right click anywhere on the table and choose Format Print (Table) or choose Format (Table) from the Edit menu to launch the Format Print (Table) dialog. This dialog has text boxes to enter left, right and center text for both the header and footer. "Header" refers to common text at the top of every printed page. "Footer" refers to common text at the bottom of every printed page. Left, Center, and Right refer to areas of the printed page.
The six text boxes can be filled with any text that you type. In addition, you can choose to display any combination of date, time, page number and file name in the header and/or footer by adding one of the following predefined text strings:
Replaced with on printed page Date on which the tables were run Time at which the tables were run Page number relative to start page File name of the table file File name of the data input file(s)
To place predefined text in a text box, you can either type it directly or click in the text box where it should go and then click the button corresponding to the desired item. Predefined text strings may be mixed with other text, as in the right header of the example above. To delete text in the header or footer, delete it from the corresponding edit box. Separate fonts are available for headers and footers. You can set these fonts using the font button to right of the text boxes. If page numbering is used you may set the starting page number, the number to use for the first page of the table, in the "Start Page" text box. By default, the starting page number will be 1 for the first table in
225
Add a Subtitle
To add a subtitle to a table, right-click anywhere on the table and choose Format (Table) or choose Format (Table) from the Edit menu to launch the Format (Table) dialog.
Click to add a check mark next to "Subtitle" then click OK. This will add a new row in the table directly underneath the title. Double click on this new row and type in the text for your subtitle. You can then change the format (font, color, alignment, etc) of your subtitle by right-clicking on it and choosing Format (Subtitle). To remove the subtitle row, uncheck the corresponding box in Format (Table).
226
Tabulation Applications
By default, no stub leadering is displayed. To add stub leadering to a table, right-click anywhere on the table and choose Format (Table) or choose Format (Table) from the Edit menu to launch the Format (Table) dialog.
Choose the desired pattern from the Stub leadering pulldown menu. If you have chosen to display both left and right stubs, you can set different leadering patterns for each one. Note: Stub leadering is only visible in Print Preview and on the printed page. Using the Format Print (Table) dialog will stub leadering for the current table. You may set stub leadering for all tables in the file using the preferences.
Add Borders
To add borders to a table, right-click anywhere on the table and choose Format (Table) or choose Format (Table) from the Edit menu. This will launch the Format (Table) dialog.
227
Borders outline the table on the printed page. Different borders are available for each side of the table. The options are: None no border on this side. Thin a normal line border on this side. Thick a "double" line border on this side. Using Format (Table) will set the borders for the current table. To set the borders for all tables in the file, use preferences. See Also: Add Borders to Cells
228
Tabulation Applications
(Stub reader break frequency set to 3.) The frequency of reader breaks may be set anywhere from 1 (every other row is blank) to 10 (every 10th row is blank). Note that you can hide individual reader breaks by right clicking on them and selecting Format (Stub). This allows for finer control over placement of reader breaks. Note: Reader breaks apply to the entire table. Users may need to do additional spacing in the table rows to gain the desired result.
229
The settings that have an effect on the numbers in the rows or columns associated with the stub or column head are in the "Associated Cells" section. These check boxes allow you to extend the format of the stub/column head into all the cells in the corresponding row/column. Of course, the number of decimal places affects only the data cells themselves and not the column head or stub. See Also: Formatting Row, Column, or Cell Data, Hide or Show a Row or Column
230
Tabulation Applications
Every occurrence of the default text will be replaced by the alternate text. In the example, every "total" text in every table will be replaced by "All persons".
If the text is not appropriate in certain places it can be replaced by "custom text ". Note: Any text can always be replaced by custom text. Changing the automatically generated text is particularly useful when generating tables in languages other than English. You can translate all of the automatically generated text into your language in the Format (Application) dialog and will be updated in all tables in your file.
To change the font, click on the Change button and select the font characteristics from the available list. To change the text or fill (background) click in the color box and select from the choices given.
231
Indentation is given in inches (in.) or centimeters (cm.) depending upon the choice of Measurement System in the Format (Application) dialog. Indentation affects where in the text box, the text starts (Left) and/or ends (Right). Alignment is the placement of text in the text box. The horizontal options are left(-justified), center, or right(-justified). Vertical choices (shown) are top, middle, and bottom. See Also: Preferences and Default Formats
232
Tabulation Applications
Borders can only be created for cells by setting the borders on the rows and columns that contain the cell. To do this, right-click on the associated stub, caption or column head and choose Format (Stub), Format (Caption) or Format (Column Head) to bring up the Format (Table Part) dialog. For columns, set the left and right lines and for rows set the top and bottom lines. To ensure that line settings are applied to the entire row or column, make sure that Extend Lines into Cells is checked.
The column header "No" has thick lines set for left and right and extend into cells is checked You can also set the left and right borders of a spanner and have them extend into the leftmost and rightmost columns under the spanner. This is done the same way it is done for individual columns. Rightclick on the spanner, choose Format (Spanner), set the left and right lines and ensure that Extend Lines into Cells is checked.
233
By default, stubs and columns have no borders, but spanners have thin lines on the left. This means that cells in the leftmost columns under a spanner will have left borders. You can change these default settings by using the Preferences. See Also: Formatting Row, Column, or Cell Data, Add Borders to a Table
Select the "Span fields" option from the Format (Caption) menu.
The result:
234
Tabulation Applications
Note: The horizontal alignment of the caption was also changed to "center" to demonstrate the size of the associated text box. By default, captions do not span fields. You can make all captions in all tables in the file span fields using Preferences and Default Formats.
Note: There is NO "undo" for this operation. All custom entries are lost.
The options are: No boxheads Only the table title is printed on each page. Top of table only - Table title and box head only appear on the first page of table. Top of each page Table title and box head appear on each page of the table. Use the Format Print (Table) dialog to set the boxhead frequency for a single table. Use Preferences and Default Formats to set the default boxhead frequency for all tables in the file.
235
There are four options: Left side, standard (default): place stubs along the left side of every page. If the table is wide enough so that some of the columns go onto a second page, stubs will be placed on the left sides of both pages.
Left side, facing pages: place stubs along the left side of the page but only for the first page of facing pages. If the table is wide enough so that some of the columns go onto a second page, no stubs will be placed on the second page. If the table columns all fit on one page then this is the same as Left side, standard.
Left and right sides, standard: place stubs on both the left and right sides of the page for every page. If the table is wide enough so that some of the columns go onto a second page, stubs will be placed on the left and right sides of both pages.
236
Tabulation Applications
Left and right sides, facing pages: place stubs along the left side the first page of facing pages and on the right side of the second page of facing pages. If the table is wide enough so that some of the columns go onto a second page, stubs will be placed on the left side on the first page and the right side of the second page. If the table columns all fit on one page then this is the same as Left side, standard.
Use the Format Print (Table) dialog to set the boxhead frequency for a single table. Use Preferences and Default Formats to set the default boxhead frequency for all tables in the file. See Also: Viewing Multiple and Facing Pages
Area Processing is the generation of tables by a defined hierarchical structure of area codes. If the geographic hierarchy of a hypothetical country is region, province, locality (major-to-minor order), it may be necessary to produce tables for each of these sub-divisions. To use area processing you must have done the following: Created an area names file (.anm) Selected one or more Area IDs from the area IDs dialog box For example, suppose we wish to perform geographic area processing for our top-most units of geography, which are Province and District (choose them in the Area IDs dialog box). Each tabulation will be repeated for each Province and District in the data file. In addition, a summary entry [Total] will be shown for the entire data file. The tabulation will be displayed in the following order: Total Province 1 District 1 (of Province 1) District 2 (of Province 1) District 3 (of Province 1) Province 2 District 1 (of Province 2) District 2 (of Province 2) District 3 (of Province 2) : : Area Processing will apply to all tables in your application. After producing the tables using area processing you can select a cell to display in a thematic map and view it spatially. No File Processing: It is also possible to produce tables without creating an area names file. Select the levels of geography desired but after clicking on the Traffic Light button in CSPro to run your tables, leave the <Area Names> field blank. CSPro will use codes from the data file instead of names for each level of geography. For example, if province Gluten's code is 20, the tables will show code 20 instead of the name Gluten. This can be useful for generating a list of every geographic code found in a data file. See also: Area Names File, Using Table Data in the Map Viewer
238
Tabulation Applications
Finally the [Areas] section gives the correspondence of the geographic codes (major-to-minor order) found in the data with a name for the geographic area. More detail follows the listing of the area name file. Note: Area code values can be positive, negative or zero. If the data file contains area codes that do not have corresponding names in the area names file then the unmatched area codes will be displayed as a text string in place of the missing name. [Area Names] Version=CSPro 4.1 [Levels] Name=Province Name=District [Areas] X X = Popstan 1 X = Artesia 1 1 = Dongo 1 2 = Idfu : 2 X = Copal 2 1 = Baja 2 2 = Bassac : 3 X = Dari 3 1 = Argentina 3 2 = Benlata 3 3 = Bristol : The very first line following the [Areas] section are the codes and name of the total area; country in our case. It is considered the Grand Total level and denoted by X values for each level of the area hierarchy. In the example, the first X represents the Province code and the second X represents the District code. Basically, an X value is similar to a wildcard match, so any value in this field is acceptable (and thus part of the area). Following the county area name is the set of codes and names for the lowest valued major level; Province in our example. The lowest code for a province is 1 associated with Artesia. Again, an X value is given for the District code since any code here is acceptable. Next, we must give codes and name for all districts in Artesia starting with the lowest code value. Note that each line for this province begins with 1since the province code must be combined with the district code to uniquely distinguish this district. Dongo is district 1 of Artesia (province 1). Data for a questionnaire with Province code = 1 and District code = 1 will be tallied for Dongo District. When districts for Artesia are all listed (codes and names), start with the next lowest province code followed by its districts. The process is repeated for each province. Note: Area codes must be listed in ascending sort order from major to minor. If the area name file has only one level, e.g., province, then only one code would be given. If three levels were needed, e.g., province, district, village, then three codes would be required. As always, X represents the wildcard match.
239
Area Structure Section Codes for these items are used to tally in the specific areas. Area items can come from the questionnaire ID items or items on singly occurring records. Available single record names will be
240
Tabulation Applications
available in the Include Items from Record menu. If selected those items will be added to the list under Questionnaire Items. Note: The number of the Area IDs items determine the number of [Levels] needed in the Area Name File. Select one or more Questionnaire IDs from the left box (to select multiple items, hold down the Ctrl key when you make your selections). Click the Add button to copy your choices to the Area IDs list. To remove an item from the Area IDs list, select it and click the Remove button. To re-order items in the list, select one and click the Move Up/Move Down button as appropriate. Tabulation Section In future versions, users will be able to decide if areas without any counts [no tallys] are displayed in the table or not. Show area in table even if no counts are tallied [always in version 4.1]. Consolidation Section Generally, only tables at the lowest level are created when the data file is processed. After these are completed these lowest levels are combined and recombined to create the higher level tables. The two options here are Standard or Custom. Standard follows the usual fashion of aggregation, i.e., adding to get total. Each lower level is combined to create the next highest level.
As an example from above, the original tables [created from the data file] would be an urban table for each district in each province and a rural table for each district in each province. Standard Consolidation would: Add the appropriate urban and rural tables to create the province-district table. Add the appropriate district tables to create the province table. Add all province tables to create the country table. This procedure produces four levels of tables: Urban/Rural, District, Province, and Country (given in minor to major order). The Lowest Level allows users to select the most minor level to be produced. Counts at this level and higher will appear in the tabulation but any lower level counts will be discarded. Custom option allows some freedom in defining the aggregation or consolidation scheme. See Custom Consolidation for more information.
Area Captions
241
When the table is run, the %AreaName% is replaced by the names from the area names file.
If the table is a one-row table, e.g., it has only column items but no stub groups, the area name caption replaces the Total stub that would otherwise be present and the area caption is hidden.
The area caption has the same formatting options as other captions, available by right clicking on the caption and choosing Format (Area caption). You can hide area captions, as in the example above, you can change the fonts, make them span rows, etc
242
Tabulation Applications
You can also set the default formats for all area captions in all tables in your file using Preferences and Default Formats. See Also: Formats for a Part of a Table
Custom Consolidation
Custom Consolidation allows the aggregation of lowest level tables to create almost any reasonable higher level. Users define the consolidation scheme starting from the Standard consolidation, shown below.
Standard Consolidation would: Retain each Urban and Rural (UR) table for each district in each province. Add each group of UR tables to create a table for each district in each province. Add each group of district tables to create a table for each province. Add all province tables to create a single country table. The result of the consolidation is: One Country table
243
Using Custom Consolidation you can also create user-defined schemes for combining the lowest level tables by adding new rows to the consolidation scheme:
Each row of the scheme must have a CSPro name for the set of tables to be created, listed under Area Level Name above. In the example above, the following tables would be created: One Country table One urban table and one rural table for the entire country A Province table for each province One urban table and one rural table for each province A District table for each district in each province One urban table and one rural table for each district in each province. In addition, you may place conditions in the cells of the consolidation scheme grid. These conditions are used to modify how the tables replaced for a given level (the column) are consolidated for a particular consolidation scheme (row). The options are: Blank Any code in this position is included. Each Each different code in this position creates a separate table. Single value One table created for this value of the area level Replacement formula One summary is table created for all areas that the meet the condition and the replacement code is substituted for the area code for the summary table. [start:end = replacement] The last two options are illustrated by the following example:
244
Tabulation Applications
The TOT_URB table will include all tallies that had a value of 1 for the UR area level. The area codes on this table will be Province=X, District=X, UR= 1. The PROV_1_4 table will include all tallies that had Province codes of 1 through 4. The area codes for this table will be Province=99, District=X, UR= X. Since other province codes are 1 to 15, the table associated with 99 would be displayed after any for those coded. (In the example above NO province tables were created hence they are not displayed) In order to use these codes a corresponding name should be in the area name file.
Note: When custom consolidation is used it is the users responsibility to make sure the consolidation scheme is reasonable and that it works in the desired manner. As usual, every aspect of a data processing system should be tested for correctness.
Next choose the map file that can be either an existing map data file (.mdf) to which the variable is appended or a map file (.mpc) which will have only this variable.. MapViewer will be launched and a thematic map, representing the data you selected, will appear.
245
You can bring numerous tabulated variables into MapViewer and then save them all in a map data file (extension .mdf). This is an excellent way to build your own collection of mapped variables as a data dissemination tool. To create an .mdf file: Generate the first variable as described above using an .mpc file (rather than an .mdf ). Switch back to the Tabulation application. Select the next variable from the tabulation and provide a Map Viewer name for it. MapViewer will now hold both variables (look at MapViewer's Variable drop-down box). Repeat this process for as many variables as you would like to map. You can map different variables from different tables in the same run. Save the map data file (extension will be .mdf). Later you may add more variables to this map data file by loading this .mdf in the MapViewer the next time you wish to map. See also: Introduction to Map Viewer
How To ...
Display Results for One Geographic Area
When a Tabulation Application uses the Area Processing option, the table usually displays the counts for each area concatenated one after the other sorted by increasing area code values. If you want to display the counts for a certain geographic then select it from the drop down menu available in Display view. Note: Ctrl+D switches between Display (hidden parts not shown) and Design (hidden parts shown) views.
The All selection represents the usual display. If area codes are found in the data file that are not defined in the Area Name File then those codes will be listed. The areas are listed in sort order, i.e., the same order that they are defined in the area names file.
246
Tabulation Applications
Note that this only changes which area is currently displayed. Tables are still produced for all areas originally specified and all of these areas will still appear when the tables are printed or saved. To only produce tables for certain geographies either set the lowest break level for a table, or use custom consolidation.
In the example above, if a certain table is to be produced only at the province level then that item would be selected as the Lowest Break Level instead of district.
Printing Tables
Using Print Preview
Print Preview is a view of the tables as they are display on the printed page, i.e., what they will look like when they are printed on the default printer. To view Print Preview, press the under File menu, select Print Preview. Note: No Print Preview is available if there is no printer installed! This is just one of three views available for a Tabulation Application. To return to Display or Design View use the "Close" button or just click the Print View icon [the icon is depressed when active and "undepressed" when not active], both are in the tool bar. All the formatting done through the various format menus of a table are carried over to print preview. For example all the settings used in the following would be applied in this view. button on the toolbar or
247
The spacing or sizing of rows or columns in Display view is NOT carried over to Print Preview.
The easiest ways to move between pages of a table are: Use Home, End, Page Up or Page Down keys. Use navigation buttons at bottom of preview window (see below). Use the mouse "wheel" (if available and activated). One "click" (of the wheel) toward the user goes to the next page, one "click" away from the user goes to the previous page. (Note: this behavior is only available in the page view (100%))
248
Tabulation Applications
See the View menu for other combinations of keys that will allow you to move between tables. There is also a "Goto ..." option available from the Edit menu and from the right-click menu which allows you to go directly to a particular page, table or area within a table. See Also: Print Preview Options
The "100%" setting is the full page and default setting. A value less than 100% shows multiple pages in the window [zoom out]. A value more than 100% shows less than one page in the window [zoom in]. If the current view is 100% or less A single wheel "click" toward the user will display the next page. A "click" away from the user will display to the previous page. This is true even if more than one page is displayed in the window. Of course, when an additional page is displayed one of the other pages is no longer in the window.
249
To modify the height of a row place the cursor below the row text until it changes to a vertical doublesided arrow, left mouse click and drag the (usually invisible) horizontal bar to the new position.
Modifications to row height and column width work in conjunction with the "Apply changes across panels" and "automatically Fit columns across each page" options. See Print Preview Options for more information. Any changes made can be undone using the undo command. To reset the column and rows spacing back to its original settings, use Restore Default Table Layout. Both of these commands are available by right-clicking on the table while in the Print Preview. See Also: Print Preview Options
250
Tabulation Applications
You can make some modifications to the table in Print Preview. Most notably the rows and columns can be "sized" similar to the way it is done in spreadsheet software. There is also a "right-click" menu with additional options.
Briefly these options are: Apply changes across panels If unchecked this means that changes to row height or column width will be applied to only the selected row or column. If checked any sizing changes made to a row or column in a panel will be reflected in the corresponding row or column of each panel. For example below are three panels for columns:
If this option is checked and a change is made to the width of the "Male" column in any of the three panels then the width of all three will be modified. If the option is unchecked then only the specific column selected will have its width modified. Automatically Fit columns across each page If checked this option will "spread" the table columns for all tables across the entire printed page. If unchecked, the columns for all tables will be displayed in the minimal width possible given text, font, etc. An example of unchecked:
251
An example of checked:
Page Break After Insert a page break [go to next page] after the row selected. This usually done when a stub group is "split" across two pages. An Example before Page Break applied. The user right-clicks on the "10-14 years" row and selects page break after to place a break between the "10-14 years row" and the "15-19 years row".
Next page after Page Break applied. This page starts with the "15-19 years row"
252
Tabulation Applications
Format Print (Table) See Formats for Printing Restore default table layout The default layout of a table is the layout produced for it when the table is first created. Any changes made to the print view of the table will be "undone". There is also an "undo" of a single previous action in Print Preview but this is an "undo" of ALL previous actions for this table. Undo Revert to view of table before the last action was taken. Ctrl+Z will also "Undo". Redo If an "Undo" was the last action then "Redo" is available. Goto Allows you to move to a particular page, table or area within a table. This option activates the following menu:
Page option enter the page number to display. Table option choose the table (by name) to display. Area option choose the table and the area within that table to display. This option is only available if area processing is used.
What is important is that this information is used to create the Print Preview of your tables. Changes made here will affect the "preview of your tables, particulary changes to the paper size and layout. If changes impact the print preview the following message will appear:
To print entire tables Click on the toolbar; or from the File menu, select Print; or press Ctrl+P.
When the printer menu is displayed the important part is the Print Range section that determines what is to be printed.
254
Tabulation Applications
The selection here affects what is printed. The options: All All pages of all tables. Current Page Page currently displayed in window. Current Table Table containing the currently displayed page. Pages Range of page numbers for printing. Selected Tables for this option click the "Select " button to its right. A secondary menu is presented for table selection.
Other options will be included in the Print menu such as the number of copies to be printed. These options affect how the tables will be printed but not what will be printed.
How To ...
Undo or Reset Changes in Print Preview
Most formatting of tables is done using the various format menus available in the Display or Design View but not available in Print Preview. The major formatting tools in Print Preview are Sizing of Columns or Rows [changing width or height] Add Page Breaks If an action is taken and you want to "undo" it then right click in the Print Preview window. This gives the following menu:
255
Select "Undo" to reverse a single action. If you just want to restore the table to its system default format then select "Restore default table layout". See Also: Print Preview Options
Tabulation Preferences
Preferences and Default Formats
The "Default" settings used in all of the format menus (table element, table, table print, and application) can be set for the entire application. These "Default" settings are then accepted or changed for individual tables. Changing the default setting is the easiest way to change the formatting of all of your tables at once. It allows you to customize the look of all of your all tables. The "Default" Options menu is available under the Edit drop down menu and listed as "Preferences".
256
Tabulation Applications
Notice the alignment section in the above menu for Spanner. Here is the alignment section in the Format (Spanner) menu for a specific table:
Modifying Preferences
The option is available under the Edit drop down menu and listed as Preferences. This brings up the Preferences Window:
257
Each "Object Format" on the left has a corresponding menu. Select the object in the tree then you can set the default settings for each of the available options. The only difference is that Use Default check box may be missing since this is the menu that sets those defaults. It is important to note that if a setting is changed here it will be applied to all tables that use the default settings even the tables that have already been defined. For example: If you select blue as "Text Color" for Spanner then all spanners that exist in tables already defined (and use the default setting) will now be displayed in blue as well as spanners in tables yet to be created. For the meanings of the various options in each menu see the related topic. See Also: Tally Attributes for a Variable, Formats for a Part of a Table, Formats for a Table, Formatting Row, Column, or Cell Data , Formats for an Application , Formats for Printing
258
Tabulation Applications
CSPro Table Format (.tft) file to be created. This file will contain all the default settings currently active for this Tabulation application. The "Load" option is used to change preferences to those in your CSPro Table Format (.tft) file. For this option, enter the name of the .tft file or browse to find it. Once the file is loaded the revised preferences will be in force. See Also: Modifying Preferences
How To ...
Share the Same Format on Multiple Computers
In most applications the various options in the Format menus use the "Default" settings.
These "Default" settings are contained in Preferences and Default Formats. In any Tabulation application the initial set of Preferences is established by CSPro. They can be reset to other settings through "Load Preferences" under the File menu. Sets of user-defined preferences are contained in CSPro Table Format (.tft) files. Once the file has been created by the "Save Preferences" option under the File menu, it can made available to other users in the same manner that any other file is shared. See Also: Loading and Saving Preferences
If there is only one table in the Tabulation application, you will go directly to the Save As dialog. If your Tabulation application has multiple tables defined within it, a Select tables to save dialog box listing the tables is displayed.
259
Use the Select All button if all tables are needed. Otherwise, select the individual table(s) that you would like to save in a single Table Viewer file. (Multiple tables are selected in the usual manner with the Shift and/or Ctrl keys.) After selection press OK. In the Save As dialog box enter the name of the Table Viewer file to be created or browse to select the file to be replaced. Table Viewer files must have the .tbw extension. See Also: Saving Tables as Text, HTML and Rich Text Format
If there is only one table in the Tabulation application, you will go directly to the Save As dialog. If your Tabulation application has multiple tables defined within it, a Select tables to save dialog box listing the tables is displayed.
Use the Select All button if all tables are needed. Otherwise, select the individual table(s) that you would like to save in a single Table Viewer file. (Multiple tables are selected in the usual manner with the Shift and/or Ctrl keys.)
260
Tabulation Applications
After selection press OK. In the "Save As" dialog box use the drop down "Save as type" menu to select the type of file other than .tbw.
Enter the name of the file to be created or browse to select the name of the file to be replaced. Note: ONLY ONE table at a time can be in Rich Text (.rtf) or HTML (.htm) format. ASCII tab delimited Format supports saving multiple tables in a single file.
261
- Hold the Ctrl key down and click to select non-contiguous rows/column (shown above). To select contiguous rows or columns use the Shift key and select the row or column for the other end of the range. To select ALL cells in a Table Choose Select All from the Edit menu; or press Ctrl+A. To deselect cells Press the Esc key; or from the Edit menu, select "Cancel Selection". Now that cells have been selected for copying you have the choice of copying the text associated with the selected cells (table title, stubs, column headers,) or just copying the data in the selected cells. To copy cell values and associated text on the toolbar; or from the Edit menu, select Copy; or press Ctrl+C.
- Click
- Select Copy Cells Only from the Edit menu. Once the cells are copied to the clipboard they can be pasted into a word processor, spreadsheet or any software that accepts tabular or text format.
262
Tabulation Applications
- Run the tables - Select the cell to be mapped - Click the Map Viewer icon on the toolbar - Enter the label to be used in the map viewer for the variable you are mapping Assume you wanted to map "Total Population". Run the table then click on ANY cell in the "Total" column. Next click the Map Viewer icon.
Next enter the Map Viewer label for the variable. This is the text that will appear for the variable when viewed in the Map Viewer.
Finally open the Map Viewer map file (.mpc) or the Map Viewer map data file (.mdf) to complete the mapping. The process can be repeated for any number of data cells. See Also: Area Processing, Create a Thematic Map of Results, Introduction to Map Viewer
How To ...
Distribute Finished Tables to Other Users
The tables from a Tabulation application can be saved in several different file formats. The format you choose depends on what you wish to do with the tables. To include tables in a word processing document, use the rich text format (rtf). To bring the table data into a spreadsheet so that users can do calculations on it, use the tab-delimited format. To post tables to the web, use the HTML format. If you want your users to be able to use your tables in all of these ways, you can distribute them in the CSPro
263
Tabulation Applications
In some cases you may need to do additional processing on tables after all of the tabulation is completed. For example, you may need to calculate ratios or sums using the tabulated data. CSPro allows you to do this by adding program logic in the Postcalc section of the Tally Attributes (Table) dialog. You use program logic, as you would in a batch or data entry application, to access and modify the cells in a table. Tables are treated as two dimensional arrays or matrices. You can use the full range of CSPro arithmetic operations on individual cells, as well as on rows, columns and cell ranges of tables. This section contains the following information: Adding Rows and Columns For Post Calculation Post Calculation For Individual Cells Post Calculation For Rows, Columns and Ranges Row and Column Indexing for Post Calculation
There are two ways to add a new column. We can add a new value to the existing value set for the existing variable or we can drag a new variable onto the table next to the existing one. Adding a new value to the value set creates a new column under the existing spanner while adding a new variable creates a new column under a new spanner.
Male/Female Ratio column added as new value to value set for the variable Sex. The new column is under the Sex spanner.
Male/Female Ratio column added by dragging a new variable onto the table. The new column is under a separate spanner.
265
First, we must add the new column to the table as described in Adding Rows and Columns For Post Calculation. Once the new column has been created, all that is left is to add the postcalc logic. Postcalc logic in CSPro tabulation applications is similar to working with arrays in a CSPro batch edit or data entry application. To access an individual cell in a table, use the table name followed by the indices of the row and column in parentheses: <table name>(<row>, <column>) where: <table name> is the name of the table. To see the names of the tables, click on the Tables tab in the bottom left of the CSPro window to show the Tables Tree and then select "Names in Trees" from the View menu or press Ctrl+T. This toggles between showing the table titles and the table names in the Tables Tree.
266
Tabulation Applications
<row> is the row number in the table. <column> is the column number in the table. Row and column numbering starts at zero. In this example, the following logic divides the number of males (row 0, column 1) by the number of females (row 0, column 2) and puts the result in male/female ratio (row 0, column 3): TABLE1(0,3) = TABLE1(0,1) / TABLE1(0,2); Note that column and row numbers start at zero, so the first column is column zero, the second column is column is column 1, etc
To enter postcalc logic for a table, open the Tally Attributes (Table) dialog. You can then either type postcalc logic directly into the postcalc area or click on the "Edit" button next to the postcalc area to bring up a larger window to type in.
267
Once you have typed in the logic, press OK to dismiss the dialog and then run the table. You may need to change the number of the decimal places in the row, column or cell containing the calculated values.
Postcalc logic can contain numeric constants as well as table values. For example if you wanted men per 100 women rather than male to female ratio, you could use the following logic:
268
Tabulation Applications
TABLE1(0,3) = 100 * TABLE1(0,1) / TABLE1(0,2); This multiplies the result of the division by 100 to give the number of men per 100 women.
Multiple statements may be entered in postcalc, provided that each one is terminated by a semicolon. For example, if you wanted to calculate male to female ratio in column 3 and males per 100 females in column 4 you would write: TABLE1(0,3) = TABLE1(0,1) / TABLE1(0,2); TABLE1(0,4) = 100 * TABLE1(0,1) / TABLE1(0,2); In fact, postcalc logic can contain nearly any of the statements and functions available in program logic in batch edit and data entry applications. See also: Post Calculation For Rows, Columns and Ranges, Row and Column Indexing for Post Calculation
269
For information on how to add the additional column, see the previous section Adding Rows and Columns For Post Calculation. The postcalc logic for assigning rows and columns is similar to that of individual cells, however there is a simplified syntax for working with cell ranges, rows and columns. You could set each cell individually with multiple statements as follows: TABLE1(0,3) = TABLE1(0,1) / TABLE1(1,3) = TABLE1(1,1) / TABLE1(2,3) = TABLE1(2,1) / TABLE1(20,3) = TABLE1(20,1) TABLE1(0,2); TABLE1(1,2); TABLE1(2,2); / TABLE1(20,2);
However, that would take a lot of code. Instead, you can specify this one statement using a range or a wild card. To use a range, give the lower and upper limits separated by a colon: TABLE1[0:20,3] = TABLE1[0:20,1] / TABLE1[0:20,2]; This means divide the cell in column 1 by the cell in column 2 and put the result in the cell in column 3 for each row from 0 to 20. You can also use a wildcard (an asterisk) to specify an entire row or column:
270
Tabulation Applications
TABLE1[*,3] = TABLE1[*,1] / TABLE1[*,2]; Using an asterisk in place of the row index means that the operation applies to all rows in the table. In this case it is the same as specifying the range 0:20 since the table has 21 rows. An asterisk can also be used in place of the column index to specify every column in a table: TABLE1[1,*] = TABLE1[2,*]; { copy row 2 into row 1 } Note that when working with rows, columns and ranges, you must use square brackets "[]" rather than parentheses "( )". Parentheses may only be used when specifying individual cells. You can only assign ranges or wildcards to each other if the dimensions of the ranges match. For example: TABLE1[0:2, 0:3] = TABLE1[3:5, 0:3]; copies one 3 by 4 region of the table to another 3 by 4 region. However, the following code will fail since it attempts to copy a 3 by 4 region to a 3 by 3 region: TABLE1[0:2, 0:2]= TABLE1[3:5, 0:3]; { This does not work ! } See also: Post Calculation For Individual Cells, Row and Column Indexing for Post Calculation
271
For example, in the table above, in order to calculate the percentage of people in each sex category (Male, Female, Total), we set the values in rows 3, 7 and 9. The caption rows, "Sex", "Total", "Literacy", "Male", and "Female" are not counted, but the hidden rows, the three "Illiterate" rows, are counted. The postcalc logic follows: TABLE2[3,*] = 100 * TABLE2[1,*]/TABLE2[0,*]; {% literate Total } TABLE2[7,*] = 100 * TABLE2[5,*]/TABLE2[4,*]; {% literate Male } TABLE2[11,*] = 100 * TABLE2[9,*]/TABLE2[8,*]; {% literate Female} When a table includes percents, the row and column indices are a bit more complicated. Although the percent rows/columns are interleaved with the rows/columns for the counts, the percent rows/columns are numbered after the counts. In other words the index for the first percent row or column in a subtable always starts after the last count row or column. For example, in the table below, the rows for the values of marital status under the male caption are counted one after another as indices 0 through 4 and are then followed by the percent rows for marital status as indices 5 through 9. The first percent row is at index 5 which follows the last count row (Never Married) at index 4.
272
Tabulation Applications
In this example, to calculate the ratio of unmarried men per 100 unmarried women, we need to divide the number of unmarried men (divorced men + separated men + widowed men + never married men) by the number of unmarried women (divorced women + separated women + widowed women + never married women) and multiply the result by 100. The postcalc logic is therefore: TABLE3[20,*] = 100 * (TABLE3[1,*] + TABLE3[2,*] + TABLE3[3,*] + TABLE3[4,*])/ (TABLE3[11,*] + TABLE3[12,*] + TABLE3[13,*] + TABLE3[14,*]); See also: Post Calculation For Individual Cells, Post Calculation For Rows, Columns and Ranges
273
274
Tabulation Applications
The [Run Information] block is required and must appear exactly as shown in the example above. The [Files] block is required and defines all files used in the tabulation run. A description of the files is as follows: Application = the tabulation edit application you created InputData = the data file to be tabulated -- If there is more than one input data file, insert multiple InputData lines. Listing = a report of the tabulation processing AreaNames = the areanames file used only if there is area processing OutputTBW = the output formatted tables If any required files are not coded or are missing, the file association dialog box will be displayed allowing you to fill in or change the missing file names. The [Parameters] block is optional. If allows to specify additional aspects of the tabulation run. ViewListing = specifies how the tabulation run listing is displayed. If ViewListing is missing, Always is assumed. Always - the listing is always displayed OnError - the listing is displayed only when an error or an invalid subscript warning occurred Never - the listing is never displayed ViewResults = specifies whether or not the formatted tables file (*.TBW) is displayed in TableViewer at the end of the run. If ViewResults is missing, Yes is assumed. Yes - the tables are displayed No - the tables are not displayed
Run in Parts
Introduction to Run in Parts
When CSPro runs a tabulation application performs two or three processes. These processes are Tabulate the data file, Consolidate geographic areas (if the application uses area processing), and Format the tables with text. Run in parts allows you perform each of these processes separately. Run in parts is used when you need to save the intermediate *.TAB files for later use. To run in parts interactively, from the File menu, select Run Parts. Then select the process you want to run. The Consolidate process will be grayed out if you are not using area processing in your application.
See also: Run Tabulate Interactively, Run Consolidate Interactively, Run Format Interactively, Run Tabulate in Batch, Run Format in Batch, Run Consolidate in Batch
275
The Tabulate process reads the input data file(s), runs the tabulation application, and produces a set of table matrices that are stored in a tables file (*.TAB). When the Tabulate process is selected, the following files are requested:
Input Data: The data file(s) being tabulated. There is NO required extension for CSPro data files. Multiple input data files can be selected using the browse button. Output TAB: The table matrix file created during tabulation. The *.TAB extension is required. The name should be associated with the corresponding data file especially if multiple data files are tabulated using the same application. Listing File: The diary-type report generated by the tabulation run showing record and case counts and any problems encountered. The .LST extension is not required. This is a sample of a listing file where no problems were encountered during tabulation: CSPRO Process Summary +-----------------------------------------------------+ | 29143 Records Read ( 100% of input file) | | 0 Ignored ( 0 unknown, 0 erased) | | 0 Messages ( 0 U, 0 W, 0 E) | +---------+--------------+--------------+-------------+ | Level | Input Case | Bad Struct | Level Post | +---------+--------------+--------------+-------------+ | 1 | 4872 | 0 | 4872 | +---------+--------------+--------------+-------------+ Process Messages CSPRO Executor Normal End ----------------------------------------------------See also: Run Consolidate Interactively, Run Format Interactively
276
Tabulation Applications
You can run the tabulate process from a batch program by executing CSTab.exe and using a PFF file as the command line parameter. For example, if your PFF file name is "MyTabs.pff", you can launch CSTab by: Start /wait "C:\Program Files\CSPro 4.1\CSTab.exe" MyTabs.tab.pff This launches the program CSTab.exe to run with the parameters specified in the PFF file MyTabs.pff. Note that using Start /wait is not strictly necessary; it simply ensures that the command does not terminate until CSTab.exe has finished processing. This is useful when there are other commands that follow which depend on CSTab completing before they can be executed.
You can create a PFF file in two ways: Run the tabulation from CSPro. It will save the *.PFF file it generates in the same folder with your tabulation application. The *.PFF will have the same name as the application with .PFF appended. Rename and modify this file with a text editor (such as Notepad or Wordpad). Create a new *.PFF file using a text editor. The following shows an example a PFF file for the tabulation process. Note that a PFF file is not case sensitive. You can use any combination of upper and lower case text. [Run Information] Version=CSPro 4.1 AppType=Tabulation Operation=Tab [Files] Application=.\MyTabs.xtb InputData=.\MyData.dat Listing=.\MyTabs.xtb.tab.lst TabOutputTAB=.\MyData.dat.tab [Parameters] ViewListing=OnError The [Run Information] block is required and must appear exactly as shown in the example above. The [Files] block is required and defines all files used in the tabulation run. A description of the files is as follows: Application = the tabulation application you created InputData = the data file to be tabulated -- If there is more than one input data file, insert multiple InputData lines. Listing = a report of the tabulate process TabOutputTAB = the output table matrices file If any required files are not coded or are missing, the file association dialog box will be displayed allowing you to fill in or change the missing file names. The [Parameters] block is optional. If allows to specify additional aspects of the tabulation run. ViewListing = specifies how the tabulation run listing is displayed. If ViewListing is missing, Always is assumed. Always - the listing is always displayed OnError - the listing is displayed only when an error or an invalid subscript warning occurred Never - the listing is never displayed See also: Run Consolidate in Batch, Run Format in Batch
277
Input TAB: The tabulated table matrices file(s) to be consolidated. Multiple input *.TAB files can be selected using the browse button. The *.TAB extension is required. Output TAB: The consolidated table matrices file created [or replaced] from the input TAB file(s). This TAB name must be different from the input name and the extension is required. Listing File: The report generated for the run showing area codes found in the data and tables available for those codes. Blank codes indicate summary levels. The .LST extension is not required. This is a sample of a listing file for a Consolidation process: CSPro Process Summary +----------------------------------------------+ | 1568 Slices Read ( 100% of Input file) | +----------------------------------------------+
Process Messages PROVINCE DISTRICT Table Names -------- -------- ----------TABLE1 TABLE2 TABLE3 TABLE4 1 TABLE1 TABLE2 TABLE3 TABLE4 1 1 TABLE1 TABLE2 TABLE3 TABLE4 1 2 TABLE1 TABLE2 TABLE3 TABLE4 1 3 TABLE1 TABLE2 TABLE3 TABLE4 1 4 TABLE1 TABLE2 TABLE3 TABLE4 1 5 TABLE1 TABLE2 TABLE3 TABLE4 . . .
278
Tabulation Applications
Total [Country] indicated by Province and District = blank Province 1 indicated by Province = 1 and District = blank Province 1 and District 1 indicated by Province = 1 and District = 1 Etc. See also: Run Tabulate Interactively, Run Format Interactively
279
Input TAB: The tabulated or consolidated matrices file. If application does not have area processing, it was created in the Tabulate process, if it has area processing was performed, it was created in the Consolidate process. The .TAB extension is required. Area Names: Only used for applications with area processing. An Area Names File is used to associate the areas codes in the TAB file with their descriptive text. The .ANM extension is required. Output TBW: The CSPro Table Viewer file created by merging the matrices from the input TAB file, the table format specifications from the tabulations application, and the optional area names. The .TBW extension is required. Listing File: The report of the Format process. This is a sample of a listing file for a Format process: CSPRO Process Summary +-----------------------------------------------------+ | 8 Slices Read ( 100% of input file) | | 0 Ignored ( 0 unknown, 0 erased) | | 0 Messages ( 0 U, 0 W, 0 E) | +-----------------------------------------------------+ Process Messages CSPRO Executor Normal End
280
Tabulation Applications
-------------------------------------------------------------------See also: Run Tabulate Interactively, Run Consolidate Interactively, Introduction To Table Viewer
281
In the menu subtables are listed as they appear in the "big" table, from left to right then from top to bottom. The "Names" of the subtables are created from the value sets present. If an item has only one value set then the name of the item itself appears, e.g., P03_SEX in example. If an item has more than one value set then the name of the value set appears, e.g., P04_AGE_VS2 in the example. Any attributes entered in the "Entire Table" menu except "Unit Tallied" are also incorporated into the subtables. Entries in this menu apply to all subtables in the table.
282
Tabulation Applications
In the Tally Attributes (Table) If an item or value is given for "Value Tallied" or "Weight" it is also MULTIPLIED by any corresponding value give in any subtable. Any entry in the "Universe" box is combined with any universe in a subtable using "and". In other words, both universe criteria must be met in order for a tally to be made. Of course, any checked "Special values" or "Lowest Break Level" (applicable only for area processing) always refer to the entire table including any subtables.
With the exception of attributes applying to entire table, individual subtables can each be assigned different weights, universes, etc. See Also: Create Tabulations with Multiple Variables, Tally Attributes for a Table
283
If the "unit of tally" is either non-repeating record then only tally is made per case. If the "unit of tally" is the occurring item AGES, then a tally is made for each occurrence of age. See Also: Tabulations Using Relations
The variable "complete plumbing" does not exist in the main dictionary. It can be however, be determined based on the values of the following three variables that are in the dictionary:
284
Tabulation Applications
Rather than adding new variables to your existing dictionary, you can add new variables to the working storage dictionary. The working storage dictionary is a second dictionary that is created automatically when you create a tabulation application. This dictionary is similar to other dictionaries, however there is no data file associated with it. The variables in the working storage dictionary must be set by program logic. In this example, we will add the new "complete plumbing variable" to the working storage dictionary. The working storage dictionary appears just below the main dictionary in the dictionary tree. Adding a new variable to the working storage dictionary is the same as adding a variable to any dictionary. Right-click on the "Working Storage Record" under the working storage dictionary in the dictionary tree and choose "Add Item".
285
Then fill in the label, name and other properties for the new variable.
Now drag the new variable onto the table just as if it were a variable in the main dictionary.
286
Tabulation Applications
Finally add the tablogic to set the value of complete plumbing based on the values of source of water, toilet facilities and bathing facilities. Bring up the Tally Attributes (Table) dialog and enter the following code in the tab logic edit box:
The above logic will be executed once for each housing record to set the value of complete plumbing for that household. This will result in the following table:
287
When using variables from the working storage dictionary, it is important to pay attention to the unit of tabulation. When using variables from the main dictionary, CSPro can determine the unit of tabulation based on the variables used. If you choose variables from the Person record, such as sex, the unit will be set to the person record. If you choose variables from the housing record, the unit will be set to the housing record. However, when you drag variables from the working storage dictionary onto the table, CSPro does not know which record or records the recodes for these variables will come from. It always sets the unit of tabulation to the first level (questionnaire). In the above example, this does not cause any problems because there is exactly one housing record per questionnaire. However, had we created a recode of variables from the person record, we would need to set the unit to the person record, otherwise we could get errors during tabulation. For more information see Changing the Unit of Tabulation. Note that often it is preferable to create recoded variables in a batch edit program rather than during tabulation. This recode could have been accomplished by adding a new variable to the main dictionary for complete plumbing and writing a batch edit program to set the value of this variable for each case. Then the new complete plumbing variable could be dropped on the table directly, rather than using a working storage variable. The advantage of using batch edit is that the logic to set the value of the new variable is done once in a batch edit program rather than done as tablogic in each table in which the variable is used. Another alternative is to use multiple subtables and value sets to simulate a recoded variable. This can be easier for simple variables, although for recoded variables with more than a few categories, it is generally simpler to use tablogic or batch edit. For more information see Recodes in Tables Using Value Sets and Subtables.
288
Tabulation Applications
If items from different multiply occurring records are used in the same subtable, CSPro will automatically choose the relation between them as the unit of tabulation if such a relation exists. See Also: Relation Description
How To ...
Tabulate Items in Relations
A "relation" is created in the data dictionary. It links two record types through values on each record or occurrence number. If the two items have the same value then the records are linked, i.e., the items on the two record types are merged so all items "appear" to be on one big record. A table or subtable using items from two record types linked through a relation is created in the same manner as any other table, i.e., drag and drop the items from each record. CSPro will automatically set the unit of tabulation to the relation between the two items. When the table is run, the tallies will be made from the linked records only. Example: In a Labor Force Survey, the record with labor force information is related to the record with person information through sequence numbers. Here is the definition of the Link.
-------------------------------------------------------------------------------------------------------------Relation Name Primary Linked by Secondary Linked by -------------------------------------------------------------------------------------------------------------LFS_LINK LFS LFS_NUMBER PERSON SERIAL_NUMBER
289
If "Age" value set is dropped for the Person record and the "Work last week?" value set is dropped from the LFS record then the following table is created.
Since the LFS record is the primary link, the tallies will be done for each occurrence of the LFS record. (This assumes that every LFS record in the case can be linked to a Person record in the case and that no "universe" has been specified.) Note: The "Unit Tallied" must be the relation defined in the data dictionary. CSPro will automatically set the default to the relation if such a relation exists. See Also: Relation Description
290
Tabulation Applications
Then drag the modified value set onto the table. For additional clarity you can format the stubs corresponding to the subtotals to make them standout. In the table below, the font for the subtotal stubs is set to bold.
291
To create such a table, we need a value set that contains only the two categories divorced and not divorced. Creating the category for "divorced" is simple, it includes only the value 2. The "not divorced" category, however, needs to contain the value 1 (Married) plus the values 3, 4 and 5 (Separated, Widowed, Never Married). These values do not make up a single range. In order to create the category you must create two entries in the value set, one that contains the value 1 and the second that contains the values 3 through 5. The first entry must contain the label for the category and the label for the second entry must be a single space character. CSPro recognizes the single space as a continuation of the previous category rather than a separate category. In this case it will merge the value range in the second entry with that of the first entry, creating a single category that includes the value 1 and the values 3 through 5.
It is important that you use a space rather than no text at all since CSPro will treat an empty label all as a new category in the value set. You can tell when CSPro has combined the entries by the absence of the notes box in the second entry.
292
Tabulation Applications
You can combine any number of entries in the value set into a single category. See also: Implications of Data Dictionary Value Sets
If you try to hide the rows for the Male subgrouping using hide in the Format (Stub) dialog, it will not work. Hiding the Literate and Illiterate rows under Male will also hide those rows under Total and Female. Hide is not available in the Format (Caption) dialog if you right-click on the Male caption.
293
One way to work around this is to modify the value set for Sex to remove the Male category. Note that removing the Male category will also affect the Total (since males will no longer be counted). To fix this, add your own category to the Sex value set called Total, which includes the values for Male and Female. Finally hide the system generated total in the table (see Hide or Change the Position of the Total). The result is the following table:
A second approach is to use multiple subtables rather subgrouping. In our example you would drop the Literacy variable twice onto the rows to make two separate subtables. This would create the following table:
294
Tabulation Applications
Next, modify the first subtable so that it becomes the subgrouping for Total and modify the second subtable so that it becomes the subgrouping for Male. To do this, first edit the captions for the two subtables to be "Total" and "Female" (see Customize Table Text). Next modify the universe of the second subtable to include only females (see Restrict a Universe). The first subtable will give the counts for all persons while the second subtable will give the counts for only females. This will give the same results as using the subgroupings:
Formatting and Hiding Rows/Columns in a Subgrouping To hide or format a row or column in one subgrouping without effecting the other subgroupings you must use multiple subtables rather than subgroupings. This is because changing a row or column in one subgrouping will automatically cause the same change to the corresponding row in the other subgroupings. This is true for all format changes (font, color, alignment,) as well as hiding rows/columns and modifying stub/column head text. Take the earlier example of the Sex and Literacy table and try to make the text in the literacy row under the Total subgrouping bold without making the other literacy rows bold. If you simply set the format for this row to bold, the literacy rows in the Male and Female subgroupings will also become bold.
295
Instead of using subgroupings, drag the variable Literacy onto the rows three times to create separate subtables for the Total, Male and Female subgroupings.
296
Tabulation Applications
Then edit the universe for the second subtable to only include males (see Restrict a Universe). In this case set the universe to SEX=1. Next edit the universe for the third subtable to include only females (SEX=2). Note that you do not need to edit the universe for the first subtable since you want to include both males and females (the entire population) which is the default universe. Next, edit the captions of the subtables to be "Total", "Male" and "Female" (see Customize Table Text). Finally right-click on the Literacy stub in the first (Total) subtable and set the font to bold. This results in the following table:
The same procedure works for hiding or modifying the stub text of an item in a subgrouping, only the last step changes. Rather than setting the font to bold, you would hide the row or modify the stub/column head text. See also: Hide or Show a Row or Column, Hide or Change the Position of the Total, Formats for a Part of a Table, Implications of Data Dictionary Value Sets, Using Subtables
297
Create a new value set that regroups the original values for marital status into these new categories.
Value sets may have disjoint values, one category which contains values from different ranges, for example, one category for values 23, 45, and 67-71 (see Tabulate categories with disjoint values). Multiple variable recodes To do a recode using multiple variables, create multiple subtables by dragging the variables onto the table multiple times and set universes on these subtables. For example, if you want to tabulate houses that have "complete plumbing", meaning that they have piped water, bathing facilities and a toilet inside the housing unit. This involves the following three variables:
298
Tabulation Applications
The "recoded" variable, "complete plumbing", has three categories: Complete piped water inside the unit (source of water = 1), and a private toilet inside the unit (type of toilet = 1) and bathing facilities inside the unit (type of bathing = 1). Some but not all any one of the three variables (piped water, flush toilet, bathing facilities) inside the unit but not all three. None all other cases.
To create the table for complete plumbing, use 3 subtables, one for each of the 3 possible values of the recoded variable (complete, some but not all, none). Each of these subtables should have only one row. The easiest way to create a subtable with one row is to drag a variable whose value set has only one category onto the table. If no such value set exists, you can create one. In this case, create the value set on the variable "source of water". In fact, you could use any variable on the same record as the variables we are using in the recode (the housing record in this case). Note that the single category in this value set must include all valid values for the variable so that all housing units will be counted when tabulating the variable.
Drag this new value set onto the table 4 times, once for each of three possible values of complete plumbing and once for the total.
299
Since we only need one row for each subtable, hide the system generated total in each of the four subtables (see Hide or Change the Position of the Total). Also hide the captions for each of the subtables (see Formats for a Part of a Table).
Next customize the text in the stubs to match the categories for the recode (Total, Complete, Some but not all, None). Also edit the title of the table and put the name of the variable in the Stub Head. See Customize Table Text for how to edit text in the table.
300
Tabulation Applications
Now set the universes for the subtables to correspond to the appropriate values of the complete plumbing recode. The first subtable will be the total so it should use the default universe, which includes all cases. The second subtable represents "complete plumbing" and must include only those cases where piped water, flush toilet AND bathing facilities all equal 1. The third subtable represents "some but not all" and must include the cases where one or two of the variables are equal to 1 but not all of them. The fourth subtable represents "none" and must include all cases where none of the variables are equal to 1. For more information on setting the universe on a subtable see Restrict a Universe. This produces the following table:
Note that often it is preferable to create recoded variables in a batch edit program rather than during tabulation. This recode could have been accomplished by adding a new variable to the dictionary for complete plumbing and writing a batch edit program to set the value of this variable for each case. Then the new complete plumbing variable could be dropped on the table directly rather than creating multiple subtables with universes. This makes the creation of the table much simpler although it involves creating a batch edit application and writing a small amount of logic. Using batch edit is best when the recoded variable will be used in multiple tables. Another alternative would be to create the recoded variable in the working storage dictionary and use tablogic to set its value to each case. See Table Logic (tablogic) for more information.
301
Tabulate only households where at least one child was born last year with the following universe: COUNT(CHILDREN_BORN_LAST_YEAR) > 0 This is assuming that CHILDREN_BORN_LAST_YEAR is a variable on the person record. Count only households with "married couple families", i.e. a household with both a head of household and a spouse present, with the following universe: COUNT(PERSON where RELATIONSHIP = 1) > 0 and COUNT(PERSON where RELATIONSHIP = 2) > 0 Restrict a table to only households with total household income of greater than $20,000 by using the following universe: SUM(PERSONAL_INCOME) > 20000 This assumes that PERSONAL_INCOME is a variable on the person record. The sum of the incomes of each person in the household is the total income for the entire household. Restrict a table to only households where the head of household is female with the following universe: SEX(1) = 2 This assumes that the head of the household is always the first person record (index 1). This will only be true if your data entry program and/or edit program ensure this. If this is not true, then you would need a more complicated expression such as: COUNT(PERSON where RELATIONSHIP = 1 and SEX = 2) = 1 This will be true only if there is a person in the household who is the head of household and is female. This assumes that there is only one head of household in the household, which should be the case for properly edited data. Value Tallied Often fertility information is captured separately for male and female children and you wish to tabulate it for both sexes. For example, you have variables for MALE_CHILDREN_BORN and FEMALE_CHILDREN_BORN but no variable for total children born and you want to count the total number of children born. You can use the sum of the two variables in the value tallied: MALE_CHILDREN_BORN + FEMALE_CHILDREN_BORN Note that if one or more of the variables is a special value, the counts will not be correct. This is because the sum of a special value and a number is a special value. See also: Restrict a Universe, Tabulate Values Instead of Frequencies, Tally Attributes for a Table
302
clear close cmcode compare concat count countnonspecial curocc datediff delcase delete demode display do
execpff
execsystem exit exp export file fileconcat
303
getcapturetype getdeck
getlabel getlanguage getnote getoperatorid getorientation getrecord getsymbol getusername gps high highlighted if impute inc insert int invalueset ispartial key killfocus length loadcase locate log low maketext max min
304
putdeck
putnote random randomin randomizevs recode reenter relation retrieve savepartial seed seek selcase setcapturepos setcapturetype set setfile
setfont
setlanguage setorientation setvalueset setvaluesets show skip skip case
305
A, B, ...
306
307
In general, reserved words have been linked to the function of the same name, if one exists. If no link exists for a word, it is either because [1] there was more than one association for the word, or [2] the word is for internal usage only.
Declaration Statements
Set Statement
Format: set explicit | implicit; Description: The set statement overrides the compilers default setting of how numeric variable are declared. If used, it must be code as the first line coded in the PROC GLOBAL section. By default, CSPro sets the set explicit option to ON -- meaning that all user-declared variables must be declared in the PROC GLOBAL section via the numeric or alpha statement. If they are not, a compiler error message is generated when an undeclared variable is used. It is good programming practice to use set explicit either as the computer default or to code it in Proc Global. If variables are explicitly defined, the compiler can detect misspellings of variable names, which can otherwise hard to find. If you do not wish to declare your variables, you can change the behavior to implicit by going to the Options menu, and unchecking Set Explicit. This will allow you to create variables whenever they are first used or referenced. However, this is not recommended by the CSPro team. It is much better programming practice to use the set explicit option and harness the compiler's error detection capabilities to prevent execution failures due to misspelled variable names. The following explains the impact of programmatically setting this switch, as opposed to using the system setting: System Setting Program Setting Result Set Explicit set explicit; No effect Set Explicit set implicit; Program overrides system setting, variables do not need to be declared Set Implicit set explicit; Program overrides system setting of implicit variables must be declared Set Implicit set implicit; No effect CSPro defaults to explicit mode, but CSBatch defaults to implicit mode. Therefore, if you developed your program in CSPro leaving the set explicit option checked, and there were no errors, you can rest assured that your application will run correctly under CSBatch, even though the mode will be implicit. Example 1: PROC GLOBAL set explicit; numeric x,y,z;
308
File Statement
Format: file file-1[, file-2[..., file-N]] Description: The file statement defines files, not associated with dictionaries, that are used by the application and whose physical names are not given until run time. It must be coded in the PROC GLOBAL section of the application. The file-N is a CSPro name that is used in functions and statements that control the file. The physical folder and file name of each file is requested when the application is run. The associated folder and file name can be changed during the run by using the setfile function Example: PROC GLOBAL File FILE_PERSON, FILE_HOUSEHOLD; See also: Setfile Function
Numeric Statement
Format: numeric var1[, var2[..., var-n]]; Description: The numeric statement declares temporary numeric variables used only in this application. They will not be save a data file defined by a dictionary. Temporary numeric variables must be declared with the numeric statement if the set explicit menu option is checked (from the menu Options/Set Explicit) or if a set explicit statement is included in the PROC GLOBAL section of your program. A numeric variable is an integer or decimal number significant to 15 digits. Example: PROC GLOBAL numeric x, NumOfKids; PROC CHILDREN x = 0; NumOfKids = NumOfKids + 1; See also: Set Statement, Alpha Statement, Array Statement
Alpha Statement
Format: alpha [(len)] var-1[, var-2[..., var-n]]);
309
Array Statement
Format: array [alpha[(len)]] array-name(dim-1[,dim-2[,dim-3]]) [save]; Description: CSPro supports numeric and alphanumeric arrays of up to three dimensions. You must declare arrays in the global procedure of the application, using the array statement. Only one array at a time can be declared with the array statement. The array name must be unique and contain only letters, numbers, or the underscore (_) character. It must begin with a letter.
310
Example 1: (numeric array) PROC GLOBAL array age_hd (2,8); { sex by relationship } array MyArray (5,10); numeric X, Y, male, female; PROC MY_PROGRAM preproc male = 1; female = 2; age_hd (male,1) = 20; { male head } age_hd (male,2) = 24; { male spouse } age_hd (male,3) = 8; { male child } { continue with male initializations } age_hd (female,1) = 26; { female head } age_hd (female,2) = 32; { female spouse } age_hd (female,3) = 5; { female child } { continue with female initializations } MyArray (1,3) = 0; X = 2; Y = 1; MyArray (X,Y) = 0; Z = MyArray (X,Y);
311
Example 2: (alphanumeric array) PROC GLOBAL array alpha(10) crop (20); {20 crop names, each up to 10 chars long} PROC MY_PROGRAM preproc crop(1)= "maize"; crop(2)= "wheat"; crop(3)= "rice"; crop(4)= "potatoes"; If you attempt to assign to an element of an alpha array a string that is longer than the elements size, the additional portion will be truncated. For example, if the following were written: crop(1)= "sweet potatoes"; the variable would be assigned the string "sweet pota". There is no "spillover" effect (such as exists in some programming languages) that would corrupt subsequent array cells. If the string length of (10) had not been given above, the string would have defaulted to a length of 16. Example 3: (saved array) array age_hd(2,8) save; {sex by relationship, init from file } PROC AGE if AGE = notappl then impute(AGE, age_hd(SEX, RELATIONSHIP)); else age_hd(SEX, RELATIONSHIP)= AGE; endif;
{if the value for age is not valid} {assign the value from the hot deck based on sex and relationship} {update the value of the hot deck}
The array age_hd is not initialized in the program logic. Instead, the program is run twice. During the first run, the values of the array will be filled in by the assignment in the else clause above and the results will be stored in the saved array file. When the program is run a second time, these values are loaded in automatically as the initial values for the array.
Relation Statement
Format: relation relation-name primary to secondary-1 method [to secondary-2 method] ... [to secondary-n method]; where method is parallel | linked by arith-exp | where condition Description:
312
Function Statement
Format: function function-name([p-1[,p-2[...,p-n]]]); statements; function-name = numeric-exp; end; return-value = function-name([p-1[,p-2[...,p-n]]]); [ ] indicates that this part is optional. Description: Numeric and alpha expressions, and arrays, can be passed to a user-defined function as parameters. Variables mentioned in the parameter list will by default be considered numeric. To specify an alphanumeric parameter, you must place the keyword alpha before the parameter. By default, the length of an alphanumeric parameter is 16 characters. To specify a different length, place alpha (length) before the parameter name.
313
Example 1: PROC GLOBAL function absvalue(VALUE); if VALUE < 0 then absvalue = (-VALUE); else absvalue = VALUE; endif; end; PROC AGE AGE = absvalue (AGE); {call user-defined function} Example 2: PROC GLOBAL function isvalidname(alpha (32) VALUE); LOOKUP_NAME = VALUE; isvalidname = loadcase(LOOKUP,LOOKUP_NAME); end; PROC AGE if isvalidname("JIM") then {call user-defined function} Example 3: PROC GLOBAL function calcval (VAL1, VAL2, alpha(3) OPER); [instructions] . . . end; Variables VAL1 and VAL2 are implicitly numeric. Variable OPER is alphanumeric with a length of three characters. None of the three is declared elsewhere in the program or in any of the dictionaries used. Example 4: PROC GLOBAL array exampleArray(2,3) = 1 2 3 4 5 6; function sumArray(array values(,))
314
numeric rowIdx,colIdx,sumValue; do rowIdx = 1 while rowIdx <= tblrow(values) do colIdx = 1 while colIdx <= tblcol(values) inc(sumValue,values(rowIdx,colIdx)); enddo; enddo; sumArray = sumValue; end; PROC EXAMPLE errmsg("Sum of array is %d",sumArray(exampleArray));
More examples of user-defined functions can be found in the Date Checking folder in the CSPro Examples folder. See also: User-Defined Functions
Do Statement
Format: do [[varying] var = expression] while/until condition [by expression] statements; enddo;
315
Exit Statement
Format: exit; Description:
316
For Statement
Format: for num-var in [record | item | relation] group do statements; enddo; Description: The for statement executes one or more statements repeatedly within a loop for each occurrence of a multiply occurring form, roster, record, item, or relation. In the example below, PERSON_EDT (i.e., the number of people in a household) would control how many times the for loop is executed. Num-var contains the number of the current occurrence being examined. It cannot be changed inside the loop, but it can be referenced. Its starting value is 1, and its ending value is determined by the number of occurrences of group named. The group is the name of a form, roster, record, item, or relation. If the group name is a record, item, or relation then the appropriate keyword record, item, or relation must be used before the name. The for statement should be coded outside group it references. In the example below, note that the code is executed in the QUEST procedure. It should not be located in the PROC PERSON_EDT, or in a proc for any of the data items within the person record. Example: PROC QUEST spouse = 0; for i in PERSON_EDT do if relationship = 2 then spouse = i; break; endif; enddo; See also: Do Statement, While Statement
If Statement
Format:
317
Next Statement
Format: next; Description: The next statement ends a do, while, or for loop early and continues execution with the next iteration of the loop. If the next iteration causes termination of the loop, then execution will begin with the first statement after the enddo. Example: { find all spouses } NUMSP = 0; for I in PERSON do if P02_REL <> 2 then next; endif; NUMSP = NUMSP + 1; SP(NUMSP) = I; enddo;
318
Universe Statement
Format: universe condition [case]; [ ] indicates that this part is optional.
Description: The universe statement determines whether to allow normal execution of a procedure or function based on the value of condition. The condition following the universe command is evaluated. If the condition is true, then the statements following it are executed. If the condition is false, processing stops for the current procedure or user-defined function, and control is passed to the next procedure or user-defined function. In batch editing mode, if the optional case keyword is specified and the condition is false, the program will stop processing the case but will still write it to the output file if one is specified). Example 1: PROC FERTILITY universe SEX = 2 and AGE in 12:49; Example 2: universe HHTYPE = 1 case; Example 2 (rewritten without the universe statement): if not HHTYPE = 1 then endcase; endif; See also: Exit Statement, Endcase Statement, If Statement
While Statement
Format: while condition do statements; enddo; Description: The while statement executes one or more statements repeatedly, in a loop, while the logical condition is true. The while and enddo keywords are required. Unlike the do statement, the index is not automatically incremented. The user must therefore remember to save (or decrement) the controlling variable(s) as needed to ensure termination of the loop. The condition is evaluated on each repetition of the loop before any of the statements are executed. Example: i = 1; NumPeople = totocc (Person); while i <= NumPeople do if rel(i) = notappl and sex(i) = notappl and age(i) = notappl then delete (PERSON(i)); {remove "blank" population records} else i = i + 1; {only increment i if we DONT delete someone} endif; enddo;
319
Assignment Statements
Assignment Statement
Format: numeric-variable = numeric-expression; string-variable = string-expression; Description: The assignment statement sets a variable equal to the value of an expression. If the expression is a string-expression, then the variable must be alphanumeric. If the expression is numeric or conditional, then the variable must be numeric. Examples: AGE = 10; Q102 = PREV_AGE; Y = sqrt(X); NAME = "John Doe";
320
321
is equivalent to the following if statements: if (ATTEND = 2 or ATTEND = notappl) then EDUC = 1; elseif ATTEND = 1 then if ED_LEVEL = 1 then EDUC = 2; elseif ED_LEVEL in 2:3 then EDUC = 3; endif; else EDUC = 9; endif; Example 3: recode UNITS : NUMBER => DAYS; : notappl => notappl; : missing => missing; 1: => NUMBER; 2: => NUMBER*7; 3: => NUMBER*30; 4: => NUMBER*365; : => missing; endrecode; is equivalent to the following if statements: if NUMBER = notappl then DAYS = notappl; elseif NUMBER = missing then DAYS = missing; elseif UNITS = 1 then DAYS = NUMBER; elseif UNITS = 2 then DAYS = NUMBER*7; elseif UNITS = 3 then DAYS = NUMBER*30; elseif UNITS = 4 then DAYS = NUMBER*365; else DAYS = missing; endif; See also: If Statement
Impute Function
Format: impute (item-name, expression) [stat (item-name1, item-name2,....,item-nameN)] [title (alpha-expression)] [vset (vset-number)] [specific]; [ ] indicates that this part is optional. Description: The impute statement assigns a value to a data item and logs the frequency of assignments. The parameters are: item_name:
322
Column one:
lists the values that were assigned during the imputations (1, 2, etc)
323
Column two:
shows the frequency (that is, the total number of times) each value was assigned (i.e., number 2 was assigned 193 times) displays cumulative totals of the "Freq" column indicates what percentage each imputation represents from the total number of imputations made (i.e., number 2 was imputed 193 times, representing barely one percent (0.8) of the total number of imputations made) lists the cumulative totals of the "Percent" column
Column five:
Example: impute(P04_AGE, TEMPAGE) title("Age updated via TempAge") vset(2); Code Example: A code example of this statement can be found in the Examples/Impute folder in the CSPro software folder.
Advance Statement
Format 1: advance [to] field-name;
324
Format 2: advance [to] alpha-variable; [ ] indicates that this part is optional. Description: The advance statement moves forward field-by-field to the specified field, executing preprocs and postprocs as it goes. It acts as though the Enter key were pressed repeatedly until either the specified field appears or one of the procedures executed during the advance goes to a different field. The field name can be given directly by naming the field or indirectly by using the contents of an alpha variable. Field name can be located in any record at the same level as the current field, but it cannot be located at a different level. Field name must be the name of a field that has not yet been entered. If field name has already been entered, an error message will be displayed during data entry and data entry will be aborted. If you don't know whether the field has already been entered, use the move statement. Note that the advance statement behaves differently from the skip statement. Example: FIRST_WOMAN = 0; do i = 1 while i <= totocc(PERSON) if SEX(I) = 2 then FIRST_WOMAN = i; advance to CHILD; endif; enddo; See also: Move Statement, Reenter Statement, Skip Statement
Demode Function
Format: i = demode(); Description: The demode function is often used to limit the execution of certain statements to a specific mode. For example, a variable may need initialization when the operator invokes add or verify mode, but can be left unaltered for modify mode. Return value: There are three data entry operator modes: add, to input new cases; the demode function returns a '1' modify, to change cases that have already been entered; the demode function returns a '2'. verify, to reenter the cases as a check for differences between the first and second entry; the demode function returns a '3'. Example: if demode() = add then V103 = 3; endif;
325
GetOrientation Function
Format: b = getorientation(); Description: The getorientation function returns the current display orientation. The function will return one of four values: 0: The natural orientation of the display device 90: The display orientation is rotated 90 degrees from the natural orientation 180: The display orientation is rotated 180 degrees from the natural orientation 270: The display orientation is rotated 270 degrees from the natural orientation
SetOrientation Function
Format: b = setorientation(numeric-expression); Description: The setorientation function changes the orientation of the display. The numeric expression must be one of the four values listed above. The function returns 1 if the display orientation was successfully changed, 0 otherwise. Example: function rotateScreen() numeric nextOrientation = getorientation() + 90; if nextOrientation = 360 then nextOrientation = 0; endif; setorientation(nextOrientation); end;
Editnote Function
Format: s = editnote(); Description:
326
Endlevel Statement
Format: endlevel; Description: The endlevel statement ends data entry for the current level of the current questionnaire. The effect of this statement depends on where it is used. If endlevel is used in a field, roster, or form procedure, all remaining procedures within that level are skipped and control passes to the level postproc. If the endlevel statement is executed in a level preproc or postproc, control passes to the postproc of the next-highest level. If it is used in the highest-level postproc, control passes to the form files postproc (if there is one), and then data entry is terminated for the current case. In system-controlled applications, CSPro will continue to add cases at the lowest level of a multiplelevel dictionary until it is told to stop by endlevel. Therefore, an endlevel statement should be used in the postproc of the lowest level to end data entry at that level. Example: if MORE_WOMEN = 0 then endlevel; endif;
Endgroup Statement
Format: endgroup; Description: The endgroup statement finishes data entry for the current group (roster or multiply-occurring form) in a data entry application. It can not be used in a batch application. If the endgroup statement is used in an item procedure, it causes an automatic skip to the postproc of the current group/record. If the endgroup statement is executed in the preproc of the group/record, the entire group/record is skipped and control passes to the group/records postproc. Note: this function has superseded the endsect statement. Where endsect exists in an application, it will continue to work, but users creating new applications should adopt the endgroup instruction.
327
Enter Statement
Format: enter form-file-name Description: The enter statement allows the use of a secondary form file to capture data in a secondary data file. The form-file-name is the name of the secondary form file you want to use. The secondary form file must be part of your data entry application. To see the name of form files, from the View menu make sure "Names in Tree" is checked, or press Ctrl+T. The enter statement cannot be used inside a function. Example: if V108 = 6 then enter OTHERS; endif;
Getcapturetype Function
Format: i = getcapturetype(dictionary-item); Description: The getcapturetype function returns the capture type currently associated with a field on a form. The dictionary item must be located on one of the application's forms. Return value: The function returns the capture type, which is one of the following values: 0 1 2 3 4 5 Textbox Radio Button Checkbox Drop Down Box Combo Box Date Picker
Example: // change SEX from a radio button to a drop down box if getcapturetype(SEX) = 1 then setcapturetype(SEX,3); endif; See also: Extended Controls, Setcapturetype Function
328
Getnote Function
Format: s = getnote() Description: The getnote function returns a string containing the note for the current field. If there is no note, the length of the string will be 0. Notes are stored in a file called <data file name>.NOT. Return value: The function returns a string containing the note text. Example: PROC BIRTH_PLACE if length(getnote()) > 0 then FLD_NOTE = editnote(); endif; See also: Putnote Function, Editnote Function, If Statement, Length Function
Getoperatorid Function
Format: s = getoperatorid(); Description: This function returns the operator id for the current operator. The operator id may have been entered by the operator or passed as a parameter in the .PFF file for the run. Return value: The function returns the string containing the operator id assigned to or entered by the current operator. Example: errmsg("Operator = %s", getoperatorid());
329
Getrecord Function
Format: s = getrecord(alpha-expression); Description: The getrecord function returns the name of the record that contains the item identified by the alpha expression. Return value: The function returns a string up to 32 characters long. If the item does not exist, the function returns a blank string. Example: errmsg("SEX belongs to %s",getrecord("SEX")); // SEX belongs to POPULATION errmsg("WATERSOURCE belongs to %s",getrecord("WATERSOURCE")); // WATERSOURCE belongs to HOUSING See also: Getsymbol Function
Getusername Function
Format: s = getusername(); Description: This function returns the login name of the user currently logged into Windows. Return value: The function returns a string containing the user name. Example: errmsg("User name = %s", getusername()); See also: GetOperatorId Function
GPS Function
It is possible to take advantage of the functionality of a Global Positioning System (GPS) receiver when designing an application for use on either a laptop or tablet with a GPS receiver or using the Windows Mobile operating system (Pocket PC). Manipulating the GPS receiver is done from within the program's logic. Basic Example gps(open,3,4800); // on a laptop or tablet; COM3, 4800 baud gps(open); // on the Pocket PC if gps(read,5) then // a successful attempt at a read, for up to five seconds errmsg("Latitude is %f, longitude is %f",gps(latitude),gps(longitude));
330
else errmsg("GPS signal could not be acquired"); endif; gps(close); Opening and Closing the GPS Receiver b = gps(open | close); Before using the PDA's GPS receiver, it is necessary to open a connection to the GPS unit. After making all necessary GPS readings, close the connection. The function returns 1 if successful, 0 otherwise. On the Pocket PC, the GPS settings are controlled using the External GPS option under the device's settings. However, is using CSPro on a laptop or tablet, it is necessary to indicate the hardware settings of the GPS unit, specifically the number of the COM port and the baud rate (see the above example). Obtaining the Last Successful GPS Reading b = gps(readlast); The readlast command obtains the last successful GPS reading, a reading that might be very old. If the GPS unit has been turned on for some time and the PDA is being used outdoors, it is likely that the reading is very fresh (recent), but if, for example, an enumerator walks inside a building to conduct an interview, the reading may be minutes or hours old, from the last time that the enumerator was outside. The function returns 1 if there was a successful previous reading, 0 otherwise. Obtaining a New GPS Reading b = gps(read); b = gps(read,numeric-expression); i = gps(read,numeric-expression,alpha-expression); The read command obtains a new GPS reading in a specified time period (in seconds). If no time period is specified, the program will pause for up to three seconds to obtain a reading. A reading time of up to two minutes (120 seconds) may be specified. An optional third parameter displays a message while the program attempts to obtain a GPS reading. The message box has a cancel button and if the user cancels the operation, the function returns -1. Otherwise the function returns 1 if a reading was successful, 0 otherwise. Unlike the readlast command, a successful function call with read guarantees a fresh GPS reading. Querying a Successful GPS Read If the readlast or read commands returned successfully, the GPS system has valid values for latitude and longitude. Further attributes of the reading can be queried though they are not guaranteed to be valid. f f f f f f = = = = = = gps(latitude); gps(longitude); gps(altitude); gps(satellites); gps(accuracy); gps(readtime);
331
Highlighted Function
Format: b = highlighted(field-name); Description: The highlighted function is used to determine whether a field is on the path (green) in system controlled mode, or has been passed through (green or yellow) either directly or by skips in operator controlled mode. This can be used to determine whether an item has been entered or skipped because of logic in system controlled mode, or whether is before or after the high water mark in operator controlled mode. Return value: The function returns true (1) if the field has been passed (green or yellow) and false (0) if the field is yet to be entered (white). Example: if highlighted(HOURS_WORKED) then errmsg("Hours Worked = %d",HOURS_WORKED); else errmsg("Skipped or Not entered yet!"); endif; See also: Operator vs. System Controlled, Color of Fields in Data Entry User's Guide
Ispartial Function
Format: b = ispartial(); Description: The ispartial function determines whether the current case was opened from a partial case or not. This function can be coded in any procedure except the preproc and postproc of the run. Return value: The function returns a logical value of 1 (true) if the case was opened from a partial case and 0 (false) otherwise. Example: if ispartial() then errmsg("Entering a partially saved case"); endif; See also: Savepartial Function, Onstop Global Function
Move Statement
Format 1: move [to] field-name [advance|skip] Format 2: move [to] alpha-variable [advance|skip] [ ] indicates that this part is optional. | indicates that one or the other keywords may be used Description: The move statement allows movement to a field without regard to whether it is before or after the current field. This is particularly useful when coding in the Onkey function or when using a alpha variable to give the field name. The field name can be given directly by naming the field or indirectly by using the contents of an alpha variable. Movement to a field before the current field acts exactly like a reenter statement. The action of move a field after the current field depends on the keywords skip or advance. If no keyword or skip is coded, forward movement acts exactly like a skip statement. If advance is coded, forward movement acts exactly like an advance statement. Example 1: move SEX; Example 2:
333
Noinput Statement
Format: noinput; Description: The noinput statement prevents input of a field during data entry. This command can be coded only in the preproc or onfocus procedures. When the statement is executed in a preproc, control passes directly from the field's preproc to the fields postproc, executing the onfocus and killfocus procedures (if present) and performing the item range check, but not permitting input of the field. When the statement is executed in an onfocus, control passes directly from the field's onfocus to the fields postproc, executing the killfocus procedure if present and performing the item range check, but not permitting input of the field. The field is on the data entry path even though entry is prevented. The effect of the noinput statement is similar, but not identical, to that of a protected field. If a noinput statement is used, it is possible to back-tab to the field. It is not possible to back-tab to a field that is protected. Example: PROC Q102 preproc if Q101 <> 1 then noinput; endif;
Onfocus Statement
Format: Onfocus; Description: The onfocus statement indicates that the following statements are executed when a form, roster, or field becomes active. An onfocus procedure can be coded in a proc for any form, roster, or field data entry applications. Onfocus procedures are only executed in data entry applications. Statements in an onfocus procedure are executed when you move onto the object in which they are coded. If preproc statements are executed, they are executed before onfocus statements. Onfocus statements are executed when you move backward onto an object either via the reenter statement, moving backwards to it with the cursor, or back-tabbing to it. They are also executed when you perform noinput of a field or when the field is protected. Example: PROC TOTAL_INCOME {preproc would go here, if desired}
334
335
For example, if Shift, Ctrl, and/or Alt are held down when A is pressed Keys A Shift+A Ctrl+A Shift+Ctrl+A Alt+A Alt+Shift+A Alt+Ctrl+A Alt+Shift+Ctrl+A Code 65 1065 2065 3065 4065 5065 6065 7065
Numbers For the number keys across the top of the keyboard, or on the numeric keypad when the "NumLock" button is depressed, the following keyboard key value will be returned: Key 0 1 2 3 4 5 6 7 8 9 Code 48 49 50 51 52 53 54 55 56 57
Letters For the letters a-z and A-Z, the following keyboard key values will be returned. Please note that the status of the CapsLock key does not effect the code. However, if the Ctrl, Shift, and/or Alt keys are being held down, they will change the code returned. See above. Key a b c d e f g h i j k Code 65 66 67 68 69 70 71 72 73 74 75
336
Function Keys Key F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 Code 112 113 114 115 116 117 118 119 120 121 122 123
Non-numeric Numpad Keys: Key Num Lock / * + . Code 144 111 (with or without num lock) 106 (with or without num lock) 109 (with or without num lock) 107 (with or without num lock) 110 (with num lock 46 without)
Miscellaneous Keys:
337
Key SysReq Bksp Tab Enter Break Caps Escape Page Up Page Down End Home Left Arrow Up Arrow Right Arrow Down Arrow Insert Delete Wnd Scroll Lock ; = , . / ` [ ] \ '
Code no code returned 8 9 13 (with or without num lock) 19 20 27 33 34 35 36 37 38 39 40 45 46 91 (flying window) 145 186 187 188 (comma) 189 190 (period) 191 192 (accent) 219 221 220 222
Control Keys: Key Shift Ctrl Alt Code 1016 2017 4018
Putnote Function
Format: b = putnote(string); Description: The putnote function places a string in the note for the current field. If the string is empty, there will be no note for the field. Notes are stored in a file called <data file name>.NOT. Return value:
339
Randomizevs Function
Format: i = randomizevs(dictionary-symbol[,exclude(numeric-variable,...)]); Description: The randomizevs function scrambles the order of values in a value set. The function is useful when using extended controls in a data entry application. Some survey applications choose to display the possible response categories in a randomized way so as to minimize an enumerator or respondent's selection bias. The dictionary symbol may be an item, group, form, or an entire dictionary. An optional exclusion list allows the user to prevent certain values from being given a random order. This is useful for variables like Don't Know, which, after the randomization, would remain at the bottom of the list of values. Return value: The function returns the number of items for which the value sets were successfully randomized. Example: randomizevs(FOOD,exclude(5));
Reenter Statement
Format 1: reenter [field-name]; Format 2: reenter alpha-variable; [ ] indicates that this part is optional.
340
Description: The reenter statement is used to force the entry operator to reenter the contents for the current variable, or for a field that was entered earlier. "Field-name" specifies the field to be reentered. If no "field-name" is specified, the current field is reentered. "Field-name" must be earlier on the data path than the current variable. If it is not, an error message will be displayed during data entry and data entry will be aborted. If you dont know whether the field is earlier in the data path, use the move statement. The field name can be given directly by naming the field or indirectly by using the contents of an alpha variable. When a reenter statement is executed, the preproc for "field-name" will not be executed. If "field-name" is on a different form than the current field, that form will be displayed automatically. The postproc of "field-name" will be executed normally after "field-name" has been reentered. Example: if KIDS = 1 & BOYS = 0 & GIRLS = 0 then reenter KIDS; endif; See also: Move Statement, Skip Statement, Advance Statement
Savepartial Function
Format: b = savepartial(); Description: The savepartial function saves the current case as a partially added, modified or verified case. It is useful in a large data entry application to perform intermediate backups. It can also be used to automatically perform a partial save when the keyer stops the case before completing it. The savepartial function can be coded only in the preproc or postproc of the field. The function cannot be used before all id values for the case have been entered. Return value: The function returns a logical value of 1 (true) if the case was successfully saved as partial case and 0 (false) otherwise. Example: OK = savepartial(); See also: Ispartial Function, Stop Function
Selcase Function
Format: b = selcase(ext-dict-name,alphanumeric-expression[,offset]) [include(dictionary-item])] [where logical-expression];
341
Example 2: OK = selcase(OCCUPATION_DICT, "Plantation"); will return cases whose key begins with "Plantation."
342
Example 4: OK = selcase(OCCUPATION_DICT, "") include(OCCUPATION_CODE, OCCUPATION_SUMMARY_LEVEL) where OCCUPATION_CODE >= 631 and OCCUPATION_CODE <= 633; will result in the same screen as appeared in Example 3.
autoskip
return
protect
343
native
Example of Format 1: set attributes (total_HH_income) protect; Description of Format 2: The set attributes statement with the assisted keyword switches on or off a pop-up responses box during data entry. The values in the responses box come from the first value set in the data dictionary for that field. The user can either select a response or type a response. This behavior is true in any CSPro data entry application. One or more dictionary items can be named in the field list. If the dictionary name is used, all the fields in the dictionary are affected. If a form name is used, all the fields on the form are affected. By default, the responses are taken from the first value set of the item. You can modify the values and responses using the function setvalueset. Description of Format 2 in CAPI applications This statement has further meaning in CAPI data entry applications. Note that when you create a CAPI data entry application, the question text for each item is automatically shown during data entry, but NOT the responses box. There are two ways to make the responses box appear (or disappear): 1. Use this statement in the application's logic. For example: set attributes(MYDICT) assisted on; set attributes(MYDICT) assisted off; set attributes(REL, SEX, EDUC) assisted on; 2. Have the operator turn the response box on and off: To show or hide responses for this field, press Ctrl+C or from the Options menu, select Show Responses (This Field). To show or hide responses for all fields, press Ctrl+K or from the Options menu, select Show Responses (All Fields). The operator can also move the response box around on the screen using either the mouse or the keyboard. To move the responses dialog box with the keyboard, press Ctrl+F8 one or more times. Each time you press Ctrl+F8 the box will move to different position. Use the following forms of this command to get the desired behavior in your program logic for CAPI applications: // show both questions and responses set attributes(MYDICT) assisted on; set attributes(MYDICT) assisted on (question, responses); // show question text but not responses
344
Setcapturepos Function
Format: i = setcapturepos(dictionary-symbol,x-coord-as-numeric-expression,y-coordas-numeric-expression); Description: The setcapturepos function modifies the capture position for the extended control associated with a field on a form. The dictionary symbol may be an item, group, form, or an entire dictionary. The two numeric-expressions refer to the x (horizontal) and y (vertical) positions of the top-left corner of the extended control window. This position is relative to the form window, not the whole CSEntry window, with (0,0) referring to the top-left corner of the form. If the position given for a field is greater than the size of the form, CSEntry will ignore the parameter when displaying the extended control window. This function is useful for CAPI applications in which a part of the screen is left blank specifically for extended control windows. Return value: The function returns the number of items whose capture positions were successfully changed. Example:
345
Setcapturetype Function
Format: i = setcapturetype(dictionary-symbol,numeric-expression[,alpha-expression]); Description: The setcapturetype function modifies the capture type currently associated with a field on a form. The dictionary symbol may be an item, group, form, or an entire dictionary. The numeric-expression refers to a capture type code, listed in the table below. If specifying a date, the optional alpha-expression specifies the date format. 0 1 2 3 4 5 Textbox Radio Button Checkbox Drop Down Box Combo Box Date Picker
Return value: The function returns the number of items that were successfully changed to the specified capture type. An item's capture type can be successfully changed if the current value set associated with the item supports the requested capture type. For instance, if an item's value set contains ranges, the capture type cannot be changed to a radio button. The success of changing a field to a date picker does not depend on the date format, so if the date format is not valid for the field the capture type will be changed to the default date format for the item. Example: setcapturetype(YOB,5,"YYYYMMDD"); errmsg("%d fields changed on the housing form",setcapturetype(HOUSING_FORM,1)); See also: Extended Controls, Getcapturetype Function, Setcapturepos Function
346
// defines the error message and defaults to F8 to close the box set errmsg(operator,"Appuyez sur F8 pour fermer"); // 67 (C) is the key that will close the box set errmsg(operator,"Appuyez sur C pour fermer",67); // 67 (C) is the key that will close the box, the default error message text is used set errmsg(operator,67); See also: Setfont Function
Setfont Function
Format 1: b = setfont(ErrMsg | ValueSets | UserBar | Notes | All,alpha_expr[,bold,italics]); Format 2: b = setfont(ErrMsg | ValueSets | UserBar | Notes | All,default); Description: In a data entry application, the setfont function allows you to modify the font that CSPro uses to display text in: ErrMsg: The font that appears in boxes generated by the errmsg function ValueSets: The font that appears when using CAPI mode with extended controls UserBar: The font that appears in buttons and text strings on the userbar Notes: The font that appears when a user edits a field's note All: The font is changed for all of the four above entities
The font is changed to the font indicated by the alpha_expr, or if format 2 is used, the font is restored to CSPro's default font selection. The user must ensure that the font is installed on the machine that will run the data entry application. Optional bold and italics markers may be indicated. Return value: The function returns 1 if the font(s) were changed successfully, 0 otherwise. Example: function majorError(alpha (200) message) setfont(ErrMsg,"Arial",24,bold,italics);
347
PROC AGE if AGE > 95 then minorWarning(maketext("Age (%d) is over 95, set to 95",AGE)); AGE = 95; elseif not AGE in 12:95 then minorError(maketext("Age (%d) is invalid for this survey, reenter",AGE)); reenter; endif; See also: Set Errmsg Statement, Setvaluesets Function
Setlanguage Function
Format: b = setlanguage(alpha-expression); Description: The setlanguage function changes the language mode being used by the CAPI interface. Pass the function the name, not label, of the language to which you want to change. Return value: The setlanguage function returns 1 if the language exists and the language mode was successfully be changed. Otherwise it returns 0. Example: if X = 1 then setlanguage("FRA"); elseif X = 2 then setlanguage("GER"); else setlanguage("ENG"); endif;
348
Setvalueset Function
Format 1: setvalueset(item-name | @alpha_expr, valueset-name); Format 2: setvalueset(item-name | @alpha_expr, numeric-array | alpha-array, alphaarray); Description: The setvalueset function allows you to dynamically change the first value set of an item. The first value set of an item is used to determine whether or not inputted values are out of range. The first value set is also used to provide the value choices displayed in the pop-up menu when assisted mode is enabled using set attributes. The setvalueset function therefore allows you to programmatically change the value set used in these cases. The change to the value set is not permanent; it remains in effect only during the current execution of the program. The item-name is the name of the item in the data dictionary whose value set is to be changed. This may also be an alpha expression that evaluates to the name of an item preceded by the @ symbol, for example: setvalueset(@getsymbol(), MY_VALUESET_VS1) In the first format, valueset-name is the name of an existing value set in the dictionary for the specified item. The setvalueset function will replace the values of the first value set for the item with the values from the value set specified by valueset-name. In the second format, the second parameter is an array of values to use in the new value set and the third parameter is an array of labels that correspond to the values in the first array (the nth element of the labels array is the label for the nth element in the values array). The last element in the array of values must be the special value notappl. This indicates to the system when to stop loading values from the array. For a detailed example, see the setvalueset example in the CSPro examples directory. Example 1: PROC DISTRICT preproc if STATE = 1 then setvalueset(DISTRICT, elseif STATE = 2 then setvalueset(DISTRICT, elseif STATE = 3 then setvalueset(DISTRICT, endif; set attributes(DISTRICT) Example 2: PROC GLOBAL array codes(4); array alpha(10) labels(4); PROC DISTRICT
349
Example 2:
350
Show Function
Format: i = show(group-name, item-list, [where condition], [title(text-list)]); Description: The show function displays items from a roster in the form or a menu that looks like a roster. This function is similar to the Accept function. This function is useful as a menu or simply as a way to show roster values in another part of the questionnaire. Return value: The function returns the number of the item selected: 1 for the first item, 2 for the second item, etc. This is the number of the item on the display, not in the roster. The value 0 is returned if the Esc key is pressed and none of the options is chosen. Example 1 if RELATIONSHIP = 2 then if SEX = SEX(ptrHead) then errmsg("Sex of spouse is the same as the sex of head!"); i = SHOW(PERSON_REC, NAME, RELATIONSHIP, SEX, AGE, TITLE("Name", "Rel", "Sex", "Age")); endif; endif;
351
Skip Statement
Format 1: skip [to [next]] field-name; Format 2: skip [to [next]] alpha-variable; [ ] indicates that this part is optional. Description: The skip statement skips to the specified field. If the field has multiple occurrences, either record or item, the occurrence number must be specified to skip to the correct occurrence. The "next" keyword skips to the next occurrence of field-name where "field-name" is a multipleoccurrence field. If "field-name" is in the same record or group as the current field, control will move to the next occurrence of "field-name". If "field-name" is not in the same record or group as the current field, control will move to the first occurrence of "field-name". Occurrence numbers cannot be used with the next keyword. "Field-name" can be located in any record at the same level as the current field, but it cannot be located at a different level. "Field-name" must be the name of a field that has not yet been entered. If "field-name" has already been entered, an error message will be displayed during data entry and data entry will be aborted. If you don't know whether the field has already been entered, use the move statement. The field name can be given directly by naming the field or indirectly by using the contents of an alpha variable. When a skip statement is executed, the preproc of field-name, if any, will be executed. None of the statements between the skip statement and the preproc of "field-name" will be executed. Skipped fields are assigned the special value of NOTAPPL. Note that the skip statement behaves differently from the advance statement.
352
Userbar Function
It is possible to add a bar at the top of a data entry application to facilitate certain kinds of communication between a user and the intentions of the application programmer. For instance, a button can be added that allows the user to jump to a certain section of a questionnaire, or the bar can display reference text useful for the user. This "userbar" can display text, buttons, and text fields. General Userbar Commands b = userbar(show | hide | clear); Show adds a userbar to the application, or if one has been added and is hidden, the show command displays it again. The hide command removes the userbar from the data entry window but keeps the userbar's contents in case it is shown again later. The clear command removes the userbar from the data entry window and deletes the contents of the userbar. The function returns 1 if successful, 0 otherwise. If the first command to a userbar is an add command, the userbar will be automatically displayed. If you want to add items to the userbar without displaying it, call hide or clear before adding the items. Adding Items to the Userbar i = userbar(add text | button | field | spacing,[...]); All of the add commands, detailed below, return a resource identifier, an integer that uniquely points to the added object. If you plan to modify or remove objects added to the userbar, it is necessary to maintain this resource identifier as a way to identify on what object the modify or remove command should work. Objects are added to the userbar in left-to-right format. There is no way to add an item in between two existing items. Adding Text to the Userbar i = userbar(add text,alpha-expression); The alpha-expression is a string of text that will be displayed on the userbar. The color of the text can be modified using the set color command. Adding Buttons to the Userbar i = userbar(add button,alpha-expression[,function-name]); The button text comes from the alpha-expression. An optional parameter specifies a function that is to be called when the button is pressed. If the function has parameters, it is necessary to specify the values of
353
354
355
if operationType = rightNumber; operatorTypeString elseif operationType = rightNumber; operatorTypeString elseif operationType = rightNumber; operatorTypeString elseif operationType = rightNumber; operatorTypeString elseif operationType = rightNumber; operatorTypeString elseif operationType = rightNumber; operatorTypeString endif;
ADD_OP = '+'; SUBTRACT_OP = '-'; MULT_OP = '*'; DIVIDE_OP = '/'; MOD_OP = '%'; EXP_OP = '^';
then result = leftNumber + then result = leftNumber then result = leftNumber * then result = leftNumber / then result = leftNumber % then result = leftNumber ^
PROC USERBAR_FF preproc userbar(clear); userbar(add text,"Enter two values and select an operation:"); leftOperatorRID = userbar(add field," "); rightOperatorRID = userbar(add field," "); userbar(add button,"Addition",performMathOperation(ADD_OP)); userbar(add button,"Subtraction",performMathOperation(SUBTRACT_OP)); userbar(add button,"Multiplication",performMathOperation(MULT_OP)); userbar(add button,"Division",performMathOperation(DIVIDE_OP)); userbar(add button,"Modulo",performMathOperation(MOD_OP)); userbar(add button,"Exponentiation",performMathOperation(EXP_OP)); userbar(add spacing,50); resultsRID = userbar(add text," "); userbar(show);
356
Visualvalue Function
Format: i = visualvalue(numeric-item); Description: The visualvalue function is used to access the contents of a data item before the data item has been keyed. In the example below, the value of UR is being examined in the preproc of the item, that is, before any input can be attempted. Return value: The function returns the numeric of value of the item. Example: PROC UR preproc if not visualvalue($) in 1:2 then do until visualvalue($) in 1:2 $ = accept("Area Designation?", "Urban", "Rural"); enddo; noinput; endif; See also: Accept Function, If Statement, Do Statement, Noinput Statement
Export Statement
Format: Export to file-name [rec_name(rec-name | alpha-exp)] [rec_type(rec-name | alpha-exp)] [case_id ([item-list])]
357
358
Putdeck Function
Format: f = putdeck(array-name,numeric-expression[,override-dim1,overridedim2,override-dim3]); Description: The putdeck function updates the value in the DeckArray hotdeck using the current values in the items identified by the value sets used in the declaration of the DeckArray. The function automatically recodes the values and accesses the proper cell in the hotdeck, where it places the value of the numericexpression. If any of the dimensions of the DeckArray are not value set dimensions, you must specify the numeric index when calling the function. Return value: The function returns 1 if successful or DEFAULT in the case that the values supplied are not valid entries in the value sets and thus could not be recoded to a proper cell in the hotdeck. Example: array education_HD_SexAge(SEX_VS,AGE_FOR_EDUCATION_HD_VS) save; ... PROC EDUCATION putdeck(education_HD_SexAge,EDUCATION); // use current values for sex
359
Numeric Functions
Abs Function
Format: d = abs(numeric-expression); Description:
360
Cmcode Function
Format: i = cmcode(month,year); Description: The cmcode function returns the century month code of the given date by the month and year parameters. The "century month code" is the number of months since January 1900 (the century month code for January 1900 = 1). It is calculated by multiplying the number of years between the parameter year and 1900 by twelve, then adding the value of parameter month. The cmcode function returns the value 9999 if the month is less than one or greater than 12, or if either the month or year are equal to any of the special values DEFAULT, MISSING, or NOTAPPL. Cmcode will accept either 2- or 4-digit years. If a 2-digit year is used, the cmcode function assumes that the year is in the 20th (i.e., 19xx) century. Four-digit years can be used for years in the 20th or 21st century. Return value: The function returns the number of months as an integer. Example 1: XMONTH = 06; XYEAR = 81; DATE = cmcode(XMONTH,XYEAR); The value of DATE for the given parameters [June 1981], would be (81 x 12) + 6 = 978. Example 2: XMONTH = 2; XYEAR = 2000; DATE = cmcode(XMONTH,XYEAR); The value of DATE in this example would be ((2000 1900) * 12) + 2, or 1202.
Countnonspecial Function
Format: i = countnonspecial(item | record | array | numeric-expression); Description: The function countnonspecial counts the number of non-special values within the passed parameters. Special parameters include missing, notappl, and default. The function can receive multiple numeric parameters, including items, records, arrays, and numeric expressions. This function can greatly
361
Exp Function
Format: d = exp(numeric-expression); Description: The exp function raises the value of e (2.7182818) to the power given by "numeric-expression". This value (e) is called Napiers constant or Eulers number and is the basis of natural logarithms.
362
Return value: The function returns a decimal number. If the value of "numeric-expression" is a special value (MISSING, NOTAPPL, or DEFAULT), the function returns that value. Example: X = exp(Y);
High Function
Format: d = high(numeric-expression,[...]); Description: The high function returns the maximum (highest) value in a group of numbers. The function ignores special values. Return value: The function returns the highest value, or DEFAULT in the case that no valid values were passed. Example: errmsg("Lowest value is %f",low(50,-123.45,1982.0605,20)); // displays 123.45 errmsg("Highest value is %f",high(50,-123.45,1982.0605,20)); // displays 1982.0605 See also: Low Function
Inc Function
Format: i = inc(numeric item-name [,numeric increment expression]); Description: The inc function increments a numeric item that is either a dictionary item or a numeric variable. If an increment expression is present, then the value of the expression is added to first parameter. If no expression is present, 1 is added to the first parameter. The increment expression can be negative or nonnegative. inc(X) is essentially shorthand for X = X + 1; Return value: The function returns the value of the increment expression added to the numeric item. Example: X = 5; inc(X); yields X = 6, is the same as X = X + 1; inc(X,4); yields X = 10, is the same as X = X + 4; inc(X,-5); yields X = 5, is the same as X = X + (-5); X = 5 + inc(X,inc(X)); yields X = 17, is the same as X = X + 1; X = X + X; X = 5 + X;
Int Function
Format:
363
Log Function
Format: d = log(numeric-expression); Description: The log function calculates the base-10 logarithm of "numeric-expression". Return value: The function returns a decimal number logarithm. If the value of "numeric-expression" is a special value (MISSING, NOTAPPL, or DEFAULT), the function returns that value. If the value of numericexpression is negative, the special value DEFAULT is returned. Example: X = log(Y);
Low Function
Format: d = low(numeric-expression,[...]); Description: The low function returns the minimum (lowest) value in a group of numbers. The function ignores special values. Return value: The function returns the lowest value, or DEFAULT in the case that no valid values were passed. Example: errmsg("Lowest value is %f",low(50,-123.45,1982.0605,20)); // displays 123.45 errmsg("Highest value is %f",high(50,-123.45,1982.0605,20)); // displays 1982.0605 See also: High Function
Random Function
Format: i = random(min-value,max-value);
364
Description: The random function returns a uniformly distributed random integer between "min-value" and "maxvalue". "Min-value" and "max-value" are numeric expressions that must have integer values in the range -32767 to +32767. Use seed to initialize the random function. Return value: The function returns an integer random value. The function will return a value DEFAULT if "min-value" is greater than "max-value" or if either limit is equal to one of the special values DEFAULT, MISSING, and NOTAPPL. Example: NUM = random(1,100);
Randomin Function
Format: i = randomin(in-list | value-set); Description: The randomin function returns a uniformly distributed random integer from one of two categories: A grouping of non-continuous integers expressed as an in list. A value set. Use seed to initialize the randomin function. Return value: The function returns an integer random value. The function will return a value DEFAULT if there were no applicable values to construct a table of non-continuous integers from which to pick a random number. If a value appears more than once in the in list or the value set, it will have a higher probability of being selected by the randomin function. Example: errmsg("Random tribe code: %d",randomin(TRIBE_VS1)); errmsg("Non-continuous random number: %d",randomin(-100:-50,50:100,999)); errmsg("Over time 5 will be selected 75% of the time: %d",randomin(5,5,5,8)); errmsg("Random month: %d",randomin(1:12)); // same as random(1,12) See also: Random Function, Randomizevs Function
Seed Function
Format: b = seed(numeric-expression); Description: The seed function is used to determine the first value generated by the random function. For best results, "numeric-expression" should be set to a prime number, such as 1009. Return value: The function returns a logical value "true" if the seeding is successful, "false" otherwise.
365
Example: OK = seed(1009);
Sqrt Function
Format: d = sqrt(numeric-expression); Description: The sqrt function returns the square root of "numeric-expression". "Numeric-expression" should be a positive value. Return value: The function returns a decimal value of the square root of the expression. If the value of the numericexpression is a special value (e.g., MISSING, NOTAPPL, or DEFAULT), the function returns the special value given. If the value of "numeric-expression" is negative, the function returns the special value DEFAULT. Example: X = sqrt(Y); X = sqrt(12);
366
String Functions
Compare Function
Format: i = compare(string-1,string-2); Description: The compare function compares the two strings character by character to determine the alphabetical (collating sequence) order of the strings. If "string-1" and "string-2" are of different lengths, the compare function will pad the shorter string with blanks to carry out the comparison. Return value: The function returns an integer value of -1 if "string-1" would be listed alphabetically before "string-2" 0 if the strings are identical 1 if "string-1" would be listed alphabetically after "string-2" Example 1: ORDER = compare(RESPONSE, ANSWER); where ORDER is an integer variable and RESPONSE and ANSWER are string variables. Example 2: Y = compare("survey", "census"); where Y is an integer variable and the arguments are string constants. Direct string comparisons can also be made. For example, the following code is permissible (and in fact preferable to usage of the compare function: Example 3: if string1 < string2 then <statements>; endif;
Concat Function
Format: s = concat(string-2,string-2[,..,string-n]); [ ] indicates that this part is optional. Description: The concat function concatenates the values of two or more strings. The strings can be alphanumeric items, text strings, or functions that return strings. Return value: The function returns the concatenated string. Example: PROC GLOBAL
367
Edit Function
Format: s = edit(edit-pattern,numeric-expression); Description: The edit function converts a number to a character string defined by the given "edit pattern". The "edit pattern" is a string containing "Z"s or "9"s (i.e., "9999" or "ZZ9.99"). Both "9" and "Z" represent a digit. 9 display a digit Z display a digit, but if it is a leading zero, display a blank . display the decimal character , display the thousands separator character Any other character will be displayed as itself. Return value: The function returns a string derived from the "numeric-expression" parameter. Example 1: X = 87; A1 = edit("ZZZ9",X); yields A1 = " 87" A2 = edit("9999",X); yields A2 = "0087" A3 = edit("Z999",X); yields A3 = " 087" Example 2: Y = 0; A4 = edit("ZZ9",Y); yields A4 = " 0" A5 = edit("999",Y); yields A5 = "000" A6 = edit("ZZZ",Y); yields A6 = " " Example 3: A = edit("99:99:99",sysdate()); Example 4: A = edit("99/99/99",sysdate("DDMMYY")); Example 5: A = edit("ZZZ,ZZZ,ZZ9",INCOME); See also: Tonumber Function , Sysdate Function
Format: s = getbuffer(item-name); Description: The data item specified by "item-name" may be numeric or alphanumeric. The getbuffer function always returns a string containing the data items contents. Therefore, in both examples below it does not matter whether getbuffer specifies a numeric item (AGE), or an alphanumeric item (NAME), it will always return a string of the data items contents. This function is especially useful when a numeric data item in a data file contains a non-numeric value, such as "*", "-", or "a". You cannot test the contents of the numeric data item for alphanumeric values because CSPro stores DEFAULT as the value of any numeric data item which contains non-numeric values. Therefore, to find out what non-numeric value(s) exist in a data item, you would use the getbuffer to return its contents in the form of a string of characters (at least one of which is nonnumeric). Return value: The function returns a string containing the data items contents. Example 1: if special(AGE) then errmsg("Persons Age is invalid, Age = %s", getbuffer(AGE)); endif; Example 2: errmsg("Household Heads Name = %s", getbuffer(NAME(1)));
Length Function
Format: i = length(string-exp); Description: If the "string-exp" is a data dictionary item, the value returned is the length of the item. If the "stringexp" is the result of a function, the value returned is the length of the string returned by the function. Return value: The function returns the length of the string as an integer value. Example: PROC GLOBAL alpha 30 NAME; PROC ABC NAME = "John Henry" LEN1 = length(NAME); LEN2 = length(strip(NAME)); Results in the following values: NAME = "John Henry " LEN1 = 30 LEN2 = 10 See also: Alpha Statement, Strip Function
369
Value = 12.567
%f
12.567
370
Value = "abcdef"
Pos Function
Format: i = pos (substring, source); Description: The pos function searches for a "pattern string" within a "source-string". It returns the beginning position of the first occurrence of "pattern string". The "source-strings" and "pattern-spring" are casesensitive, meaning that "children" is recognized as different from "CHILDREN." Return value: The function returns an integer position. If the "pattern-string" is not found, 0 is returned. Example 1: X = pos("L","FOR THE CHILDREN"); The value of X will be 12; this is where the pattern-string [the letter "L"] occurs in the source string. Example 2: X = pos("DRE","CHILDREN"); The value of X will be 5; this is where the pattern-string ["dre"] begins in the source string. Example 3: X = pos("DCN","CHILDREN"); The value of X will be 0. The pattern string ["dcn"] does not occur in the source string. Please note unless an alpha string is declared to be the exact length of the string that is being assigned to it, any trailing character positions will be blank-filled. This can have ramifications on your search, if you are searching for the blank character. There may be none within the string, but it will find one at the end of your string, if your assigned string is shorter than the space allocated to the alpha variable. In this case, you should strip the string first. The following example should clarify this situation: PROC GLOBAL alpha (8) myStr; PROC FOO myStr = "Kids"; pos (" ", myStr);
371
Poschar Function
Format: i = poschar (pattern-string, source-string); Description: The poschar function searches for a collection of characters ["pattern-string"] within "source string". It returns the beginning position of the first occurrence of the pattern string. The source-string and pattern-string are case-sensitive, meaning that "c" is recognized as different from "C." Return value: The function returns an integer position. If no characters from the pattern string are found, 0 is returned. Example 1: X = poschar("L","CHILDREN"); The value of X will be 4; this is where the pattern string [the letter "L"] occurs in the source string {"CHILDREN"]. Example 2: X = poschar("LCN","CHILDREN"); The value of X will be 1; of the characters in the pattern-string, "C" is the first character encountered in the source string, and it is found in position 1 of the source. See also: Pos Function, Alpha Statement, Strip Function
Strip Function
Format: s = strip(string-exp); Description: The strip function removes trailing blanks from the given string. The result of a strip function is often used as a parameter to other functions (such as the length and concat functions above). Return value: The function returns a string with no trailing blanks. Example: PROC GLOBAL alpha(30) FIRST_NAME, LAST_NAME, FULL_NAME; PROC ABC FIRST_NAME = "John"; LAST_NAME = "Henry";
372
Tolower Function
Format: s = tolower(string-exp); Description: The tolower function scans the given string and converts any uppercase letters to lowercase letters. Return value: The function returns a string with all uppercase letters converted to lowercase letters. Example: X = tolower("hello james!"); Y = tolower("Hello JaMeS!"); Z = tolower("HELLO JAMES!"); Results in the following values: X = "hello james!" Y = "hello james!" Z = "hello james!" See also: Alpha Statement, Toupper Function
Tonumber Function
Format: d = tonumber(string-exp); Description: The tonumber function converts a string ["string-exp"] into a number. Leading blanks in the string are ignored. The conversion stops at the first non-numeric character encountered. Return value: The function returns a decimal number. If the string begins with a non-numeric character, the function returns DEFAULT. Example: n = tonumber(CASEID); See also: Edit Function
Toupper Function
Format:
373
Count Function
374
Curocc Function
Format: i = curocc([group]); Description: The curocc function returns the current occurrence number for a roster, form, or record. During data entry, you may determine the current occurrence of a roster or form. If the form does not repeat, curocc will return 1 (a roster must always repeat). The current occurrence can be determined by calling the curocc function from any field contained within the roster or form. If it is executed prior to the roster or repeating form it names, it returns 0. If it is invoked after entry of the roster or form has completed, it returns the total number of occurrences keyed. During batch editing, you may determine the current occurrence of a record or repeating item. If the curocc function is used in a procedure not associated with an item on a record then curocc will return the total number of occurrences found. If the curocc function is used in a procedure associated with an item on the record, it will return the sequence number of the record in the case. The curocc of a repeating item will be its sequence number within the group. Return value: The function returns the occurrence number as an integer. Examples 1: PROC RELATION if curocc(PERSON_REC) = 1 then if (RELATION <> 1) then errmsg("First person must be head of household."); endif; endif;
375
Delete Function
Format: b = delete(group[occ]); [occ] is required for multiply-occurring records or items; is not required for singly-occurring records or items Description: The delete function removes incomplete, or otherwise unneeded, records or item occurrences from the current case. It can be used to remove singly- or multiply-occurring records, although if the record is non-repeating (such as the housing record in a typical census application), then it must be defined as "required=no" in the dictionary. This function was primarily intended for batch applications. It should be used with extreme caution in data entry applications because of possible conflicts between the operators actions and the program logic. Return value: The function returns a logical value 1 (true) if successful and 0 (false) otherwise. Example 1 (for multiply-occurring records): do varying i = totocc(PERSON_REC) until i <= 0 by (-1) if rel(i) = notappl and sex(i) = notappl and age(i) = notappl then delete (PERSON_REC(i)); { remove "blank" person records } endif; enddo; In this example blank person records are deleted from the case. Records following any deleted record are shifted up to cover the vacated area. For example, if you delete the 2nd of four records, the 3rd record shifts to the 2nd position and the 4th records shifts to the 3rd position. It is best to delete the records starting with the last record and moving toward the first. Use a subscript that starts at the last occurrence then is decremented [decreased by 1]. In this way you will not need to worry about the records that are shifting positions. Example 2 (for singly-occurring records): if h01_type = 6 then { person is homeless, delete record } delete (HOUSING); { notice the absence of a subscript } endif; See also: If Statement, Totocc Function, Do Statement
Insert Function
Format: b = insert(group[occ]); [occ] is required for multiply-occurring records or items, and is not required for singly-occurring records or items Description:
376
Max Function
Format: d = max(multiple-item [where condition]); Description: The max function returns the maximum value of an item that occurs multiple times. During batch editing, if the values of the items are not changed, the result of the maximum calculation is the same, no matter where the function is located. During data entry, the result of the maximum calculation depends on where the statement is located. If the max function is executed prior to the form or roster containing the item, it returns DEFAULT. If it is executed within the form or roster containing the item, it returns the maximum value up to the current occurrence number. If it is executed after the form or roster containing the item, it returns the maximum value for all occurrences of the item. During batch editing, max always returns the maximum value for all occurrences of the item. If a where condition is included, the function returns the maximum value of the occurrences for which the condition is true.
377
Maxocc Function
Format: i = maxocc([group]); Description: The maxocc function returns the maximum number of multiply occurring records or the maximum number of multiply-occurring items defined for a group in the dictionary. This value remains the same throughout the application run. Return value: The function returns an integer value of the maximum number of occurrences. Example 1: PROC HOUSING errmsg("Maximum number of persons is %d", maxocc(PERSON)); Example 2: PROC PERSON errmsg("Maximum number of persons is %d", maxocc()); See also: Curocc Function, Totocc Function, Soccurs Function, Noccurs Function
Min Function
Format: d = min(multiple-item [where condition]); Description: The min function returns the minimum value of an item that occurs multiple times. During batch editing, if the values of the items are not changed, the result of the minimum calculation is the same, no matter where the function is located. During data entry, the result of the minimum calculation depends on where the statement is located. If the min function is executed prior to the form or roster containing the item, it returns DEFAULT. If it is executed within the form or roster containing the item, it returns the minimum value up to the current occurrence number. If it is executed after the form or roster containing the item, it returns the minimum value for all occurrences of the item. During batch editing, min always returns the minimum value for all occurrences of the item.
378
Noccurs Function
Format: i = noccurs(group); Description: The noccurs function returns the number of occurrences of a roster, form, or record. It is equivalent to the count function without the where phrase. During data entry, you may determine the current occurrence of a roster or form. The occurrence value is updated after the first entry into the first field. If the noccurs function is executed prior to the roster or form it specifies then it returns 0. If it is executed from a field within the roster or form, it returns the current occurrence number after the first field is on the path. For example, its value in the PREPROC of the first occurrence of the first item entered in a form or roster is zero (0), i.e., before entry. After entry its value will always be one (1). This is true for each occurrence keyed, the noccurs function is not incremented until the cursor is in or has passed through the first field on the roster or form. If it is executed after the form or roster, it returns the total number of occurrences in the form or roster. If the form does not repeat, noccurs will return 1 (a roster must always repeat). When used in Data entry noccurs and soccurs functions are the same. During batch editing, noccurs always returns the total number of occurrences in the group. Return value: The function returns the number of occurrences as an integer value. Example: TOTAL_PERSONS = noccurs(PERSON); See also: Totocc Function, Curocc Function, Soccurs Function, Count Function
Seek Function
Format: i = seek(multiple-item condition[,numeric-expr]); Description: The seek function returns the occurrence number of the first item in a multiply occurring item that satisfies a certain condition. If numeric-expr is included, the function starts searching the multiply
379
Soccurs Function
Format: i = soccurs(record-name); Description: The soccurs function returns the total number of occurrences of a record. During data entry, you may determine the current occurrence of a record. The occurrence value is updated after the first entry into the first field. If the soccurs function is executed prior to the roster or form it specifies then it returns 0. If it is executed from a field within the roster or form, it returns the current occurrence number after the first field is on the path. For example, its value in the PREPROC of the first occurrence of the first item entered in a form or roster is zero (0), i.e., before entry. After entry its value will always be one (1). This is true for each occurrence keyed, the soccurs function is not incremented until the cursor is in or has passed through the first field on the record. If it is executed after the form or roster, it returns the total number of occurrences in the form or roster. If the form does not repeat, noccurs will return 1 (a roster must always repeat). When used in Data entry noccurs and soccurs functions are the same. During batch editing, soccurs always returns the total number of record occurrences found. Return value: The function returns the number of occurrences as an integer value. Example: NUM_HH_MEMBERS = soccurs(PERSON_REC); See also: Totocc Function, Curocc Function, Noccurs Function, Count Function
Sum Function
Format: d = sum(multiple-item [where condition]); Description: The sum function returns the sum of an item that occurs multiple times. If a where condition is included, the function returns the sum of the occurrences for which the condition is true. During data entry, the result of the sum calculation depends on where the statement is located. If the sum function is executed prior to the form or roster containing the item, it returns DEFAULT. If it is executed within the form or roster containing the item, it returns the sum up to the current occurrence number. If it is executed after the form or roster containing the item, it returns the sum for all occurrences of the item. During batch editing, sum always returns the sum for all occurrences of the item. If the value of an occurrence of the item is a special value (DEFAULT, MISSING, or NOTAPPL) the occurrence will not be included in the calculation. If none of the occurrences have values other than special values, DEFAULT is returned. Return value: The function returns a decimal value of the sum. Example: TOTAL_INCOME = sum(INCOME); TOTAL_FEMALE_INCOME = sum(INCOME where SEX = 2);
Totocc Function
Format: i = totocc([group]); Description: The totocc function returns the total number of multiply occurring records or the total number of multiply-occurring items that a group currently contains. During data entry, the occurrence value is updated in the preproc of the first field within a repeating form, record or roster. If the totocc function is executed prior to the entry of form or roster, it returns 0. If it is executed from a group or field within the form or roster, it returns the total number of occurrences currently entered. If it is executed after the form or roster, it returns the total number of occurrences in the form or roster. During batch editing, totocc always returns the total number of occurrences in the group. Return value: The function returns an integer value of the number of occurrences. Example 1: if totocc(HOUSING) > 1 then errmsg("More than 1 housing record"); endif; Example 2: PROC HOUSING if totocc() > 1 then errmsg("More than 1 housing record"); endif; See also: Curocc Function, Maxocc Function, Count Function, Soccurs Function, Noccurs Function
General Functions
382
Datediff Function
Format: i = datediff(numeric-start-date,numeric-end-date[,string-expression]); indicates that this part is optional. []
Description: The datediff returns the difference between two dates as a number. The dates must be passed in YYYYMMDD format. If no year is present then the current or next year is assumed in order make the condition that the start date is earlier than the end date be true. If years are present, it is possible for the start date to be later than the end date, in which case the function returns a negative difference. A third optional parameter indicates the difference requested. This function acts similarly to Microsoft Excel's "datedif" function. Based on the optional third parameter (the default option is "d"), the function returns: "d" "m" "y" "md" "ym" "yd" days between the start and end dates months between the start and end dates years between the start and end dates days between the start and end dates ignoring both the years and months of the dates months between the start and end dates ignoring the years of the dates days between the start and end dates ignoring the years of the dates
Return Value: The function returns the requested difference in dates, defaulting to the number of days between the dates if the third parameter is not specified. If the dates cannot be processed, the function returns DEFAULT. The function returns values equal to Excel's function for most parameters, but due to processing differences involving leap years, sometimes CSPro's function will return a different value than Excel's. Example 1: datediff(19790404,19820605); returns 1158 datediff(19790404,19820605,"d"); returns 1158 datediff(19790404,19820605,"m"); returns 38 datediff(19790404,19820605,"y"); returns 3 datediff(19790404,19820605,"md"); returns 1 datediff(19790404,19820605,"ym"); returns 2 datediff(19790404,19820605,"yd"); returns 62
383
384
Value = 12.567
%f
12.567
Value = "abcdef"
The denom keyword allows you to specify a denominator, so that you can show percentages in the summary portion of the output listing. This is very useful for showing edit failure rates. In Example 2 below, the output listing will show the number of times there was more than one head of household divided by the number of households processed during the run. Note that it is the responsibility of the application designer to write logic to put the proper values into the denominator variable. The case and summary keywords give you some control over the output listing. By default, the output listing shows you messages case by case, and also shows you a summary of the number of times the message was triggered (with an optional denominator, described above). You can limit the output listing to only case-by-case reporting, or only summary reporting by using these keywords. The select keyword (system controlled mode only) is used to give the option of specifying the field to go to in response to the error message. A button is placed on the error message window for each caption and field-name specified as a select parameter. The caption is what is displayed on the button. When the button is clicked, the system goes to the field specified as field-name. Return Value: The function returns a logical value 1 (true) if successful and 0 (false) otherwise. Format 1 Examples: Example 1: errmsg("Head of household is %d years old.", AGE); Example 2: errmsg("More than 1 head of household") denom = PERSON_COUNT summary;
385
Example 3: errmsg("Head of household is %d years old. Age must be >= 12", AGE) select("Go to RELATIONSHIP", RELATIONSHIP,"Go To AGE", AGE) denom = PERSON_COUNT; Format 2 Example: OK = errmsg (1,"June",30,31); where the message file contains the following text: 1 %s has only %d days. You entered %d! Note the errmsg call could have also been invoked as follows: i = 1; OK = errmsg (i,"June",30,31);
Execsystem Function
Format: b = execsystem(alpha-exp, [maximized | normal | minimized], [focus | nofocus], [wait | nowait]); Description: The execsystem function starts another windows application or process. The alpha-exp is the name of the application or process to be started. Command line parameters may be included in this expression. If folders names or file names contain blanks, then quotation marks (") must surround the names. In this case CSPro text strings must be surrounded by apostrophies ('). Coding one of the parameters maximized, normal, or minimized determines how the window for the new application is opened. If this parameter is not coded, the default is normal. Coding one of the parameters focus or nofocus determines whether the new application will receive focus, or "be active," when it is started. If this parameter is not coded, the default is focus. Coding one of parameters wait or nowait determines whether the current application will wait until the new application is finished before control returns to it. If this parameter is not coded, the default is nowait. Return value: The function returns a logical value of 1 (true) if the new application is started successfully and 0 (false) otherwise. Example 1: Execsystem("c:\windows\calc.exe"); Example 2: Execsystem('textview "c:\My On_line Helps\DE_Helps.txt"' ,maximized,wait); See also: ExecPFF Function
386
Getlabel Function
Format: s = getlabel(dictionary-symbol[,value]); Description: The getlabel function returns the label of a dictionary symbol or the text associated with a particular value of the symbol as defined in a value set. If the value parameter is not used, then the dictionary symbol's label is returned. The symbol can be the name of the dictionary, level, record, item, or value set. The value parameter can only be used if the dictionary symbol is an item or a value set. If the value parameter is used, the label associated with the specified value is returned. If the symbol is an item name, then the value labels from the first value set are returned. If the symbol is a value set, then the value labels from that value set are returned. If no label is associated with the value, then an empty string is returned. The dollar sign ($) can be used to refer to the current item for both the dictionary symbol and the value. See Example 3 below. Return value: The function returns a string up to 255 characters long. Example 1: write("%s = %s", getlabel(SEX), getlabel(SEX,1)); Example 2: write("Crop Type = %s", getlabel(CROP_VS2,23)); Example 3: PROC P02_REL
387
Getsymbol Function
Format: s = getsymbol(); Description: The getsymbol function returns the name the current procedure being executed. Return value: The function returns a string up to 32 characters long. Example: errmsg("Procedure %s",getsymbol()); See also: Getlabel Function, Getrecord Function
Invalueset Function
Format: b = invalueset(item-name[, valueset-name]); Description: The invalueset function determines whether a data item's value is within the items value set. The item-name is the name of the item with the dictionary. The valueset-name is the name of a value set with the specified item. If the value set name is omitted, the first value set for the item is used. Return value: The function returns a logical value of 1 (true) if the data item is within the value set and 0 (false) otherwise. If the item has no value set and only the item name is given, the function return 1 (true). Example 1: if not invalueset(P03_SEX) then errmsg("Sex is out of range. Value is %d", P03_SEX); endif; Example 2: if invalueset(P04_AGE(1), P04_AGE_VS2) then errmsg("Heads age is in group '%s'", getlabel(P04_AGE_VS2, P04_AGE(1))); endif; See also: Special Function, Set Behavior Canenter
388
Special Function
Format: b = special(numeric-exp); Description: The special function determines whether the value of a numeric-exp is one of the three "special" values: missing, notappl, or default. The numeric-exp can be a data item, a variable, or any numeric expression. Return value: The function returns a logical value of 1 (true) if the variable is a special value and 0 (false) otherwise. Example: if special(XVAR) then YVAR = 99; else YVAR = XVAR; endif; See also: Special Values, Countnonspecial Function
Stop Function
Format:
389
Sysdate Function
Format: i = sysdate([date-format]); [ ] indicates that this part is optional. Description: The sysdate function returns the current system date as an integer. The date-format is an alphanumeric expression composed of a combination of DD (days), MM (months), and/or YY or YYYY (years). YY returns the current year in two digits, while YYYY returns it in four digits. The strings DD, MM and YY or YYYY can be put together in any order to make up a customized format. If no date-format is specified, the sysdate function will return the date in the format "YYMMDD". The current date can be returned as a string using the edit function as follows: edit("99/99/99",sysdate("DDMMYY")); Return value: The function returns the system date as an integer. If the date-format is invalid, the function returns 0. Example 1:
390
Example 2: If the current date is March 8, 2000, the following calls would return: x x x x x = sysdate("DDMMYYYY"); returns 8032000 = sysdate("MMYYYY"); returns 32000 = sysdate("MMYY"); returns 300 = sysdate("DD"); returns 8 = sysdate(); returns 308
Sysparm Function
Format: s = sysparm(); Description: The sysparm function returns the value of the parameter variable stipulated in the data entry or batch edit pff file. The sysparm function returns the passed-in parameter as a left-justified string. If no parameter was given in the pff file, then sysparm returns the null (empty) string. If the string given in the pff file is longer than the size allocated for your programs string variable, then the string will be truncated. Return value: The function returns an alphanumeric string containing the system parameter. Example: PROC GLOBAL alpha(30) MyParam; PROC MyFile preproc MyParam = sysparm();
Systime Function
Format: i = systime(); Description: The systime function returns the current system time as a six-digit integer in the form HHMMSS, where HH is the hour, MM are the minutes, and SS are the seconds. The current time can be returned as a string using the edit function as follows: edit("99:99:99",systime()); Return value: The function returns the system time as an integer.
391
Example: TIME = systime(); HOUR = int(TIME / 10000); MIN = int(TIME / 100) % 100; SEC = TIME % 100;
Trace Function
Programmers use tracing to obtain low-level information about how an application runs, with the information often used for debugging purposes to understand why a program does not execute as expected. CSPro offers limited tracing functionality for two objectives: logging user-generated information and tracking executed statements. Tracing messages can be displayed in a window or saved to a file. Activating and Disabling Tracing trace(on); // turns on tracing and outputs messages to a window trace(on,"filename"); // turns on tracing and appends messages to "filename" trace(on,"filename",clear); // turns on tracing, clears any contents in the file, and writes messages to "filename" trace(off); // turns off tracing, closing all open trace windows or files It is possible, by calling the trace function twice, to send messages to both a window and a file. If the filename does not contain a path the file will be placed in the application folder. Logging User-Generated Information To send a message to the trace log, simply pass a string to the trace function. trace("This is a trace message"); if distance > 100 then trace(maketext("distance (%d) > 100!",distance)); endif; Tracking Executed Statements Occasionally a programmer wants to observe how logic statements are executed, particularly when the logic behaves in a manner inconsistent with the programmer's expectations. The trace window or file can display each line of logic as it is executed. Because in some applications this may be a very large number of statements, the programmer must specify what elements of the logic should be outputted: set trace; // logic statements after this point will be outputted set trace(on); // same as above set trace(off); // logic statements after this point will not be outputted
392
Trace stopped at 02/03/11 20:28:35 Trace started at 02/03/11 20:28:35 31 33 38 : : : numeric value = 10; if value > 10 then errmsg("C");
393
Delcase Function
Format: b = delcase(ext-dict-name[,var-list]); Description: The delcase function marks a case for deletion in the external file described by ext-dict-name. The case whose identifiers match var-list is the case that is marked as deleted (but not deleted!). A deleted case is marked by a tilda ~ in the first character of each record in the case. The ext-dict-name must be supplied. It is the dictionary name defined in the data dictionary for the external file. The optional var-list defines the case identifiers in the external file. The delcase function concatenates the variables specified in var-list to form a string whose length must be the same as the length of the case identifier in the external dictionary. All variables in the var-list must exist in a dictionary or working storage.
394
Fileconcat Function
Format: b = fileconcat(result-file-name, file1[, file2[, ...]]); Description: The fileconcat function concatenates a list of files. The list may contain individual files or wildcard file specifications. The result-file-name is an alphanumeric expression giving a file name or a name declared in a file statement in PROC GLOBAL. File1, file2, etc. are alphanumeric expressions that contain the names of specific files or a wildcard specification of a group of files. Return value: The function returns a logical value of 1 (true) if successful and 0 (false) otherwise. Example: fileconcat("c:\prov1\prov1.dat", "c:\prov1\01*.dat"); See also: File Statement, Filecopy Function, Filedelete Function, Fileexist Function
Filecopy Function
Format: b = filecopy(file-name, result-file-name); Description: The filecopy function copies one file to another file, or a group of files to a folder. The file-name and result-file-name are alphanumeric expressions giving the source and destination file names or names declared in a file statement in PROC GLOBAL. You can use the wildcard characters "*" and "?" to specify a group of files to copy as the file-name. In that case you must specify the name of a folder as the result-file-name. Return value: The function returns the number of files copied. Examples: filecopy(DATA, DATACOPY); DATA and DATACOPY could be the names of files declared in a file statement or an alpha variables set to contain the names of the files as a text string. filecopy("*.dat", "myfolder");
395
Filecreate Function
Format: b = filecreate(file-name); Description: The filecreate function creates a new file with the given file name. If the file already exists, it is truncated to zero length. The file-name is an alphanumeric expression giving a file name or a name declared in a file statement in PROC GLOBAL. Return value: The function returns a logical value of 1 (true) if successful and 0 (false) otherwise. Example 1: filecreate("c:\census data\region1\district1.dat"); Example 2: filecreate(MYREPORT); MYREPORT could be the name of a file declared in a file statement or an alpha variable set to contain the name of the file as a text string. See also: File Statement
Fileexist Function
Format: b = fileexist(file-name); Description: The fileexist function determines whether a file exists. The file-name is an alphanumeric expression giving a file name or a name declared in a file statement in PROC GLOBAL. You can use the wildcard characters "*" and "?" as the file-name. In that case the fileexist function will determine whether any file matching the specification exists. Return value: The function returns a logical value of 1 (true) if the file exists and 0 (false) otherwise. Example: if fileexist(MYREPORT) then filedelete(MYREPORT); endif; MYREPORT could be the name of a file declared in a file statement or an alpha variable set to contain the name of the file as a text string. See also: File Statement
396
Filename Function
Format: s = filename(dict-name | file-name); Description: The filename function returns the fully qualified name of a data file. The data file may be referenced by the data dictionary dict-name or by file-name declared in a file statement in PROC GLOBAL. Return value: The function returns a string containing the folder and file name. Example: NAME = filename(CHILE_2000); NAME might be assigned "c:\Census2000\data\09011961.dat", if the data dictionary CHILE_2000 was associated with that file. See also: File Statement, Filesize Function, Fileexist Function, Pathname Function
Fileread Function
Format: b = fileread(file-name, alpha-item-var); Description:
397
Filerename Function
Format: b = filerename(old-file-name, new-file-name); Description: The filerename function changes the name of a file on the disk. The old-file-name and new-file-name are alphanumeric expressions giving a file name or names declared in a file statement in PROC GLOBAL. Return value: The function returns a logical value of 1 (true) if successful and 0 (false) otherwise. Example: filerename(MYDATAFILE, "c:\folder\my new data file.dat"); MYREPORT could be the name of a file declared in a file statement or an alpha variable set to contain the name of the file as a text string. See also: File Statement
Filesize Function
Format: n = filesize(file-name); Description: The filesize function returns the size of a file in bytes. The file-name is an alphanumeric expression giving a file name or a name declared in a file statement in PROC GLOBAL. Return value: The function returns a value greater than or equal to zero if the file exists. If the file does not exist or there is a file name error, it returns 1. Example:
398
Filewrite Function
Format: b = filewrite(file-name, alpha-exp[, p1[, p2[,..., pn]]]); Description: The filewrite function writes a line of text to a file. The file-name is a name declared in the file statement in PROC GLOBAL. The alpha-exp is an alphanumeric variable or data item or an alphanumeric expression that is written to the file. The parameters p1 thru pn are numeric or alphanumeric expressions that provide the values for the inserts described in the alpha-exp. If you want a text line to begin on a new page, place \f at the beginning of the text string. If you want to break a line of text into two lines, place \n where you want the line divided. To output \n or \f as text instead of new line or new page, use a double backslash. Return value: The function returns a logical value of 1 (true) if successful and 0 (false) otherwise. Example 1: filewrite(REPORT, "Education Level = %d",EDU); Example 2: filewrite(REPORT, "\fThis is my page title line"); Example 3: filewrite(REPORT, "This is the first line\nThis is the second line"); Example 4: filewrite(PFF_FILE, "Input=C:\\file path\\name of file");
Find Function
Format: b = find(ext-dict-name, rel-op, alpha-exp); Description:
399
Key Function
Format: s = key(ext-dict-name); Description: The key function returns a string containing the key of the case at the current position in an external file. The ext-dict-name must be supplied. It is the internal name of the dictionary defined in the application for the external file. If there has been no previous activity on the external file and no key has been established, the key function returns a null string. Return value: The function returns a string containing the key. If no key is present, a null string is returned. Example: THE_KEY = key(LOOKUP);
Loadcase Function
Format: b = loadcase(ext-dict-name[, var-list]); Description: The loadcase function reads a specified case from an external file into memory. Once the case is loaded, all variables defined in the corresponding external dictionary are available for use. The "ext-dict-name" must be supplied. It is the internal name of the dictionary defined in the application for the external file.
400
Locate Function
Format: b = locate(ext-dict-name, rel-op, alpha-exp); Description: The locate function finds, but does not load, a case in an external file that matches a specified condition. This function searches the index of an external file and finds the first case that matches the specified condition. The file pointer is positioned to the case's location, but the case is not loaded into memory. To load the case into memory, use the retrieve function after the locate function. The ext-dict-name must be supplied. It is the internal name of the dictionary defined in the application for the external file. The rel-op is one of the following relational operators: =, <, <=, >, or >=. The alpha-exp is an alphanumeric expression that specifies a set of case identifiers or a key. If the relational operators are < or <=, then the file is positioned at the case with the largest key which satisfies the condition. If the relational operators are > or >=, then the file is positioned at the case with the smallest key which satisfies the condition. Return value: The function returns a logical value of 1 (true) if a case is found and 0 (false) otherwise. Example: OK = locate(CODE,>=,"10100201"); See also: Find Function
Open Function
Format: b = open(ext-dict-name | file-name[, update | append | create]);); Description:
401
Retrieve Function
Format: b = retrieve(ext-dict-name); Description: The retrieve function reads a case into memory from the current position of an external file. It is intended for use only after a successful execution of the locate function. The ext-dict-name must be supplied. It is the dictionary name defined in the data dictionary for the external file. Return value: The function returns a logical value of 1 (true) if a case is retrieved and 0 (false) otherwise. Example: OK = retrieve(LOOKUP); See also: Loadcase Function
402
Writecase Function
Format: b = writecase(ext-dict-name[,var-list]); Description: The writecase function writes a case from memory to an external data file. It can be used to update existing cases or to write new ones The ext-dict-name must be supplied. It is the internal name of the dictionary defined in the application for the external file. The optional var-list defines the case identifiers in the external file. The writecase function concatenates the variables specified in var-list to form a string whose length must be the same as the length of the case identifier in the external dictionary. All variables in the var-list must exist in a dictionary or working storage. If no var-list is provided, the current values of the identifiers in memory for the external file are used.
403
If the case identified by var-list already exists, the writecase function will overwrite the existing case if no records in the case have changed length. If any record in the case has changed length each record in the case will be marked with a tilda, ~, in the first position of the record and entire case will be appended to the end of the associated file. The writecase function automatically generates and updates the index file (with extension IDX) for the external data file. After a case is written to an external file, the external dictionary variables for that case remain in memory. If the application does not assign new values to all variables in the external dictionary before the next writecase function is executed, then values from the previous case will be written to the external data file. Use the clear function to clear the values of these variables. No Index Mode: In a batch application it is possible to have the writecase function output cases without updating the file's index. This allows the external data file to have duplicate cases, i.e., cases sharing the same IDs. This may be useful if the batch application is a tool to reformat large sets of data, a situation in which maintaining the file's index is very time consuming. Since no check is done for duplicates you should be certain that duplicates cannot be generated, or that you want duplicates in the data file. Do not use other external file functions like loadcase or retrieve if using no index mode. To use this special mode, in the function parameters write (noindex) after the dictionary name. OK = writecase(KIDS(noindex),CLUSNUM,HHNUM,LINE); // no index mode Return value: The function returns a logical value of 1 (true) if the write is successful and 0 (false) otherwise. Example: OK = writecase(KIDS,CLUSNUM,HHNUM,LINE); See also: Loadcase Function
Write Function
Format: [b =] write(alpha-exp[,p1[,p2[,...,pn]]]); Description: The write function writes text to a write file that can be used as a report. Each parameter (e.g., "p1") is sequentially inserted into the write string. Parameters can be numeric or alphanumeric expressions, but the type of parameter must match the type of the receiving field in the message text. If no write file is specified at run time, the write file lines are placed in the default data entry or batch error report. In the string expression %[n]d = Insert a number and display it as an integer %[n.d]f = Insert a number and display it as a decimal value %[n.d]s = Insert a text string "n" is the size of the field and "d" is the number of decimal places to show for a number. Numbers are never truncated. Text strings are truncated only if ".d" is used. If "n" is positive, the insert is right-justified in the size of the field. If "n" is negative, the insert is leftjustified in the size of the field. If "n" is a positive number with a leading zero, the insert is right-justified in the size of the field and zero-filled to the left. When inserting a number, if "n" is preceded by a "+", the sign of the number is always displayed.
404
Value = 12.567
%f
12.567
Value = "abcdef"
Return Value: The function returns a logical value 1 (true) if successful and 0 (false) otherwise. Example: write("Sex = %d", SEX); See also: Filewrite Function
405
Appendix
Appendix A - Installation
Hardware and Software Requirements
A minimum configuration 33MHz 486 processor 16MB of RAM VGA monitor Mouse 70 MB of free hard drive Microsoft Windows 98SE A recommended configuration Pentium processor 256MB of RAM SVGA monitor Mouse 70 MB of free hard drive space Microsoft Windows 98SE, Me, NT 4.0, 2000, XP, or Vista
Installing CSPro
Installing from our CD - Place the CD in your CD-ROM drive. Wait for a few seconds the installation program will automatically launch - Proceed through the setup process. This will take you through a series of dialog boxes, which will prompt you for setup information Installing from floppy diskettes: - From the Start button on the taskbar, select Run. - Place CSPro Disk 1 in your diskette drive and enter a:\setup - Click OK. The setup process takes you through a series of dialog boxes that prompt you for setup information. Installing from a file downloaded from our web site: - From the Start button on the taskbar, select Run. - Enter drive:\folder\cspro33.exe (For example: c:\download\cspro33.exe) - Click OK. The setup process takes you through a series of dialog boxes, which will prompt you for setup information. Selecting languages for installation CSPro allow you to select a language that will be used in some parts of the system. During installation you will be presented with the following language screen:
407
The language setting determines: - the small words (Table, and, by, Legend, etc.) generated by tables and maps - the font style, in order to support languages such as Russian, Ukrainian, or Armenian on data entry screens and in tabulation output. Note that CSPros menu options, dialog boxes, and the help system are only available in English. You can always change the language setting by rerunning the installation program and choosing "Modify." Selecting components for installation: CSPro allows you to select which components of the system you want to install. During the installation you will see the following component screen:
408
Appendix
You have the following choices: - CSPro (all components). Select this if you plan to develop applications. - Data Entry Operator (only). Select this if you are installing a data entry application on a production machine. The operator will be able to run an already-created data entry application, but will not be able to make any changes to it. The Data Entry, Compare Data, Text Viewer, and Table Viewer components are installed. - Data Dissemination (only). Select this if you are installing CSPro data dissemination tools for the user to access statistical data you have produced using CSPro. The Map Viewer, Table Retrieval, Table Viewer, Text Viewer, and Compare Data components are installed. - Custom Installation. Advanced users can select any particular set of components, such as a particular tool. At any later time, you can change the components installed by rerunning the installation.
Uninstalling CSPro
The following is based on a Windows 2000 setup. Your steps may vary if using a different operating system. From the Start button on the taskbar, select Settings Control Panel. Select Add/Remove Programs. From the list of currently installed programs, click on CSPro 4.1. Click the Change/Remove button.
409
The installation program prompts you to select the type of installation. Select Remove and press the Next button. At the prompt, click OK to confirm that you want remove CSPro 4.1. The uninstall program will remove all registry entries and CSPro system files (that is, all files within the CSPro 4.1 folder its Examples subfolder). It will not remove any applications or other files you have created. When the files are removed, the installation program indicates that the process is complete. Click Finish.
410
Appendix
Run the CSPro installation program (setup) on each computer. The installation setup may be run from diskettes, CDROM, or your network. Choose the "Data Entry Operator (only)" option during the installation. The setup program will only install the files necessary to perform data entry. The CSPro components necessary to modify an application will NOT be installed. Install the CSPro Data Entry Application Once the Data Entry Application has been tested and finalized, use the Pack Application Tool to create a single file that contains all the essential application files. This file can be placed in a folder either on a network drive for multiple users or on each data entry operators local hard drive [C:]. The application files then need to be extracted into the folder from the packed file, e.g. unzipped. If the application is on a network drive multiple users can access it at the same time. Normally, only one person has access to an application on a local hard drive. The data file for an application can also be placed on a network drive or the operators local hard drive. The folder for the data file can either be the same folder as the data entry application of different from it. The only restriction is that two data entry operators cannot access the same file at the same time. For information about data entry applications in general, see the Data Entry User's Guide. See Also: Run Production Data Entry, Creating Limited CSPro Installations for Redistribution
411
412
Appendix
Shortcuts common throughout CSPro Shortcut Key Ctrl + C Ctrl + F Ctrl + J Ctrl + N Ctrl + O Ctrl + P Ctrl + S Ctrl + T Ctrl + U Ctrl + V Ctrl + X Ctrl + Y Ctrl + Z Ctrl + F4 Alt + F4 Alt + F6 Shift + Alt + F6 F1 Description Copy the selection and put it on the Clipboard. Find specified text. View full screen. Create a new document. Open an existing document. Print the active document. Save the active document. Show names instead of labels in tree. Full screen. Paste clipboard contents. Cut the selection and put it on the Clipboard. Redo the previous undone action. Undo last action. Close the active document. Exit the application. Change focus to next window Change focus to previous window Show help contents and index.
413
CAPI Options Shortcut Key Ctrl + B Ctrl + I Ctrl + U Description Bold text. Italic text . Underline text
Shortcuts common throughout CSPro Shortcut Key Ctrl + C Ctrl + F Ctrl + H Ctrl + J Ctrl + N Ctrl + O Ctrl + S Ctrl + T Ctrl + V Ctrl + X Ctrl + Y Ctrl + Z Description Copy the selection and put it on the Clipboard. Find specified text. Replace the specified text with different text. View full screen. Create a new document. Open an existing document. Save the active document. Show names instead of labels in tree. Paste clipboard contents. Cut the selection and put it on the Clipboard. Redo the previous undone action. Undo last action.
Close the active document. Ctrl + F4 Exit the application. Alt + F4 Change focus to next window Alt + F6 Shift + Alt + F6 Change focus to previous window Show help contents and index. F1
414
Appendix
F3 Ctrl + K Ctrl + R Up Arrow Down Arrow Shift + Up Arrow Shift + Down Arrow Page Up Page Down Shift + Page Up Shift + Page Down Home End Shift + Home Shift + End Ctrl + Home Ctrl + End Find the next occurrence of specified text. Compile code. Run the data entry application. Move up one line. Move down one line. Scroll up, multi-selects rows. Scroll down, multi-selects rows. Scroll up one screen (if possible). Scroll down one screen (if possible). Scroll up, multi-selecting pages. Scroll down, multi-selecting pages. Scroll to the beginning of line. Scroll to the end of line. Select text from cursor to beginning of line. Select text from cursor to end of line. Scroll to the first line of code. Scroll to the last line of code.
Shortcuts common throughout CSPro Shortcut Key Ctrl + C Ctrl + F Ctrl + H Ctrl + J Ctrl + N Ctrl + O Ctrl + S Ctrl + T Ctrl + V Ctrl + X Ctrl + Y Ctrl + Z Ctrl + F4 Alt + F4 Alt + F6 Shift + Alt + F6 F1 Description Copy the selection and put it on the Clipboard. Find specified text. Replace the specified text with different text. View full screen. Create a new document. Open an existing document. Save the active document. Show names instead of labels in tree. Paste clipboard contents. Cut the selection and put it on the Clipboard. Redo the previous undone action. Undo last action. Close the active document. Exit the application. Change focus to next window Change focus to previous window Show help contents and index.
Tabulation Keys
Shortcuts specific to Tabulation
415
Shortcut Key Ins Del Esc Ctrl + A Ctrl + D Ctrl + M Ctrl + R Alt + A
Description Insert a new table into the table set. Delete a table from the table set. Cancel the current selection. Select all. Display or hide hidden rows and columns. Generate a thematic map. (Area only) Run the tabulation. Edit the (geographic) areas specification.
Shortcut specific to Print View within Tabulation Shortcut Key Ctrl + G Ctrl + Plus (+) Ctrl + Minus(-) Alt+Home Alt+Left Arrow Alt+Right Arrow Alt+End Description Go to specific page or table. (Print View only) Zoom in. Zoom out. Go to the first page of the first table. Go to the previous page. Go to the next page. Go to the last page of the last table.
Shortcuts common throughout CSPro Shortcut Key Ctrl + C Ctrl + J Ctrl + N Ctrl + O Ctrl + P Ctrl + S Ctrl + T Ctrl + F4 Alt + F4 Alt + F6 Shift + Alt + F6 F1 Description Copy the selection and put it on the Clipboard. View full screen. Create a new document. Open an existing document. Print the active document. Save the active document. Show names instead of labels in tree. Close the active document. Exit the application. Change focus to next window Change focus to previous window Show help contents and index.
417
File New Open Close Save Save As Add Files Drop Files Compile Run Run as Batch Export Application
Create a new application. Open an existing application. Close an application. Save an application. Save the active application with a new name. Add a dictionary or form to an existing application. Drop a dictionary or form from an existing application. Compile the logic in the application. Run the application. Run the application after finish keying data for a file. Generate a binary (compiled) version of the application.
Edit Undo Redo Cut Copy Paste Add Form Delete Form Generate Forms Delete
Undo the most recent change. Redo the last undo. Copy selected element to clipboard and delete it. Copy selected element to clipboard. Paste element on clipboard to selected location. Add a form to the application. Delete a form from the application. Generate forms using the Data Dictionary. Delete selected objects.
418
Appendix
Find Find Next Replace View Box Toolbar Names in Trees Full Screen Form Logic CAPI Questions Options Data Entry Drag Default Text Font Field Font Set Explicit Align Left Center Right Top Mid Bottom Evenly Horizontal Evenly Vertical CAPI Options Use CAPI Font 1 Use CAPI Font 2 Bold Italic Underline Color Left Center Right Bullets Insert Bitmap Help Text Define CAPI Languages Change CAPI Font 1 Change CAPI Font 2 Fit Windows to Questions Find text in the procedures. Find the next occurrence of text in the procedures. Replace text with new text in the procedures.
Show or hide box drawing toolbar. Show names instead of labels in trees. Hide the trees and show full screen view. Shows form in right-hand window. Show logic procedures in right-hand window. Show screen to enter the questions.
Change the data entry options. Change the drag options. Change the default text font settings. Change the field font settings. Require declaration of all variable names in logic.
Position to left-most item. Center items as a group. Position to right-most item. Position to top-most item. Align mid-points of items as a group. Position to bottom-most item. Space evenly left to right. Space evenly top to bottom.
For CAPI text use first default font. For CAPI text use second default font. Switch between bold and non-bold text. Switch between italic and non-italic text. Switch between underlined and non-underlined text. Change color of text. Align selected text to left of question window. Align selected text to center of question window. Align selected text to right of question window. Add bullets to selected or new text. Insert bitmap (BMP file) image in question window. Switch display between question text and help text. Define the set of CAPI languages used in application. Select the first default font for a CAPI language. Select the second default font for a CAPI language. Adjust question window to display entire text.
419
Tabulation Menu
File New Open Close Save Save As Save Tables Add Files Drop Files Load Preferences Save Preferences Run Run Parts Page Setup Print Setup Print Preview Print Edit Create a new application. Open an existing application. Close an application. Save an application. Save the active application with a new name. Save current table results in a file. Add a dictionary to an existing application. Drop a dictionary from an existing application. Load stored table formatting preferences. Save table formatting preferences. Run the application. Run Tabulate, Consolidate, or Format process. Change headers, footers, and margins for printed pages. Change orientation and paper size for printed pages. Preview the printed pages. Print all or part of a document.
420
Appendix
Add Table Insert Table Delete Table Tally Attributes (Table) Area Format (Table) Format (Application) Format Print (Table) Go to Copy Copy Cells Only Copy Table Spec Paste Table Spec Select All Cancel Selection Preferences View Names in Trees Full Screen Hidden Parts Previous Table Next Table Zoom In Zoom Out Facing Pages Multiple Pages First Page Previous Page Next Page Last Page Map Add a table at the end. Insert a table at the current location. Delete the current table. Edit the universe or filter of tabulation. Enable or change tabulation by geographic area. Edit formats that apply to the entire table. Edit formats that apply to the entire application. Edit formats for the printed tables. Go to a particular page, table, or area. Copy selected tables cells and headings to the clipboard. Copy only the selected table cells to the clipboard. Copy table specification to the clipboard Paste table specification into application Select the entire table. Cancel the currently selected cells. Change application format and tally preference. Show names instead of labels in trees. Hide the trees and show full screen view. Show or hide hidden parts of a table. Show the previous table. Show the next table. Zoom in on a print preview. Zoom out on a print preview. Show facing pages (two) on a print preview. Show selected number of pages in print preview. Show first print page of first table. Show previous print page. Show next print page. Show last print page of last table. Create thematic map of selected cells.
421
422
Appendix
The Forms Designer toolbar is displayed across the top of the window, immediately below the menu bar. The toolbar provides quick mouse access to many of the often-used features found in the Forms Designer. Click To Create a New application. Open an application. Save an application. Compile the logic (code) of your data entry application. Run the current data entry application (i.e., start up CSEntry).
Undo the latest changes. Redo the latest changes. Cut the selected elements to the clipboard. Copy the selected elements to clipboard. Paste the contents of the clipboard to the form. Delete the currently selected item(s). Find text in logic. Toggle between selecting item(s) or drawing boxes . View the forms View the logic View the CAPI question Show last Dictionary window. Show last Forms window. Show last Batch Edit window. Show last Tabulation window. Get Help.
423
Create a New application Open an application Save an application Compile the logic (code) of your application Run the current batch edit application Undo the latest text changes. Redo the latest text changes. Cut the selected logic to the clipboard. Copy the selected logic to clipboard. Paste the contents of the clipboard to the logic. Find text in the logic Launch Text Viewer Show last Dictionary window. Show last Forms window. Show last Batch Edit window. Show last Tabulation window. Get Help.
Tabulation Toolbar
The Tabulation toolbar is displayed across the top of the window, immediately below the menu bar. The toolbar provides quick mouse access to many of the more frequently-used features found in Tabulation. Click To Create a New application. Open an existing application. Save an application. Save tables.
Setup page margins and headings for printing. Preview printing of tables. Print tables.
424
Appendix
Run a tabulation. Add a table. Insert a table. Delete the current table. Specify Tally Attributes for the table. Define Area Processing variables. Copy a selection from a table. Show Previous Table. Show Next Table. Use the MapViewer Show last Dictionary window. Show last Forms window. Show last Batch Edit window. Show last Tabulation window. Get Help.
Convert an IMPS 3.1 (DOS) data dictionary to CSPro - Hypens (dashes) within record and item names are changed to underlines. - All common items in IMPS are changed to ID items in CSPro. - As CSPro does not allow the use of subitems in the ID section, any subitems found in the IMPS common section will be converted to ID items. This could increase the length of the ID section. Therefore we advise you to check your CSPro dictionary after conversion if you receive a message about "subitems found in common, promoted to ID items". Similarly, if you receive any error messages during the conversion about overlapping items, this is most likely due to the use of subitems in the common block of IMPS. If you have used "NR" as a value name in your IMPS dictionary, it will be converted to the special value "missing." If you have used "NA" as a value name in your IMPS dictionary, it will be converted to the special value "notappl."
Convert an IMPS 4.1 (Windows) data dictionary to CSPro. - All hierarchy information is lost. - All other comments as listed under IMPS 3.1 to CSPro apply. Convert a CSPro data dictionary to IMPS 3.1 (DOS). - Underlines within record and item names are changed to hyphens (dashes). - All level record, item, and value set labels are lost. - All value labels are truncated to 16 characters. - Value sets, after the first, are converted to subitems. - All notes are lost. - All level information is lost. - All special values (Missing, NotAppl, and Default) are lost. - CSPro allows the use of 32 characters as a unique namehowever, IMPS only allows 16 characters. Therefore, if any of your unique names are longer than 16 characters, you will receive a message for each variable that its name will be truncated to 16. - CSPro does not support the use of short names, as described in IMPS. Therefore, if the first 8 characters of any item name in CSPro are not unique, the converted IMPS dictionary will have duplicate shorts names. You should check the converted IMPS dictionary to ensure that there are no duplicate short names.
426
Appendix
Convert an ISSA data dictionary to CSPro data dictionary only, you will receive a CSPro dictionary (.dcf) only. You can choose to convert either a regular data dictionary (.dic) or a working storage dictionary (.wst). Convert an ISSA data dictionary to CSPro form and data dictionary, you will receive both a CSPro dictionary (.dcf) and a CSPro form file (.fmf). You can choose to convert either a regular data dictionary (.dic) or a working storage dictionary (.wst).
427
428
Appendix
the enumeration in the allotted time. Also, since enumerators come from many different backgrounds and have varying levels of education and training, training must be developed to make certain the enumerators know how to ask the questions to obtain an unbiased response. Errors in Field Editing A general rule for editing could be: the closer that corrections are made to the source of the data the higher the quality of the final statistics. Field editing is, therefore, perhaps the most important stage in the census processing. Supervisors, in addition to training enumerators, must also be able to collect the data themselves and to correct enumerator errors while the forms, the respondents, and the enumerators are still available. Questions that arise can then be answered before the questionnaires are sent to the central census office. Once the forms leave the enumeration areas, changes can no longer easily be made with the knowledge and help of the respondents and enumerators, so other procedures must be used to cope with inaccurate, incomplete, or inconsistent data. During preliminary census office editing, checks of crucial entries must be carried out quickly to determine completeness and consistency in the collected data. Highly-aberrant forms may be sent back to the field, if time and money permit. Place codes must be checked for validity, and relationships between numbers of expected individuals as recorded on the household form, and the actual numbers of individual forms (if individual forms are used) must agree. Errors in Coding Precise, detailed instructions for coding in preparation for manual and computer editing must be determined after the tabulation plans are developed, but before the enumeration is actually undertaken. Back in the census office, it is no longer possible to make corrections while in contact with the respondents, so editing must be determined on the basis of assumptions about what the most probable response would be. If computer editing is possible, manual office editing should be minimized to checking for completeness. If census data are collected on precoded questionnaires (coded either by respondents or enumerators), and machines are used to convert the information to computer-readable data, then except for the introduction of errors due to stray marks or physical problems with the questionnaires, the errors found should be minimal. Errors may occur when the data are coded, since the coder may miscode some piece of information. If the miscode is invalid, it should be caught during the computer editing; if the code is valid but incorrect (for example, if two digits are reversed for the entry for birthplace), the computer will not note the errors, and the information will remain incorrect for the tabulations. Coders must be trained to edit according to the edit specifications, and efforts must be made to obtain and maintain quality of coders, 'weeding out' inefficient inaccurate coders. Spot checks and verification of samples from each coder can help to identify persistent coding errors. Errors in Data Capture Data capture is the process of converting data to a form which the computer can use. The most common method used to convert the data is keying; scanning technologies [optical character readers (OCR) and optical mark readers (OMR)] are increasingly used, and while these methodologies appear to offer lower costs and reduced time when compared with operator-based entry, in fact each presents a separate set of difficulties, different from those associated with manual keying, that must be overcome, and which can nullify any perceived gains. With keyer-based entry, errors are introduced into the data through miskeying. Verification (rekeying or double-keying) can reduce these errors. A system called "intelligent data entry" [IDE] may be used to prevent invalid entries from ever getting into the system. An IDE system ensures that the value for each field or data item is within the permissible range of values for that item. Such a system increases the chance that the data entry operator will key in reasonable data and relieves some of the burden on later stages of the data preparation process.
429
430
Appendix
Batch Edit Application BCH - Batch Edit application BCH.APP - Logic BCH.MGF - Message ORD - Edit Order DCF - Data Dictionary LST - Listing (errmsg function output) FRQ - Impute frequencies (impute statement) BCH.SVA - Saved arrays Tabulation Application XTB - Tabulation Application XTB.APP - Logic XTB.MGF - Message XTS - Tabulation specification DCF - Data Dictionary ANM - Area names LST - Listing (errors in tabulation) TBW - Output tables (for Table Viewer) MPC - Map file (compressed) MDF - Map Data file TAB - Table Matrices File TAI - Table Matrices Index File Other Application Files PFF - Program Information (used to launch applications)
Batch Edit Example PROC GLOBAL // This program concatenates all the *.dat files in a directory by order of date. // The program can be run with any dictionary, it is only necessary that the name // of the application file procedure is valid. alpha alpha alpha alpha (300) str; (50) listingName = "files.txt"; (50) pffName = "CSConcat.pff"; (50) outputName = "concatenated.dat";
432
Appendix
filewrite(pffFile,"[Run Information]"); filewrite(pffFile,"Version=CSPro 4.1"); filewrite(pffFile,"AppType=Concatenate"); filewrite(pffFile,"[Files]"); str = maketext('cmd /c "dir /b /od *.dat > %s"',strip(listingName)); execsystem(str,wait); setfile(inputFile,strip(listingName)); while fileread(inputFile,str) do filewrite(pffFile,"InputData=.\%s",strip(str)); enddo; close(inputFile); filedelete(strip(listingName)); filewrite(pffFile,"OutputData=%s",outputName); filewrite(pffFile,"Listing=.\CSConcat.lst"); filewrite(pffFile,"[Parameters]"); filewrite(pffFile,"ViewListing=No"); filewrite(pffFile,"ViewResults=No"); close(pffFile); execpff(strip(pffName));
Files Description
Data Dictionary File (.DCF)
Each data file manipulated by CSPro must be described by a data dictionary. The data dictionary file contains information defining the layout of a data file, including levels, records, items, value sets and values. CSPro allows you to explicitly open, close and save data dictionary files independently of other application files. You must be careful when you do so if more than one application uses the data dictionary. CSPro applications may optionally contain data dictionaries which represent secondary files, such as Look-up files, which are opened during data entry. The data dictionary file is an ASCII text file which may be viewed with any text editor, such as CSPro's Text Viewer or the Windows Notepad. It is not recommended to make changes to this file outside the CSPro environment.
433
434
Appendix
The logic file is an ASCII text file which may be viewed with any text editor, such as CSPro's Text Viewer or the Windows Notepad. While you may make changes to this file outside the CSPro environment, CSPro provides a powerful text editor which is integrated with the CSPro compiler.
Data File
The data file is an ASCII text file. Data files are limited to 2 gigabytes in length. A data file can have any extension, CSPro does not assign an extension by default.
Note text can span multiple NOT file records. Each record will have the same initial fields (as described above) followed by the continued note text. Note text is always broken at word (space boundaries. There is an implied blank character between the note text in each note record for a field. Note text can contain "\n" characters indicating a new line (Enter key). If the note text is automatically wrapped in the note text box, there will be no new line characters.
435
The NOT file could be processed by another CSPro application by creating data dictionary for it. Notes can be created, editing, and deleted using the getnote, putnote, and editnote functions of CSPro.
436
Appendix
The Area Names File (.anm) is a text file that you can create using any text editor or word processor. Be sure you save this file with extension .anm. The Area Names File defines the hierarchical levels of geography and assigns text names to the numeric codes for each geographic unit. The items must be defined in the common part of the data dictionary and should be listed in order from major to minor division. See also: Create an Area Names File
437
438
Appendix
4 <comma> 5 36 Operator ID (as entered) 37 <comma> 38 47 Start date (mm/dd/yyyy) 48 <comma> 49 56 Start time (hh:mm:ss) 57 <comma> 58 65 End time (hh:mm:ss) 66 <comma> 67 74 Total time (End time Start time) (seconds) 75 <comma> 76 83 Pause time (seconds) 84 <comma> 85 92 Number of cases written 93 <comma> 94 101 Number of records written 102 <comma> 103 110 Number of keystrokes 111 <comma> 112 119 Number of bad keystrokes 120 <comma> 121 128 Number of fields with errors attributed to keyer 129 <comma> 130 137 Number of fields with errors attributed to verifyer 138 <comma> 139 146 Total number of fields verified
439
Index
write function ...................................... 404 - 63 Operator ................................................ 63 Operator Precedence ............................. 65 ! ! 63 Operator ................................................ 63 Operator Precedence ............................. 65 $ $ 59 % % 63 Operator ................................................ 63 Operator Precedence ............................. 65 %d ........................................................... 384 errmsg function ................................... 384 write function ...................................... 404 %f ............................................................ 384 errmsg function ................................... 384 write function ...................................... 404 %s............................................................ 384 errmsg function ................................... 384 . .ANM ...................................................... 436 Area Names File ................................. 436 .APP ........................................................ 143 In a Batch Edit Application................. 143 In a Data Entry Application .................. 74 Logic File ............................................ 434 .BCH ....................................................... 143 Batch Edit Application ........................ 143 Batch Edit Application File ................ 437 Batch Edit Applications .......................... 3 .DCF .......................................................... 33 441 * * 63 Operator ................................................ 63 Operator Precedence ............................. 65 Rounded to Zero Mask........................ 214 & & 63 Operator ................................................ 63 Operator Precedence ............................. 65 Truth Table............................................ 65
CSPro User's Guide Data Dictionary ........................... 5, 33, 34 Data Dictionary File ............................ 433 In a Batch Edit Application................. 143 In a Data Entry Application .................. 74 In aTabulation Application ................. 181 .ENC........................................................ 433 Binary Data Entry Application File .... 433 .ENT ........................................................ 434 Data Entry Application File ................ 434 Data Entry Applications .................... 3, 74 .FMF.......................................................... 74 Data Entry Applications .................... 3, 74 Form File......................................... 5, 434 .FQF ........................................................ 438 Frequency Specification File .............. 438 .FRQ ........................................................ 437 Frequency File .................................... 437 .LOG ....................................................... 438 Operator Statistics File ........................ 438 .LST ........................................................ 436 Listing File .......................................... 436 .MAP ....................................................... 245 Map File .............................................. 438 .MDF ....................................................... 245 Map Data File ..................................... 438 .MGF ....................................................... 143 In a Batch Edit Application................. 143 In a Data Entry Application .................. 74 Message File ....................................... 435 .MPC ....................................................... 245 .NOT ....................................................... 435 .ORD ....................................................... 143 Batch Edit Application ........................ 143 Order File ............................................ 437 .PFF ......................................................... 438 Program Information File ................... 438 Run Production Batch Edits ................ 164 Run Production Data Entry ................... 81 .QSF .......................................................... 74 In a Data Entry Application .................. 74 Question File ....................................... 435 .SVA........................................................ 439 Saved Arrays File ................................ 439 .TAB........................................................ 437 Table Matrices File .TAB ................... 437 .TAI ......................................................... 437
442
Index Table Matrices Index File .TAI .......... 437 .TBW....................................................... 436 Tables File ........................................... 436 .WRT ....................................................... 159 Create a Specialized Report ................ 159 .XTB........................................................ 181 Tabulation Application ....................... 181 Tabulation Application File ................ 436 Tabulation Applications .......................... 4 .XTS ........................................................ 181 Table Specifications File..................... 436 Tabulation Application ....................... 181 Tabulation Applications .......................... 4 / / 63 Operator ................................................ 63 Operator Precedence ............................. 65 [ [NoEdit] .................................................. 431 ^ ^ 63 Operator ................................................ 63 Operator Precedence ............................. 65 < < 63 Operator ................................................ 63 Operator Precedence ............................. 65 <= .............................................................. 63 Operator ................................................ 63 Operator Precedence ............................. 65 <=> ............................................................ 64 If and Only If ........................................ 64 Operator ................................................ 63 Operator Precedence ............................. 65 <> .............................................................. 63 Operator ................................................ 63 Operator Precedence ............................. 65 + + 63 Operator ................................................ 63 Operator Precedence ............................. 65 | | 63 Operator ................................................ 63 Operator Precedence ............................. 65 Truth Table............................................ 65
443
CSPro User's Guide = = 63 Operator ................................................ 63 Operator Precedence ............................. 65 > > 63 Operator ................................................ 63 Operator Precedence ............................. 65 >= .............................................................. 63 Operator ................................................ 63 Operator Precedence ............................. 65 A Abs Function ........................................... 360 Absolute .................................................... 46 Mode ..................................................... 36 Positioning ............................................ 46 Accept Function ...................................... 324 ActiveSync .............................................. 138 Add............................................................ 39 Dictionary Elements.............................. 39 Fields to a Form .................................... 90 Form ...................................................... 90 Identification items ............................... 25 Items in Dictionary ......................... 39, 40 Levels in Dictionary ........................ 39, 40 Lines or Boxes to a Form ...................... 92 Logic in Data Entry............................... 71 Pictures in CAPI Question Text.......... 126 Records in Dictionary ..................... 39, 40 Relations in Dictionary ......................... 46 Roster to a Form.................................... 91 Row or Column for Post Calculation .. 265 Table ................................................... 196 Text to a Form ....................................... 92 Things to a Roster ................................. 91 Value Sets in Dictionary ................. 39, 41 Values in Dictionary ....................... 39, 43 Variable to a Tabulation...................... 198 Add a Pagenote or Footnote to a Table ... 224 Add a Subtitle to a Table ........................ 226 Add a Variable to a Tabulation ............... 198 Add Borders to a Table ........................... 227 Add Borders to Cells............................... 232 Add Header/Footer Text to a Table ........ 225 Add or Modify Relations .......................... 46 Add Reader Breaks to a Table ................ 228
444
Index Add Stub Leadering to a Table ............... 226 Add Subtotals to a Table ......................... 290 Add Summary Statistics to a Table......... 206 Advance Statement ................................. 324 Align Text and Fields................................ 97 Bottom................................................... 97 Center .................................................... 97 Horizontal ............................................. 97 Left ........................................................ 97 Mid ........................................................ 97 Right...................................................... 97 Top ........................................................ 97 Vertical.................................................. 97 Alignment in Tables ................................ 232 Allow Partial Save .................................... 84 Alpha Statement ...................................... 309 Alphabetical List of Statements and Functions ............................................. 303 Alphanumeric .......................................... 310 Create a New Tabulation .................... 181 Array ................................................... 310 Insert or Drop a File .............................. 11 Data Type .............................................. 28 Installing Data Entry ........................... 410 Variables ............................................... 52 Matching to the Data Dictionary......... 100 And...................................................... 63, 65 Move Around a Logic Application ..... 112 Operator ................................................ 63 445 Operator Precedence ............................. 65 Truth Table............................................ 65 ANM ....................................................... 436 Area Names File ................................. 436 APP ......................................................... 434 In a Batch Edit Application................. 143 In a Data Entry Application .................. 74 Logic File ............................................ 434 Application................................................ 11 Add a File .............................................. 11 Save As ................................................. 13 Applications .............................................. 81 Batch Edit................................................ 3 Closing .................................................. 13 Compile ............................................... 114 Create a CSPro ........................................ 9 Create a New Batch Edit ..................... 143 Create a New Data Entry ...................... 74
CSPro User's Guide Open an Existing Dictionary Application ........................................................... 38 Run a Batch Edit ................................. 148 Description ............................................ 52 Run a Data Entry................................... 81 Ask for Operator ID .................................. 84 Save ....................................................... 13 Assignment Statement ............................ 320 Tabulation ............................................... 4 Assignment Statements ............................. 53 Apply Changes Across Panels ................ 250 Automatic ................................................ 150 Arabic........................................................ 89 Correction ........................................... 150 Text in Data Entry................................. 89 Edit Report .......................................... 159 Text in Tables ..................................... 237 Generation of Text in Tables .............. 214 Area ......................................................... 238 Skip ....................................................... 69 Create a Names File ............................ 238 Automatically Generate Data Entry Forms76 IDs Dialog Box ................................... 240 Average ................................................... 206 Processing ........................................... 237 Add Summary Statistics to a Table..... 206 Tabulate Only Certain Levels of Geography ....................................... 247 Area Captions.......................................... 241 Area Names File ..................................... 436 .ANM .................................................. 436 ANM ................................................... 436 Arithmetic operators ................................. 63 Array ....................................................... 310 Alphanumeric ...................................... 310 Numeric............................................... 310 Produce Summary Statistics ............... 176 Average Function .................................... 374 B Batch ....................................................... 145 Application Screen Layout ................. 145 Compile ............................................... 114 Logic View.......................................... 145 Message View ..................................... 145 Run an Edit Application...................... 148 Saved Array File ................................. 439 Arrays ........................................................ 52
446
Index Tree View............................................ 145 Batch Edit.................................................... 3 Applications ............................................ 3 Introduction ......................................... 143 Keyboard Summary ............................ 414 Menu Summary ................................... 420 Order ................................................... 149 Order or Executing Events .................. 149 Run Production Batch Edits ................ 164 Toolbar Summary ............................... 423 Tree ................................................. 8, 147 Window ................................................... 9 BCH ........................................................ 143 Batch Edit Application........................ 143 Batch Edit Application File ................ 437 Batch Edit Applications .......................... 3 Bell ............................................................ 89 Change Error Sound .............................. 89 Binary application ..................................... 83 Binary data entry application .................... 83 Binary Data Entry Application File (.ENC) ............................................................. 433 Blanks ..................................................... 372 Coming Back Later ............................. 123 Strip Function...................................... 372 447 C CAPI ....................................................... 116 Add Pictures in Question Text ............ 126 Breaking Off the Interview ................. 123 Change Formatting.............................. 125 Border ..................................................... 227 Add Borders to a Table ....................... 227 Add Borders to Cells........................... 232 Box ............................................................ 92 Adding to a Form .................................. 92 Change Field Box Size.......................... 88 Statement............................................. 320 Boxhead .................................................. 235 Change the Repeating of Boxheads .... 235 Formats for Printing ............................ 216 Parts of a Table ................................... 171 Break ....................................................... 315 Break Statement .................................. 315 Reader Breaks ..................................... 228 Breaking Off the Interview in CAPI ....... 123 By ............................................................ 315 Do Statement....................................... 315
CSPro User's Guide Create a New Application ................... 123 Create Conditional Questions ............. 127 Create Standard Forms ........................ 125 Display Questions Without Scrolling . 127 Enter Question Text ............................ 125 Features ............................................... 117 Full Screen Value Sets ........................ 129 Images in Value Sets ........................... 128 Organization of the Instrument ........... 122 Use Multiple Language ....................... 127 Using Multiple Languages .................. 122 CAPI Mode ............................................... 84 Caption .................................................... 241 Area Caption ....................................... 241 Formats for a Part of a Table .............. 209 Parts of a Table ................................... 171 Case ......................................................... 384 Errmsg Function.................................. 384 Skip Case Function ............................. 360 Case ID...................................................... 25 Identification Items ............................... 25 Case tree .................................................... 84 Show ..................................................... 84 Cases and Levels ....................................... 73 Cells ........................................................ 209 Formats for a Part of a Table .............. 209 Formatting Row Column and Cell Data ................. 211 Parts of a Table ................................... 171 Select in Table..................................... 261 Center Text and Fields .............................. 97 Change ...................................................... 84 Data Entry Options ............................... 84 Default Text Font .................................. 88 Edit Order............................................ 150 Error Sound ........................................... 89 Field Box Size ....................................... 88 Field Font .............................................. 88 Field Properties ................................... 102 Fonts and Colors in a Table ................ 231 Form Properties................................... 101 Formatting in CAPI............................. 125 Forms File Properties .......................... 100 Language or Components ................... 411 Level Properties .................................. 100 Order of Entry ....................................... 84
448
Index Print Page Setup .................................... 11 Roster Column Heading Properties .... 104 Roster Occurrence Labels ................... 105 Roster Properties ................................. 103 Row Heading Properties ..................... 105 Table Title ........................................... 220 Text Properties .................................... 106 Unit of Tabulation ............................... 283 View ...................................................... 11 Windows ............................................... 11 Change Indentation and Alignment of Items ............................................................. 232 Change Stub Column Position ................ 236 Form .................................................... 101 Change the Automatically Generated Text ............................................................. 230 Change the number of Decimal Places Displayed ............................................ 223 Change the Repeating of Boxheads ........ 235 Percent................................................. 204 Change the Way Numbers are Displayed 229 Column Head .......................................... 211 Character ................................................... 29 Format Column data in a Table ..... 211 Decimal ................................................. 29 Formats for a Part of a Table .............. 209 Check box ................................................. 94 Hide/Show Columns in a Table .......... 221 Checking errors ....................................... 109 Parts of a Table ................................... 171 Choose Topic Sections ............................ 130 Columns .................................................. 211 Clear Function ......................................... 383 449 Text ..................................................... 106 Column .................................................... 265 Add for Post Calculation..................... 265 Close ......................................................... 13 An Application ...................................... 13 Function .............................................. 394 Cmcode Function .................................... 361 Code Edits of Individual Data Items ....... 167 Coding Standards .................................... 167 Define .................................................. 167 Cold Deck ................................................... 3 Batch Edit Applications .......................... 3 Static Imputation ................................. 152 Color ....................................................... 231 Change Colors in a Table .................... 231
CSPro User's Guide Format Column data in a Table ..... 211 Hide/Show Columns in a Table .......... 221 Join and Split in a Roster ...................... 99 Spacing................................................ 250 Variables ............................................. 183 Combo box ................................................ 94 Coming Back Later [CAPI] .................... 123 Comments ................................................. 58 About..................................................... 58 In Data Dictionary................................. 21 Common Uses of Tabulation Applications ............................................................. 174 Compare ...................................................... 5 Number to string ................................. 368 Data ......................................................... 5 Shape to Map .......................................... 5 Function .............................................. 367 String to number ................................. 373 Compile Logic .......................................... 57 Converting............................................... 425 Compiler ................................................... 57 A data dictionary ................................. 425 Set Defaults ........................................... 57 An IMPS Data Entry Application ....... 427 Concat Function ...................................... 367 An ISSA Data Entry Application........ 427 Concatenate ................................................. 5 Within IMPS ....................................... 425 Data ......................................................... 5 Within ISSA ........................................ 426 Conditions ................................................. 61 Copy .......................................................... 13 Confirm End-of-Case ................................ 84 Application............................................ 13 Consistency Checks .................................... 3 450 Consistency Edits .................................... 109 Consolidation .......................................... 243 Custom ................................................ 243 Run Consolidate in Batch ................... 279 Run Consolidate Interactively............. 278 Run in Parts ......................................... 275 Controlling Program Flow ...................... 327 Endgroup Statement ............................ 327 Endlevel Statement ............................. 327 Convert ........................................................ 5 Dictionary ............................................... 5 Items to Subitems .................................. 46
Index Copy and Paste Table Specification ... 178 Copy Table Data to a Spreadsheet or Word Processor ............................... 264 Cut or Paste Things ............................... 98 Conditional Questions in CAPI .......... 127 Dictionary ............................................. 47 Logic ..................................................... 56 Select and Copy Table Data to Other Applications .................................... 261 Table to Other Formats ....................... 178 Copy Table Data to a Spreadsheet or Word Processor ............................................. 264 Correction ............................................... 152 Create General Helps .............................. 131 Count Function........................................ 374 Create Helps for Fields ........................... 128 Countnonspecial Function ...................... 361 Create Multiple Subtables ....................... 179 Create ...................................................... 183 Cross Tabulation ..................................... 183 A CSPro Application .............................. 9 Applications ............................................ 4 A Dictionary for a New File ................. 33 Create an Application ......................... 181 A Dictionary for an Existing File.......... 34 Creating ............................................... 183 A New Application ................................. 9 Creating a Table .................................. 184 A New Batch Edit Application ........... 143 Definition ............................................ 175 A New CAPI Application ................... 123 Introduction ......................................... 171 A New Data Entry Application ............. 74 Keyboard Summary ............................ 415 A New Tabulation Application ........... 181 Using Relations ................................... 288 A Roster ................................................ 91 CSBatch .................................................. 164 A Specialized Report .......................... 159 CSPro .......................................................... 2 A Table................................................ 183 451 Standard Forms in CAPI ..................... 125 Thematic Maps........................................ 2 Create Dictionary with No Record Types . 46 Create Fills In Questions......................... 125 A Table With Multiple Variables ....... 184 A Thematic Map of Results ................ 245 An Area Names File............................ 238
CSPro User's Guide Capabilities ............................................. 2 Data Requirements ................................ 49 General Menu Summary ..................... 417 Initial Screen Layout ............................... 7 Introduction ............................................. 1 Toolbar Summary ............................... 421 Tools ....................................................... 5 What is .................................................... 1 CSPro Application ...................................... 9 Create ...................................................... 9 CSPro Program Structure.......................... 50 Declaration Section ............................... 50 Procedural Section ................................ 50 Curocc Function ...................................... 375 Custom Consolidation............................. 243 Custom Special Values ........................... 203 Custom Text ............................................ 220 Cut ............................................................. 98 Copy or Paste Things ............................ 98 D Data ............................................................. 5 Compare .................................................. 5 Concatenate ............................................. 5 CSPro Requirements ............................. 49 Export...................................................... 5 Reformat ................................................. 5 Sort .......................................................... 5 Data Dictionary ........................................... 5 Creating for a New File......................... 33 Creating for an Existing File ................. 34 Introduction ........................................... 17 Keyboard Summary ............................ 412 Labels .................................................... 21 Levels .................................................... 21 Menu Summary ................................... 417 Names ................................................... 21 Screen layout ......................................... 34 Toolbar Summary ............................... 422 Tree ....................................................... 36 Data Edit Application ............................. 143 Creating ............................................... 143 Data Entry ................................................. 71 Add Logic ............................................. 71 Application File [.ENT] ...................... 434 Application Keys ................................ 413 Applications ............................................ 3
452
Index Create a New Application ..................... 74 Elements ................................................ 72 Errors..................................................... 70 Forms Screen Layout ............................ 78 Installation........................................... 410 Logic Screen Layout ........................... 110 Menu Summary ................................... 418 Order of Executing Events .................. 112 Path ....................................................... 71 Run Production ..................................... 81 Toolbar Summary ............................... 422 Tree ................................................... 8, 80 Window ................................................... 9 Data Entry Operator Mode...................... 325 Add...................................................... 325 Modify................................................. 325 Verify .................................................. 325 Data Entry Philosophies ............................ 69 Heads-Down Keying ............................. 69 Heads-Up Keying.................................. 69 Data file................................................... 435 Size........................................................ 19 Type Structure....................................... 19 Data File Index .IDX............................... 435 Data File Organization .............................. 19 About..................................................... 19 Records ................................................. 23 Data File Status ....................................... 436 Data Items ................................................. 59 Data Organization ..................................... 17 Data Records ............................................. 23 Data Type .................................................. 28 Data Validation ........................................... 3 DataEntryIDs ............................................ 81 Date ......................................................... 390 Datediff Function ................................ 383 Sysdate Function ................................. 390 Date capture type ...................................... 94 DCF ........................................................... 33 Data Dictionary ........................... 5, 33, 34 In a Batch Edit Application................. 143 In a Data Entry Application .................. 74 In a Tabulation Application ................ 181 Debug ........................................................ 51 CSPro Programs .................................... 51 Table totals .......................................... 207
453
CSPro User's Guide Decimal ..................................................... 29 Character ............................................... 29 Decimal Places in a Table ................... 223 Places .................................................... 29 Symbol in Tables ................................ 214 DeckArrays ............................................. 154 Declaration Section ................................... 50 Default..................................................... 256 Preferences and Default Formats ........ 256 Reset Format of Table Item to Default 235 Special Values ....................................... 62 Text Font ............................................... 88 Define...................................................... 200 A Universe .......................................... 200 Coding Standards ................................ 167 Dictionary Type .................................... 37 Languages in CAPI ............................. 124 Delcase Function..................................... 394 Delete ........................................................ 44 Dictionary Elements.............................. 44 Form Elements ...................................... 99 Item ....................................................... 44 Level ..................................................... 44 Record ................................................... 44 Table ................................................... 196 Value ..................................................... 44 Value Set ............................................... 44 Delete Function ....................................... 376 Delimiters .................................................. 58 Demode Function .................................... 325 Denom ..................................................... 384 Errmsg Function.................................. 384 Deploy PPC Application ......................... 138 Description ................................................ 72 Fields ..................................................... 72 Forms .................................................... 72 Rosters................................................... 72 Design a Form ........................................... 73 Issues ..................................................... 73 Develop Comprehensive Test File .......... 168 Dictionary ................................................. 37 About....................................................... 5 Adding Elements ................................... 39 Conversion .............................................. 5 Converting........................................... 425 Creating ................................................. 34
454
Index Delete .................................................... 44 External ................................................. 37 Hierarchy............................................... 20 Inserting Elements ................................ 44 Introduction to Data Dictionary ............ 17 Do Statement........................................... 315 Main ...................................................... 37 Document Dictionary Elements ................ 45 Modify................................................... 39 Drag Option Menu .................................... 76 Moving Around ..................................... 38 Require Enter Key................................. 76 Moving Elements .................................. 45 Roster Options ...................................... 76 Notes ..................................................... 45 Text Options.......................................... 76 Print ....................................................... 46 Use Sub-Items ....................................... 76 Save As ................................................. 47 Draw Boxes on a Form ............................. 92 Select Elements ..................................... 44 Drop down ................................................ 94 Special Output....................................... 37 Drop Files from an Application ................ 11 Tree ......................................................... 8 Dump....................................................... 203 Types ..................................................... 37 Undefined Values................................ 203 Viewing Layout .................................... 39 Dynamic Imputation (Hot Deck) ............ 153 Window ................................................... 9 Working ................................................ 37 Edit .......................................................... 147 Disjoint Categories.................................. 292 Batch Tree ........................................... 147 In Value Sets ....................................... 292 Logic ..................................................... 56 Display Function ..................................... 384 Reports .................................................... 3 Display Orientation ................................. 326 Specifications ...................................... 151 455 E Display Results for One Geographic Area ............................................................. 246 Distribute Finished Tables to Other Users ............................................................. 263 Display Questions Without Scrolling in CAPI ................................................... 127
CSPro User's Guide Edit Function ........................................... 368 Edit Order File [.ORD] ........................... 437 Edit Report .............................................. 159 Automatic ............................................ 159 Specialized .......................................... 159 Editing ......................................................... 3 Editnote ................................................... 326 Else.......................................................... 317 If Statement ......................................... 317 Elseif ....................................................... 317 If Statement ......................................... 317 ENC......................................................... 433 Binary Data Entry Application File .... 433 End .......................................................... 313 Function Statement ............................. 313 Endcase Statement .................................. 357 Enddo ...................................................... 315 Do Statement....................................... 315 For Statement ...................................... 317 While Statement .................................. 319 Endgroup ................................................. 327 Endif........................................................ 317 If Statement ......................................... 317 Endlevel Statement ................................. 327 Endnote ................................................... 224 Add a Pagenote or Footnote ................ 224 Formats for a Part of a Table .............. 209 Parts of a Table ................................... 171 EndRecode .............................................. 320 Recode Statement................................ 320 Endsect Statement ................................... 327 ENT ......................................................... 434 Data Entry Application File ................ 434 Data Entry Applications .................... 3, 74 Enter ............................................................ 2 Modify and Verify Data .......................... 2 Question Text in CAPI........................ 125 Enter Key .................................................. 84 Required ................................................ 84 Enter Statement ....................................... 328 Errmsg Function...................................... 384 Error Sound ............................................... 89 Change .................................................. 89 Errors....................................................... 428 In Censuses and Surveys..................... 428 In Data Entry ......................................... 70
456
Index Events........................................................ 50 Order of Executing Batch Edit ............ 149 Order of Executing Data Entry ... 112, 149 Examine ...................................................... 2 Data Files ................................................ 2 Editing Results ........................................ 2 Exclude ................................................... 203 Special Values in a variable ................ 203 Tables from Run ................................. 206 ExecPFF Function................................... 387 Execsystem Function .............................. 386 Executable Statements .............................. 53 Existing Application ................................. 10 Open ...................................................... 10 Exit Statement ......................................... 316 Exp .......................................................... 362 Explicit Mode............................................ 51 Export.......................................................... 5 Data ......................................................... 5 Export Statement ..................................... 357 Expressions ............................................... 61 Extended Controls................................... 117 External Dictionary ................................... 37 F Facing Pages ........................................... 249 Field .......................................................... 88 Change Box Size ................................... 88 Change Font .......................................... 88 Change Properties ............................... 102 Name ..................................................... 21 Field Capture Type ................................... 94 Check Box ............................................. 94 Combo Box ........................................... 94 Date ....................................................... 94 Drop Down............................................ 94 Radio Button ......................................... 94 Text Box................................................ 94 Field Properties ......................................... 93 Mirror .................................................... 93 Persistent ............................................... 93 Protected ............................................... 93 Sequential.............................................. 93 Upper Case ............................................ 93 External Files ............................................ 66 About..................................................... 66 Sharing .................................................. 66
457
CSPro User's Guide Fields ....................................................... 121 Add to a Form ....................................... 90 Align ..................................................... 97 Description ............................................ 72 File .......................................................... 147 Add to an Application ........................... 11 Data Entry Application File .ENT ...... 434 Data Dictionary ..................................... 17 Edit Order File .ORD .......................... 437 Data Items ............................................. 17 Form File .FMF................................... 434 Identification ......................................... 17 Frequency File .FRQ ........................... 437 Organization ...................................... 5, 17 Frequency Specification File .FQF ..... 438 Program Information (.PFF) ............... 164 Listing File .LST ................................. 436 Records ................................................. 17 Logic File .APP................................... 434 Types ................................................... 430 Map Data File .MDF ........................... 438 Value Sets ............................................. 17 Map File .MAP ................................... 438 File Statement ......................................... 309 Message File .MGF ............................. 435 Fileconcat Function ................................. 395 Notes [.NOT] ...................................... 435 Filecopy Function ................................... 395 Operator Statistics File .LOG ............. 438 Filecreate Function.................................. 396 Program Information File .PFF ........... 438 Filedelete Function.................................. 397 Question File .QSF.............................. 435 Fileexist Function.................................... 396 Saved Arrays File .SVA...................... 439 Filename Function .................................. 397 Table Specifications File .XTS ........... 436 Fileread Function .................................... 397 Tables File .TBW ................................ 436 Filerename Function ............................... 398 Tabulation Application File .XTB ...... 436 458 Files ........................................................... 52 Area Names File .ANM ...................... 436 Batch Edit Application File .BCH ...... 437 Data Dictionary File .DCF .................. 433 Data Entry Application File (Binary) .ENC................................................ 433
Index Filesize Function ..................................... 398 Filewrite Function ................................... 399 Find and Replace Logic ............................ 57 Find Dictionary Elements ......................... 45 Find Function .......................................... 399 Finding .................................................... 150 Errors................................................... 150 Fit Columns ............................................. 250 Flow of Program ..................................... 327 endgroup statement ............................. 327 endlevel statement ............................... 327 FMF........................................................... 74 Data Entry Applications .................... 3, 74 Form File......................................... 5, 434 Folio Text ................................................ 216 Font ........................................................... 88 Change Field ......................................... 88 Change Fonts in a Table ..................... 231 Default Text .......................................... 88 Field ...................................................... 88 Printer Font ........................................... 12 Footer ........................................................ 11 Change Print Page Setup....................... 11 Footnote .................................................. 224 For Statement .......................................... 317 Force out-of-range .................................... 84 Form ............................................................ 5 Adding................................................... 90 Adding Fields ........................................ 90 Adding Lines or Boxes ......................... 92 Adding Text .......................................... 92 Delete Elements .................................... 99 File [.FMF].......................................... 434 Form Design Issues ................................... 73 Format ..................................................... 214 Application.......................................... 214 For a Table .......................................... 213 For a Table Object .............................. 209 Row Column or Cell Data ............... 211 Rows/Columns in Subgroupings......... 293 Run Format in Batch ........................... 281 Run Format Interactively .................... 280 Tables for Printing .............................. 216 Forms ...................................................... 120 Description ............................................ 72 Design ..................................................... 5
459
CSPro User's Guide Tree ................................................... 8, 80 Window ................................................... 9 FQF ......................................................... 438 Frequency Specification File .............. 438 Frequencies ................................................. 5 FRQ ......................................................... 437 Frequency File .................................... 437 Full Screen ................................................ 11 Full Screen Value Sets (CAPI) ............... 129 FullScreen ................................................. 81 Function Statement ................................. 313 Functions ................................................... 53 Alphabetical Listing ............................ 303 Numeric............................................... 361 User Defined ......................................... 53 G General Issues ......................................... 166 General Menu Summary ......................... 417 Generate Binary Data Entry Application .. 83 Generate Default Data Entry Forms ......... 76 Generate Numeric Value Sets ................... 42 Generated Text ........................................ 214 In Tables.............................................. 214 Geographic .............................................. 240 Area Tabulation .................................. 240 Map Results by Areas ......................... 179 Processing ........................................... 237 Get Help .................................................... 12 Getbuffer Function .................................. 368 Getcapturetype Function ......................... 328 Getdeck Function .................................... 359 Getlabel Function .................................... 387 Getlanguage Function ............................. 329 Getnote Function..................................... 329 GetOperatorId Function .......................... 329 Getorientation Function .......................... 326 Getrecord Function ................................. 330 Getsymbol Function ................................ 388 Getusername Function ............................ 330 Global........................................................ 52 Arrays .................................................... 52 Mode ..................................................... 51 Numeric Statement.............................. 309 Procedure .............................................. 50 Set Statment ........................................ 308 User Defined Functions ........................ 53
460
Index Variables ............................................... 52 Goto......................................................... 250 Print Preview Options ......................... 250 GPS Function .......................................... 330 Guidelines for Correcting Data ............... 151 H Handle Don t Know and Refused ........... 129 Handle Multiple Answers ....................... 130 Handle Undefined Values ....................... 203 Hardware and Software Requirements ... 407 Header ....................................................... 11 Heads-Down Keying ................................. 69 Heads-Up Keying...................................... 69 Help ........................................................... 12 Support .................................................. 12 Hidden Parts ............................................ 219 Hide or Change the Position of the Total 204 Hide or Show a Row or Column ............. 221 Hide Rows Containing All Zeros ............ 223 Hiding Rows and Columns in Subgroupings ............................................................. 293 Hierarchy..................................................... 5 Images in Value Sets (CAPI) .................. 128 Dictionary ............................................. 20 High Function ......................................... 363 Implications of Data Dictionary Value Names ................................................. 186 461 I Identification ............................................. 17 Data Dictionary ..................................... 17 File ........................................................ 17 Items ...................................................... 25 Questionnaire ........................................ 17 IDs Dialog Box ....................................... 240 If and Only If ............................................ 64 Operator .......................................... 63, 64 Operator precedence ............................. 65 If Statement ............................................. 317 Highlighted Function .............................. 332 Hot Deck ..................................................... 3 Batch Edit Applications .......................... 3 DeckArrays ......................................... 154 Dynamic Imputation [Hot Deck] ........ 153 Initialize From Saved Array................ 161 Initialize In Program Logic ................. 160 Using ................................................... 160 HTML ..................................................... 264 Prepare Tables for Posting to the Web 264
CSPro User's Guide Implicit Mode............................................ 51 IMPS ....................................................... 425 Converting a Data Dictionary ............. 425 Converting a Data Entry Application . 427 Imputation ............................................... 152 About................................................... 152 Cold Deck ........................................... 152 Correcting Errors ................................ 152 DeckArrays ......................................... 154 Dynamic Hot Deck ......................................... 153 Hard-Coded ......................................... 152 In Batch Edit Applications ...................... 3 Static ................................................... 152 Using Hot Decks ................................. 160 Impute ..................................................... 148 Freq File .............................................. 148 Function .............................................. 322 In 317 If Statement ......................................... 317 Newer Version .................................... 410 Operator ................................................ 64 Uninstalling CSPro ............................. 409 Operator Precedence ............................. 65 Int Function ............................................. 363 Inc Function ............................................ 363 Interactive ................................................. 81 462 Include Percents ...................................... 204 Inconsistencies ........................................ 150 Indent ...................................................... 232 Change Indentation or Alignment ....... 232 Insert ......................................................... 11 Add File to an Application.................... 11 Data Item ............................................... 44 Dictionary Elements.............................. 44 File in an Application............................ 11 Function .............................................. 376 Level ..................................................... 44 Record ................................................... 44 Table ................................................... 196 Value ..................................................... 44 Value Set ............................................... 44 Installing ................................................. 407 CSPro .................................................. 407 Data Entry Applications ...................... 410 Limiting the Installation to Data Dissemination or Data Entry ........... 412
Index Interactive Editing....................................... 2 Interpret Reports ..................................... 162 Introduction to Production Tabulations .. 273 Introduction to Run in Parts .................... 275 Introduction to......................................... 143 Batch Editing ...................................... 143 CAPI ................................................... 116 CSPro ...................................................... 1 CSPro Language ................................... 49 Data Dictionary ..................................... 17 Data Entry ............................................. 69 Data Entry Editing .............................. 107 Forms Design ........................................ 90 Table Post Calculation ........................ 264 Tabulation ........................................... 171 Invalueset Function ................................. 388 Ispartial Function .................................... 332 ISSA ........................................................ 426 Converting a Data Dictionary ............. 426 Converting a Data Entry Application . 427 Issues to Consider When Designing a Form ............................................................... 73 Item ........................................................... 39 Tabulate............................................... 187 Adding................................................... 39 463 Convert to Subitem ............................... 46 Data Type ........................................ 27, 28 Decimal Character .......................... 27, 29 Decimal Places ................................ 27, 29 Delete .................................................... 44 Description ............................................ 25 Edit Tree.............................................. 147 Find ....................................................... 45 Insert ..................................................... 44 Label ............................................... 21, 27 Length ............................................. 27, 28 Modify................................................... 39 Name ............................................... 21, 27 Notes ..................................................... 45 Occurrences..................................... 27, 28 Properties .............................................. 27 Search .................................................... 45 Select ..................................................... 93 Starting Position .................................... 27 Type ................................................ 26, 27 Zero Fill .......................................... 27, 29 Item with Multiple Occurrences ............. 187
CSPro User's Guide J Join and Split Roster Columns .................. 99 K Key Function ................................... 400, 413 Keyboard Summary ................................ 414 Batch Edit............................................ 414 Data Dictionary ................................... 412 Data Entry ........................................... 413 Tabulation ........................................... 415 Keying ....................................................... 69 Heads-Down ......................................... 69 Heads-Up .............................................. 69 Skips Issues ........................................... 69 Killfocus Statement ................................. 332 L Labels ........................................................ 21 Data Dictionary ..................................... 21 Languages ............................................... 124 Define in CAPI ................................... 124 Getlanguage Function ......................... 329 Setlanguage Function .......................... 348 Layout ......................................................... 7 Initial Screen ........................................... 7 Screen .................................................. 145 View Dictionary .................................... 39 Leadering ................................................ 226 Stub ..................................................... 226 Length ....................................................... 28 Function .............................................. 369 Item ....................................................... 28 Level ......................................................... 39 Adding................................................... 39 Delete .................................................... 44 Description ............................................ 21 Edit Tree.............................................. 147 Find ....................................................... 45 Insert ..................................................... 44 Label ..................................................... 22 Modify................................................... 39 Name ..................................................... 22 Notes ..................................................... 45 Properties .............................................. 22 Search .................................................... 45 Levels and Cases ....................................... 73 Lines.......................................................... 92 Adding to a Form .................................. 92
464
Index Adding to a Table................................ 232 Linked Value Sets ..................................... 41 List of reserved words ............................. 306 Listing File .............................................. 148 ListingWidth ........................................... 164 Load and Save Formatting Preferences .. 177 Loadcase Function .................................. 400 Loading and Saving Preferences ............. 258 Locate Function ...................................... 401 Lock .......................................................... 81 Locking Application Files....................... 431 Log .......................................................... 364 Operator Statistics File ........................ 438 Logic ....................................................... 434 Batch Edit Applications .......................... 3 Editing ................................................. 149 File .APP ............................................. 434 In Batch Edit Applications ...................... 3 In Data Entry Applications ..................... 3 View .............................................. 56, 145 Logical ...................................................... 61 Expressions ........................................... 61 Operators ............................................... 63 Lookup Files ............................................. 66 Using ..................................................... 66 Low Function .......................................... 364 Lowest Break Level ................................ 193 LST ......................................................... 436 Listing File .......................................... 436 M Main Dictionary ........................................ 37 Type ...................................................... 37 Make Captions Span Data Cells ............. 234 Maketext Function .................................. 370 Manipulate Automatic Reports ............... 159 Manipulate Data Files ................................. 2 Manual .................................................... 150 Correction ........................................... 150 Skip ....................................................... 69 Map ......................................................... 245 Create a Thematic Map ....................... 245 Data File .MDF ................................... 438 Map File .............................................. 438 Results by Geographic Area ............... 179 Viewer ..................................................... 5 Margins ..................................................... 11
465
CSPro User's Guide Matching the Application to the Data Dictionary ........................................... 100 Mathematical operators ............................. 63 Message File ........................................... 435 Max Function .......................................... 377 .MGF ................................................... 435 Maximum ................................................ 206 About..................................................... 67 Add Summary Statistics to a Table..... 206 In Batch Edit Applications ...................... 3 Number of Record................................. 25 In Data Entry Applications ..................... 3 Produce Summary Statistics ............... 176 Message View ......................................... 145 Record Properties .................................. 23 MessageWrap .......................................... 164 Maxocc Function .................................... 378 Methods of Correcting Data.................... 150 MDF ........................................................ 438 MGF ........................................................ 143 Map Data File ..................................... 438 In a Batch Edit Application................. 143 Mean ....................................................... 206 In a Data Entry Application .................. 74 Add Summary Statistics to a Table..... 206 Message File ....................................... 435 Produce Summary Statistics ............... 176 Min Function ........................................... 378 Median .................................................... 206 Minimum................................................. 206 Add Summary Statistics to a Table..... 206 Add Summary Statistics to a Table..... 206 Produce Summary Statistics ............... 176 Produce Summary Statistics ............... 176 Menu Summary ....................................... 420 Mirror Fields ............................................. 93 Batch Editing ...................................... 420 Missing...................................................... 62 Data Dictionary ................................... 417 Special Values ....................................... 62 Data Entry ........................................... 418 Mode ......................................................... 51 General ................................................ 417 Absolute and Relative ........................... 36 Tabulation ........................................... 420 466 Merge Cells ............................................. 234 Make Captions Span Data Cells ......... 234
Index Add Summary Statistics to a Table..... 206 Compiler ............................................... 51 Explicit .................................................. 51 Implicit .................................................. 51 Produce Summary Statistics ............... 176 Modify..................................................... 325 Demode Function ................................ 325 Dictionary Elements.............................. 39 Items ................................................ 39, 40 Levels .............................................. 39, 40 Records ........................................... 39, 40 Relations in Dictionary ......................... 46 Row and Column Spacing for Printing 250 Tabulation Preferences........................ 257 Value Sets ............................................. 39 Value Sets in Dictionary ....................... 41 Values ................................................... 39 Values in Dictionary ............................. 43 Modify or Add Dictionary Elements ........ 39 Modulo Operator....................................... 63 Move ......................................................... 38 Around a Dictionary ............................. 38 Next ......................................................... 352 Around a Logic Application ............... 112 Skip Statement .................................... 352 467 Between Tables ................................... 197 Dictionary Elements.............................. 45 Things in a Form ................................... 96 Move Statement ...................................... 333 Moving Around a Logic Application ...... 112 Multiple ................................................... 187 Occurrences Tabulate........................................... 187 Record Types ........................................ 19 Selection................................................ 44 Tabulate Items ..................................... 187 Value Ranges ........................................ 31 Multiple records ........................................ 73 N Name of File ........................................... 397 Filename function ............................... 397 Names ....................................................... 21 Data Dictionary ..................................... 21 In Tree ................................................... 11 Navigating a Dictionary ............................ 38 Navigating Between Pages Tables and Areas ............................................................. 248
CSPro User's Guide Statement............................................. 318 Noccurs Function .................................... 379 NoFileOpen ............................................... 81 Noinput Statement .................................. 334 Not........................................................... 435 Applicable Value .................................. 62 Operator ................................................ 63 Operator Precedence ............................. 65 Notappl...................................................... 62 Special Values ....................................... 62 Notes ......................................................... 21 Adding................................................... 21 Document Dictionary Elements ............ 45 Notes File [.NOT] ................................... 435 N-tiles...................................................... 206 Add Summary Statistics to a Table..... 206 Produce Summary Statistics ............... 176 Number ................................................... 368 Convert to string ................................. 368 Decimal Places ...................................... 29 Numbers ................................................ 60 Numeric................................................... 310 Array ................................................... 310 O Occurrences............................................... 73 Item ....................................................... 28 Tabulate Items with Ocurrences ......... 187 Onfocus Event ......................................... 334 Onfocus Statement .................................. 334 Onkey Global Function ........................... 335 Onstop Global Function .......................... 338 Open .......................................................... 10 An Existing Application ....................... 10 An Existing Dictionary Application ..... 38 Function .............................................. 401 Operator .................................................... 84 Ask for Operator ID .............................. 84 Statistics File .LOG............................. 438 Vs System Controlled ........................... 71 Operators ................................................... 63 And/Or Truth Table .............................. 65 Arithmetic ............................................. 63 Expressions ........................................... 61 Item ....................................................... 28 Statement............................................. 309 Variables ............................................... 52
468
Index If and Only If ........................................ 64 In Expression ........................................ 64 Logical .................................................. 63 Precedence ............................................ 65 Relational .............................................. 63 Option ....................................................... 57 Set Explicit ............................................ 57 Set Implicit ............................................ 57 Or .............................................................. 63 Operator ................................................ 63 Operator Precedence ............................. 65 Truth Table............................................ 65 ORD ........................................................ 143 Batch Edit Application........................ 143 Order File ............................................ 437 Order ....................................................... 149 Batch Edit............................................ 149 Executing Batch Edit Events .............. 149 Executing Data Entry Events .............. 112 Fields and Forms ................................... 84 File .ORD ............................................ 437 Organization ................................................ 5 Data Dictionary ....................................... 5 Data File ................................................ 19 Data File Type Structure ....................... 19 Questionnaire and Dictionary ............... 17 Organization of the Instrument in CAPI . 122 Organize Forms ....................................... 125 Output File .............................................. 148 Overlapping Value Sets .......................... 186 P Pack an Application .................................. 14 Page Break .............................................. 250 Print Preview Options ......................... 250 Page Numbering...................................... 177 Pagenote .................................................. 224 Add a Pagenote or Footnote ................ 224 Formats for a Part of a Table .............. 209 Parts of a Table ................................... 171 Parameter ................................................ 164 PFF ...................................................... 164 Run ........................................................ 81 Sysparm Function ............................... 391 Partial Save ............................................... 84 Allow..................................................... 84 Parts......................................................... 275
469
CSPro User's Guide Run in Parts ......................................... 275 Parts of a Table ....................................... 171 Paste .......................................................... 98 Copy or Cut Things............................... 98 Paste Table Specification .................... 178 Path ........................................................... 71 Off ......................................................... 71 On.......................................................... 71 Pathname Function.................................. 389 PDA......................................................... 132 Percentile................................................. 206 Add Summary Statistics to a Table..... 206 Produce Summary Statistics ............... 176 Percents ................................................... 204 Including in Tables ............................. 204 Only..................................................... 204 Proportions .......................................... 188 Persistent Fields ........................................ 93 PFF .......................................................... 164 Parameter ...................................... 81, 164 Program Information File ................... 438 Run Production Batch Edits ................ 164 Run Production Data Entry ................... 81 Run Production Tabulation ................. 273 Sysparm Function ............................... 391 Pictures .................................................... 126 Add in CAPI Question Text ................ 126 Pocket PC ................................................ 132 Deploy application .............................. 138 Install CSPro ....................................... 133 Introduction ......................................... 132 Requirements ...................................... 132 Retrieve data files ............................... 141 Run application ................................... 139 Write application ................................. 136 Write CSPro application ..................... 136 Pos function ............................................ 371 Poschar Function..................................... 372 Position ................................................... 204 Change the Position of the Total ......... 204 Item ....................................................... 27 Within a String .................................... 371 Positioning ................................................ 46 Relative or Absolute ............................. 46 Post Calculation ...................................... 265 Adding Rows and Columns For .......... 265
470
Index For Indvidual Cells ............................. 266 For Rows Columns and Ranges .......... 269 Introduction to Table Post Calculation 264 Row and Column Indexing ................. 271 Postcalc ................................................... 264 Table Post Calculation ........................ 264 Postproc Statement.................................... 55 PPC ......................................................... 132 Preferences .............................................. 256 Default Formats .................................. 256 Load and Save ..................................... 177 Modifying ........................................... 257 Sharing ................................................ 259 Prepare Tables for Posting to the Web ... 264 Preproc Statement ..................................... 54 Preview ..................................................... 12 Printing.................................................. 12 Table ................................................... 254 Print ........................................................... 12 All or Part of a Document ..................... 12 Change Font .......................................... 12 Change Page Setup ............................... 11 Dictionary file ....................................... 46 Preview ............................................... 254 Tables .................................................. 254 Print Only Selected Tables or Pages ....... 256 Print Preview Options ............................. 250 Print Setup............................................... 253 Printer........................................................ 11 Footer .................................................... 11 Header ................................................... 11 Margins ................................................. 11 Proc Statement .......................................... 54 Procedure Section ..................................... 50 Process Census or Survey Data................... 2 Produce Summary Statistics ................... 176 Produce Tables by Geographic Area ...... 178 Production ............................................... 168 Begin Production Editing.................... 168 Run Production Batch Edits ................ 164 Run Production Data Entry ................... 81 Run Production Tabulation ................. 273 Program Flow.......................................... 327 Program Information File ......................... 68 Properties ................................................ 102 Change Field ....................................... 102
471
CSPro User's Guide Change Form....................................... 101 Change Forms File .............................. 100 Change Level ...................................... 100 Change Roster ..................................... 103 Change Roster Column Heading ........ 104 Change Text ........................................ 106 Field ...................................................... 93 Item ....................................................... 27 Level ..................................................... 22 Questions................................................. 121 Record ................................................... 23 R Value ..................................................... 31 Radio button .............................................. 94 Value Set ............................................... 30 Random ................................................... 364 Proportion ............................................... 188 Randomin Function ................................. 365 Protected Fields ......................................... 93 Randomizevs Function............................ 340 Putdeck Function .................................... 359 Ranges ....................................................... 31 Putnote .................................................... 339 Multiple Value ...................................... 31 Q Ratio ........................................................ 188 QSF ........................................................... 74 Proportions .......................................... 188 In a Data Entry Application .................. 74 Table Post Calculation ........................ 264 Question File ....................................... 435 Reader Breaks ......................................... 228 Question .................................................. 435 Rearrange Things in a Form ..................... 96 File .QSF ............................................. 435 Recode Statement.................................... 320 Questionnaire ............................................ 17 Recodes ................................................... 297 472 Form ...................................................... 17 Identification ......................................... 17 Identification Items ............................... 25 Organization .......................................... 17 Questions............................................... 17 Responses .............................................. 17 Section................................................... 17 Questionnaire and Dictionary Organization ............................................................... 17
Index In Tables Using Value Sets and Subtables ......................................................... 297 Using Table Logic............................... 284 Relation Statement .................................. 312 Reconciling Dictionary Changes .............. 38 Relational operators .................................. 63 Record ..................................................... 147 Relations ................................................... 46 Adding................................................... 40 Add and Modify .................................... 46 Delete .................................................... 44 Description ............................................ 32 Description ............................................ 23 In Tabulation ....................................... 288 Find ....................................................... 45 Properties .............................................. 32 Insert ..................................................... 44 Relative ..................................................... 36 Label ..................................................... 21 Mode ..................................................... 36 Max ....................................................... 23 Positioning ............................................ 46 Maximum Number ................................ 25 Relocate..................................................... 45 Modifying ............................................. 40 Dictionary Elements.............................. 45 Multiple Record Types ......................... 19 Remainder ................................................. 63 Name ..................................................... 21 Remove ..................................................... 11 Notes ..................................................... 45 Drop a File from an Application ........... 11 Properties .............................................. 23 Remove a Variable from a Tabulation 200 Required ................................................ 24 Trailing blanks .................................... 372 Single Record Type............................... 19 Type ................................................ 19, 24 Type Value ............................................ 23 Redo and Undo Changes ........................... 98 Reenter Statement ................................... 340 Renaming Tables and Table Applications ............................................................. 197 Reorder Editing ....................................... 149 Report...................................................... 162 Automatic ............................................ 162 473 Reformat ..................................................... 5 Data ......................................................... 5
CSPro User's Guide Required .................................................... 84 Enter Key .............................................. 84 Hardware and Software....................... 407 Record ................................................... 24 Reserved.................................................. 306 Commands .......................................... 306 Words .................................................. 306 Reset Format of Table Item to Default ... 235 Resize and Reposition Things in a Roster 99 Column Order ....................................... 99 Column Width....................................... 99 Roster Size ............................................ 99 Row Height ........................................... 99 Restrict a Universe .................................. 177 Re-Test with Live Data ........................... 168 Retrieve ................................................... 402 Function .............................................. 402 Tables ...................................................... 5 Retrieve Data Files from the Pocket PC . 141 Review Edit Specifications ..................... 166 Rich Text Format .................................... 260 Run .......................................................... 115 Save Tables as Text A Batch Edit Application .................... 148 Rich Text or HTML ........................ 260 A CSPro Tool.......................................... 5 474 Right Side of Screen ................................... 9 Roster ........................................................ 91 Add to a Form ....................................... 91 Adding Things ...................................... 91 Change Column Heading Properties ... 104 Change Occurrence Labels ................. 105 Change Properties ............................... 103 Create .................................................... 91 Description ............................................ 72 Join and Split Columns ......................... 99 Resize and Reposition Things............... 99 Rounded To Zero Mask .......................... 214 Row ......................................................... 204 Add for Post Calculation..................... 265 Format ................................................ 211 Hide/Show........................................... 221 Percent................................................. 204 Spacing ................................................ 250 Variables ............................................. 183 Row and Column Indexing for Post Calculation .......................................... 271
Index A Data Entry Application ..................... 81 A Tabulation ....................................... 197 As Batch .............................................. 115 Data Entry Application as Batch......... 115 In Parts ................................................ 275 Parameter ...................................... 81, 164 Production Batch Edits ....................... 164 Screen ........................................................ 11 Production Data Entry........................... 81 Full ........................................................ 11 Sysparm Function ............................... 391 Screen Layout ......................................... 145 Run All in Batch ..................................... 274 Batch Application ............................... 145 Run Consolidate in Batch ....................... 279 Data Dictionary ..................................... 34 Run Consolidate Interactively................. 278 Data Entry Forms .................................. 78 Run Format in Batch ............................... 281 Data Entry Logic ................................. 110 Run Format Interactively ........................ 280 Initial CSPro Application ........................ 7 Run PPC Application on the Pocket PC . 139 Screens ........................................................ 5 Run Tabulate in Batch ............................ 276 Search Dictionary Elements ...................... 45 Run Tabulate Interactively ...................... 275 Secondary Stub Head .............................. 209 S Formats for a Part of a Table .............. 209 Save ........................................................... 13 Parts of a Table ................................... 171 An application ....................................... 13 Seed Function.......................................... 365 Save Keyword for Arrays ................... 310 Seek Function.......................................... 379 Tables .................................................. 259 Selcase Function ..................................... 341 Tabulations in Different Formats ........ 178 Select ......................................................... 44 475 Save As ..................................................... 13 Application............................................ 13 Dictionary ............................................. 47 Saved Arrays ........................................... 310 Savepartial Function ............................... 341 Saving Tables as Text HTML or Rich Text ............................................................. 260
CSPro User's Guide Dictionary Elements.............................. 44 Errmsg Function.................................. 384 Items in a Form ..................................... 93 Relative or Absolute Positioning .......... 46 Table Cells .......................................... 261 Sequence ................................................. 112 Dictated by CSPro............................... 112 Dictated by Designer........................... 114 Sharing External Files ............................... 66 Sequential Fields ....................................... 93 Show Case Tree ........................................ 84 Set ........................................................... 343 Show Function ........................................ 351 Attributes Statement............................ 343 Show Values for Selection ...................... 128 Compiler Defaults ................................. 57 Single Record Types ................................. 19 Explicit ................................................ 308 Size ............................................................ 88 Implicit ................................................ 308 Change Field Box ................................. 88 Statement............................................. 308 Size of Data Files ...................................... 19 System Settings ..................................... 57 skip ............................................................ 69 Set Behavior Canenter Statement ........... 345 Automatic .............................................. 69 Set Behavior Export Statement ............... 360 Issues ..................................................... 69 Set Behavior SpecialValues Statement ... 366 Manual .................................................. 69 Set Errmsg Statement .............................. 346 Manual Skip To................................... 102 Setcapturepos Function ........................... 345 Skip Case Statement ........................... 360 Setcapturetype Function.......................... 346 Skip Statement .................................... 352 Setfile Function ....................................... 403 Skip ......................................................... 352 476 Setfont Function ................................. 347 Setlanguage Function .............................. 348 Setorientation Function ........................... 326 Setup ....................................................... 410 Setvalueset Function ............................... 349 Setvaluesets Function.............................. 350 Share the Same Format on Multiple Computers ........................................... 259
Index Soccurs Function..................................... 380 Sort .......................................................... 380 Function .............................................. 380 Sort Data ................................................. 5 Sound ........................................................ 89 Change .................................................. 89 Spacing.................................................... 250 Modify Row and Column Spacing for Printing............................................ 250 Span......................................................... 234 Impute Function .................................. 322 Make Captions Span Data Cells ......... 234 Statement Format Symbols ..................... 306 Spanner ................................................... 209 Statements ................................................. 53 Formats for a Part of a Table .............. 209 Alphabetical Listing ............................ 303 Parts of a Table ................................... 171 Assignment ........................................... 53 Special ..................................................... 389 Executable ............................................. 53 Create a Specialized Report ................ 159 Static Imputation ..................................... 152 Function .............................................. 389 Stop Function .......................................... 390 Output Dictionary ................................. 37 String ......................................................... 61 Special Values ........................................... 62 Expressions ........................................... 61 Defined.................................................. 62 String to Number................................. 373 Include/Exclude Special Values in a Tabulation ....................................... 203 Specific ................................................... 322 Impute Function .................................. 322 Substring Expressions ........................... 61 Text ....................................................... 60 Variables ............................................... 52 Specify Application File Names ............... 13 Sqrt .......................................................... 366 Standard Deviation.................................. 206 Add Summary Statists to a Table........ 206 Produce Summary Statistics ............... 176 Start Page ................................................ 177 Starting Position of Item ........................... 27 StartMode.................................................. 81 Stat .......................................................... 322
477
CSPro User's Guide Strip function .......................................... 372 Structure Edits ..................................... 3, 108 Structure Movement................................ 128 Stub ......................................................... 236 Change Stub Column Position ............ 236 Format Tables for Printing .................. 177 Formats for a Part of a Table .............. 209 Leadering ............................................ 226 Parts of a Table ................................... 171 Stub head................................................. 209 Formats for a Part of a Table .............. 209 Parts of a Table ................................... 171 Subgroupings .......................................... 198 Add a Variable to a Tabulation ........... 198 Create a Table ..................................... 183 Format/Hide Rows/Columns in .......... 293 Subitems .................................................... 26 Convert to Item ..................................... 46 Item Type .............................................. 26 Sub-Items .................................................. 26 Subscriped Variables ................................ 59 Substring Expressions ............................... 61 Subtable................................................... 179 Create Multiple Subtables ................... 179 Parts of a Table ................................... 171 Recodes in Tables Using Subtables .... 297 Tally Attributes for a Subtable ............ 193 Using Subtables .................................. 282 Subtitle .................................................... 226 Adding a Subtitle ................................ 226 Formats for a Part of a Table .............. 209 Parts of a Table ................................... 171 Subtotals.................................................. 290 Sum Function .......................................... 381 Summary ................................................. 414 Batch Edit Keyboard ........................... 414 Batch Editing Menu ............................ 420 Batch Editing Toolbar ......................... 423 CSPro Toolbar .................................... 421 Data Dictionary Keyboard .................. 412 Data Dictionary Menu......................... 417 Data Dictionary Toolbar ..................... 422 Data Entry Keyboard .......................... 413 Data Entry Menu ................................. 418 Data Entry Toolbar ............................. 422 Errmsg Function.................................. 384
478
Index Generalized Menu ............................... 417 Tabulation Keyboard .......................... 415 Tabulation Menu ................................. 420 Tabulation Toolbar.............................. 424 Summary Statistics.................................. 206 Add Summary Statistics to a Table..... 206 Produce Summary Statistics ............... 176 Support ...................................................... 12 SVA......................................................... 439 Saved Arrays File ................................ 439 Swap Function ........................................ 381 Switching Between Data Entry Forms and Dictionary ............................................. 78 Sysdate Function ..................................... 390 Table Logic ......................................... 284 Sysparm Function ................................... 391 Tabulate................................................... 240 System ....................................................... 71 By Geographic Area ........................... 240 Vs Operator Controlled ......................... 71 Categories with disjoint values ........... 292 Systime Function .................................... 391 Counts or Percents .............................. 176 T Data ......................................................... 2 TAB......................................................... 437 Frequencies ............................................. 5 Table Matrices File .TAB ................... 437 Items with Multiple Occurrences ........ 187 Table ....................................................... 196 Only Certain Levels of Geography ..... 247 Add...................................................... 196 Percents ............................................... 204 Change Title ........................................ 220 479 Parts..................................................... 171 Preview ............................................... 254 Print ..................................................... 254 Retrieval .................................................. 5 Save ..................................................... 259 Select Cells.......................................... 261 Tree ......................................................... 8 Viewer ..................................................... 5 Window ................................................... 9 Table Logic ............................................. 284 Table Matrices File .TAB ....................... 437 Table Matrices Index File .TAI .............. 437 tablogic .................................................... 284
CSPro User's Guide Run Tabulate in Batch ........................ 276 Run Tabulate Interactively .................. 275 Tool List .................................................. 5 Undefined Values................................ 203 Values About............................................... 176 Values and/or Weights ........................ 176 Values Instead of Frequencies ............ 202 Weights About............................................... 176 Tabulate Items in Relations .................... 289 Tabulation ............................................... 183 Creating a Tabulation.......................... 183 Introduction to Tabulation .................. 171 Run ...................................................... 197 Save in Different Formats ................... 178 Tabulation Application File .XTB ...... 436 Tabulation Keyboard Summary .......... 415 Tabulation Menu Summary ................ 420 Tabulations .................................. 175, 184 Toolbar ................................................ 424 Universe .............................................. 200 Tabulation Application ............................... 4 About....................................................... 4 Creating ............................................... 181 Tabulation keys ....................................... 415 TAI .......................................................... 437 Table Matrices Index File .TAI .......... 437 Tally Attributes ....................................... 193 For a Table/Subtable ........................... 193 For a Variable ..................................... 188 Tally Items from Related Records .......... 181 TBW........................................................ 436 Tables File ........................................... 436 Temporary Data File ............................... 431 Test .......................................................... 132 Application.......................................... 132 CSPro Program ................................... 168 Text ........................................................... 92 Adding to a Form .................................. 92 Align ..................................................... 97 Change Properties ............................... 106 Customize Table Text ......................... 220 Default Font .......................................... 88 Save Tables as Text Rich Text or HTML ........................ 259
480
Index Strings ................................................... 60 Tool List .................................................. 5 Viewer ..................................................... 5 Text box .................................................... 94 The Nature of Census and Survey Data .. 427 Thematic Map ......................................... 245 Create .................................................. 245 Then ........................................................ 317 If Statement ......................................... 317 This Item ($) ............................................. 59 Tile ............................................................ 11 Side by Side .......................................... 11 Top to Bottom ....................................... 11 Windows ............................................... 11 Time ........................................................ 391 Systime Function ................................ 391 Title ................................................. 209, 351 Formats for a Part of a Table .............. 209 Impute Function .................................. 322 Parts of a Table ................................... 171 Show Function .................................... 351 Table Title Template ........................... 214 To ............................................................ 324 Advance Statement ............................. 324 Skip Statement .................................... 352 Tolower Function .................................... 373 Tone .......................................................... 89 Error ...................................................... 89 Tonumber Function ................................. 373 Tool List ...................................................... 5 Compare Data ......................................... 5 Concatenate Data .................................... 5 Convert Dictionary.................................. 5 Convert Shape to Map ............................ 5 Export Data ............................................. 5 Map Viewer ............................................ 5 Reformat Data ......................................... 5 Sort Data ................................................. 5 Table Retrieval ........................................ 5 Table Viewer ........................................... 5 Tabulate Frequencies .............................. 5 Text Viewer ............................................ 5 Toolbar Summary ................................... 423 Batch Edit............................................ 423 CSPro .................................................. 421 Data Dictionary ................................... 422
481
CSPro User's Guide Data Entry ........................................... 422 Tabulation ........................................... 424 Total ........................................................ 207 Debug Table Totals ............................. 207 Hide or Change the Postion of the Total ......................................................... 204 Percent................................................. 204 Dictionary ............................................. 37 Totocc Function ...................................... 382 Edits in Batch Editing ......................... 157 Toupper Function .................................... 373 Edits in Data Entry .............................. 107 Trace Function ........................................ 392 Errors in Censuses and Surveys .......... 428 Trailing blanks ........................................ 372 Table ................................................... 184 Remove ............................................... 372 U Tree ........................................................... 78 Undefined Values.................................... 203 Batch Edit............................................ 147 Dump................................................... 203 Data Dictionary ..................................... 36 Tabulate............................................... 203 Data Entry ............................................. 80 Undo and Redo Changes........................... 98 Initial Screen Layout ............................... 7 Undo or Reset Changes in Print Preview 255 Names in ............................................... 11 Uninstalling CSPro ................................. 409 Restore .................................................. 11 Unit of Tabulation ................................... 181 Trees........................................................ 8 Changing the Unit of Tabulation ........ 181 View .................................................... 145 Tally Attributes for a Table................. 193 Truth Table................................................ 65 Universe .................................................. 200 And/Or .................................................. 65 Defining in Tabulations ...................... 200 If and Only If ........................................ 64 482 Type .......................................................... 26 Item ....................................................... 26 Record Type .......................................... 24 Subitem ................................................. 26 Type of... ................................................... 71 Data Entry Application ......................... 71
Index Universe Statement ............................. 319 Using expressions in ........................... 301 Until ........................................................ 315 Do Statement....................................... 315 Upper......................................................... 84 Case ....................................................... 84 Case Fields ............................................ 93 Use .......................................................... 160 Hot Decks............................................ 160 Multiple Language in CAPI ................ 127 Use and Shared External Files .................... 2 Use Arabic Text in Data Entry.................. 89 Use Arabic Text in Tables ...................... 237 Use Expressions in Universe and Value Tallied ................................................. 301 User Support ............................................. 12 Undefined ............................................ 203 Userbar Function..................................... 353 Value Set ................................................... 30 User-Defined Functions ............................ 53 Adding................................................... 39 Using ......................................................... 66 Delete .................................................... 44 Lookup Files ......................................... 66 Description ............................................ 30 Multiple Languages in CAPI .............. 122 Disjoint................................................ 292 Sort Function ....................................... 380 Dynamic modification ........................ 349 Using Print Preview ................................ 247 Find ....................................................... 45 Using Subtables ...................................... 282 483 Using Table Data in the Map Viewer ..... 262 V Validating Data ........................................... 3 Value ......................................................... 44 Adding................................................... 39 Delete .................................................... 44 Description ............................................ 31 Find ....................................................... 45 Insert ..................................................... 44 Label ..................................................... 21 Modify................................................... 39 Notes ..................................................... 45 Properties .............................................. 31 Record Type .......................................... 24 Search .................................................... 45
CSPro User's Guide Implications in Tabulation .................. 186 Insert ..................................................... 44 Label ..................................................... 30 Linked Value Sets ................................. 41 Modify................................................... 39 Name ..................................................... 21 Notes ..................................................... 45 Properties .............................................. 30 Recodes in Tables Using Value Sets .. 297 Search.................................................... 45 Value Tallied ........................................... 176 Tabulate Values and/or Weights ......... 176 Tabulate Values Instead of Frequencies ......................................................... 176 Using expressions in ........................... 301 Impute Function .................................. 322 Values ..................................................... 122 W Variables ................................................. 198 Web ......................................................... 264 Adding to a Table................................ 198 Prepare Tables for Posting to the Web 264 In CSPro Language ............................... 52 Weights ................................................... 202 Variance .................................................. 206 Add Weights to Table ......................... 202 Add Summary Statistics to a Table..... 206 Tabulate Values and/or Weights ......... 176 Produce Summary Statistics ............... 176 What is CSPro ............................................. 1 Varying ................................................... 315 Where ...................................................... 374 Do Statement....................................... 315 484 Verify ........................................................ 84 Demode Function ................................ 325 Every nth case ....................................... 84 View .......................................................... 11 Change .................................................. 11 Dictionary Layout ................................. 39 Full Screen ............................................ 11 Logic ..................................................... 56 Names in Tree ....................................... 11 Print Tables ......................................... 254 Viewing Multiple and Facing Pages ....... 249 Views of Table ........................................ 219 Visualvalue Function .............................. 357 VSet......................................................... 322
Index Average Function ................................ 374 Count Function.................................... 374 Max Function ...................................... 377 Min Function ....................................... 378 Show Function .................................... 351 Sum Function ...................................... 381 While Statement ...................................... 319 Width of listing file ................................. 164 Window ..................................................... 78 Windows ..................................................... 9 Change .................................................. 11 Tile Side by Side ................................... 11 Tile Top to Bottom................................ 11 Working Dictionary .................................. 37 Working Storage Dictionary ................... 284 Table Logic ......................................... 284 Working Storage File ................................ 67 Wrap messages........................................ 164 Write ....................................................... 148 Z Zero Fill .................................................... 29 Zero Mask ............................................... 214 X XTB......................................................... 181 Tabulation Application ....................... 181 Tabulation Application File ................ 436 Tabulation Applications .......................... 4 XTS ......................................................... 181 Table Specifications File..................... 436 Tabulation Application ....................... 181 Tabulation Applications .......................... 4 File ...................................................... 148 Function .............................................. 404 Run an Application ............................. 148 Specialized Edit Report....................... 159 Writecase Function ................................. 403 WRT ........................................................ 159 Create a Specialized Report ................ 159
485