About Me

My photo
Over nine years of research experience in social science and public health research, who specializes large scale survey design and analysis, and data quality in various forms and tools of research work with Quantitative as well as Qualitative techniques and then last five years I have developed data entry and tabulation package in CSPro for various large scale surveys in India as well outside India. Presently I am working as Consultant State Data Manager in UNICEF Chhattisgarh (Through PDCSL).

Saturday, March 17, 2012

Custom Data Entry Menus


In CSPro 4.1.002, you can customize the menus of the data entry application, CSEntry, to change the menu options to be in the language of your choice, as long as the language can be represented in ASCII characters (most European languages). In the future, when CSPro supports Unicode, all language scripts will be supported.
To override the default text options, you must create a file called csentry.menu and place it either in the Program Files\CSPro 4.1\ folder, or in the folder where the PFF file for your application is located. This file has a format that is easy to follow. For example, to override the File menu text, you would place this text in the file:
File=Fichier
File_Open=Ouvrir une application
File_OpenDat=Ouvrir un fichier de données
File_Save=Sauvegarde partielle du questionnaire
File_Exit=Fermer
To add shortcut keys, place an ampersand before the shortcut letter. For example:
File=&Fichier
File_Open=&Ouvrir une application
File_OpenDat=Ouvrir un fichier de &données
File_Save=&Sauvegarde partielle du questionnaire
File_Exit=&Fermer
Placing the file in the Program Files\CSPro 4.1\ folder means that it will affect every single data entry application run on that machine. Alternatively, placing it in a folder with the PFF allows you to have different menus for different users.

Look Forward to in 2012

Friday, January 13, 2012

CSPro 4.1.002 was recently released

visit counter for blogspotDear CSPro User:

CSPro 4.1.002 was recently released!

This update version has some significant improvements:
- Application files can be locked to prevent editing within CSPro.
- Multiple logic files can be attached to one application as include files.
- Language additions:
 * Functions and statements: abs, getusername, randomin, randomizevs, setcapturepos
- Bug fixes and small enhancements.

For more information on new features go to:

    http://www.census.gov/population/international/files/cspro/readme.txt

To download CSPro 4.1.002 go to:

    http://www.census.gov/population/international/software/cspro/

Tuesday, April 5, 2011

Using execsystem to Retrieve a Computer's Username

visit counter for blogspot

An example of when this could be useful is if you want to create a PFF file with the data file named after the login ID of the keyer who has logged onto that machine.

PROC GLOBAL


alpha (20) tempFilename = "tempusername.txt";

alpha (300) str;

FILE inputFile;

alpha (50) username;


PROC EXAMPLE

execsystem(maketext('cmd /c "set username > %s"',strip(tempFilename)),wait);

setfile(inputFile,strip(tempFilename));

fileread(inputFile,str);

close(inputFile);

filedelete(strip(tempFilename));

// str looks like this: USERNAME=pedro

username = str[poschar("=",str) + 1];

errmsg("Computer username is %s",strip(username));

Creating a Sample Data File

visit counter for blogspot

If you want to create a simple sample data file (perhaps to test tabulations or edits instead of using the complete data file), you can create a small batch program to select cases to output. For instance, this program selects every twentieth case to generate a 5% sample:



PROC GLOBAL

numeric samplePercentage = 5;

numeric caseCount = 0;

PROC CREATESAMPLE_QUEST

preproc

inc(caseCount);

if caseCount = ( 100 / samplePercentage ) then

caseCount = 0;
else

skip case;
endif;

Alternatively, you can use the random function to generate a sample file that does not choose every nth case. Remember to call the seed function before using the random function.

if random(1,100 / samplePercentage) <> 1 then

skip case;

endif;

Randomizing the Order of Questions

In CSPro there is no simple way to change the order that questions are asked in a data entry application, but it can be done with some logic. The following code is an example of how one can use logic to randomize the order that questions are asked. The code randomizes the order in which five questions, the field names of which are listed in the fieldNames array, are asked.

PROC GLOBAL

numeric numQuestions = 5;

array questionOrder(5);

array alpha fieldNames(5) = "QUESTION1","QUESTION2","QUESTION3","QUESTION4","QUESTION5";

alpha fieldName;

function gotoQuestion(questionNumber)

fieldName = fieldNames(questionNumber);

move to fieldName;

end;

function nextQuestion()
fieldName = getsymbol();

// see where we are in the list

numeric i;
do i = 1 while fieldNames(i) <> fieldName

enddo;

// now i points to what question number we're on

// now find out where in the order it is

numeric j;
do j = 1 while questionOrder(j) <> i
enddo;
if j = numQuestions then

move to ANOTHER_QUESTION; // we are done with the rotating questions
else

gotoQuestion(questionOrder(j + 1));

endif;
end;

function startQuestions()

numeric i,j;

do i = 1 while i <= numQuestions

questionOrder(i) = random(1,numQuestions);

// see if this question has already been inserted

do j = ( i - 1 ) while j > 0 by (-1)

if questionOrder(j) = questionOrder(i) then // the new value is a repeat

j = 0; // this will terminate the inner do loop

i = i - 1; // this will force the outer do loop to repeat for this value

endif;

enddo;

enddo;
gotoQuestion(questionOrder(1));
end;

PROC CHANGEQUESTIONORDER_FF

preproc

seed(systime());

PROC CHANGEQUESTIONORDER_ID

startQuestions();

PROC QUESTION1

nextQuestion();

PROC QUESTION2

nextQuestion();

PROC QUESTION3
nextQuestion();

PROC QUESTION4
nextQuestion();

PROC QUESTION5

nextQuestion();