#!/usr/local/bin/perl -w #revised 022404 use strict; use CGI ':standard'; print "Content-type: text/html\n\n"; print qq~ ~; print"12 Choices Report"; print""; print""; # set "self" hash to the IFMUID passed in my $selfid = param('IFMUID'); $selfid = '"'.$selfid.'"'; if(length($selfid) < 3) { print"No ID shown"; exit; } # sub questiontexts { my %questiontexts; open('QTEXT', ') { chomp; (my $key, my $value) = split(/=/, $_); $questiontexts{$key} = $value; } close(QTEXT); return %questiontexts; } ################################################################################################## # sub chaptertitles { my %chaptertitles; open('QTEXT', ') { chomp; (my $key, my $value) = split(/=/, $_); $chaptertitles{$key} = $value; } close(QTEXT); return %chaptertitles; } ################################################################################################## # sub makebar #takes in the value, scale and color, and returns a two cell table with the bar in the first cell and left-aligned value in second cell { (my $value, my $scale, my $image) = @_; if($value < 1.44) { $image = '/tc/images/black.gif' } #note a hack: if($value =~ /x/) { my $holder=0; $value = $holder; } $value = sprintf("%.1f", $value); my $width = (($value/$scale)*100); if($value <= 0) { $width = 1; } my $bar ="
".$value."
"; return $bar; } ################################################################################################## #take in accountname and password sub checkcookie { my %accountstats = getaccountstats(); my $accountname = $accountstats{'accountname'}; #print"
before readcookie"; my $cookievalue = readcookie($accountname); #print"
after readcookie"; if($accountstats{'password'} ne $cookievalue) { print"Your password could not be verified. Either the password you entereed is not correct, or you do not have browser cookies enabled for this site."; print"

Go to Login page: "; print" Here "; exit; } else { return 0; } } ################################################################################################## sub readcookie { #print"
readcookie1"; my %cookies = fetch CGI::Cookie; my $cookiename; my $cookievalue; #print"
readcookie2"; my $existingcookie = $cookies{$_[0]}; #print"
readcookie3"; if($existingcookie) { $cookiename = $existingcookie->name; #print"
readcookie4"; $cookievalue = $existingcookie->value; #print"
readcookie5"; if ($cookiename eq $_[0]) { #print"
readcookie6"; return $cookievalue; } } else { #print"
readcookie7"; return 0; } } ################################################################################################## sub getaccountstats { open(STAT, ') { chomp; (my $key, my $value) = split(/=/, $_); $accountstats{$key} = $value; } close(STAT); return %accountstats; } ################################################################################################## sub monthdayyear { my $date = gmtime(); $date =~ s/^[A-Za-z]{3,} |[0-9][0-9]:[0-9][0-9]:[0-9][0-9]//g; return $date; } ################################################################################################## # This is the second item to process - when the report doesn't load, its stopping here. #print "second part of script"; open(ASC, "; close(ASC); my $fieldnames = shift(@records); my @fieldnames = split(/\t/, $fieldnames); #in final version, generate a list of valid ID's based on the reviewer list, and remove any records that do not appear in this list. As a result, any data collected from "removed" addresses will not appear in the reports - 10 case max. #open(ID, "; #close(ID); my $fieldct = 0; my $keyfield; foreach(@fieldnames) { if($_ =~ /^IFMUID$/) { $keyfield = $fieldct; } $fieldct++; } # data holds all lines of the asc file in a hash organized with the IFMUID as the key, and the value is an array holding all of the data from one record. my %data; foreach(@records) { #print "
iterating through records"; my @values = split(/\t/, $_); my $arcount = 0; foreach(@values) { #print"
temparray".$arcount." = ".$_; $arcount++; } @{$data{$values[$keyfield]}} = @values; } # set report to contain data from $selfid IFMUID passed in my @self = @{$data{$selfid}}; #delete $data{'"yourself"'}; #print "
self set"; # assign self to a hash of fieldname=value pairs for analysis using the same charting function for other data my %self; my $selfcount = 0; foreach(@fieldnames) { $self[$selfcount] =~ s/\"//g; $self{$_} = $self[$selfcount]; $selfcount++; } #print "
self assigned to hash"; # load all ID's from the data file into an array my @allids = keys(%data); #compare ID's in the data file with those stored in the reviewerlist #my %validids = ''; #print keys(%validids); #my @allvalidids; #foreach(@allids) #{ #check to see if id id valid, if not, remove from array. #$_ =~ s/\"//g; #if(exists $validids{$_}) #{ #print"
Valid ID exists = ".$_; #push(@allvalidids, $_); #} #} #foreach(@allids) #{ #print"
id = ".$_; #} #how to generate reports? hash of all totals for "others"? id=self a separate record. hash of "groups"? my @questions = ('Q011', 'Q012', 'Q013', 'Q014', 'Q021', 'Q022', 'Q023', 'Q024', 'Q025', 'Q031', 'Q032', 'Q033', 'Q034', 'Q041', 'Q042', 'Q043', 'Q044', 'Q051', 'Q052', 'Q053', 'Q054', 'Q055', 'Q061', 'Q062', 'Q063', 'Q064', 'Q071', 'Q072', 'Q073', 'Q081', 'Q082', 'Q083', 'Q084', 'Q091', 'Q092', 'Q093', 'Q094', 'Q101', 'Q102', 'Q103', 'Q104', 'Q111', 'Q112', 'Q113', 'Q114', 'Q121', 'Q122', 'Q123'); my %totals; my %numresponses; foreach(@questions) { my $question = $_; my $fieldcount = 0; my $questionfield; foreach(@fieldnames) { if($_ =~ /^$question$/) { $questionfield = $fieldcount; } $fieldcount++; } #print"
questionfield = ".$questionfield; my $questiontotal=0; my $responsecount =0; #foreach(@allvalidids) #{ #my @temparray = @{$data{$_}}; #my $arcount = 0; #foreach(@temparray) #{ #print"
temparray".$arcount." = ".$_; #$arcount++; #} #my $responseincrement = 1; #my $fieldvalue = $temparray[$questionfield]; #print"
fieldvalue1= ".$fieldvalue; #$fieldvalue =~ s/\"//g; # NEED to have conditional that only totals the field value if response code is numeric. #if($fieldvalue !~ /[0-9]/) # { # $fieldvalue = 0; # $responseincrement = 0; # } #print"
fieldvalue2= ".$fieldvalue; #$questiontotal = $questiontotal + $fieldvalue; #$responsecount = $responsecount + $responseincrement; #print"
questiontotal = ".$questiontotal; #} #$totals{$question} = $questiontotal; #$numresponses{$question} = $responsecount; } #my $totalresponses = scalar(@allvalidids); #$numresponses = $numresponses - 1; my %accountstats = getaccountstats(); #print"
got account stats"; ################################################################################################################ #Moved the chart generation up to the top #charting section needs: # hash of groups, and questions in each group # hash of question texts, read from a file? my %questiontexts = questiontexts; #print %questiontexts; my %chaptertitles = chaptertitles; my %grouptotals; my %grouptotalself; my %groups; my %questiontotals; #hold the chapter charts in a hash keyed by section number... my %chaptercharts; @{$groups{'S01'}} = ('Q011', 'Q012', 'Q013', 'Q014'); @{$groups{'S02'}} = ('Q021', 'Q022', 'Q023', 'Q024', 'Q025'); @{$groups{'S03'}} = ('Q031', 'Q032', 'Q033', 'Q034'); @{$groups{'S04'}} = ('Q041', 'Q042', 'Q043', 'Q044'); @{$groups{'S05'}} = ('Q051', 'Q052', 'Q053', 'Q054', 'Q055'); @{$groups{'S06'}} = ('Q061', 'Q062', 'Q063', 'Q064'); @{$groups{'S07'}} = ('Q071', 'Q072', 'Q073'); @{$groups{'S08'}} = ('Q081', 'Q082', 'Q083', 'Q084'); @{$groups{'S09'}} = ('Q091', 'Q092', 'Q093', 'Q094'); @{$groups{'S10'}} = ('Q101', 'Q102', 'Q103', 'Q104'); @{$groups{'S11'}} = ('Q111', 'Q112', 'Q113', 'Q114'); @{$groups{'S12'}} = ('Q121', 'Q122', 'Q123'); #print counter: put in page break every 2 groups my $pagect = 0; # make sure chapters appear in numerical order (sort based on S1... Sn) foreach(sort (keys (%groups))) { my @thisgroup = @{$groups{$_}}; my @texts = keys(%questiontexts); my $questionsingroup = scalar(@thisgroup); #my $grouptotal; my $selftotal; my $chart; $chart = $chart."


"; $chart = $chart.""; $chart = $chart.""; foreach(@thisgroup) { $chart = $chart."\n\n"; #$questiontotals{$_} = ($totals{$_}/$numresponses{$_}); #$grouptotal = $grouptotal + ($totals{$_}/$numresponses{$_}); $selftotal = $selftotal + $self{$_}; } #divide each by the number of questions in the group? #$grouptotals{$_} = ($grouptotal/$questionsingroup); $grouptotalself{$_} = ($selftotal/$questionsingroup); # the counting needs modified to reflect that response numbers are totaled per question $chart = $chart.""; $chart = $chart."
".$chaptertitles{$_}."Self Rating
".$questiontexts{$_}."".makebar($self{$_}, 5, '/tc/images/lred.gif')."
Average score for ".$chaptertitles{$_}."".makebar($grouptotalself{$_}, 5, '/tc/images/dred.gif')."
"; $pagect ++; if($pagect >= 2) { $chart = $chart."
"; $pagect = 0; } $chaptercharts{$_} = $chart; } # strip out non-weighted questions/?? my %weightedquestions; foreach(@questions) { $weightedquestions{$_} = $self{$_}; } my @questionvaluesl = sort {$a <=> $b} values(%weightedquestions); my @questionvaluesh = sort {$b <=> $a} values(%weightedquestions); my $lowqcount = 0; foreach(@questionvaluesl) { if($questionvaluesl[$lowqcount] < 1) { #set zero values to 10 so they move to back of array. $questionvaluesl[$lowqcount] = 10; } $lowqcount++; } my $lowcut = $questionvaluesl[4]; my $highcut = $questionvaluesh[4]; #print" : highlowccut"; #my $respcount = 0; #print ":
highcut = "; #foreach(@questionvaluesh) # { # print "
".$respcount." = ".$_; # $respcount++; # } #print ":
lowcut = "; #foreach(@questionvaluesl) # { # print "
".$_; # } my @highratings; my @hightie; my @lowratings; my @lowtie; #for(my $highcount = 0, $highcount <5, $highcount++) ## { # # } foreach(keys(%weightedquestions)) { if($weightedquestions{$_} < 1) { # don't count 0's next; } if($weightedquestions{$_} > $highcut) { push(@highratings, $_); } if($weightedquestions{$_} == $highcut) { push(@hightie, $_); } if($weightedquestions{$_} < $lowcut) { push(@lowratings, $_); } if($weightedquestions{$_} == $lowcut) { push(@lowtie, $_); } next; } my $highcount = 5 - scalar(@highratings); if($highcount > 0) { for(my $i = 0; $i < $highcount; $i++) { push(@highratings, $hightie[$i]); } } my $lowcount = 5 - scalar(@lowratings); if($lowcount > 0) { for(my $i = 0; $i < $lowcount; $i++) { push(@lowratings, $lowtie[$i]); } } # start printing out page text print""; print""; # note: need to include name and date print""; print""; print"
 
 
Confidentially prepared for: ".$self{'pn'}."
Report Date: ".monthdayyear()."
"; print"
"; foreach(keys(%totals)) { #print"
the total for field ".$_." is: ".$totals{$_}." and the average response is: ".(($totals{$_})/($numresponses)); } print qq~
 

A. What you will find in this 12 Choices Profile:

Congratulations!

Congratulations, completing the 12 Choices Personal Profile is an essential step in the pursuit of greater personal and professional success. This tool will help you become more aware of both your strengths and possible developmental opportunities and begin a plan that you can implement during the next year that puts you on the path to greater clarity and success.

The 12 Choices Profile and Development Plan contains four sections.

SectionDescriptionContents
I Overview (This Section) Describes the contents of your 12 Choices Profile.
II Feedback Report Provides a summary index for each of the 3 choice categories, and then indices for all 12 choices.
    The report also shows your top strength opportunities and focus areas.
III Interpreting the Feedback Provides you with reflective questions that help you convert the profile to a development plan.
IV 12 Choices Success Guide A step-by-step personal guide and planning tool that sets the foundation for personal accountability and focus.

We recommend that you first print your 12 Choices Profile. Take time to reflect on the results, what it is telling you, then begin the success planning process using the 12 Choices Personal Development Plan as your guide.


II. Feedback Report:

The 12 Choices Profile provides valuable personal insights into your thoughts, ideas and behaviors that lead to, or are potential barriers to your success.

The Scoring:

The scoring system is a scale from 1 to 5, i.e.:

1 = Strongly disagree (never)

2 = Disagree (seldom)

3 = Neutral (neither Agree or Disagree, sometimes)

4 = Agree (usually, often)

5 = Strongly Agree (always)

Low scores below a 1.5 (black bars) indicate Leadership challenges and high scores above 3.0 (red bars) indicate your Leadership strengths.

~; print qq~

IIa. Choice Indices

This section shows the average ratings for questions related to the three choice categories.

~; # 3 sums my @booksections = ('Character Choices', 'Action Choices','Investment Choices'); my %sectiontotals = ('Character Choices' => ($grouptotalself{S01} + $grouptotalself{S02} +$grouptotalself{S03} +$grouptotalself{S04})/4 , 'Action Choices' => ($grouptotalself{S05} + $grouptotalself{S06} +$grouptotalself{S07} +$grouptotalself{S08})/4 ,'Investment Choices' => ($grouptotalself{S09} + $grouptotalself{S10} +$grouptotalself{S11} +$grouptotalself{S12})/4 ); print"


"; print ""; foreach(@booksections) { print""; } print"
".$_."".makebar($sectiontotals{$_}, 5, '/tc/images/dred.gif')."
"; print"
"; print qq~

IIb. Detailed Choice Results

This section shows the average ratings for questions related to the twelve choices.

~; my %sectiongroups; @{$sectiongroups{'Character Choices'}} = ('S01', 'S02', 'S03', 'S04'); @{$sectiongroups{'Action Choices'}} = ('S05', 'S06', 'S07', 'S08'); @{$sectiongroups{'Investment Choices'}} = ('S09', 'S10', 'S11', 'S12'); #3 sections of 4 chapters each foreach(@booksections) { print"


"; print ""; print ""; foreach(@{$sectiongroups{$_}}) { (my $thissection, my $thistitle) = split(/ - /, $chaptertitles{$_}); print""; } print"
".$_."Your Rating
".$thistitle."".makebar($grouptotalself{$_}, 5, '/tc/images/dred.gif')."
"; } print"
"; print qq~

IIc. Strengths & Opportunities

This section ranks the 5 highest and 5 lowest rated areas.

~; # rank top and bottom 5 areas print""; print""; print""; print""; print""; # add a high/low sorting subroutine to process @highratings? foreach(@highratings) { print""; } print""; print""; foreach(@lowratings) { print""; } print"
  Your
Rating
(Y)
  
Top 5 Strengths (Fulfilled Needs): 
". $questiontexts{$_}." ".sprintf("%.1f",$self{$_})."
  
Top 5 Opportunities : 
". $questiontexts{$_}." ".sprintf("%.1f",$self{$_})."
"; print"
"; print qq~

III. Interpreting the Feedback

Now you have data that will help guide your personal development planning process. Focus on the major strength areas to leverage, and your personal areas of opportunity.

The following questions will help you convert your profile feedback into action.

~; print qq~

IIIa. Strengths – Choices to Leverage & Enhance

Below are reflective questions to assist in identifying a means for personal development and growth. It is important to know your strength so you can leverage and build on them.

~; print qq~

1.Based on your profile, what are your top two success choice areas to leverage?

_____________________________________________________

_____________________________________________________

_____________________________________________________

_____________________________________________________

2.In what circumstances or situations do your strengths most occur?

_____________________________________________________

_____________________________________________________

_____________________________________________________

_____________________________________________________

3.How can you best leverage your choice strengths?

_____________________________________________________

_____________________________________________________

_____________________________________________________

_____________________________________________________


IIIb. Opportunities - Focal Areas for Development

Below are reflective questions to assist in identifying these means for personal development and growth.

1.Based on the feedback report, what are your top two challenges?

_____________________________________________________

_____________________________________________________

_____________________________________________________

_____________________________________________________

2.In what circumstances or situations do your challenges most often occur?

_____________________________________________________

_____________________________________________________

_____________________________________________________

_____________________________________________________

3.How will knowing your challenges guide you in making a personal action plan for success, and what will you do to ensure personal accountability for growth?

_____________________________________________________

_____________________________________________________

_____________________________________________________

_____________________________________________________


IV. 12 Choices Personal Planner

The following comprehensive Personal Planner takes the input from your profile, combines it with your personal and career goals and provides a plan that will have the greatest impact on your personal productivity and success.

IVa. 12 Choices Personal Planner: Personal & Career Goal Summary

Take a moment to reflect on any short-term and long-term personal and professional goals you would like to accomplish. Goals should be S.M.A.R.T. goals.

Specific, Measurable, Achievable, Realistic, Time Bound

12 Choices Personal Planner
Personal Planner For:
 
Time Frame for Planner (6 months)
From: ________ To: ________
Goal Summary
List Personal Goals to Accomplish in the Next 6 Months. List Two Long Term
(2-3 year) Personal Goals.

1...

 

 

2...

 

 

1...

 

 

2...

 

 

List Two Short Term (6 months)
Career Goals
List Two Long Term (2-3 year)
Career Goals

1...

 

 

2...

 

 

1...

 

 

2...

 

 


IVb. 12 Choices Personal Planner: 12 Choices Summary Page

Now, look back at your Strengths (IIIa.) and Opportunities (IIIb.) Profile Results and transfer your strengths and opportunities for development in the Planner below.

12 Choices Planner
Personal Planner For:
 
Time Frame for Planner (6 months)
From: ________ To: ________
12 Choices Summary
List Your Most Significant Strength
for Each of the Three Choice Categories.
List Two Areas for
Focused Action & Development for
Each of the Three Choice Categories.
Character Choice

 

 

1...

 

 

2...

 

 

Action Choice

 

 

1...

 

 

2...

 

 

Investment Choice

 

 

1...

 

 

2...

 

 


IVc. 12 Choices Personal Planner: 12 Choices Action Plan

Finally, from your 12 Choices Summary Page, transfer your focus onto this actionable planner. With this planner you will create a structure and activities to help accelerate your personal success.

12 Choices Personal Planner
Personal Planner For:
 
Person That Will Hold You Accountable:
 
Success Choices to
Leverage
Actions and Areas that
will help me leverage
and develop my strengths
Who will I coach and mentor to
ensure I pass along my strengths?
Character Choice  
 
 
 
 
 
 
 
 
 
Action Choice  
 
 
 
 
 
 
 
 
 
Investment Choice  
 
 
 
 
 
 
 
 
 
Success Choices
for Development
Activities I will engage in to help
me make better choices.
Actions, Resources, Reinforcement
Choices


Start
Date
Finish
Date
Status*
  
 
 
 
  
 
 
 
  
 
 
 
  
 
 
 
 
 
 
 
 
 
 
 
 
 

12 Choices Personal Commitment for Growth

Now you should have a Time-Bound Plan that will help you gain clarity and accelerate your personal road to success. It is now up to you to work from your plan, stay focused on your personal accountability, and keep driving toward your goals each and every day.

Remember, this is not an overnight process, but a journey that will have highs and lows. If you remain committed to your personal plan you will be amazed at what you can do and the personal success you will achieve.

Best of luck on your Journey to Personal Success.

Now Get Started!!

Designed by MKarch.com
© Copyright 2009 Survey-Hosting.com|Club Membership Surveys|Club Marketing ~;