<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss'><id>tag:blogger.com,1999:blog-6907975643453137972</id><updated>2010-01-12T12:11:42.298-08:00</updated><title type='text'>jjerome.com projects</title><subtitle type='html'>&lt;a href = "http://jjerome.com"&gt;main&lt;/a&gt; | &lt;a href = "http://jjerome.com/projects"&gt;projects&lt;/a&gt; | 
&lt;a href = "http://jjerome.com/resume"&gt;resume&lt;/a&gt; |
&lt;a href = "http://jjerome.com/album"&gt;photos&lt;/a&gt;</subtitle><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6907975643453137972/posts/default'/><link rel='alternate' type='text/html' href='http://www.jjerome.com/projects/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://www.jjerome.com/projects/atom.xml'/><author><name>Jason Jerome</name><uri>http://www.blogger.com/profile/02004764316249949872</uri><email>noreply@blogger.com</email></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>16</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6907975643453137972.post-1981896234692870213</id><published>2009-08-04T09:11:00.000-07:00</published><updated>2009-08-04T09:13:28.408-07:00</updated><title type='text'>Current Software List</title><content type='html'>Here’s a list of software I use for various tasks.  I’m always interested in what tools other people use and figured that having my own list might help someone out.  The only problem I've found with other lists (or software reviews in general) is that they get outdated.   I'm hoping to periodically update my list to keep things current.&lt;br /&gt;&lt;br /&gt;All these tools are for Windows, but some are available on other platforms.  Most of them are free (and Open Source).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Desktop Tools&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Web Browser&lt;/span&gt;&lt;br /&gt;Mozilla Firefox (&lt;a target="_blank" href="http://www.mozilla.com/"&gt;www.mozilla.com&lt;/a&gt;)&lt;br /&gt;Sometimes I split my activities between browsers.  For example, I will play music from Pandora.com on IE and have all my other sites up on Firefox.  I've found this keeps the my memory intensive applications separate.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Text Editor&lt;/span&gt;&lt;br /&gt;Notepad++ (&lt;a target="_blank" href="http://notepad-plus.sourceforge.net/"&gt;notepad-plus.sourceforge.net&lt;/a&gt;)&lt;br /&gt;Great Notepad replacement.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Instant Messaging (IM)&lt;/span&gt;&lt;br /&gt;Pidgin (&lt;a target="_blank" href="http://www.pidgin.im/"&gt;www.pidgin.im&lt;/a&gt;)&lt;br /&gt;Great if you use more than one IM service (AOL, Yahoo, MSN, Google, etc).  A little more developer centric, so if you consider yourself more of a casual user you might want to consider Trillian.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Quick Launch&lt;/span&gt;&lt;br /&gt;Launchy (&lt;a target="_blank" href="http://www.launchy.net/"&gt;www.launchy.net&lt;/a&gt;)&lt;br /&gt;Indexes your entire Programs folder in the Start Menu.  To run a program, just use the key combination: [ALT] + [Space Bar], then type in the name of the program you want to start.  It will start suggesting the name of the program after the first couple of letters.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Quick Image Viewer&lt;/span&gt;&lt;br /&gt;IfranView (&lt;a target="_blank" href="http://www.irfanview.com/"&gt;www.irfanview.com&lt;/a&gt;)&lt;br /&gt;Great for when I want to quickly look at a picture I downloaded onto my desktop.  Not the greatest photo editor or organizer, but that's not what it was designed for.  Very fast.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;PDF Creation&lt;/span&gt;&lt;br /&gt;PDFCreator (&lt;a target="_blank" href="http://www.pdfforge.org/products/pdfcreator"&gt;www.pdfforge.org/products/pdfcreator&lt;/a&gt;)&lt;br /&gt;Adds a (virtual) printer to your list of printers.  Print your document to this printer and it will create a PDF for you.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Money Management&lt;/span&gt;&lt;br /&gt;Quicken (&lt;a target="_blank" href="http://www.amazon.com/gp/redirect.html?ie=UTF8&amp;amp;location=http%3A%2F%2Fwww.amazon.com%2Fs%3Fie%3DUTF8%26x%3D0%26ref%255F%3Dnb%255Fss%255Fgw%26y%3D0%26field-keywords%3Dquicken%26url%3Dsearch-alias%253Daps&amp;amp;tag=jjerome-20&amp;amp;linkCode=ur2&amp;amp;camp=1789&amp;amp;creative=390957"&gt;Quicken&lt;/a&gt;&lt;img src="https://www.assoc-amazon.com/e/ir?t=jjerome-20&amp;amp;l=ur2&amp;amp;o=1" alt="" style="border: medium none  ! important; margin: 0px ! important; -moz-binding: url(chrome://global/content/bindings/general.xml#asdfzxcv);" border="0" height="1" width="1" /&gt;)&lt;br /&gt;&lt;br /&gt;Here is where I insert my comparison of Quicken vs online money management applications (such as mint.com).  I could probably write another post about this topic alone, but here are my thoughts on Quicken:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Split Transactions are better, easier to understand (this could change at some time)&lt;/li&gt;&lt;li&gt;It has Manual Transactions (others do not), a big deal breaker for anyone who likes to do even a little planning.  They are useful if you write a check, have a significant other who also pays bills, receives money by checks, etc.&lt;/li&gt;&lt;li&gt;It's Not Free - I'm still lery of losing my personal data to a service that can always say "well, it was free, so you get what you pay for".  I have the same issue with Quicken Online too.&lt;/li&gt;&lt;li&gt;I've tried a lot of others (MS Money, GNUCash, Mint - 3x's), but I always stay with Quicken&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Office Product (Word Processor, Spreadsheet, etc):&lt;/span&gt;&lt;br /&gt;Open Office (&lt;a target="_blank" href="http://www.openoffice.org/"&gt;www.openoffice.org&lt;/a&gt;)&lt;br /&gt;(Google Docs, MS Office)&lt;br /&gt;I use Open Office at home, but have to admit I use MS Office at work.  Open Office is getting better each version, but certain basic things are lacking (i.e. clipart).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;File-based Music&lt;/span&gt;&lt;br /&gt;Winamp (&lt;a target="_blank" href="http://www.winamp.com/"&gt;www.winamp.com&lt;/a&gt;), but slowly trying to move to VLC Player (&lt;a target="_blank" href="http://www.videolan.org/vlc"&gt;www.videolan.org/vlc&lt;/a&gt;)&lt;br /&gt;Winamp is great for playing music files, not so great as an iTunes replacement (music library). I'm kind of annoyed by their consistent updates (reason for researching VLC as a replacement), but it's hard to move away from this classic.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Online Music&lt;/span&gt;&lt;br /&gt;Napster (&lt;a target="_blank" href="http://www.napster.com/"&gt;www.napster.com&lt;/a&gt;)&lt;br /&gt;Fell in love with online music via Rhapsody, and Napster's service is only $5/month.  I sit at my desk a lot and listen to music, so this kind of service may not be for everyone.  I find that I don't even bother playing music out of my own collection of music anymore.&lt;br /&gt;&lt;br /&gt;As far as Napster Online vs Rhapsody, it depends on your music tastes.  I'm always on the lookout for new music and I've found while Napster is much cheaper (about $10/month less), it seems like the Rhapsody library is larger.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Photograph Organizer&lt;/span&gt;&lt;br /&gt;Picasa (&lt;a target="_blank" href="http://picasa.google.com/"&gt;picasa.google.com&lt;/a&gt;)&lt;br /&gt;Wish it had some plugins for importing photos, but you can't beat the price for the functionality it provides.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Development Tools&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Network Utility&lt;/span&gt;&lt;br /&gt;Angry IP Scanner (&lt;a target="_blank" href="http://www.angryziber.com/w/Home"&gt;www.angryziber.com/w/Home&lt;/a&gt;)&lt;br /&gt;Great for finding all the devices on your network, debugging home network issues, etc.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;FTP&lt;/span&gt;&lt;br /&gt;FileZilla (&lt;a target="_blank" href="http://filezilla-project.org/"&gt;filezilla-project.org&lt;/a&gt;)&lt;br /&gt;Also does Secure FTP (SFTP)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;CSS Editor&lt;/span&gt;&lt;br /&gt;TopStyle Lite (search for it)&lt;br /&gt;Great IDE-like CSS editor with intellisense for the different CSS commands.  This version is a light version of the pay-for version, which in my opinion is too expensive for how much I use it.  The lite version works well enough, but I wouldn't mind finding a better tool if one exists.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;"Desktop" Search&lt;/span&gt;&lt;br /&gt;AstroGrep (&lt;a target="_blank" href="http://astrogrep.sourceforge.net/"&gt;astrogrep.sourceforge.net&lt;/a&gt;)&lt;br /&gt;Grep for Windows, with a nice simple GUI.  Just point it to the folder you want to search and type in your search term.  I use it mostly to search through text-based files (i.e. code), but it also has a plug-ins interface for other files (i.e. MS Word).  I don't like using Windows search since it always seems to be indexing.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;SSH/Telnet client&lt;/span&gt;&lt;br /&gt;Putty (&lt;a target="_blank" href="http://www.chiark.greenend.org.uk/%7Esgtatham/putty"&gt;www.chiark.greenend.org.uk/~sgtatham/putty&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Color Picker&lt;/span&gt;&lt;br /&gt;Pixie (&lt;a target="_blank" href="http://www.nattyware.com/pixie.php"&gt;www.nattyware.com/pixie.php&lt;/a&gt;)&lt;br /&gt;Great color picker for Windows, supplies you with HEX, HTML, RGB, CMYK, and HSV&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Image Editor&lt;/span&gt;&lt;br /&gt;The Gimp (&lt;a target="_blank" href="http://www.gimp.org/"&gt;www.gimp.org&lt;/a&gt;)&lt;br /&gt;Only useful if you have some PhotoShop experience and can't afford PhotoShop.  Takes some getting used to, but I've found it very useful.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Zip / UnZip&lt;/span&gt;&lt;br /&gt;7-Zip (&lt;a target="_blank" href="http://www.7-zip.org/"&gt;www.7-zip.org&lt;/a&gt;)&lt;br /&gt;Even though Windows includes some zip functionality, this one is easy to configure to use with scripts.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6907975643453137972-1981896234692870213?l=www.jjerome.com%2Fprojects%2Findex.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/6907975643453137972/1981896234692870213/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=6907975643453137972&amp;postID=1981896234692870213' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6907975643453137972/posts/default/1981896234692870213'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6907975643453137972/posts/default/1981896234692870213'/><link rel='alternate' type='text/html' href='http://www.jjerome.com/projects/2009/08/current-software-list.html' title='Current Software List'/><author><name>Jason Jerome</name><uri>http://www.blogger.com/profile/02004764316249949872</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='15696789817534182749'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6907975643453137972.post-3974774199567068520</id><published>2009-07-23T08:32:00.000-07:00</published><updated>2009-07-23T09:36:01.519-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Stored Procedures'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server 2005'/><category scheme='http://www.blogger.com/atom/ns#' term='SSRS'/><title type='text'>SSRS Multi-Select Parameters for Stored Procedures in SQL 2005</title><content type='html'>&lt;h3&gt;[Intro]&lt;/h3&gt;Using SSRS multi-value parameters with stored procedures can be a bit of a pain.  Multi-Valued parameters are sent to Stored Procedures as a comma-delimited string.  What follows is the method I use to write and debug stored procedures for SSRS reports.&lt;br /&gt;The web is full of tutorials on handling multi-valued parameters in stored procedures.  What I’m hoping to show is a method to set them up so that you can easily debug the stored procedure later on down the road.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;[Background]&lt;/h3&gt;I found some code on SQLServerCentral.com that does a good job of splitting a comma-delimited string into a table of individual values.  I wish I could credit the person who originally posted this idea, but there are lots of variations of this code floating around, and I modified the version I originally found, so please accept my apologies if this looks familiar.&lt;br /&gt;This function will break down a comma-delimited string into a table of individual values.  The one I’m posting here returns a table of ints, but I have others that return a table of other values (i.e. strings):&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="color:green;"&gt;---------------------------------------------------- &lt;/span&gt;&lt;br /&gt;&lt;span style="color:green;"&gt;-- [dbo].[fnc_split_int] &lt;/span&gt;&lt;br /&gt;&lt;span style="color:green;"&gt;-- Parse a comma delimited string and insert the values into a table variable. &lt;/span&gt;&lt;br /&gt;&lt;span style="color:green;"&gt;-- Useful for sending a comma-delimited string parameter to a stored proc that will &lt;/span&gt;&lt;br /&gt;&lt;span style="color:green;"&gt;-- use it in a where IN clause.     &lt;/span&gt;&lt;br /&gt;&lt;span style="color:green;"&gt;-- &lt;/span&gt;&lt;br /&gt;&lt;span style="color:green;"&gt;-- Ex: &lt;/span&gt;&lt;br /&gt;&lt;span style="color:green;"&gt;-- select * from customers     &lt;/span&gt;&lt;br /&gt;&lt;span style="color:green;"&gt;-- will not work: Where customer_id in (@parameter)     &lt;/span&gt;&lt;br /&gt;&lt;span style="color:green;"&gt;-- will work        : Where customer_id in (select item from fnc_split_string(@parameter,',')) &lt;/span&gt;&lt;br /&gt;&lt;span style="color:green;"&gt;--------------------------------------------------------- &lt;/span&gt;&lt;br /&gt;&lt;span style="color:blue;"&gt;ALTER&lt;/span&gt;    &lt;span style="color:blue;"&gt;FUNCTION&lt;/span&gt; [dbo].[fnc_split_int](&lt;br /&gt;       @list varchar(8000),   &lt;br /&gt;       @Delimiter VARCHAR(10) = ','&lt;br /&gt;)&lt;br /&gt;&lt;span style="color:blue;"&gt;RETURNS&lt;/span&gt; @tablevalues &lt;span style="color:blue;"&gt;TABLE&lt;/span&gt; (&lt;br /&gt;       item int&lt;br /&gt;)&lt;br /&gt;&lt;span style="color:blue;"&gt;AS&lt;/span&gt;&lt;br /&gt;&lt;span style="color:blue;"&gt;BEGIN&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:blue;"&gt;DECLARE&lt;/span&gt; @P_item varchar(255)&lt;br /&gt;                                   &lt;br /&gt;&lt;span style="color:blue;"&gt;WHILE&lt;/span&gt; (DATALENGTH(@list) &gt; 0)&lt;br /&gt;&lt;span style="color:blue;"&gt;BEGIN&lt;/span&gt;&lt;br /&gt;   &lt;span style="color:blue;"&gt;IF&lt;/span&gt; CHARINDEX(@Delimiter,@List) &gt; 0&lt;br /&gt;           &lt;span style="color:blue;"&gt;BEGIN&lt;/span&gt;&lt;br /&gt;           &lt;span style="color:blue;"&gt;SELECT&lt;/span&gt; @p_Item = SUBSTRING(@List,1,(CHARINDEX(@Delimiter,@List)-1))&lt;br /&gt;               &lt;span style="color:blue;"&gt;SELECT&lt;/span&gt; @List = SUBSTRING(@List,(CHARINDEX(@Delimiter,@List) + DATALENGTH(@Delimiter)),DATALENGTH(@List))&lt;br /&gt;           &lt;span style="color:blue;"&gt;END&lt;/span&gt;&lt;br /&gt;   &lt;span style="color:blue;"&gt;ELSE&lt;/span&gt;&lt;br /&gt;           &lt;span style="color:blue;"&gt;BEGIN&lt;/span&gt;&lt;br /&gt;               &lt;span style="color:blue;"&gt;SELECT&lt;/span&gt; @p_Item = @List&lt;br /&gt;       &lt;span style="color:blue;"&gt;SELECT&lt;/span&gt; @List = &lt;span style="color:blue;"&gt;NULL&lt;/span&gt;&lt;br /&gt;           &lt;span style="color:blue;"&gt;END&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;       &lt;span style="color:blue;"&gt;INSERT&lt;/span&gt; &lt;span style="color:blue;"&gt;INTO&lt;/span&gt; @tablevalues&lt;br /&gt;   &lt;span style="color:blue;"&gt;SELECT&lt;/span&gt; Item = &lt;span style="color:blue;"&gt;convert&lt;/span&gt;(int, LTRIM(RTRIM(@p_Item)))&lt;br /&gt;&lt;span style="color:blue;"&gt;END&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:blue;"&gt;RETURN&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:blue;"&gt;END&lt;/span&gt;&lt;br /&gt;       &lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;Here’s a simple example of a stored procedure using this function:&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="color:blue;"&gt;create&lt;/span&gt; &lt;span style="color:blue;"&gt;proc&lt;/span&gt; dbo.salesinfo (&lt;br /&gt;       @customers varchar(max)&lt;br /&gt;)&lt;br /&gt;&lt;span style="color:blue;"&gt;as&lt;/span&gt;&lt;br /&gt;      &lt;br /&gt;&lt;span style="color:blue;"&gt;Select&lt;/span&gt; * &lt;span style="color:blue;"&gt;from&lt;/span&gt; dbo.sales&lt;br /&gt;&lt;span style="color:blue;"&gt;where&lt;/span&gt; customer_id &lt;span style="color:blue;"&gt;in&lt;/span&gt; ( &lt;span style="background-color:yellow;" &gt;&lt;span style="color:blue;"&gt;select&lt;/span&gt; item &lt;span style="color:blue;"&gt;from&lt;/span&gt; fnc_split_int(@customers, ',')&lt;/span&gt; )&lt;br /&gt;&lt;/pre&gt; &lt;/blockquote&gt;&lt;br /&gt;&lt;h3&gt;[Using Table Variables]&lt;/h3&gt;&lt;br /&gt;The method above works well, but can get kind of annoying if you ever have to debug the stored procedure.  The stored procedure could be huge, and you might not care too much about which customers are displayed.  However it now requires a comma-delimited string of customers anytime you want to run some tests.&lt;br /&gt;To keep me from losing my mind, I add a few table variables in my stored procedure that are designed to handle the multi-value SSRS parameters. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;This is probably best explained in an example:&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="color:blue;"&gt;create&lt;/span&gt; &lt;span style="color:blue;"&gt;proc&lt;/span&gt; rpt.salesinfo (&lt;br /&gt;   &lt;span style="background-color:yellow;" &gt;@customers varchar(max) = &lt;span style="color:blue;"&gt;null&lt;/span&gt;    &lt;span style="color:green;"&gt;--set to null by default &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;)&lt;br /&gt;&lt;span style="color:blue;"&gt;as&lt;/span&gt;&lt;br /&gt;      &lt;br /&gt;&lt;span style="background-color: yellow;color:green;" &gt;--Build local customer table&lt;/span&gt;&lt;br /&gt;&lt;span style="color:blue;"&gt;declare&lt;/span&gt; @customerlist &lt;span style="color:blue;"&gt;table&lt;/span&gt; (&lt;br /&gt;   customer_id int&lt;br /&gt;)&lt;br /&gt;&lt;br /&gt;&lt;span style="color:blue;"&gt;if&lt;/span&gt; @customers &lt;span style="color:blue;"&gt;is&lt;/span&gt; &lt;span style="color:blue;"&gt;null&lt;/span&gt;&lt;br /&gt;&lt;span style="color:blue;"&gt;begin&lt;/span&gt;&lt;br /&gt;       &lt;span style="background-color: yellow;color:green;" &gt;--Load all customers (null) &lt;/span&gt;&lt;br /&gt;       &lt;span style="color:blue;"&gt;insert&lt;/span&gt; &lt;span style="color:blue;"&gt;into&lt;/span&gt; @customerlist&lt;br /&gt;       &lt;span style="color:blue;"&gt;select&lt;/span&gt; customer_id &lt;span style="color:blue;"&gt;from&lt;/span&gt; customers&lt;br /&gt;&lt;span style="color:blue;"&gt;end&lt;/span&gt;&lt;br /&gt;&lt;span style="color:blue;"&gt;else&lt;/span&gt;&lt;br /&gt;&lt;span style="color:blue;"&gt;begin&lt;/span&gt;&lt;br /&gt;       &lt;span style="background-color: yellow;color:green;" &gt;--Load only those customers chosen in @customers &lt;/span&gt;&lt;br /&gt;       &lt;span style="color:blue;"&gt;insert&lt;/span&gt; &lt;span style="color:blue;"&gt;into&lt;/span&gt; @customerlist&lt;br /&gt;       &lt;span style="color:blue;"&gt;select&lt;/span&gt; item &lt;span style="color:blue;"&gt;from&lt;/span&gt; fnc_split_string(@customers, ',')&lt;br /&gt;&lt;span style="color:blue;"&gt;end&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="background-color: yellow;color:green;" &gt;--report query (using @customerlist) &lt;/span&gt;&lt;br /&gt;&lt;span style="color:blue;"&gt;select&lt;/span&gt; * &lt;span style="color:blue;"&gt;from&lt;/span&gt; sales&lt;br /&gt;&lt;span style="color:blue;"&gt;where&lt;/span&gt; customer_id &lt;span style="color:blue;"&gt;in&lt;/span&gt; (&lt;span style="color:blue;"&gt;select&lt;/span&gt; customer_id &lt;span style="color:blue;"&gt;from&lt;/span&gt; @customerlist)&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;b&gt;Notes:&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;It might seem a little excessive to build a local table of values when you already have those values in comma-delimited form.  But using this method has saved me a lot of headaches when I’m trying to debug something in the stored procedure.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;I could use a join instead of putting the @customerlist table in the where string.  However, I’ve found that performance hasn’t really been an issue for our setup.  I also think it’s a little easier to read – a new developer doesn’t have to worry about finding a join that is only used to limit the resultset.  From what I remember, the server does a lot to optimize queries anyway, so things like this usually do not matter as much.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;h3&gt;[Final Thoughts]&lt;/h3&gt;This example shows a method I use to test and debug stored procedures for SSRS reports that use multi-valued parameters.  There isn’t any ground breaking functionality introduced, just a bunch of smaller things strung together to hopefully make life easier.  I should mention there are other ways of doing this, some might be better than this one.  At the time of this writing I was only using SQL Server 2005.&lt;br /&gt;&lt;br /&gt;Please feel free to ask questions or suggest improvements.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6907975643453137972-3974774199567068520?l=www.jjerome.com%2Fprojects%2Findex.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/6907975643453137972/3974774199567068520/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=6907975643453137972&amp;postID=3974774199567068520' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6907975643453137972/posts/default/3974774199567068520'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6907975643453137972/posts/default/3974774199567068520'/><link rel='alternate' type='text/html' href='http://www.jjerome.com/projects/2009/07/ssrs-multi-select-parameters-for-stored.html' title='SSRS Multi-Select Parameters for Stored Procedures in SQL 2005'/><author><name>Jason Jerome</name><uri>http://www.blogger.com/profile/02004764316249949872</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='15696789817534182749'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6907975643453137972.post-8000085334248438187</id><published>2009-02-11T13:50:00.000-08:00</published><updated>2009-02-11T13:55:25.054-08:00</updated><title type='text'>IIS 7 ASP scripts (vbscript) fail to send email (web.com)</title><content type='html'>I recently had a horrible experience with web.com.  They "upgraded" our web server that broke all my client's email functionality for his ASP scripts.  These scripts ran flawlessly for years without issue, then all of the sudden none of them worked, and the web host seemed unwilling to help us.&lt;br /&gt;&lt;br /&gt;After doing some research, I discovered that they upgraded their servers to MS IIS 7, which no longer directly supports sending emails from an ASP page using "CDO.Message" or "CDONTS".  I'm hoping that other web.com users might come across this article in a google search and could save some themselves some time.  There might also be other people who have another web host with similar problems. &lt;br /&gt;&lt;br /&gt;From what I understand, according to all articles I have found around the web, IIS7 no longer supports sending emails from an ASP page using "CDO.Message" directly.&lt;br /&gt;&lt;br /&gt;Here is my old code, which no longer works:&lt;br /&gt;&lt;br /&gt;Sub SendMail(Subject,Body,EmailTo,EmailFrom)&lt;br /&gt; Set Newmail = CreateObject("CDO.Message")&lt;br /&gt; newmail.TextBody = Body&lt;br /&gt; newmail.Subject = Subject&lt;br /&gt; newmail.To = EmailTo&lt;br /&gt; newmail.From = EmailFrom&lt;br /&gt; newmail.Send&lt;br /&gt; set newmail = nothing&lt;br /&gt;end Sub&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;There are a few solutions out there, but the one that worked for me (as a web.com user) is to use CDOSYS.  I found this through a series of searches, and my solution I present is just my flavor of the method recommended:&lt;br /&gt;&lt;br /&gt;Regarding the Fields used for "CDO.Configuration", I had to play around to find the ones that my webhost seemed to care about.  For instance, I have commented out cdoSendUsingPort and replaced it with a 2 (the actual value of cdoSendUsingPort).  Most people online seem to be recommending putting the address of your SMTP server for the "smtpserver" setting, but I found that web.com only worked with "localhost".&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Function SendEmail(Subject,Body,EmailTo,EmailFrom)&lt;br /&gt;' SendEmail(Subject,Body,EmailTo,EmailFrom)&lt;br /&gt;' 2/10/2009 JMJ: Uses CDOSYS method of sending email&lt;br /&gt;'&lt;br /&gt;&lt;br /&gt; Set cdoMessage = CreateObject("CDO.Message")&lt;br /&gt;   Set cdoConfig = CreateObject("CDO.Configuration")&lt;br /&gt;&lt;br /&gt; Set Flds = cdoConfig.Fields&lt;br /&gt;&lt;br /&gt; With Flds&lt;br /&gt; .Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 'cdoSendUsingPort&lt;br /&gt; .Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "localhost"&lt;br /&gt; .Item("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 60&lt;br /&gt; .Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25&lt;br /&gt; .Update&lt;br /&gt; End With&lt;br /&gt;&lt;br /&gt;   With cdoMessage&lt;br /&gt;       Set .Configuration = cdoConfig&lt;br /&gt;       .To = EmailTo&lt;br /&gt;       .From = EmailFrom       &lt;br /&gt;       .Subject = Subject&lt;br /&gt;       .TextBody = Body&lt;br /&gt;       .Send&lt;br /&gt;   End With&lt;br /&gt;&lt;br /&gt;   Set cdoMessage = Nothing&lt;br /&gt;   Set cdoConfig = Nothing&lt;br /&gt; Set Flds = Nothing&lt;br /&gt; &lt;br /&gt; SendEmail = true&lt;br /&gt; &lt;br /&gt;End Function 'SendEmail()&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Coincidentally, there are a couple more solutions out there.  One is to copy a couple dll’s onto the new server to provide support for legacy ASP scripts; another is to just send emails using the database.   I’ve provided some links below that were helpful to me.&lt;br /&gt;&lt;br /&gt;&lt;a href = "http://blogs.iis.net/bills/archive/2007/05/21/tips-for-classic-asp-developers-on-iis7.aspx"&gt;Tips for Classic ASP developers on IIS7&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href = "http://forums.iis.net/1044.aspx"&gt;IIS7 - Classic ASP Forum&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href = "http://classicasp.aspfaq.com/email/how-do-i-send-e-mail-with-cdo.html"&gt;How to send e-mail with CDO&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href = "http://www.w3schools.com/asp/asp_send_email.asp"&gt;ASP Sending e-mail with CDOSYS&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6907975643453137972-8000085334248438187?l=www.jjerome.com%2Fprojects%2Findex.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/6907975643453137972/8000085334248438187/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=6907975643453137972&amp;postID=8000085334248438187' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6907975643453137972/posts/default/8000085334248438187'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6907975643453137972/posts/default/8000085334248438187'/><link rel='alternate' type='text/html' href='http://www.jjerome.com/projects/2009/02/iis-7-asp-scripts-vbscript-fail-to-send.html' title='IIS 7 ASP scripts (vbscript) fail to send email (web.com)'/><author><name>Jason Jerome</name><uri>http://www.blogger.com/profile/02004764316249949872</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='15696789817534182749'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6907975643453137972.post-2835499407783881764</id><published>2008-07-03T14:37:00.000-07:00</published><updated>2008-07-10T08:33:01.192-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tivo'/><category scheme='http://www.blogger.com/atom/ns#' term='Directv'/><category scheme='http://www.blogger.com/atom/ns#' term='Mirror'/><category scheme='http://www.blogger.com/atom/ns#' term='Two Rooms'/><title type='text'>Directv Tivo in two rooms</title><content type='html'>&lt;font face="arial"&gt;For the longest time I’ve struggled with what to do about a TV in our bedroom.   We don’t watch a lot of TV in bed, but occasionally it’s nice to have.  We currently only have 2 TVs – one in our living room with a DirecTV Tivo, and the already mentioned bedroom TV with nothing.  The Bedroom TV used to have a satellite connection, but we didn’t use it enough to justify the cost.&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;&lt;font face="arial"&gt;I finally did some research online and came across the idea to take the Video-Out from the Tivo (actually the Cable-Out) and run a cable to another room.  What this does is essentially give us an exact copy of what’s on one TV on the other.  &lt;/font&gt;&lt;br /&gt;&lt;br /&gt;&lt;font face="arial"&gt;The specifics of the cable hookup are like this:&lt;/font&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;font face="arial"&gt;I had all our rooms wired for cable quite some time ago, and all the rooms run into a box in the basement  &lt;/font&gt;&lt;/li&gt;&lt;li&gt;&lt;font face="arial"&gt;I ran an additional cable from that box to the living room with the Tivo, and fished it through the same hole as the existing cable wall outlet &lt;/font&gt;&lt;/li&gt;&lt;li&gt;&lt;font face="arial"&gt;I bought a new cable wall faceplate that has 3 cable connectors instead of the usual one (Directv Tivos use 2 cables from the Satellite dish, I just needed 1 to go back out) and connected this new cable to it. This made it look perfectly normal in the living room, no messy cables coming out of a hole in the wall&lt;/font&gt;&lt;/li&gt;&lt;li&gt;&lt;font face="arial"&gt;Connect the new cable coming from the living room (connected to the extra Cable-out from the Tivo) to the cable going to the bedroom&lt;/font&gt;&lt;/li&gt;&lt;li&gt;&lt;font face="arial"&gt;Now the TV upstairs sees exactly the same thing as the living room&lt;/font&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;font face="arial"&gt;This solved the problem of getting the TV upstairs to work, but how do I control the Tivo, change channels, etc?  Simple, I used a &lt;a href="http://www.amazon.com/gp/redirect.html?ie=UTF8&amp;location=http%3A%2F%2Fwww.amazon.com%2FNext-Generation-Remote-Control-Extender%2Fdp%2FB000C1Z0HA%3Fie%3DUTF8%26s%3Delectronics%26qid%3D1215703356%26sr%3D8-1&amp;tag=jjerome-20&amp;linkCode=ur2&amp;camp=1789&amp;creative=9325"&gt;Remote Control Extender&lt;/a&gt;&lt;img src="http://www.assoc-amazon.com/e/ir?t=jjerome-20&amp;amp;l=ur2&amp;amp;o=1" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /&gt; – which I got here (&lt;a href="http://www.amazon.com/gp/redirect.html?ie=UTF8&amp;location=http%3A%2F%2Fwww.amazon.com%2FNext-Generation-Remote-Control-Extender%2Fdp%2FB000C1Z0HA%3Fie%3DUTF8%26s%3Delectronics%26qid%3D1215703356%26sr%3D8-1&amp;tag=jjerome-20&amp;linkCode=ur2&amp;camp=1789&amp;creative=9325"&gt;link&lt;/a&gt;&lt;img src="http://www.assoc-amazon.com/e/ir?t=jjerome-20&amp;amp;l=ur2&amp;amp;o=1" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /&gt;).  You basically set up the ufo-looking object somewhere in the room with the Tivo, then put the transmitter in as one of the batteries for your remote.  You can then operate the remote from almost anywhere in the house – it’s great.  They even supply two batteries, one of which is stored (and charged) in the ufo base.&lt;/font&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6907975643453137972-2835499407783881764?l=www.jjerome.com%2Fprojects%2Findex.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/6907975643453137972/2835499407783881764/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=6907975643453137972&amp;postID=2835499407783881764' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6907975643453137972/posts/default/2835499407783881764'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6907975643453137972/posts/default/2835499407783881764'/><link rel='alternate' type='text/html' href='http://www.jjerome.com/projects/2008/07/directv-tivo-in-two-rooms.html' title='Directv Tivo in two rooms'/><author><name>Jason Jerome</name><uri>http://www.blogger.com/profile/02004764316249949872</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='15696789817534182749'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6907975643453137972.post-8158349486906310752</id><published>2008-07-03T13:55:00.000-07:00</published><updated>2008-07-03T14:22:22.966-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SubString'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server 2005'/><category scheme='http://www.blogger.com/atom/ns#' term='Decimals'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><title type='text'>Number of Decimal places and the SubString() function</title><content type='html'>&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:worddocument&gt;   &lt;w:view&gt;Normal&lt;/w:View&gt;   &lt;w:zoom&gt;0&lt;/w:Zoom&gt;   &lt;w:trackmoves/&gt;   &lt;w:trackformatting/&gt;   &lt;w:punctuationkerning/&gt;   &lt;w:validateagainstschemas/&gt;   &lt;w:saveifxmlinvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;   &lt;w:ignoremixedcontent&gt;false&lt;/w:IgnoreMixedContent&gt;   &lt;w:alwaysshowplaceholdertext&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;   &lt;w:donotpromoteqf/&gt;   &lt;w:lidthemeother&gt;EN-US&lt;/w:LidThemeOther&gt;   &lt;w:lidthemeasian&gt;X-NONE&lt;/w:LidThemeAsian&gt;   &lt;w:lidthemecomplexscript&gt;X-NONE&lt;/w:LidThemeComplexScript&gt;   &lt;w:compatibility&gt;    &lt;w:breakwrappedtables/&gt;    &lt;w:snaptogridincell/&gt;    &lt;w:wraptextwithpunct/&gt;    &lt;w:useasianbreakrules/&gt;    &lt;w:dontgrowautofit/&gt;    &lt;w:splitpgbreakandparamark/&gt;    &lt;w:dontvertaligncellwithsp/&gt;    &lt;w:dontbreakconstrainedforcedtables/&gt;    &lt;w:dontvertalignintxbx/&gt;    &lt;w:word11kerningpairs/&gt;    &lt;w:cachedcolbalance/&gt;   &lt;/w:Compatibility&gt;   &lt;w:browserlevel&gt;MicrosoftInternetExplorer4&lt;/w:BrowserLevel&gt;   &lt;m:mathpr&gt;    &lt;m:mathfont val="Cambria Math"&gt;    &lt;m:brkbin val="before"&gt;    &lt;m:brkbinsub val="&amp;#45;-"&gt;    &lt;m:smallfrac val="off"&gt;    &lt;m:dispdef/&gt;    &lt;m:lmargin val="0"&gt;    &lt;m:rmargin val="0"&gt;    &lt;m:defjc val="centerGroup"&gt;    &lt;m:wrapindent val="1440"&gt;    &lt;m:intlim val="subSup"&gt;    &lt;m:narylim val="undOvr"&gt;   &lt;/m:mathPr&gt;&lt;/w:WordDocument&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:latentstyles deflockedstate="false" defunhidewhenused="true" defsemihidden="true" defqformat="false" defpriority="99" latentstylecount="267"&gt;   &lt;w:lsdexception locked="false" priority="0" semihidden="false" unhidewhenused="false" qformat="true" name="Normal"&gt;   &lt;w:lsdexception locked="false" priority="9" semihidden="false" unhidewhenused="false" qformat="true" name="heading 1"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 2"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 3"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 4"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 5"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 6"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 7"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 8"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 9"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 1"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 2"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 3"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 4"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 5"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 6"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 7"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 8"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 9"&gt;   &lt;w:lsdexception locked="false" priority="35" qformat="true" name="caption"&gt;   &lt;w:lsdexception locked="false" priority="10" semihidden="false" unhidewhenused="false" qformat="true" name="Title"&gt;   &lt;w:lsdexception locked="false" priority="1" name="Default Paragraph Font"&gt;   &lt;w:lsdexception locked="false" priority="11" semihidden="false" unhidewhenused="false" qformat="true" name="Subtitle"&gt;   &lt;w:lsdexception locked="false" priority="22" semihidden="false" unhidewhenused="false" qformat="true" name="Strong"&gt;   &lt;w:lsdexception locked="false" priority="20" semihidden="false" unhidewhenused="false" qformat="true" name="Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="59" semihidden="false" unhidewhenused="false" name="Table Grid"&gt;   &lt;w:lsdexception locked="false" unhidewhenused="false" name="Placeholder Text"&gt;   &lt;w:lsdexception locked="false" priority="1" semihidden="false" unhidewhenused="false" qformat="true" name="No Spacing"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" unhidewhenused="false" name="Revision"&gt;   &lt;w:lsdexception locked="false" priority="34" semihidden="false" unhidewhenused="false" qformat="true" name="List Paragraph"&gt;   &lt;w:lsdexception locked="false" priority="29" semihidden="false" unhidewhenused="false" qformat="true" name="Quote"&gt;   &lt;w:lsdexception locked="false" priority="30" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Quote"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="19" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="21" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="31" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Reference"&gt;   &lt;w:lsdexception locked="false" priority="32" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Reference"&gt;   &lt;w:lsdexception locked="false" priority="33" semihidden="false" unhidewhenused="false" qformat="true" name="Book Title"&gt;   &lt;w:lsdexception locked="false" priority="37" name="Bibliography"&gt;   &lt;w:lsdexception locked="false" priority="39" qformat="true" name="TOC Heading"&gt;  &lt;/w:LatentStyles&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;style&gt; &lt;!--  /* Font Definitions */  @font-face  {font-family:"Cambria Math";  panose-1:2 4 5 3 5 4 6 3 2 4;  mso-font-charset:1;  mso-generic-font-family:roman;  mso-font-format:other;  mso-font-pitch:variable;  mso-font-signature:0 0 0 0 0 0;} @font-face  {font-family:Calibri;  panose-1:2 15 5 2 2 2 4 3 2 4;  mso-font-charset:0;  mso-generic-font-family:swiss;  mso-font-pitch:variable;  mso-font-signature:-1610611985 1073750139 0 0 159 0;}  /* Style Definitions */  p.MsoNormal, li.MsoNormal, div.MsoNormal  {mso-style-unhide:no;  mso-style-qformat:yes;  mso-style-parent:"";  margin-top:0in;  margin-right:0in;  margin-bottom:10.0pt;  margin-left:0in;  line-height:115%;  mso-pagination:widow-orphan;  font-size:11.0pt;  font-family:"Calibri","sans-serif";  mso-ascii-font-family:Calibri;  mso-ascii-theme-font:minor-latin;  mso-fareast-font-family:Calibri;  mso-fareast-theme-font:minor-latin;  mso-hansi-font-family:Calibri;  mso-hansi-theme-font:minor-latin;  mso-bidi-font-family:"Times New Roman";  mso-bidi-theme-font:minor-bidi;} p.MsoNoSpacing, li.MsoNoSpacing, div.MsoNoSpacing  {mso-style-priority:1;  mso-style-unhide:no;  mso-style-qformat:yes;  mso-style-parent:"";  margin:0in;  margin-bottom:.0001pt;  mso-pagination:widow-orphan;  font-size:11.0pt;  font-family:"Calibri","sans-serif";  mso-ascii-font-family:Calibri;  mso-ascii-theme-font:minor-latin;  mso-fareast-font-family:Calibri;  mso-fareast-theme-font:minor-latin;  mso-hansi-font-family:Calibri;  mso-hansi-theme-font:minor-latin;  mso-bidi-font-family:"Times New Roman";  mso-bidi-theme-font:minor-bidi;} .MsoChpDefault  {mso-style-type:export-only;  mso-default-props:yes;  mso-ascii-font-family:Calibri;  mso-ascii-theme-font:minor-latin;  mso-fareast-font-family:Calibri;  mso-fareast-theme-font:minor-latin;  mso-hansi-font-family:Calibri;  mso-hansi-theme-font:minor-latin;  mso-bidi-font-family:"Times New Roman";  mso-bidi-theme-font:minor-bidi;} .MsoPapDefault  {mso-style-type:export-only;  margin-bottom:10.0pt;  line-height:115%;} @page Section1  {size:8.5in 11.0in;  margin:1.0in 1.0in 1.0in 1.0in;  mso-header-margin:.5in;  mso-footer-margin:.5in;  mso-paper-source:0;} div.Section1  {page:Section1;} --&gt; &lt;/style&gt;&lt;!--[if gte mso 10]&gt; &lt;style&gt;  /* Style Definitions */  table.MsoNormalTable  {mso-style-name:"Table Normal";  mso-tstyle-rowband-size:0;  mso-tstyle-colband-size:0;  mso-style-noshow:yes;  mso-style-priority:99;  mso-style-qformat:yes;  mso-style-parent:"";  mso-padding-alt:0in 5.4pt 0in 5.4pt;  mso-para-margin-top:0in;  mso-para-margin-right:0in;  mso-para-margin-bottom:10.0pt;  mso-para-margin-left:0in;  line-height:115%;  mso-pagination:widow-orphan;  font-size:11.0pt;  font-family:"Calibri","sans-serif";  mso-ascii-font-family:Calibri;  mso-ascii-theme-font:minor-latin;  mso-fareast-font-family:"Times New Roman";  mso-fareast-theme-font:minor-fareast;  mso-hansi-font-family:Calibri;  mso-hansi-theme-font:minor-latin;} &lt;/style&gt; &lt;![endif]--&gt;  &lt;p class="MsoNoSpacing"&gt;I wanted a function that could give me the number of decimal places used in a given number.&lt;span style=""&gt;  &lt;/span&gt;I really didn’t find any elaborate solutions on the web, so I decided to write my own by converting the number into a varchar and parsing it appropriately.&lt;span style=""&gt;  &lt;/span&gt;While building the function, I discovered a neat little feature of the SubString() function.&lt;/p&gt;  &lt;p class="MsoNoSpacing"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;&lt;p class="MsoNoSpacing"&gt;&lt;o:p&gt;&lt;br /&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNoSpacing"&gt;Normally, SQL seems to work with an index of 1.&lt;span style=""&gt;  &lt;/span&gt;So I if asked it the position of the “J” in “Jason”, it would return 1 (one).&lt;span style=""&gt;  &lt;/span&gt;However, I was surprised to learn that the SubString() function accepts a 0 (zero) as a parameter for where to start the sub string.&lt;span style=""&gt;  &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNoSpacing"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;&lt;p class="MsoNoSpacing"&gt;&lt;o:p&gt;&lt;br /&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;span style="font-size: 11pt; font-family: &amp;quot;Calibri&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;This is an effective way to trim-off the last character of a string using &lt;span style="color: rgb(51, 0, 51);"&gt;SubString&lt;/span&gt;(@var, 0, len(@var)).&lt;span style=""&gt;  &lt;/span&gt;For example, if I want to trim off the last character of “0040”, I can use the SubString() command to trim off the last “0”.&lt;span style=""&gt;  &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Here is an explanation with code:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:worddocument&gt;   &lt;w:view&gt;Normal&lt;/w:View&gt;   &lt;w:zoom&gt;0&lt;/w:Zoom&gt;   &lt;w:trackmoves/&gt;   &lt;w:trackformatting/&gt;   &lt;w:punctuationkerning/&gt;   &lt;w:validateagainstschemas/&gt;   &lt;w:saveifxmlinvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;   &lt;w:ignoremixedcontent&gt;false&lt;/w:IgnoreMixedContent&gt;   &lt;w:alwaysshowplaceholdertext&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;   &lt;w:donotpromoteqf/&gt;   &lt;w:lidthemeother&gt;EN-US&lt;/w:LidThemeOther&gt;   &lt;w:lidthemeasian&gt;X-NONE&lt;/w:LidThemeAsian&gt;   &lt;w:lidthemecomplexscript&gt;X-NONE&lt;/w:LidThemeComplexScript&gt;   &lt;w:compatibility&gt;    &lt;w:breakwrappedtables/&gt;    &lt;w:snaptogridincell/&gt;    &lt;w:wraptextwithpunct/&gt;    &lt;w:useasianbreakrules/&gt;    &lt;w:dontgrowautofit/&gt;    &lt;w:splitpgbreakandparamark/&gt;    &lt;w:dontvertaligncellwithsp/&gt;    &lt;w:dontbreakconstrainedforcedtables/&gt;    &lt;w:dontvertalignintxbx/&gt;    &lt;w:word11kerningpairs/&gt;    &lt;w:cachedcolbalance/&gt;   &lt;/w:Compatibility&gt;   &lt;w:browserlevel&gt;MicrosoftInternetExplorer4&lt;/w:BrowserLevel&gt;   &lt;m:mathpr&gt;    &lt;m:mathfont val="Cambria Math"&gt;    &lt;m:brkbin val="before"&gt;    &lt;m:brkbinsub val="&amp;#45;-"&gt;    &lt;m:smallfrac val="off"&gt;    &lt;m:dispdef/&gt;    &lt;m:lmargin val="0"&gt;    &lt;m:rmargin val="0"&gt;    &lt;m:defjc val="centerGroup"&gt;    &lt;m:wrapindent val="1440"&gt;    &lt;m:intlim val="subSup"&gt;    &lt;m:narylim val="undOvr"&gt;   &lt;/m:mathPr&gt;&lt;/w:WordDocument&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:latentstyles deflockedstate="false" defunhidewhenused="true" defsemihidden="true" defqformat="false" defpriority="99" latentstylecount="267"&gt;   &lt;w:lsdexception locked="false" priority="0" semihidden="false" unhidewhenused="false" qformat="true" name="Normal"&gt;   &lt;w:lsdexception locked="false" priority="9" semihidden="false" unhidewhenused="false" qformat="true" name="heading 1"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 2"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 3"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 4"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 5"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 6"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 7"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 8"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 9"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 1"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 2"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 3"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 4"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 5"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 6"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 7"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 8"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 9"&gt;   &lt;w:lsdexception locked="false" priority="35" qformat="true" name="caption"&gt;   &lt;w:lsdexception locked="false" priority="10" semihidden="false" unhidewhenused="false" qformat="true" name="Title"&gt;   &lt;w:lsdexception locked="false" priority="1" name="Default Paragraph Font"&gt;   &lt;w:lsdexception locked="false" priority="11" semihidden="false" unhidewhenused="false" qformat="true" name="Subtitle"&gt;   &lt;w:lsdexception locked="false" priority="22" semihidden="false" unhidewhenused="false" qformat="true" name="Strong"&gt;   &lt;w:lsdexception locked="false" priority="20" semihidden="false" unhidewhenused="false" qformat="true" name="Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="59" semihidden="false" unhidewhenused="false" name="Table Grid"&gt;   &lt;w:lsdexception locked="false" unhidewhenused="false" name="Placeholder Text"&gt;   &lt;w:lsdexception locked="false" priority="1" semihidden="false" unhidewhenused="false" qformat="true" name="No Spacing"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" unhidewhenused="false" name="Revision"&gt;   &lt;w:lsdexception locked="false" priority="34" semihidden="false" unhidewhenused="false" qformat="true" name="List Paragraph"&gt;   &lt;w:lsdexception locked="false" priority="29" semihidden="false" unhidewhenused="false" qformat="true" name="Quote"&gt;   &lt;w:lsdexception locked="false" priority="30" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Quote"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="19" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="21" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="31" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Reference"&gt;   &lt;w:lsdexception locked="false" priority="32" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Reference"&gt;   &lt;w:lsdexception locked="false" priority="33" semihidden="false" unhidewhenused="false" qformat="true" name="Book Title"&gt;   &lt;w:lsdexception locked="false" priority="37" name="Bibliography"&gt;   &lt;w:lsdexception locked="false" priority="39" qformat="true" name="TOC Heading"&gt;  &lt;/w:LatentStyles&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;style&gt; &lt;!--  /* Font Definitions */  @font-face  {font-family:"Cambria Math";  panose-1:2 4 5 3 5 4 6 3 2 4;  mso-font-charset:1;  mso-generic-font-family:roman;  mso-font-format:other;  mso-font-pitch:variable;  mso-font-signature:0 0 0 0 0 0;} @font-face  {font-family:Calibri;  panose-1:2 15 5 2 2 2 4 3 2 4;  mso-font-charset:0;  mso-generic-font-family:swiss;  mso-font-pitch:variable;  mso-font-signature:-1610611985 1073750139 0 0 159 0;}  /* Style Definitions */  p.MsoNormal, li.MsoNormal, div.MsoNormal  {mso-style-unhide:no;  mso-style-qformat:yes;  mso-style-parent:"";  margin-top:0in;  margin-right:0in;  margin-bottom:10.0pt;  margin-left:0in;  line-height:115%;  mso-pagination:widow-orphan;  font-size:11.0pt;  font-family:"Calibri","sans-serif";  mso-ascii-font-family:Calibri;  mso-ascii-theme-font:minor-latin;  mso-fareast-font-family:Calibri;  mso-fareast-theme-font:minor-latin;  mso-hansi-font-family:Calibri;  mso-hansi-theme-font:minor-latin;  mso-bidi-font-family:"Times New Roman";  mso-bidi-theme-font:minor-bidi;} p.MsoNoSpacing, li.MsoNoSpacing, div.MsoNoSpacing  {mso-style-priority:1;  mso-style-unhide:no;  mso-style-qformat:yes;  mso-style-parent:"";  margin:0in;  margin-bottom:.0001pt;  mso-pagination:widow-orphan;  font-size:11.0pt;  font-family:"Calibri","sans-serif";  mso-ascii-font-family:Calibri;  mso-ascii-theme-font:minor-latin;  mso-fareast-font-family:Calibri;  mso-fareast-theme-font:minor-latin;  mso-hansi-font-family:Calibri;  mso-hansi-theme-font:minor-latin;  mso-bidi-font-family:"Times New Roman";  mso-bidi-theme-font:minor-bidi;} .MsoChpDefault  {mso-style-type:export-only;  mso-default-props:yes;  mso-ascii-font-family:Calibri;  mso-ascii-theme-font:minor-latin;  mso-fareast-font-family:Calibri;  mso-fareast-theme-font:minor-latin;  mso-hansi-font-family:Calibri;  mso-hansi-theme-font:minor-latin;  mso-bidi-font-family:"Times New Roman";  mso-bidi-theme-font:minor-bidi;} .MsoPapDefault  {mso-style-type:export-only;  margin-bottom:10.0pt;  line-height:115%;} @page Section1  {size:8.5in 11.0in;  margin:1.0in 1.0in 1.0in 1.0in;  mso-header-margin:.5in;  mso-footer-margin:.5in;  mso-paper-source:0;} div.Section1  {page:Section1;} --&gt; &lt;/style&gt;&lt;!--[if gte mso 10]&gt; &lt;style&gt;  /* Style Definitions */  table.MsoNormalTable  {mso-style-name:"Table Normal";  mso-tstyle-rowband-size:0;  mso-tstyle-colband-size:0;  mso-style-noshow:yes;  mso-style-priority:99;  mso-style-qformat:yes;  mso-style-parent:"";  mso-padding-alt:0in 5.4pt 0in 5.4pt;  mso-para-margin-top:0in;  mso-para-margin-right:0in;  mso-para-margin-bottom:10.0pt;  mso-para-margin-left:0in;  line-height:115%;  mso-pagination:widow-orphan;  font-size:11.0pt;  font-family:"Calibri","sans-serif";  mso-ascii-font-family:Calibri;  mso-ascii-theme-font:minor-latin;  mso-fareast-font-family:"Times New Roman";  mso-fareast-theme-font:minor-fareast;  mso-hansi-font-family:Calibri;  mso-hansi-theme-font:minor-latin;} &lt;/style&gt; &lt;![endif]--&gt;  &lt;p style="color: rgb(51, 204, 0);" class="MsoNoSpacing"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;--SubString&lt;/span&gt;(string, start, length)&lt;/p&gt;    &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: blue;"&gt;Declare&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt; @var &lt;span style="color: blue;"&gt;varchar&lt;/span&gt;&lt;span style="color: gray;"&gt;(&lt;/span&gt;10&lt;span style="color: gray;"&gt;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: blue;"&gt;Set&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt; @var &lt;span style="color: gray;"&gt;=&lt;/span&gt; &lt;span style="color: red;"&gt;'0040'&lt;/span&gt;&lt;span style="color: gray;"&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: green;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: blue;"&gt;Select&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt; &lt;span style="color: fuchsia;"&gt;SubString&lt;/span&gt;&lt;span style="color: gray;"&gt;(&lt;/span&gt;@var&lt;span style="color: gray;"&gt;, &lt;/span&gt;1&lt;span style="color: gray;"&gt;,&lt;/span&gt; &lt;span style="color: fuchsia;"&gt;len&lt;/span&gt;&lt;span style="color: gray;"&gt;(&lt;/span&gt;@var&lt;span style="color: gray;"&gt;))&lt;/span&gt;&lt;span style=""&gt;   &lt;/span&gt;&lt;span style="color: green;"&gt;--will return ‘.0040’&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNoSpacing"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: blue;"&gt;Select&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt; &lt;span style="color: fuchsia;"&gt;SubString&lt;/span&gt;&lt;span style="color: gray;"&gt;(&lt;/span&gt;@var&lt;span style="color: gray;"&gt;, &lt;/span&gt;0&lt;span style="color: gray;"&gt;,&lt;/span&gt; &lt;span style="color: fuchsia;"&gt;len&lt;/span&gt;&lt;span style="color: gray;"&gt;(&lt;/span&gt;@var&lt;span style="color: gray;"&gt;))&lt;/span&gt;&lt;span style=""&gt;   &lt;/span&gt;&lt;span style="color: green;"&gt;--will return ‘.004’&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;br /&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:worddocument&gt;   &lt;w:view&gt;Normal&lt;/w:View&gt;   &lt;w:zoom&gt;0&lt;/w:Zoom&gt;   &lt;w:trackmoves/&gt;   &lt;w:trackformatting/&gt;   &lt;w:punctuationkerning/&gt;   &lt;w:validateagainstschemas/&gt;   &lt;w:saveifxmlinvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;   &lt;w:ignoremixedcontent&gt;false&lt;/w:IgnoreMixedContent&gt;   &lt;w:alwaysshowplaceholdertext&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;   &lt;w:donotpromoteqf/&gt;   &lt;w:lidthemeother&gt;EN-US&lt;/w:LidThemeOther&gt;   &lt;w:lidthemeasian&gt;X-NONE&lt;/w:LidThemeAsian&gt;   &lt;w:lidthemecomplexscript&gt;X-NONE&lt;/w:LidThemeComplexScript&gt;   &lt;w:compatibility&gt;    &lt;w:breakwrappedtables/&gt;    &lt;w:snaptogridincell/&gt;    &lt;w:wraptextwithpunct/&gt;    &lt;w:useasianbreakrules/&gt;    &lt;w:dontgrowautofit/&gt;    &lt;w:splitpgbreakandparamark/&gt;    &lt;w:dontvertaligncellwithsp/&gt;    &lt;w:dontbreakconstrainedforcedtables/&gt;    &lt;w:dontvertalignintxbx/&gt;    &lt;w:word11kerningpairs/&gt;    &lt;w:cachedcolbalance/&gt;   &lt;/w:Compatibility&gt;   &lt;w:browserlevel&gt;MicrosoftInternetExplorer4&lt;/w:BrowserLevel&gt;   &lt;m:mathpr&gt;    &lt;m:mathfont val="Cambria Math"&gt;    &lt;m:brkbin val="before"&gt;    &lt;m:brkbinsub val="&amp;#45;-"&gt;    &lt;m:smallfrac val="off"&gt;    &lt;m:dispdef/&gt;    &lt;m:lmargin val="0"&gt;    &lt;m:rmargin val="0"&gt;    &lt;m:defjc val="centerGroup"&gt;    &lt;m:wrapindent val="1440"&gt;    &lt;m:intlim val="subSup"&gt;    &lt;m:narylim val="undOvr"&gt;   &lt;/m:mathPr&gt;&lt;/w:WordDocument&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:latentstyles deflockedstate="false" defunhidewhenused="true" defsemihidden="true" defqformat="false" defpriority="99" latentstylecount="267"&gt;   &lt;w:lsdexception locked="false" priority="0" semihidden="false" unhidewhenused="false" qformat="true" name="Normal"&gt;   &lt;w:lsdexception locked="false" priority="9" semihidden="false" unhidewhenused="false" qformat="true" name="heading 1"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 2"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 3"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 4"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 5"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 6"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 7"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 8"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 9"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 1"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 2"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 3"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 4"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 5"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 6"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 7"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 8"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 9"&gt;   &lt;w:lsdexception locked="false" priority="35" qformat="true" name="caption"&gt;   &lt;w:lsdexception locked="false" priority="10" semihidden="false" unhidewhenused="false" qformat="true" name="Title"&gt;   &lt;w:lsdexception locked="false" priority="1" name="Default Paragraph Font"&gt;   &lt;w:lsdexception locked="false" priority="11" semihidden="false" unhidewhenused="false" qformat="true" name="Subtitle"&gt;   &lt;w:lsdexception locked="false" priority="22" semihidden="false" unhidewhenused="false" qformat="true" name="Strong"&gt;   &lt;w:lsdexception locked="false" priority="20" semihidden="false" unhidewhenused="false" qformat="true" name="Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="59" semihidden="false" unhidewhenused="false" name="Table Grid"&gt;   &lt;w:lsdexception locked="false" unhidewhenused="false" name="Placeholder Text"&gt;   &lt;w:lsdexception locked="false" priority="1" semihidden="false" unhidewhenused="false" qformat="true" name="No Spacing"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" unhidewhenused="false" name="Revision"&gt;   &lt;w:lsdexception locked="false" priority="34" semihidden="false" unhidewhenused="false" qformat="true" name="List Paragraph"&gt;   &lt;w:lsdexception locked="false" priority="29" semihidden="false" unhidewhenused="false" qformat="true" name="Quote"&gt;   &lt;w:lsdexception locked="false" priority="30" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Quote"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="19" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="21" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="31" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Reference"&gt;   &lt;w:lsdexception locked="false" priority="32" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Reference"&gt;   &lt;w:lsdexception locked="false" priority="33" semihidden="false" unhidewhenused="false" qformat="true" name="Book Title"&gt;   &lt;w:lsdexception locked="false" priority="37" name="Bibliography"&gt;   &lt;w:lsdexception locked="false" priority="39" qformat="true" name="TOC Heading"&gt;  &lt;/w:LatentStyles&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;style&gt; &lt;!--  /* Font Definitions */  @font-face  {font-family:"Cambria Math";  panose-1:2 4 5 3 5 4 6 3 2 4;  mso-font-charset:1;  mso-generic-font-family:roman;  mso-font-format:other;  mso-font-pitch:variable;  mso-font-signature:0 0 0 0 0 0;} @font-face  {font-family:Calibri;  panose-1:2 15 5 2 2 2 4 3 2 4;  mso-font-charset:0;  mso-generic-font-family:swiss;  mso-font-pitch:variable;  mso-font-signature:-1610611985 1073750139 0 0 159 0;}  /* Style Definitions */  p.MsoNormal, li.MsoNormal, div.MsoNormal  {mso-style-unhide:no;  mso-style-qformat:yes;  mso-style-parent:"";  margin-top:0in;  margin-right:0in;  margin-bottom:10.0pt;  margin-left:0in;  line-height:115%;  mso-pagination:widow-orphan;  font-size:11.0pt;  font-family:"Calibri","sans-serif";  mso-ascii-font-family:Calibri;  mso-ascii-theme-font:minor-latin;  mso-fareast-font-family:Calibri;  mso-fareast-theme-font:minor-latin;  mso-hansi-font-family:Calibri;  mso-hansi-theme-font:minor-latin;  mso-bidi-font-family:"Times New Roman";  mso-bidi-theme-font:minor-bidi;} p.MsoNoSpacing, li.MsoNoSpacing, div.MsoNoSpacing  {mso-style-priority:1;  mso-style-unhide:no;  mso-style-qformat:yes;  mso-style-parent:"";  margin:0in;  margin-bottom:.0001pt;  mso-pagination:widow-orphan;  font-size:11.0pt;  font-family:"Calibri","sans-serif";  mso-ascii-font-family:Calibri;  mso-ascii-theme-font:minor-latin;  mso-fareast-font-family:Calibri;  mso-fareast-theme-font:minor-latin;  mso-hansi-font-family:Calibri;  mso-hansi-theme-font:minor-latin;  mso-bidi-font-family:"Times New Roman";  mso-bidi-theme-font:minor-bidi;} .MsoChpDefault  {mso-style-type:export-only;  mso-default-props:yes;  mso-ascii-font-family:Calibri;  mso-ascii-theme-font:minor-latin;  mso-fareast-font-family:Calibri;  mso-fareast-theme-font:minor-latin;  mso-hansi-font-family:Calibri;  mso-hansi-theme-font:minor-latin;  mso-bidi-font-family:"Times New Roman";  mso-bidi-theme-font:minor-bidi;} .MsoPapDefault  {mso-style-type:export-only;  margin-bottom:10.0pt;  line-height:115%;} @page Section1  {size:8.5in 11.0in;  margin:1.0in 1.0in 1.0in 1.0in;  mso-header-margin:.5in;  mso-footer-margin:.5in;  mso-paper-source:0;} div.Section1  {page:Section1;} --&gt; &lt;/style&gt;&lt;!--[if gte mso 10]&gt; &lt;style&gt;  /* Style Definitions */  table.MsoNormalTable  {mso-style-name:"Table Normal";  mso-tstyle-rowband-size:0;  mso-tstyle-colband-size:0;  mso-style-noshow:yes;  mso-style-priority:99;  mso-style-qformat:yes;  mso-style-parent:"";  mso-padding-alt:0in 5.4pt 0in 5.4pt;  mso-para-margin-top:0in;  mso-para-margin-right:0in;  mso-para-margin-bottom:10.0pt;  mso-para-margin-left:0in;  line-height:115%;  mso-pagination:widow-orphan;  font-size:11.0pt;  font-family:"Calibri","sans-serif";  mso-ascii-font-family:Calibri;  mso-ascii-theme-font:minor-latin;  mso-fareast-font-family:"Times New Roman";  mso-fareast-theme-font:minor-fareast;  mso-hansi-font-family:Calibri;  mso-hansi-theme-font:minor-latin;} &lt;/style&gt; &lt;![endif]--&gt;  &lt;p class="MsoNoSpacing"&gt;Using 0 for the start point with the length of the string has the effect of trimming the last character from the string.&lt;span style=""&gt;  &lt;/span&gt;I wasn’t expecting this behavior, but it certainly is nice!&lt;/p&gt;  &lt;p class="MsoNoSpacing"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;&lt;p class="MsoNoSpacing"&gt;&lt;o:p&gt;&lt;br /&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class="MsoNoSpacing"&gt;&lt;o:p&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Decimal Count Function&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:worddocument&gt;   &lt;w:view&gt;Normal&lt;/w:View&gt;   &lt;w:zoom&gt;0&lt;/w:Zoom&gt;   &lt;w:trackmoves/&gt;   &lt;w:trackformatting/&gt;   &lt;w:punctuationkerning/&gt;   &lt;w:validateagainstschemas/&gt;   &lt;w:saveifxmlinvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;   &lt;w:ignoremixedcontent&gt;false&lt;/w:IgnoreMixedContent&gt;   &lt;w:alwaysshowplaceholdertext&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;   &lt;w:donotpromoteqf/&gt;   &lt;w:lidthemeother&gt;EN-US&lt;/w:LidThemeOther&gt;   &lt;w:lidthemeasian&gt;X-NONE&lt;/w:LidThemeAsian&gt;   &lt;w:lidthemecomplexscript&gt;X-NONE&lt;/w:LidThemeComplexScript&gt;   &lt;w:compatibility&gt;    &lt;w:breakwrappedtables/&gt;    &lt;w:snaptogridincell/&gt;    &lt;w:wraptextwithpunct/&gt;    &lt;w:useasianbreakrules/&gt;    &lt;w:dontgrowautofit/&gt;    &lt;w:splitpgbreakandparamark/&gt;    &lt;w:dontvertaligncellwithsp/&gt;    &lt;w:dontbreakconstrainedforcedtables/&gt;    &lt;w:dontvertalignintxbx/&gt;    &lt;w:word11kerningpairs/&gt;    &lt;w:cachedcolbalance/&gt;   &lt;/w:Compatibility&gt;   &lt;w:browserlevel&gt;MicrosoftInternetExplorer4&lt;/w:BrowserLevel&gt;   &lt;m:mathpr&gt;    &lt;m:mathfont val="Cambria Math"&gt;    &lt;m:brkbin val="before"&gt;    &lt;m:brkbinsub val="&amp;#45;-"&gt;    &lt;m:smallfrac val="off"&gt;    &lt;m:dispdef/&gt;    &lt;m:lmargin val="0"&gt;    &lt;m:rmargin val="0"&gt;    &lt;m:defjc val="centerGroup"&gt;    &lt;m:wrapindent val="1440"&gt;    &lt;m:intlim val="subSup"&gt;    &lt;m:narylim val="undOvr"&gt;   &lt;/m:mathPr&gt;&lt;/w:WordDocument&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:latentstyles deflockedstate="false" defunhidewhenused="true" defsemihidden="true" defqformat="false" defpriority="99" latentstylecount="267"&gt;   &lt;w:lsdexception locked="false" priority="0" semihidden="false" unhidewhenused="false" qformat="true" name="Normal"&gt;   &lt;w:lsdexception locked="false" priority="9" semihidden="false" unhidewhenused="false" qformat="true" name="heading 1"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 2"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 3"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 4"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 5"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 6"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 7"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 8"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 9"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 1"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 2"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 3"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 4"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 5"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 6"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 7"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 8"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 9"&gt;   &lt;w:lsdexception locked="false" priority="35" qformat="true" name="caption"&gt;   &lt;w:lsdexception locked="false" priority="10" semihidden="false" unhidewhenused="false" qformat="true" name="Title"&gt;   &lt;w:lsdexception locked="false" priority="1" name="Default Paragraph Font"&gt;   &lt;w:lsdexception locked="false" priority="11" semihidden="false" unhidewhenused="false" qformat="true" name="Subtitle"&gt;   &lt;w:lsdexception locked="false" priority="22" semihidden="false" unhidewhenused="false" qformat="true" name="Strong"&gt;   &lt;w:lsdexception locked="false" priority="20" semihidden="false" unhidewhenused="false" qformat="true" name="Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="59" semihidden="false" unhidewhenused="false" name="Table Grid"&gt;   &lt;w:lsdexception locked="false" unhidewhenused="false" name="Placeholder Text"&gt;   &lt;w:lsdexception locked="false" priority="1" semihidden="false" unhidewhenused="false" qformat="true" name="No Spacing"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" unhidewhenused="false" name="Revision"&gt;   &lt;w:lsdexception locked="false" priority="34" semihidden="false" unhidewhenused="false" qformat="true" name="List Paragraph"&gt;   &lt;w:lsdexception locked="false" priority="29" semihidden="false" unhidewhenused="false" qformat="true" name="Quote"&gt;   &lt;w:lsdexception locked="false" priority="30" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Quote"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="19" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="21" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="31" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Reference"&gt;   &lt;w:lsdexception locked="false" priority="32" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Reference"&gt;   &lt;w:lsdexception locked="false" priority="33" semihidden="false" unhidewhenused="false" qformat="true" name="Book Title"&gt;   &lt;w:lsdexception locked="false" priority="37" name="Bibliography"&gt;   &lt;w:lsdexception locked="false" priority="39" qformat="true" name="TOC Heading"&gt;  &lt;/w:LatentStyles&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;style&gt; &lt;!--  /* Font Definitions */  @font-face  {font-family:"Cambria Math";  panose-1:2 4 5 3 5 4 6 3 2 4;  mso-font-charset:1;  mso-generic-font-family:roman;  mso-font-format:other;  mso-font-pitch:variable;  mso-font-signature:0 0 0 0 0 0;} @font-face  {font-family:Calibri;  panose-1:2 15 5 2 2 2 4 3 2 4;  mso-font-charset:0;  mso-generic-font-family:swiss;  mso-font-pitch:variable;  mso-font-signature:-1610611985 1073750139 0 0 159 0;}  /* Style Definitions */  p.MsoNormal, li.MsoNormal, div.MsoNormal  {mso-style-unhide:no;  mso-style-qformat:yes;  mso-style-parent:"";  margin-top:0in;  margin-right:0in;  margin-bottom:10.0pt;  margin-left:0in;  line-height:115%;  mso-pagination:widow-orphan;  font-size:11.0pt;  font-family:"Calibri","sans-serif";  mso-ascii-font-family:Calibri;  mso-ascii-theme-font:minor-latin;  mso-fareast-font-family:Calibri;  mso-fareast-theme-font:minor-latin;  mso-hansi-font-family:Calibri;  mso-hansi-theme-font:minor-latin;  mso-bidi-font-family:"Times New Roman";  mso-bidi-theme-font:minor-bidi;} p.MsoNoSpacing, li.MsoNoSpacing, div.MsoNoSpacing  {mso-style-priority:1;  mso-style-unhide:no;  mso-style-qformat:yes;  mso-style-parent:"";  margin:0in;  margin-bottom:.0001pt;  mso-pagination:widow-orphan;  font-size:11.0pt;  font-family:"Calibri","sans-serif";  mso-ascii-font-family:Calibri;  mso-ascii-theme-font:minor-latin;  mso-fareast-font-family:Calibri;  mso-fareast-theme-font:minor-latin;  mso-hansi-font-family:Calibri;  mso-hansi-theme-font:minor-latin;  mso-bidi-font-family:"Times New Roman";  mso-bidi-theme-font:minor-bidi;} .MsoChpDefault  {mso-style-type:export-only;  mso-default-props:yes;  mso-ascii-font-family:Calibri;  mso-ascii-theme-font:minor-latin;  mso-fareast-font-family:Calibri;  mso-fareast-theme-font:minor-latin;  mso-hansi-font-family:Calibri;  mso-hansi-theme-font:minor-latin;  mso-bidi-font-family:"Times New Roman";  mso-bidi-theme-font:minor-bidi;} .MsoPapDefault  {mso-style-type:export-only;  margin-bottom:10.0pt;  line-height:115%;} @page Section1  {size:8.5in 11.0in;  margin:1.0in 1.0in 1.0in 1.0in;  mso-header-margin:.5in;  mso-footer-margin:.5in;  mso-paper-source:0;} div.Section1  {page:Section1;} --&gt; &lt;/style&gt;&lt;!--[if gte mso 10]&gt; &lt;style&gt;  /* Style Definitions */  table.MsoNormalTable  {mso-style-name:"Table Normal";  mso-tstyle-rowband-size:0;  mso-tstyle-colband-size:0;  mso-style-noshow:yes;  mso-style-priority:99;  mso-style-qformat:yes;  mso-style-parent:"";  mso-padding-alt:0in 5.4pt 0in 5.4pt;  mso-para-margin-top:0in;  mso-para-margin-right:0in;  mso-para-margin-bottom:10.0pt;  mso-para-margin-left:0in;  line-height:115%;  mso-pagination:widow-orphan;  font-size:11.0pt;  font-family:"Calibri","sans-serif";  mso-ascii-font-family:Calibri;  mso-ascii-theme-font:minor-latin;  mso-fareast-font-family:"Times New Roman";  mso-fareast-theme-font:minor-fareast;  mso-hansi-font-family:Calibri;  mso-hansi-theme-font:minor-latin;} &lt;/style&gt; &lt;![endif]--&gt;  &lt;p class="MsoNoSpacing"&gt;Here is the entire function in case you are looking for something similar.&lt;span style=""&gt;  &lt;/span&gt;I built it for use with SQL Server 2005.&lt;/p&gt;  &lt;p class="MsoNoSpacing"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;&lt;p class="MsoNoSpacing"&gt;&lt;o:p&gt;&lt;br /&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNoSpacing"&gt;Here is my usual disclaimer:&lt;/p&gt;  &lt;p class="MsoNoSpacing"&gt;I’m not sure if this was the best way to go about solving the problem, but it worked. &lt;span style=""&gt;  &lt;/span&gt;I thought my code and comments might be useful for someone else who has a similar problem.&lt;span style=""&gt;  &lt;/span&gt;This code is free and comes with no guarantees.&lt;span style=""&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNoSpacing"&gt;&lt;span style=""&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNoSpacing"&gt;&lt;span style=""&gt;One more thing - apparently I lost my formatting (tabs/spaces/etc) when I pasted this code, and I'm too lazy to fix it.  Should only take a couple of minutes to make it look the way you're used to seeing it.  &lt;/span&gt;&lt;/p&gt; &lt;br /&gt;&lt;br /&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:worddocument&gt;   &lt;w:view&gt;Normal&lt;/w:View&gt;   &lt;w:zoom&gt;0&lt;/w:Zoom&gt;   &lt;w:trackmoves/&gt;   &lt;w:trackformatting/&gt;   &lt;w:punctuationkerning/&gt;   &lt;w:validateagainstschemas/&gt;   &lt;w:saveifxmlinvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;   &lt;w:ignoremixedcontent&gt;false&lt;/w:IgnoreMixedContent&gt;   &lt;w:alwaysshowplaceholdertext&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;   &lt;w:donotpromoteqf/&gt;   &lt;w:lidthemeother&gt;EN-US&lt;/w:LidThemeOther&gt;   &lt;w:lidthemeasian&gt;X-NONE&lt;/w:LidThemeAsian&gt;   &lt;w:lidthemecomplexscript&gt;X-NONE&lt;/w:LidThemeComplexScript&gt;   &lt;w:compatibility&gt;    &lt;w:breakwrappedtables/&gt;    &lt;w:snaptogridincell/&gt;    &lt;w:wraptextwithpunct/&gt;    &lt;w:useasianbreakrules/&gt;    &lt;w:dontgrowautofit/&gt;    &lt;w:splitpgbreakandparamark/&gt;    &lt;w:dontvertaligncellwithsp/&gt;    &lt;w:dontbreakconstrainedforcedtables/&gt;    &lt;w:dontvertalignintxbx/&gt;    &lt;w:word11kerningpairs/&gt;    &lt;w:cachedcolbalance/&gt;   &lt;/w:Compatibility&gt;   &lt;w:browserlevel&gt;MicrosoftInternetExplorer4&lt;/w:BrowserLevel&gt;   &lt;m:mathpr&gt;    &lt;m:mathfont val="Cambria Math"&gt;    &lt;m:brkbin val="before"&gt;    &lt;m:brkbinsub val="&amp;#45;-"&gt;    &lt;m:smallfrac val="off"&gt;    &lt;m:dispdef/&gt;    &lt;m:lmargin val="0"&gt;    &lt;m:rmargin val="0"&gt;    &lt;m:defjc val="centerGroup"&gt;    &lt;m:wrapindent val="1440"&gt;    &lt;m:intlim val="subSup"&gt;    &lt;m:narylim val="undOvr"&gt;   &lt;/m:mathPr&gt;&lt;/w:WordDocument&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:latentstyles deflockedstate="false" defunhidewhenused="true" defsemihidden="true" defqformat="false" defpriority="99" latentstylecount="267"&gt;   &lt;w:lsdexception locked="false" priority="0" semihidden="false" unhidewhenused="false" qformat="true" name="Normal"&gt;   &lt;w:lsdexception locked="false" priority="9" semihidden="false" unhidewhenused="false" qformat="true" name="heading 1"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 2"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 3"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 4"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 5"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 6"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 7"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 8"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 9"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 1"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 2"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 3"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 4"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 5"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 6"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 7"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 8"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 9"&gt;   &lt;w:lsdexception locked="false" priority="35" qformat="true" name="caption"&gt;   &lt;w:lsdexception locked="false" priority="10" semihidden="false" unhidewhenused="false" qformat="true" name="Title"&gt;   &lt;w:lsdexception locked="false" priority="1" name="Default Paragraph Font"&gt;   &lt;w:lsdexception locked="false" priority="11" semihidden="false" unhidewhenused="false" qformat="true" name="Subtitle"&gt;   &lt;w:lsdexception locked="false" priority="22" semihidden="false" unhidewhenused="false" qformat="true" name="Strong"&gt;   &lt;w:lsdexception locked="false" priority="20" semihidden="false" unhidewhenused="false" qformat="true" name="Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="59" semihidden="false" unhidewhenused="false" name="Table Grid"&gt;   &lt;w:lsdexception locked="false" unhidewhenused="false" name="Placeholder Text"&gt;   &lt;w:lsdexception locked="false" priority="1" semihidden="false" unhidewhenused="false" qformat="true" name="No Spacing"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" unhidewhenused="false" name="Revision"&gt;   &lt;w:lsdexception locked="false" priority="34" semihidden="false" unhidewhenused="false" qformat="true" name="List Paragraph"&gt;   &lt;w:lsdexception locked="false" priority="29" semihidden="false" unhidewhenused="false" qformat="true" name="Quote"&gt;   &lt;w:lsdexception locked="false" priority="30" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Quote"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="19" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="21" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="31" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Reference"&gt;   &lt;w:lsdexception locked="false" priority="32" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Reference"&gt;   &lt;w:lsdexception locked="false" priority="33" semihidden="false" unhidewhenused="false" qformat="true" name="Book Title"&gt;   &lt;w:lsdexception locked="false" priority="37" name="Bibliography"&gt;   &lt;w:lsdexception locked="false" priority="39" qformat="true" name="TOC Heading"&gt;  &lt;/w:LatentStyles&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;style&gt; &lt;!--  /* Font Definitions */  @font-face  {font-family:"Cambria Math";  panose-1:2 4 5 3 5 4 6 3 2 4;  mso-font-charset:1;  mso-generic-font-family:roman;  mso-font-format:other;  mso-font-pitch:variable;  mso-font-signature:0 0 0 0 0 0;} @font-face  {font-family:Calibri;  panose-1:2 15 5 2 2 2 4 3 2 4;  mso-font-charset:0;  mso-generic-font-family:swiss;  mso-font-pitch:variable;  mso-font-signature:-1610611985 1073750139 0 0 159 0;}  /* Style Definitions */  p.MsoNormal, li.MsoNormal, div.MsoNormal  {mso-style-unhide:no;  mso-style-qformat:yes;  mso-style-parent:"";  margin-top:0in;  margin-right:0in;  margin-bottom:10.0pt;  margin-left:0in;  line-height:115%;  mso-pagination:widow-orphan;  font-size:11.0pt;  font-family:"Calibri","sans-serif";  mso-ascii-font-family:Calibri;  mso-ascii-theme-font:minor-latin;  mso-fareast-font-family:Calibri;  mso-fareast-theme-font:minor-latin;  mso-hansi-font-family:Calibri;  mso-hansi-theme-font:minor-latin;  mso-bidi-font-family:"Times New Roman";  mso-bidi-theme-font:minor-bidi;} p.MsoNoSpacing, li.MsoNoSpacing, div.MsoNoSpacing  {mso-style-priority:1;  mso-style-unhide:no;  mso-style-qformat:yes;  mso-style-parent:"";  margin:0in;  margin-bottom:.0001pt;  mso-pagination:widow-orphan;  font-size:11.0pt;  font-family:"Calibri","sans-serif";  mso-ascii-font-family:Calibri;  mso-ascii-theme-font:minor-latin;  mso-fareast-font-family:Calibri;  mso-fareast-theme-font:minor-latin;  mso-hansi-font-family:Calibri;  mso-hansi-theme-font:minor-latin;  mso-bidi-font-family:"Times New Roman";  mso-bidi-theme-font:minor-bidi;} .MsoChpDefault  {mso-style-type:export-only;  mso-default-props:yes;  mso-ascii-font-family:Calibri;  mso-ascii-theme-font:minor-latin;  mso-fareast-font-family:Calibri;  mso-fareast-theme-font:minor-latin;  mso-hansi-font-family:Calibri;  mso-hansi-theme-font:minor-latin;  mso-bidi-font-family:"Times New Roman";  mso-bidi-theme-font:minor-bidi;} .MsoPapDefault  {mso-style-type:export-only;  margin-bottom:10.0pt;  line-height:115%;} @page Section1  {size:8.5in 11.0in;  margin:1.0in 1.0in 1.0in 1.0in;  mso-header-margin:.5in;  mso-footer-margin:.5in;  mso-paper-source:0;} div.Section1  {page:Section1;} --&gt; &lt;/style&gt;&lt;!--[if gte mso 10]&gt; &lt;style&gt;  /* Style Definitions */  table.MsoNormalTable  {mso-style-name:"Table Normal";  mso-tstyle-rowband-size:0;  mso-tstyle-colband-size:0;  mso-style-noshow:yes;  mso-style-priority:99;  mso-style-qformat:yes;  mso-style-parent:"";  mso-padding-alt:0in 5.4pt 0in 5.4pt;  mso-para-margin-top:0in;  mso-para-margin-right:0in;  mso-para-margin-bottom:10.0pt;  mso-para-margin-left:0in;  line-height:115%;  mso-pagination:widow-orphan;  font-size:11.0pt;  font-family:"Calibri","sans-serif";  mso-ascii-font-family:Calibri;  mso-ascii-theme-font:minor-latin;  mso-fareast-font-family:"Times New Roman";  mso-fareast-theme-font:minor-fareast;  mso-hansi-font-family:Calibri;  mso-hansi-theme-font:minor-latin;} &lt;/style&gt; &lt;![endif]--&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: green;"&gt;/*&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: green;"&gt;DecimalCount&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: green;"&gt;7/3/2008 JMJ&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: green;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: green;"&gt;Count of the number of decimal places used after decimal point.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: green;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: green;"&gt;Params:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: green;"&gt;@numString varchar(MAX)&lt;span style=""&gt;       &lt;/span&gt;varchar representing a number, assumes 1 (one) decimal point&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: green;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: green;"&gt;Returns:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: green;"&gt;int&lt;span style=""&gt;         &lt;/span&gt;Number of places used after decimal point, 0 (zero) if no decimal point &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: green;"&gt;&lt;span style=""&gt;            &lt;/span&gt;is found in the number.&lt;span style=""&gt;  &lt;/span&gt;Will not consider zeros on the end of the number &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: green;"&gt;&lt;span style=""&gt;            &lt;/span&gt;(i.e. .0040 will consider only .004, which will return 3).&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: green;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNoSpacing"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: green;"&gt;*/&lt;/span&gt;&lt;/p&gt;  &lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:worddocument&gt;   &lt;w:view&gt;Normal&lt;/w:View&gt;   &lt;w:zoom&gt;0&lt;/w:Zoom&gt;   &lt;w:trackmoves/&gt;   &lt;w:trackformatting/&gt;   &lt;w:punctuationkerning/&gt;   &lt;w:validateagainstschemas/&gt;   &lt;w:saveifxmlinvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;   &lt;w:ignoremixedcontent&gt;false&lt;/w:IgnoreMixedContent&gt;   &lt;w:alwaysshowplaceholdertext&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;   &lt;w:donotpromoteqf/&gt;   &lt;w:lidthemeother&gt;EN-US&lt;/w:LidThemeOther&gt;   &lt;w:lidthemeasian&gt;X-NONE&lt;/w:LidThemeAsian&gt;   &lt;w:lidthemecomplexscript&gt;X-NONE&lt;/w:LidThemeComplexScript&gt;   &lt;w:compatibility&gt;    &lt;w:breakwrappedtables/&gt;    &lt;w:snaptogridincell/&gt;    &lt;w:wraptextwithpunct/&gt;    &lt;w:useasianbreakrules/&gt;    &lt;w:dontgrowautofit/&gt;    &lt;w:splitpgbreakandparamark/&gt;    &lt;w:dontvertaligncellwithsp/&gt;    &lt;w:dontbreakconstrainedforcedtables/&gt;    &lt;w:dontvertalignintxbx/&gt;    &lt;w:word11kerningpairs/&gt;    &lt;w:cachedcolbalance/&gt;   &lt;/w:Compatibility&gt;   &lt;w:browserlevel&gt;MicrosoftInternetExplorer4&lt;/w:BrowserLevel&gt;   &lt;m:mathpr&gt;    &lt;m:mathfont val="Cambria Math"&gt;    &lt;m:brkbin val="before"&gt;    &lt;m:brkbinsub val="&amp;#45;-"&gt;    &lt;m:smallfrac val="off"&gt;    &lt;m:dispdef/&gt;    &lt;m:lmargin val="0"&gt;    &lt;m:rmargin val="0"&gt;    &lt;m:defjc val="centerGroup"&gt;    &lt;m:wrapindent val="1440"&gt;    &lt;m:intlim val="subSup"&gt;    &lt;m:narylim val="undOvr"&gt;   &lt;/m:mathPr&gt;&lt;/w:WordDocument&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:latentstyles deflockedstate="false" defunhidewhenused="true" defsemihidden="true" defqformat="false" defpriority="99" latentstylecount="267"&gt;   &lt;w:lsdexception locked="false" priority="0" semihidden="false" unhidewhenused="false" qformat="true" name="Normal"&gt;   &lt;w:lsdexception locked="false" priority="9" semihidden="false" unhidewhenused="false" qformat="true" name="heading 1"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 2"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 3"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 4"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 5"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 6"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 7"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 8"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 9"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 1"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 2"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 3"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 4"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 5"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 6"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 7"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 8"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 9"&gt;   &lt;w:lsdexception locked="false" priority="35" qformat="true" name="caption"&gt;   &lt;w:lsdexception locked="false" priority="10" semihidden="false" unhidewhenused="false" qformat="true" name="Title"&gt;   &lt;w:lsdexception locked="false" priority="1" name="Default Paragraph Font"&gt;   &lt;w:lsdexception locked="false" priority="11" semihidden="false" unhidewhenused="false" qformat="true" name="Subtitle"&gt;   &lt;w:lsdexception locked="false" priority="22" semihidden="false" unhidewhenused="false" qformat="true" name="Strong"&gt;   &lt;w:lsdexception locked="false" priority="20" semihidden="false" unhidewhenused="false" qformat="true" name="Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="59" semihidden="false" unhidewhenused="false" name="Table Grid"&gt;   &lt;w:lsdexception locked="false" unhidewhenused="false" name="Placeholder Text"&gt;   &lt;w:lsdexception locked="false" priority="1" semihidden="false" unhidewhenused="false" qformat="true" name="No Spacing"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" unhidewhenused="false" name="Revision"&gt;   &lt;w:lsdexception locked="false" priority="34" semihidden="false" unhidewhenused="false" qformat="true" name="List Paragraph"&gt;   &lt;w:lsdexception locked="false" priority="29" semihidden="false" unhidewhenused="false" qformat="true" name="Quote"&gt;   &lt;w:lsdexception locked="false" priority="30" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Quote"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="19" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="21" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="31" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Reference"&gt;   &lt;w:lsdexception locked="false" priority="32" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Reference"&gt;   &lt;w:lsdexception locked="false" priority="33" semihidden="false" unhidewhenused="false" qformat="true" name="Book Title"&gt;   &lt;w:lsdexception locked="false" priority="37" name="Bibliography"&gt;   &lt;w:lsdexception locked="false" priority="39" qformat="true" name="TOC Heading"&gt;  &lt;/w:LatentStyles&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;style&gt; &lt;!--  /* Font Definitions */  @font-face  {font-family:"Cambria Math";  panose-1:2 4 5 3 5 4 6 3 2 4;  mso-font-charset:1;  mso-generic-font-family:roman;  mso-font-format:other;  mso-font-pitch:variable;  mso-font-signature:0 0 0 0 0 0;} @font-face  {font-family:Calibri;  panose-1:2 15 5 2 2 2 4 3 2 4;  mso-font-charset:0;  mso-generic-font-family:swiss;  mso-font-pitch:variable;  mso-font-signature:-1610611985 1073750139 0 0 159 0;}  /* Style Definitions */  p.MsoNormal, li.MsoNormal, div.MsoNormal  {mso-style-unhide:no;  mso-style-qformat:yes;  mso-style-parent:"";  margin-top:0in;  margin-right:0in;  margin-bottom:10.0pt;  margin-left:0in;  line-height:115%;  mso-pagination:widow-orphan;  font-size:11.0pt;  font-family:"Calibri","sans-serif";  mso-ascii-font-family:Calibri;  mso-ascii-theme-font:minor-latin;  mso-fareast-font-family:Calibri;  mso-fareast-theme-font:minor-latin;  mso-hansi-font-family:Calibri;  mso-hansi-theme-font:minor-latin;  mso-bidi-font-family:"Times New Roman";  mso-bidi-theme-font:minor-bidi;} .MsoChpDefault  {mso-style-type:export-only;  mso-default-props:yes;  mso-ascii-font-family:Calibri;  mso-ascii-theme-font:minor-latin;  mso-fareast-font-family:Calibri;  mso-fareast-theme-font:minor-latin;  mso-hansi-font-family:Calibri;  mso-hansi-theme-font:minor-latin;  mso-bidi-font-family:"Times New Roman";  mso-bidi-theme-font:minor-bidi;} .MsoPapDefault  {mso-style-type:export-only;  margin-bottom:10.0pt;  line-height:115%;} @page Section1  {size:8.5in 11.0in;  margin:1.0in 1.0in 1.0in 1.0in;  mso-header-margin:.5in;  mso-footer-margin:.5in;  mso-paper-source:0;} div.Section1  {page:Section1;} --&gt; &lt;/style&gt;&lt;!--[if gte mso 10]&gt; &lt;style&gt;  /* Style Definitions */  table.MsoNormalTable  {mso-style-name:"Table Normal";  mso-tstyle-rowband-size:0;  mso-tstyle-colband-size:0;  mso-style-noshow:yes;  mso-style-priority:99;  mso-style-qformat:yes;  mso-style-parent:"";  mso-padding-alt:0in 5.4pt 0in 5.4pt;  mso-para-margin-top:0in;  mso-para-margin-right:0in;  mso-para-margin-bottom:10.0pt;  mso-para-margin-left:0in;  line-height:115%;  mso-pagination:widow-orphan;  font-size:11.0pt;  font-family:"Calibri","sans-serif";  mso-ascii-font-family:Calibri;  mso-ascii-theme-font:minor-latin;  mso-fareast-font-family:"Times New Roman";  mso-fareast-theme-font:minor-fareast;  mso-hansi-font-family:Calibri;  mso-hansi-theme-font:minor-latin;} &lt;/style&gt; &lt;![endif]--&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: blue;"&gt;CREATE&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt; &lt;span style="color: blue;"&gt;function&lt;/span&gt; [dbo]&lt;span style="color: gray;"&gt;.&lt;/span&gt;[DecimalCount] &lt;span style="color: gray;"&gt;(&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;      &lt;/span&gt;@numString &lt;span style="color: blue;"&gt;varchar&lt;/span&gt;&lt;span style="color: gray;"&gt;(&lt;/span&gt;&lt;span style="color: fuchsia;"&gt;MAX&lt;/span&gt;&lt;span style="color: gray;"&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;      &lt;/span&gt;&lt;span style="color: gray;"&gt;)&lt;/span&gt; &lt;span style="color: blue;"&gt;returns&lt;/span&gt; &lt;span style="color: blue;"&gt;int&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: blue;"&gt;as&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: blue;"&gt;begin&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: blue;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: blue;"&gt;declare&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt; @decimalPlace &lt;span style="color: blue;"&gt;bigint&lt;/span&gt;&lt;span style="color: gray;"&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: blue;"&gt;declare&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt; @subStr &lt;span style="color: blue;"&gt;varchar&lt;/span&gt;&lt;span style="color: gray;"&gt;(&lt;/span&gt;&lt;span style="color: fuchsia;"&gt;max&lt;/span&gt;&lt;span style="color: gray;"&gt;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: blue;"&gt;set&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt; @decimalPlace &lt;span style="color: gray;"&gt;=&lt;/span&gt; 0&lt;span style="color: gray;"&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: gray;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: green;"&gt;--find index of decimal place&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: blue;"&gt;set&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt; @decimalPlace &lt;span style="color: gray;"&gt;=&lt;/span&gt; &lt;span style="color: fuchsia;"&gt;Charindex&lt;/span&gt;&lt;span style="color: gray;"&gt;(&lt;/span&gt;&lt;span style="color: red;"&gt;'.'&lt;/span&gt;&lt;span style="color: gray;"&gt;,&lt;/span&gt;@numString&lt;span style="color: gray;"&gt;,&lt;/span&gt;0&lt;span style="color: gray;"&gt;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: gray;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: blue;"&gt;if&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt; &lt;span style="color: gray;"&gt;(&lt;/span&gt;@decimalPlace &lt;span style="color: gray;"&gt;&gt;&lt;/span&gt; 0&lt;span style="color: gray;"&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: blue;"&gt;begin&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;      &lt;/span&gt;&lt;span style="color: green;"&gt;-- @subStr = string without decimal (or anything left of decimal)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;      &lt;/span&gt;&lt;span style="color: blue;"&gt;set&lt;/span&gt; @subStr &lt;span style="color: gray;"&gt;=&lt;/span&gt; @numString&lt;span style="color: gray;"&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;      &lt;/span&gt;&lt;span style="color: blue;"&gt;set&lt;/span&gt; @subStr &lt;span style="color: gray;"&gt;=&lt;/span&gt; &lt;span style="color: gray;"&gt;Right(&lt;/span&gt;@numString&lt;span style="color: gray;"&gt;,&lt;/span&gt; &lt;span style="color: fuchsia;"&gt;Len&lt;/span&gt;&lt;span style="color: gray;"&gt;(&lt;/span&gt;@numString&lt;span style="color: gray;"&gt;)&lt;/span&gt; &lt;span style="color: gray;"&gt;-&lt;/span&gt; @decimalPlace&lt;span style="color: gray;"&gt;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: gray;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;      &lt;/span&gt;&lt;span style="color: green;"&gt;-- remove any trailing zeros&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;      &lt;/span&gt;&lt;span style="color: blue;"&gt;while&lt;/span&gt;&lt;span style="color: gray;"&gt;(&lt;/span&gt;&lt;span style="color: fuchsia;"&gt;charindex&lt;/span&gt;&lt;span style="color: gray;"&gt;(&lt;/span&gt;&lt;span style="color: red;"&gt;'0'&lt;/span&gt;&lt;span style="color: gray;"&gt;,&lt;/span&gt;@subStr&lt;span style="color: gray;"&gt;,&lt;/span&gt;&lt;span style="color: fuchsia;"&gt;len&lt;/span&gt;&lt;span style="color: gray;"&gt;(&lt;/span&gt;@subStr&lt;span style="color: gray;"&gt;)))&lt;/span&gt; &lt;span style="color: gray;"&gt;=&lt;/span&gt; &lt;span style="color: fuchsia;"&gt;len&lt;/span&gt;&lt;span style="color: gray;"&gt;(&lt;/span&gt;@subStr&lt;span style="color: gray;"&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;      &lt;/span&gt;&lt;span style="color: blue;"&gt;begin&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: blue;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;            &lt;/span&gt;&lt;span style="color: green;"&gt;-- catch conditions for numbers like '100.' or '100.0'&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;            &lt;/span&gt;&lt;span style="color: blue;"&gt;if&lt;/span&gt; &lt;span style="color: gray;"&gt;(&lt;/span&gt; &lt;span style="color: fuchsia;"&gt;charindex&lt;/span&gt;&lt;span style="color: gray;"&gt;(&lt;/span&gt;&lt;span style="color: red;"&gt;'0'&lt;/span&gt;&lt;span style="color: gray;"&gt;,&lt;/span&gt;@subStr&lt;span style="color: gray;"&gt;,&lt;/span&gt;&lt;span style="color: fuchsia;"&gt;len&lt;/span&gt;&lt;span style="color: gray;"&gt;(&lt;/span&gt;@subStr&lt;span style="color: gray;"&gt;))&lt;/span&gt; &lt;span style="color: gray;"&gt;=&lt;/span&gt; 0&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;                  &lt;/span&gt;&lt;span style=""&gt; &lt;/span&gt;&lt;span style="color: gray;"&gt;and&lt;/span&gt; &lt;span style="color: fuchsia;"&gt;len&lt;/span&gt;&lt;span style="color: gray;"&gt;(&lt;/span&gt;@subStr&lt;span style="color: gray;"&gt;)&lt;/span&gt; &lt;span style="color: gray;"&gt;=&lt;/span&gt; 0 &lt;span style="color: gray;"&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;            &lt;/span&gt;&lt;span style="color: blue;"&gt;begin&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;                  &lt;/span&gt;&lt;span style="color: blue;"&gt;break&lt;/span&gt;&lt;span style="color: gray;"&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;            &lt;/span&gt;&lt;span style="color: blue;"&gt;end&lt;/span&gt;&lt;span style=""&gt;   &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;            &lt;/span&gt;&lt;span style="color: green;"&gt;--using 0 for beginning will trim the last char from string&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;            &lt;/span&gt;&lt;span style="color: blue;"&gt;set&lt;/span&gt; @subStr &lt;span style="color: gray;"&gt;=&lt;/span&gt; &lt;span style="color: fuchsia;"&gt;SubString&lt;/span&gt;&lt;span style="color: gray;"&gt;(&lt;/span&gt;@subStr&lt;span style="color: gray;"&gt;,&lt;/span&gt; 0&lt;span style="color: gray;"&gt;,&lt;/span&gt; &lt;span style="color: fuchsia;"&gt;len&lt;/span&gt;&lt;span style="color: gray;"&gt;(&lt;/span&gt;@subStr&lt;span style="color: gray;"&gt;));&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;      &lt;/span&gt;&lt;span style="color: blue;"&gt;end&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: blue;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;      &lt;/span&gt;&lt;span style="color: blue;"&gt;if&lt;/span&gt; &lt;span style="color: gray;"&gt;(&lt;/span&gt;&lt;span style="color: fuchsia;"&gt;len&lt;/span&gt;&lt;span style="color: gray;"&gt;(&lt;/span&gt;@subStr&lt;span style="color: gray;"&gt;)&lt;/span&gt; &lt;span style="color: gray;"&gt;is&lt;/span&gt; &lt;span style="color: gray;"&gt;null)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;      &lt;/span&gt;&lt;span style="color: blue;"&gt;begin&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;            &lt;/span&gt;&lt;span style="color: blue;"&gt;return&lt;/span&gt; 0&lt;span style="color: gray;"&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;      &lt;/span&gt;&lt;span style="color: blue;"&gt;end&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;      &lt;/span&gt;&lt;span style="color: blue;"&gt;else&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;      &lt;/span&gt;&lt;span style="color: blue;"&gt;begin&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;            &lt;/span&gt;&lt;span style="color: blue;"&gt;return&lt;/span&gt; &lt;span style="color: fuchsia;"&gt;len&lt;/span&gt;&lt;span style="color: gray;"&gt;(&lt;/span&gt;@subStr&lt;span style="color: gray;"&gt;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;      &lt;/span&gt;&lt;span style="color: blue;"&gt;end&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: blue;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: blue;"&gt;end&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: blue;"&gt;else&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;  &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: blue;"&gt;begin&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;      &lt;/span&gt;&lt;span style="color: green;"&gt;--no decimal place&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;      &lt;/span&gt;&lt;span style="color: blue;"&gt;return&lt;/span&gt; 0&lt;span style="color: gray;"&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: blue;"&gt;end&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: blue;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: blue;"&gt;return&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt; 0&lt;span style="color: gray;"&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: gray;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: blue;"&gt;end&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6907975643453137972-8158349486906310752?l=www.jjerome.com%2Fprojects%2Findex.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/6907975643453137972/8158349486906310752/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=6907975643453137972&amp;postID=8158349486906310752' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6907975643453137972/posts/default/8158349486906310752'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6907975643453137972/posts/default/8158349486906310752'/><link rel='alternate' type='text/html' href='http://www.jjerome.com/projects/2008/07/number-of-decimal-places-and-substring.html' title='Number of Decimal places and the SubString() function'/><author><name>Jason Jerome</name><uri>http://www.blogger.com/profile/02004764316249949872</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='15696789817534182749'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6907975643453137972.post-716731564430324408</id><published>2008-03-16T20:43:00.000-07:00</published><updated>2008-03-16T20:50:14.932-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSRS'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><category scheme='http://www.blogger.com/atom/ns#' term='Report Services'/><title type='text'>SSRS code examples</title><content type='html'>I use SQL Server 2005 Report Services (SSRS) quite a bit.  I thought I'd share some code examples I keep handy.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;First day of Month&lt;/span&gt;&lt;br /&gt;To get the first day of the current month:&lt;br /&gt;=CDate(Month(Today).ToString() &amp;amp; "/1/" &amp;amp; Year(Today).ToString())&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Last day of Month&lt;/span&gt;&lt;br /&gt;To get the last day of the current month (use first day of the next month and subtract one):&lt;br /&gt;=DateAdd("d",-1,DateAdd("m",1,CDate(Month(Today).ToString() &amp;amp; "/1/" &amp;amp; Year(Today).ToString())))&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Page number&lt;/span&gt;&lt;br /&gt;Simple page count, easy to do but handy to have a copy of it around.  I usually put this and the global execute time in the footer of the report:&lt;br /&gt;="Page " &amp;amp; Globals!PageNumber &amp;amp; " of " &amp;amp; Globals!TotalPages&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Global Execution time&lt;/span&gt;&lt;br /&gt;Good for displaying in the footer in case it gets printed - the person looking at the report then knows when the report was ran.&lt;br /&gt;=Globals!ExecutionTime&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Clean URL for a direct link to a report&lt;/span&gt;&lt;br /&gt;If want to provide a direct link to a report most people usually end up copying it from the Address bar in their web browser.  However, that address usually has a lot of extra characters such as %20.  I've found an address that can provide a somewhat cleaner link.  Use the example below (substitute your own servername and Report+Name.&lt;br /&gt;&lt;br /&gt;Example of a easy to paste direct link to a report (notice no %20, etc).&lt;br /&gt;http://&lt;span style="color: rgb(51, 102, 255);"&gt;servername&lt;/span&gt;/ReportServer/Pages/ReportViewer.aspx?/Reports/&lt;span style="color: rgb(51, 204, 255);"&gt;Report+Name&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;These are pretty simple examples, but I can't remember how many times I've thanked myself for keeping them around in a small text file.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6907975643453137972-716731564430324408?l=www.jjerome.com%2Fprojects%2Findex.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/6907975643453137972/716731564430324408/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=6907975643453137972&amp;postID=716731564430324408' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6907975643453137972/posts/default/716731564430324408'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6907975643453137972/posts/default/716731564430324408'/><link rel='alternate' type='text/html' href='http://www.jjerome.com/projects/2008/03/ssrs-code-examples.html' title='SSRS code examples'/><author><name>Jason Jerome</name><uri>http://www.blogger.com/profile/02004764316249949872</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='15696789817534182749'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6907975643453137972.post-5867914971418045428</id><published>2008-03-06T07:44:00.000-08:00</published><updated>2008-03-06T18:07:59.702-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='subversion'/><category scheme='http://www.blogger.com/atom/ns#' term='c#'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server 2005'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server 2000'/><title type='text'>Scripting Database Objects from MS SQL Server 2000 to 2005 for Subversion</title><content type='html'>Our development team keeps track of Database objects in our environment by scripting changes from SQL Server to a text file, then using a Subversion repository to keep track of changes.&lt;span style="font-size:+0;"&gt; &lt;/span&gt;The process works pretty well for our team size, and Subversion provides us with a fairly good history of each database object. &lt;p class="MsoNormal"&gt;We started this process back in SQL Server 2000 using the scripting utilities provided to generate the text files, using their file name convention.&lt;span style="font-size:+0;"&gt; &lt;/span&gt;However, after we upgraded to SQL Server 2005, Microsoft changed the file naming convention of the text files.&lt;span style="font-size:+0;"&gt; &lt;/span&gt;I’ve included a small table showing some of the differences.&lt;/p&gt;&lt;table class="MsoTableGrid" style="BORDER-RIGHT: medium none; BORDER-TOP: medium none; BORDER-LEFT: medium none; BORDER-BOTTOM: medium none; BORDER-COLLAPSE: collapse" cellspacing="0" cellpadding="0" border="1"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="BORDER-RIGHT: black 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: black 1pt solid; PADDING-LEFT: 5.4pt; FONT-WEIGHT: bold; PADDING-BOTTOM: 0in; BORDER-LEFT: black 1pt solid; WIDTH: 159.6pt; PADDING-TOP: 0in; BORDER-BOTTOM: black 1pt solid" valign="top" width="213"&gt;&lt;p class="MsoNormal" style="MARGIN-BOTTOM: 0pt; LINE-HEIGHT: normal"&gt;Database Object &lt;/p&gt;&lt;/td&gt;&lt;td style="BORDER-RIGHT: black 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: black 1pt solid; PADDING-LEFT: 5.4pt; FONT-WEIGHT: bold; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; WIDTH: 159.6pt; PADDING-TOP: 0in; BORDER-BOTTOM: black 1pt solid" valign="top" width="213"&gt;&lt;p class="MsoNormal" style="MARGIN-BOTTOM: 0pt; LINE-HEIGHT: normal"&gt;SQL 2000&lt;/p&gt;&lt;/td&gt;&lt;td style="BORDER-RIGHT: black 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: black 1pt solid; PADDING-LEFT: 5.4pt; FONT-WEIGHT: bold; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; WIDTH: 159.6pt; PADDING-TOP: 0in; BORDER-BOTTOM: black 1pt solid" valign="top" width="213"&gt;&lt;p class="MsoNormal" style="MARGIN-BOTTOM: 0pt; LINE-HEIGHT: normal"&gt;SQL 2005&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: 1pt solid; WIDTH: 159.6pt; PADDING-TOP: 0in; BORDER-BOTTOM: 1pt solid" valign="top" width="213"&gt;&lt;p class="MsoNormal" style="MARGIN-BOTTOM: 0pt; LINE-HEIGHT: normal"&gt;View&lt;/p&gt;&lt;/td&gt;&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; WIDTH: 159.6pt; PADDING-TOP: 0in; BORDER-BOTTOM: 1pt solid" valign="top" width="213"&gt;&lt;p class="MsoNormal" style="MARGIN-BOTTOM: 0pt; LINE-HEIGHT: normal"&gt;dbo.ViewName.VIW&lt;/p&gt;&lt;/td&gt;&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; WIDTH: 159.6pt; PADDING-TOP: 0in; BORDER-BOTTOM: 1pt solid" valign="top" width="213"&gt;&lt;p class="MsoNormal" style="MARGIN-BOTTOM: 0pt; LINE-HEIGHT: normal"&gt;dbo.ViewName.View.sql&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: 1pt solid; WIDTH: 159.6pt; PADDING-TOP: 0in; BORDER-BOTTOM: 1pt solid" valign="top" width="213"&gt;&lt;p class="MsoNormal" style="MARGIN-BOTTOM: 0pt; LINE-HEIGHT: normal"&gt;Table&lt;/p&gt;&lt;/td&gt;&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; WIDTH: 159.6pt; PADDING-TOP: 0in; BORDER-BOTTOM: 1pt solid" valign="top" width="213"&gt;&lt;p class="MsoNormal" style="MARGIN-BOTTOM: 0pt; LINE-HEIGHT: normal"&gt;dbo.TableName.TAB&lt;/p&gt;&lt;/td&gt;&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; WIDTH: 159.6pt; PADDING-TOP: 0in; BORDER-BOTTOM: 1pt solid" valign="top" width="213"&gt;&lt;p class="MsoNormal" style="MARGIN-BOTTOM: 0pt; LINE-HEIGHT: normal"&gt;dbo.TableName.Table.sql&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: 1pt solid; WIDTH: 159.6pt; PADDING-TOP: 0in; BORDER-BOTTOM: 1pt solid" valign="top" width="213"&gt;&lt;p class="MsoNormal" style="MARGIN-BOTTOM: 0pt; LINE-HEIGHT: normal"&gt;Table Trigger&lt;/p&gt;&lt;/td&gt;&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; WIDTH: 159.6pt; PADDING-TOP: 0in; BORDER-BOTTOM: 1pt solid" valign="top" width="213"&gt;&lt;p class="MsoNormal" style="MARGIN-BOTTOM: 0pt; LINE-HEIGHT: normal"&gt;dbo.TriggerName.TRG&lt;/p&gt;&lt;/td&gt;&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; WIDTH: 159.6pt; PADDING-TOP: 0in; BORDER-BOTTOM: 1pt solid" valign="top" width="213"&gt;&lt;p class="MsoNormal" style="MARGIN-BOTTOM: 0pt; LINE-HEIGHT: normal"&gt;TriggerName.Trigger.sql&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: 1pt solid; WIDTH: 159.6pt; PADDING-TOP: 0in; BORDER-BOTTOM: 1pt solid" valign="top" width="213"&gt;&lt;p class="MsoNormal" style="MARGIN-BOTTOM: 0pt; LINE-HEIGHT: normal"&gt;Stored Procedure&lt;/p&gt;&lt;/td&gt;&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; WIDTH: 159.6pt; PADDING-TOP: 0in; BORDER-BOTTOM: 1pt solid" valign="top" width="213"&gt;&lt;p class="MsoNormal" style="MARGIN-BOTTOM: 0pt; LINE-HEIGHT: normal"&gt;dbo.StoredProcName.PRC&lt;/p&gt;&lt;/td&gt;&lt;td style="BORDER-RIGHT: 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; WIDTH: 159.6pt; PADDING-TOP: 0in; BORDER-BOTTOM: 1pt solid" valign="top" width="213"&gt;&lt;p class="MsoNormal" style="MARGIN-BOTTOM: 0pt; LINE-HEIGHT: normal"&gt;dbo.StoredProcName.StoredProcedure.sql&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p class="MsoNormal"&gt;&lt;?xml:namespace prefix = o /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;The filename change was a big thorn in our side.&lt;span style="font-size:+0;"&gt; &lt;/span&gt;Subversion was tracking the files by filename and now all the filenames were going to change!&lt;span style="font-size:+0;"&gt; &lt;/span&gt;At first we toyed with the idea of writing our own code to export the objects using the old naming convention, but we didn’t want to have to maintain yet another program.&lt;span style="font-size:+0;"&gt; &lt;/span&gt;In the end we decided we were just going to have Subversion rename all the files accordingly.&lt;/p&gt;&lt;p class="MsoNormal"&gt;Since we’re mostly doing our development on Windows, we use TortoiseSVN (&lt;a href="http://tortoisesvn.tigris.org/"&gt;http://tortoisesvn.tigris.org/&lt;/a&gt;), which is a great tool.&lt;span style="font-size:+0;"&gt; &lt;/span&gt;However, we had around 600+ script files to rename and I didn’t feel like individually renaming each.&lt;span style="font-size:+0;"&gt; &lt;/span&gt;Instead, I decided to write a small program to break down each file, determine what type of object it was, and then call “svn rename” with the appropriate change. &lt;/p&gt;&lt;p class="MsoNormal"&gt;To do this, I had to download the Subversion client tools for Windows (&lt;a href="http://subversion.tigris.org/project_packages.html"&gt;http://subversion.tigris.org/project_packages.html&lt;/a&gt;).&lt;span style="font-size:+0;"&gt; &lt;/span&gt;After I had it installed and the command line tools were working, I wrote a small C# program in Visual Studio to do the work.&lt;span style="font-size:+0;"&gt; &lt;/span&gt;I never formally finished the program; instead I simply used it in debug mode so that I could step through to watch the process in detail (It only had to work once).&lt;/p&gt;&lt;p class="MsoNormal"&gt;The end result was a bunch of renamed script files that had their revision history kept intact.&lt;span style="font-size:+0;"&gt; &lt;/span&gt;I’m not sure if this was the best way to go about solving the problem, but it worked.&lt;span style="font-size:+0;"&gt; &lt;/span&gt;I thought my code and comments might be useful for someone else who has a similar problem.&lt;span style="font-size:+0;"&gt; &lt;/span&gt;This code is free and comes with no guarantees.&lt;span style="font-size:+0;"&gt; &lt;/span&gt;Good luck.&lt;/p&gt;&lt;br /&gt;&lt;a href="http://jjerome.com/media/Program.cs"&gt;Download the code here&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;using System;&lt;br /&gt;using System.Collections.Generic;&lt;br /&gt;using System.Diagnostics;&lt;br /&gt;using System.Text;&lt;br /&gt;using System.IO;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;namespace RenameSVNFiles&lt;br /&gt;{&lt;br /&gt;class Program&lt;br /&gt;{&lt;br /&gt;static void Main(string[] args)&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;Console.WriteLine("Begin SVN Rename Script");&lt;br /&gt;&lt;br /&gt;//Set to your directory&lt;br /&gt;String sDir = "D:/Projects/dbscripts";&lt;br /&gt;&lt;br /&gt;DirectoryInfo sourceFiles = new DirectoryInfo(sDir);&lt;br /&gt;FileInfo[] destFiles = sourceFiles.GetFiles("*.*");&lt;br /&gt;&lt;br /&gt;String sOrigFileName = "";&lt;br /&gt;String sNewFileName = "";&lt;br /&gt;String strCmdLine = "";&lt;br /&gt;String sOrigFileExt = "";&lt;br /&gt;int iFileExtLength = 0;&lt;br /&gt;int iModifiedCount = 0;&lt;br /&gt;&lt;br /&gt;//Declare and instantiate a new process component.&lt;br /&gt;System.Diagnostics.Process process1 = new System.Diagnostics.Process();&lt;br /&gt;process1.StartInfo.WorkingDirectory = sDir;&lt;br /&gt;&lt;br /&gt;foreach (FileInfo fi in destFiles)&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;sOrigFileName = fi.Name;&lt;br /&gt;&lt;br /&gt;//Find extension length and File name (assumes syntax of filename.extension)&lt;br /&gt;iFileExtLength = sOrigFileName.Length - sOrigFileName.LastIndexOf(".");&lt;br /&gt;sOrigFileExt = sOrigFileName.Substring(sOrigFileName.LastIndexOf("."), iFileExtLength);&lt;br /&gt;&lt;br /&gt;//change each file's extention to the new naming standard&lt;br /&gt;switch(sOrigFileExt)&lt;br /&gt;{&lt;br /&gt;case ".VIW":&lt;br /&gt;sNewFileName = sOrigFileName.Substring(0, sOrigFileName.LastIndexOf(".")) + ".View.sql";&lt;br /&gt;iModifiedCount++;&lt;br /&gt;break;&lt;br /&gt;case ".TAB":&lt;br /&gt;sNewFileName = sOrigFileName.Substring(0, sOrigFileName.LastIndexOf(".")) + ".Table.sql";&lt;br /&gt;iModifiedCount++;&lt;br /&gt;break;&lt;br /&gt;case ".TRG":&lt;br /&gt;sNewFileName = sOrigFileName.Substring(0, sOrigFileName.LastIndexOf(".")) + ".Trigger.sql";&lt;br /&gt;&lt;br /&gt;//Triggers do not have the "dbo." at the beginning of the file anymore - remove them&lt;br /&gt;String tmpStr = "dbo.";&lt;br /&gt;char[] trimChars = tmpStr.ToCharArray();&lt;br /&gt;sNewFileName = sNewFileName.TrimStart(trimChars);&lt;br /&gt;iModifiedCount++;&lt;br /&gt;break;&lt;br /&gt;case ".PRC":&lt;br /&gt;sNewFileName = sOrigFileName.Substring(0, sOrigFileName.LastIndexOf(".")) + ".StoredProcedure.sql";&lt;br /&gt;iModifiedCount++;&lt;br /&gt;break;&lt;br /&gt;default:&lt;br /&gt;//default - skip file&lt;br /&gt;continue;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;strCmdLine = "rename " + sOrigFileName + " " + sNewFileName;&lt;br /&gt;&lt;br /&gt;try&lt;br /&gt;{&lt;br /&gt;process1.StartInfo.FileName = "svn.exe";&lt;br /&gt;process1.StartInfo.Arguments = strCmdLine;&lt;br /&gt;process1.StartInfo.CreateNoWindow = true;&lt;br /&gt;process1.Start();&lt;br /&gt;process1.WaitForExit();&lt;br /&gt;}&lt;br /&gt;catch (Exception ex)&lt;br /&gt;{&lt;br /&gt;Console.WriteLine(&lt;br /&gt;"Exception Occurred :{0},{1}",&lt;br /&gt;ex.Message, ex.StackTrace.ToString()&lt;br /&gt;);&lt;br /&gt;Console.WriteLine("While trying: " + sOrigFileName + " -&gt; " + sNewFileName);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Console.WriteLine(sOrigFileName + " -&gt; " + sNewFileName);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;process1.Close();&lt;br /&gt;&lt;br /&gt;Console.WriteLine("");&lt;br /&gt;Console.WriteLine("");&lt;br /&gt;Console.WriteLine("Number of files in directory: " + destFiles.GetLength(0));&lt;br /&gt;Console.WriteLine("Number of files modified: " + iModifiedCount);&lt;br /&gt;Console.WriteLine("Press any key to exit...");&lt;br /&gt;Console.ReadKey();&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6907975643453137972-5867914971418045428?l=www.jjerome.com%2Fprojects%2Findex.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/6907975643453137972/5867914971418045428/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=6907975643453137972&amp;postID=5867914971418045428' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6907975643453137972/posts/default/5867914971418045428'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6907975643453137972/posts/default/5867914971418045428'/><link rel='alternate' type='text/html' href='http://www.jjerome.com/projects/2008/03/scripting-database-objects-from-ms-sql.html' title='Scripting Database Objects from MS SQL Server 2000 to 2005 for Subversion'/><author><name>Jason Jerome</name><uri>http://www.blogger.com/profile/02004764316249949872</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='15696789817534182749'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6907975643453137972.post-8633343513821850809</id><published>2008-02-29T22:01:00.001-08:00</published><updated>2008-03-02T11:01:52.041-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='vinyl'/><category scheme='http://www.blogger.com/atom/ns#' term='music'/><category scheme='http://www.blogger.com/atom/ns#' term='turn table'/><category scheme='http://www.blogger.com/atom/ns#' term='record player'/><title type='text'>Back to the Turntable, I've regressed back to before my youth</title><content type='html'>&lt;p class="MsoNormal"&gt;Quick Note: I've added myself as an Amazon Associate - so most of these links will refer to products on Amazon's website.&lt;span style=""&gt;  &lt;/span&gt;I figured if anyone was getting any use out of my thoughts they might want to know where to start.&lt;/p&gt;  &lt;o:p&gt;&lt;/o:p&gt;I'm not sure how I got here, but I'm now the owner of a restored &lt;a href="http://www.amazon.com/gp/search?ie=UTF8&amp;amp;keywords=turntable&amp;amp;tag=jjerome-20&amp;amp;index=electronics&amp;amp;linkCode=ur2&amp;amp;camp=1789&amp;amp;creative=9325"&gt;turn table&lt;/a&gt;&lt;img src="http://www.assoc-amazon.com/e/ir?t=jjerome-20&amp;amp;l=ur2&amp;amp;o=1" alt="" style="border: medium none  ! important; margin: 0px ! important; display: none;" border="0" height="1" width="1" /&gt; (or record player as I used to refer to them).&lt;span style=""&gt;  &lt;/span&gt;I was just a little too young to own any real vinyl albums besides the occasional single or Star Wars adventure story.&lt;span style=""&gt;  &lt;/span&gt;I remember my sister had a few, Michael Jackson's "Thriller" and "Celebration" by Cool and the Gang.&lt;span style=""&gt;  &lt;/span&gt;My first real vinyl record purchase came in college when I started buying old Led Zeppelin albums to hang on my wall as artwork.&lt;span style=""&gt;  &lt;/span&gt;It's those albums that led me to eventually end up purchasing a record player a couple weeks ago.    &lt;p class="MsoNormal"&gt;I have always wanted to find a cheap record player to play some of those albums I still have lying around, and my wife had a couple as well.&lt;span style=""&gt;  &lt;/span&gt;I regularly visit my local Goodwill store to find deals on various things, so I decided to start looking for a record player as well.&lt;span style=""&gt;  &lt;/span&gt;A couple weeks ago I found one - a BIC 960 for $6 dollars.&lt;span style=""&gt;  &lt;/span&gt;I had no idea if it would work, but I decided it was worth the money to try. &lt;/p&gt;  &lt;p class="MsoNormal"&gt;After I got it home I discovered it was missing a needle and needed some cleaning, but it worked!&lt;span style=""&gt;  &lt;/span&gt;I looked up places to get it repaired and found a Mom and Pop store called &lt;a href="http://seattlepi.nwsource.com/business/311541_retail14.html"&gt;JNS Phonograph Needles&lt;/a&gt; near the U-District on 65th (almost a block East of Roosevelt on 65th).&lt;span style=""&gt;  &lt;/span&gt;The guy there told me I had done really well - he usually will sell the model I found for upwards of $250 dollars.&lt;span style=""&gt;  &lt;/span&gt;So I went ahead and had it cleaned up and now I have a working record player (turn table) connected to my stereo.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;I've been pretty happy with my purchase thus far: I've been playing those older albums I already owned and I even picked up a few new ones.&lt;span style=""&gt;  &lt;/span&gt;I'm listening to "A Kind of Blue" right now with my BIC 960 hooked up to my Harman/Kardon AVR 310 (with a pre-amp, see notes).&lt;span style=""&gt;  &lt;/span&gt;Kind of nice to play - no pause, rewind, just Miles Davis.&lt;span style=""&gt;  &lt;/span&gt;There are a few shops in the area that sell new and used albums, and I noticed Amazon.com also has a vinyl section as well.&lt;span style=""&gt;  &lt;/span&gt;Some albums in the local stores include a coupon to download the songs in mp3 off the internet, a great idea if you ask me.&lt;span style=""&gt;  &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;My first new album purchases were the &lt;a href="http://www.amazon.com/gp/redirect.html?ie=UTF8&amp;amp;location=http%3A%2F%2Fwww.amazon.com%2Fgp%2Fproduct%2FB000Q66HX2%3Fie%3DUTF8%26s%3Dmusic&amp;amp;tag=jjerome-20&amp;amp;linkCode=ur2&amp;amp;camp=1789&amp;amp;creative=9325"&gt;Blue Scholars "Bayani"&lt;/a&gt;&lt;img src="http://www.assoc-amazon.com/e/ir?t=jjerome-20&amp;amp;l=ur2&amp;amp;o=1" alt="" style="border: medium none  ! important; margin: 0px ! important; display: none;" border="0" height="1" width="1" /&gt; and &lt;a href="http://www.amazon.com/gp/redirect.html?ie=UTF8&amp;amp;location=http%3A%2F%2Fwww.amazon.com%2Fexec%2Fobidos%2Ftg%2Fdetail%2F-%2FB000WTNCQI%3F%255Fencoding%3DUTF8%26m%3DATVPDKIKX0DER%26v%3Dglance&amp;amp;tag=jjerome-20&amp;amp;linkCode=ur2&amp;amp;camp=1789&amp;amp;creative=9325"&gt;U2: The Joshua Tree&lt;/a&gt;&lt;img src="http://www.assoc-amazon.com/e/ir?t=jjerome-20&amp;amp;l=ur2&amp;amp;o=1" alt="" style="border: medium none  ! important; margin: 0px ! important; display: none;" border="0" height="1" width="1" /&gt; (remastered edition).&lt;span style=""&gt;  &lt;/span&gt;I'm hoping to get more classic hip-hop albums in the future, but they seem to be pretty expensive.&lt;span style=""&gt;  &lt;/span&gt;The Joshua Tree purchase was kind of a mistake.&lt;span style=""&gt;  &lt;/span&gt;It was a gift for my wife, who is a big U2 fan.&lt;span style=""&gt;  &lt;/span&gt;I noticed that the re-mastered album came with some extra tracks, and thought buying the album would be a great way to get the original album and the extra tracks.&lt;span style=""&gt;  &lt;/span&gt;However, I was mistaken - the extra tracks only come with the &lt;a href="http://www.amazon.com/gp/redirect.html?ie=UTF8&amp;amp;location=http%3A%2F%2Fwww.amazon.com%2FJoshua-Tree-Remastered-Expanded-Deluxe%2Fdp%2FB000WZB944%3Fie%3DUTF8%26s%3Dmusic%26qid%3D1204350579%26sr%3D1-2&amp;amp;tag=jjerome-20&amp;amp;linkCode=ur2&amp;amp;camp=1789&amp;amp;creative=9325"&gt;CD Version&lt;/a&gt;&lt;img src="http://www.assoc-amazon.com/e/ir?t=jjerome-20&amp;amp;l=ur2&amp;amp;o=1" alt="" style="border: medium none  ! important; margin: 0px ! important; display: none;" border="0" height="1" width="1" /&gt;, not the vinyl.&lt;span style=""&gt;  &lt;/span&gt;Fortunately she still liked having the album sans-extra tracks, but I still feel kind of jipped.&lt;span style=""&gt;  &lt;/span&gt;Bono, if you're listening, please send me one vinyl version of your extra tracks :)&lt;/p&gt;  &lt;p class="MsoNormal"&gt;If you're thinking of getting a record player (turn table), here's a list of things to consider:&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;o:p&gt;&lt;/o:p&gt;Find out if you're going to use it.&lt;span style=""&gt;  &lt;/span&gt;Vinyl really isn't cheaper than CD or mp3, and not as portable.&lt;span style=""&gt;  &lt;/span&gt;Though some artists include a coupon to download the tracks if you buy their album on Vinyl (a great idea).&lt;span style=""&gt;  &lt;/span&gt;Goodwill has some records, but most of that stuff is thoroughly searched through well before you get there.&lt;/li&gt;&lt;/ul&gt;    &lt;ul&gt;&lt;li&gt;You need either a stereo with a phono (RCA) input jack, or you have to pick up a &lt;a href="http://www.amazon.com/gp/redirect.html?ie=UTF8&amp;amp;location=http%3A%2F%2Fwww.amazon.com%2FPyle-PP-999-Phono-Turntable-Pre-Amp%2Fdp%2FB00025742A%3Fie%3DUTF8%26s%3Delectronics%26qid%3D1202761575%26sr%3D1-1&amp;amp;tag=jjerome-20&amp;amp;linkCode=ur2&amp;amp;camp=1789&amp;amp;creative=9325"&gt;Turntable Pre-Amp&lt;/a&gt;&lt;img src="http://www.assoc-amazon.com/e/ir?t=jjerome-20&amp;amp;l=ur2&amp;amp;o=1" alt="" style="border: medium none  ! important; margin: 0px ! important; display: none;" border="0" height="1" width="1" /&gt;.&lt;span style=""&gt;  &lt;/span&gt;They are not too expensive, about $20-30 dollars.&lt;span style=""&gt;  &lt;/span&gt;I have one for my stereo and it works just fine.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;If you grew up with CDs or mp3's (or it's been a while), keep in mind that you can't play an album straight through on vinyl.&lt;span style=""&gt;  &lt;/span&gt;Each side of a record can only hold a few songs, and I don't know if anyone has ever invented a mechanism to physically flip a record for you (besides a jukebox).&lt;span style=""&gt;  &lt;/span&gt;For example: if you think of a 13-track CD, on a record player (with 2 records - one stacked) expect to hear songs 1-3 (1st record), then 7-10 (2nd), then flip both over and hear 4-6 (1st), then 11-13 (2nd).&lt;span style=""&gt;  &lt;/span&gt;The format lends itself to playing the entire album, but not in the order which you may be used to.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;For those interested, here is a list of my albums on Vinyl:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Led Zeppelin I&lt;/li&gt;&lt;li&gt;Led Zeppelin IV&lt;/li&gt;&lt;li&gt;Led Zeppelin Physical Graffiti&lt;/li&gt;&lt;li&gt;Led Zeppelin Presence&lt;/li&gt;&lt;li&gt;Led Zeppelin In Through The Out Door&lt;/li&gt;&lt;li&gt;Led Zeppelin Coda&lt;/li&gt;&lt;li&gt;Led Zeppelin Kashmir (Live bootleg)&lt;/li&gt;&lt;li&gt;The Beatles Please Please Me&lt;/li&gt;&lt;li&gt;The Beatles Abey Road&lt;/li&gt;&lt;li&gt;Miles Davis Kind of Blue&lt;/li&gt;&lt;li&gt;Blue Scholars Bayani&lt;/li&gt;&lt;li&gt;U2 The Joshua Tree&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6907975643453137972-8633343513821850809?l=www.jjerome.com%2Fprojects%2Findex.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/6907975643453137972/8633343513821850809/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=6907975643453137972&amp;postID=8633343513821850809' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6907975643453137972/posts/default/8633343513821850809'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6907975643453137972/posts/default/8633343513821850809'/><link rel='alternate' type='text/html' href='http://www.jjerome.com/projects/2008/02/back-to-turntable-ive-regressed-back-to.html' title='Back to the Turntable, I&apos;ve regressed back to before my youth'/><author><name>Jason Jerome</name><uri>http://www.blogger.com/profile/02004764316249949872</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='15696789817534182749'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6907975643453137972.post-1692634249153696284</id><published>2007-12-28T14:50:00.000-08:00</published><updated>2007-12-28T15:03:41.871-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='service'/><category scheme='http://www.blogger.com/atom/ns#' term='subscription'/><category scheme='http://www.blogger.com/atom/ns#' term='music'/><category scheme='http://www.blogger.com/atom/ns#' term='rhapsody'/><title type='text'>Rhapsody Online</title><content type='html'>&lt;p class="MsoNormal"&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;I was browsing around the other day and ran into a small debate about whether subscription based music services have a market.&lt;span style=""&gt;  &lt;/span&gt;After reading a few comments I found myself writing my own post, and then I decided to post part of that comment here.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;I was against subscription based music for a long time, but eventually broke down and decided to try it out. My overall experience is good, some things I love, others no so much.  By the way, this list is not weighted, even though I have more Cons I still think the Pros win.&lt;br /&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Pros:&lt;/p&gt;  &lt;ul&gt;&lt;li&gt;Access to all the music I can handle, which opened me up to more music.&lt;span style=""&gt;  &lt;/span&gt;For example, when I heard that Bob Dylan released a new album, I decided to listen to it. I would have never given that album another thought if I didn't have this service.&lt;span style=""&gt;  &lt;/span&gt;It’s the same story for a bunch of other albums/artists that I just never had the desire to buy a CD to try out.&lt;/li&gt;&lt;/ul&gt;  &lt;ul&gt;&lt;li&gt;TiVo - Rhapsody now works on TiVo. Navigating the music lists on a TiVo isn’t as easy as just playing a CD, but it has its advantages.&lt;span style=""&gt;  &lt;/span&gt;I created a playlist for our Halloween party on my computer using Rhapsody, then hooked my TiVo to my stereo and played it for the party. We added some classic Halloween songs by the original artists and a few Top 40 songs that I would have never purchased otherwise.&lt;span style=""&gt;  &lt;/span&gt;Despite his issues, I’d rather hear Thriller sung by Michael Jackson than some second-rate cover band.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;I like to try new music and I sit at a desk all day, so if I like an album I usually get sick of it after a couple weeks of listening to it every day. I'm always looking for something new, and I used to buy at least 4 CDs a month. It's much cheaper this way and I look at it as a $14 monthly trial period for all the albums I'm considering purchasing (Kanye West - great album, 50 Cent – not so much).&lt;/li&gt;&lt;/ul&gt;    &lt;ul&gt;&lt;li&gt;You can share your playlists and other users can rate them.&lt;span style=""&gt;  &lt;/span&gt;It’s nice since everyone using the service has access to the same songs.&lt;/li&gt;&lt;/ul&gt;  &lt;ul&gt;&lt;li&gt;It has its own music player you can download, or you can just play through a simple web app (which works with Linux).&lt;/li&gt;&lt;/ul&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Cons:&lt;/p&gt;  &lt;ul&gt;&lt;li&gt;Great to use when I have a connection to the Internet, not so great otherwise. When I jump into my car I find myself wishing I had some of that new music I was listening to. Rhapsody Online does work with a couple portable players (Sansa), but I already have an iPod so I would have to make a commitment to switch players to get anymore out of the service. Not so much a knock on their service as it is just an inconvenience.&lt;/li&gt;&lt;/ul&gt;  &lt;ul&gt;&lt;li&gt;You don't always get every song with each album; there are certain albums and songs that are not available. I can understand a certain artist or album (though it still annoys me), but sometimes it's just some random song on an album, or every other song on an album with no rhyme or reason.&lt;span style=""&gt;  &lt;/span&gt;It can also change: one day half of Common’s album “Finding Forever” was no longer available.&lt;span style=""&gt;  &lt;/span&gt;I already own the album, but it was just easier to listen through the service.&lt;/li&gt;&lt;/ul&gt;  &lt;ul&gt;&lt;li&gt;Discovering new music is not as easy to do when you have so much available.&lt;span style=""&gt;  &lt;/span&gt;Rhapsody needs some sort of service like Last.fm or Pandora. &lt;span style=""&gt;  &lt;/span&gt;Maybe they should even consider buying or licensing Pandora’s technology. &lt;/li&gt;&lt;/ul&gt;  &lt;ul&gt;&lt;li&gt;I still get a strange feeling about not owning the music, or if my network connection is down that I might not have access to anything.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;I haven't found a well-designed easy method of hooking the service up to my stereo.  My wife still prefers to pop a CD into the player or just listen to her iPod.&lt;/li&gt;&lt;/ul&gt;  &lt;ul&gt;&lt;li&gt;It's priced higher than Yahoo or Napster, but I liked the fact that it works with more platforms&lt;o:p&gt;&lt;br /&gt;&lt;/o:p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;   &lt;p class="MsoNormal"&gt;I'm sure there are some other benefits and annoyances I'm forgetting, but hopefully you get the point. The subscription model can work for you - not if you've been listening to the same Led Zeppelin album for the past 20 years, but there is a market for it.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;In my opinion, the anti-DRM movement doesn’t really apply to these services.&lt;span style=""&gt;  &lt;/span&gt;Their whole model is to provide a large amount of music for a monthly fee. If I’m going to buy music online, I feel I can only trust mp3.&lt;span style=""&gt;  &lt;/span&gt;However, if I’m renting it I’m only concerned with it working on the devices that I am using.&lt;span style=""&gt;  &lt;/span&gt;Rhapsody even provides an integrated way to buy songs from their store in mp3 format.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6907975643453137972-1692634249153696284?l=www.jjerome.com%2Fprojects%2Findex.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/6907975643453137972/1692634249153696284/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=6907975643453137972&amp;postID=1692634249153696284' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6907975643453137972/posts/default/1692634249153696284'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6907975643453137972/posts/default/1692634249153696284'/><link rel='alternate' type='text/html' href='http://www.jjerome.com/projects/2007/12/rhapsody-online.html' title='Rhapsody Online'/><author><name>Jason Jerome</name><uri>http://www.blogger.com/profile/02004764316249949872</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='15696789817534182749'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6907975643453137972.post-2406907990574042922</id><published>2007-10-19T16:09:00.000-07:00</published><updated>2007-12-28T15:05:41.318-08:00</updated><title type='text'>Contacts &gt; Sync &gt; Yahoo! Autosync</title><content type='html'>I wrote earlier that I was looking for a personal "Holy Grail of Synchronization" to keep my contacts on my Palm device in sync with my email.  I was fully willing to move to whatever platform gave me that option and I was rooting for Google since they already had an API for their Calendar web application.  I am still a fan of Google's Gmail, but I still stand behind my previous statement that Yahoo Mail provides much more features that I can't leave behind if I switched.&lt;br /&gt;&lt;br /&gt;Of all the features I want out of an email client, integration with Palm devices was my number one.  Yahoo came closest with their Intellisync product, but the product was outdated and no longer worked with the majority of Palm devices.  Intellisync tried to be part of Palm's HotSync process, the process by which the Palm would synchronize information with information stored on the computer.  Adding Yahoo's Intellisync product slowed down the HotSync process so much that often the HotSync itself would timeout and fail.  Eventually Intellisync stopped working altogether as new Palms came out or an update to the HotSync tool was released.&lt;br /&gt;&lt;br /&gt;Nothing happened for years afterwards, but there was always people looking around for some sort of solution to the problem.  A few articles were written, some buzz after Google released an API for their Calendar, but still things stayed the same.  Eventually I wrote a blog post about the issue as well, where I suggested that someone just export the contact information directly out of Palm Desktop instead of using the HotSync process.  Well, it appears that someone (I'm sure it was just a coincidence) was listening, and this time it was Yahoo.&lt;br /&gt;&lt;br /&gt;Yahoo quietly released an update to Intellisync; well it's more like an entirely new product, called Yahoo Autosync.  This tool does almost exactly what I originally suggested: it will export your contact and calendar information out of the Palm Desktop (avoiding the HotSync) and sync those setting directly with Yahoo Mail!  I was so ecstatic that I could barely contain myself.  Finally the tool I was waiting for!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Actual Experience&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;After downloading the tool, I had some initial problems, which I will post here in case you've run across the same issues.  As usual, I wrote to Yahoo about the problems and got an automated response basically telling me that it's a free product and I'm on my own.  I guess I could have written back and said my $25/year for Yahoo Plus did in fact qualify me as a non-free user, but that's not the point.&lt;br /&gt;&lt;br /&gt;The first limitation I noticed was that it appeared as if the Calendar sync didn't work at all.  Turned out that if I limited the time span for it to sync that I finally got a successful sync (limited to 30 days).  I also originally installed the program on the D drive, which I believe also caused some errors until I uninstalled and installed on the C drive.  That might have more to do with the discovery that Calendar syncing wasn't working, but I thought I'd mention it in case someone runs into the same problem.&lt;br /&gt;&lt;br /&gt;I've also noticed a few contacts disappear here and there.  I'm not sure when it happens, but it all started when I told the Autosync application to do a Two-way sync between Yahoo and Palm instead of a one-way Palm beats Yahoo role.  After a couple of times when I picked up my phone only to find someone I call quite often suddenly missing from my contacts list I switched back to One-way sync from Palm Desktop to Yahoo.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Other Thoughts&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I'm also a bit surprised that this tool hasn't gotten more recognition from the blogging community.  The "Holy grail of synchronization" blog from a year ago was a huge hit, but the steps involved were crazy.  It almost seems as if Yahoo doesn't stand a chance against Google because a certain population is so enamored with Google that they refuse to use any other service.  It's almost as if they hear silence every time I mention the word Yahoo.&lt;br /&gt;&lt;br /&gt;I love Google, and I really like Gmail, but I know at the end of the day that I need certain features and I'm not willing to jump through a bunch of hoops to get them when another service provides them easily for free.  When are we going to see a little retro-feedback for Yahoo already?&lt;br /&gt;&lt;br /&gt;-jj&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6907975643453137972-2406907990574042922?l=www.jjerome.com%2Fprojects%2Findex.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/6907975643453137972/2406907990574042922/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=6907975643453137972&amp;postID=2406907990574042922' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6907975643453137972/posts/default/2406907990574042922'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6907975643453137972/posts/default/2406907990574042922'/><link rel='alternate' type='text/html' href='http://www.jjerome.com/projects/2007/10/yahoo-autosync-i-wrote-earlier-that-i.html' title='Contacts &gt; Sync &gt; Yahoo! Autosync'/><author><name>Jason Jerome</name><uri>http://www.blogger.com/profile/02004764316249949872</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='15696789817534182749'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6907975643453137972.post-6356069717639958241</id><published>2007-10-03T14:32:00.000-07:00</published><updated>2007-10-03T15:53:59.165-07:00</updated><title type='text'>Local Google Docs Server</title><content type='html'>The other day I decided to try out Google Apps.  I work with a few remote developers and it seemed that looking into Apps was worth my time.  After trying it out for a few days, I'm considering using this tool as our developer document manager.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.google.com/a/help/intl/en/admins/tour.html"&gt;Google Apps&lt;/a&gt; basically wraps a bunch of Google's online applications under an umbrella of an organization or company.  All users under this umbrella can email each other, share calendars, documents, and a few other things.  &lt;br /&gt;&lt;br /&gt;For the most part, I am only interested in the Docs application.  It allows you to store documents, share them with other users, keeps a history of changes, and you can edit the documents directly in the browser.  Oh, and don’t forget you can export those documents to your computer in a number of different formats (MS Office, Open Office, PDF, HTML, etc).  Currently it can handle: word processing (Word), spreadsheets (Excel), and presentations (PowerPoint).&lt;br /&gt;&lt;br /&gt;I have a few complaints – the document organizer &lt;a href="http://docs.google.com/support/bin/answer.py?answer=68489&amp;topic=8657"&gt;doesn’t allow you to share folders&lt;/a&gt;.  In fact, folders might as well be tags, because they are only useful for organizing things for yourself (your folders do not show up for other users in your system). &lt;br /&gt;&lt;br /&gt;I would love to introduce this kind of tool to my client, but I already know the answer.  They would want to own the content by hosting the Google Apps application on their own intranet server and I can’t blame them.  Keeping an application like this behind a company firewall makes everyone feel a little safer.  I started to look around for some sort of equivalent online document editor, but I can’t seem to find anything that allows you to use it on your own server.  &lt;br /&gt;&lt;br /&gt;In fact, I haven’t even found any open source tools for editing documents online at all.  I’m kind of surprised, because this kind of functionality could be a huge addition to other projects.  Imagine an open source online document editor like Google Apps that could be used in other projects.  Wikis could use the document editor object to allow users to easily edit pages instead of coming up with these strange markup languages.  Heck, shouldn’t Google be using their own Doc App within Blogger?  It seems much better than Blogger’s online editor.&lt;br /&gt;&lt;br /&gt;I heard the other day that Microsoft will be creating their own online Office tools.  One would hope that they would incorporate this technology within SharePoint.  I can’t stand opening documents that are stored in SharePoint, it takes forever and seems like such a hack to save the open document back to the server.  Of course I heard they will require the user to have Office installed on their local computer.  I guess this shouldn’t be a huge deal for corporate users, but you can’t help but think that this is just another limitation that will cause the tool to be useless.&lt;br /&gt;&lt;br /&gt;I guess I’ll just take the "wait and see" route until something better comes along.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6907975643453137972-6356069717639958241?l=www.jjerome.com%2Fprojects%2Findex.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/6907975643453137972/6356069717639958241/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=6907975643453137972&amp;postID=6356069717639958241' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6907975643453137972/posts/default/6356069717639958241'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6907975643453137972/posts/default/6356069717639958241'/><link rel='alternate' type='text/html' href='http://www.jjerome.com/projects/2007/10/local-google-docs-server.html' title='Local Google Docs Server'/><author><name>Jason Jerome</name><uri>http://www.blogger.com/profile/02004764316249949872</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='15696789817534182749'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6907975643453137972.post-6946771534193997768</id><published>2007-04-12T16:01:00.000-07:00</published><updated>2007-04-12T16:53:14.067-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Management Studio'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server 2005'/><title type='text'>Show/Hide Results Pane -- SQL Server 2005</title><content type='html'>I've been using Microsoft SQL Server 2005 for a few months now, and I've noticed a few differences between the SQL Server 2000 Enterprise Manager / Query Analyzer tools and the new Management Studio. I'll post some quick things I did to feel more at home in the new development environment.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Show/Hide Results Pane&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;One of the simplest and most useful features when debugging a script is to able to run your query to see some results, then hide the results pane to continue tweaking the sql code. This feature was a button in Query Analyzer in SQL Server 2000, but for some reason disappeared from the default buttons available in SQL Server 2005's Management Studio. Well, the button may not exist as a default button, but it's easy to add it back in.&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://www.jjerome.com/projects/uploaded_images/04-Results-NoHide-780149.jpg"&gt;&lt;img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://www.jjerome.com/projects/uploaded_images/04-Results-NoHide-780137.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;After running a script in a query window, the window splits between the script and the results (each referred to as a pane). See the snapshot above. &lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.jjerome.com/projects/uploaded_images/05-CustomizeToolbar-771664.jpg"&gt;&lt;img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://www.jjerome.com/projects/uploaded_images/05-CustomizeToolbar-771651.jpg" border="0" /&gt;&lt;/a&gt; To add a button to hide the results pane, click on the little down-arrow at the end of a toolbar and choose "Add or Remove Buttons", then choose "Customize..." &lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.jjerome.com/projects/uploaded_images/06-Customize-ShowResultsPane-771463.jpg"&gt;&lt;img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://www.jjerome.com/projects/uploaded_images/06-Customize-ShowResultsPane-771457.jpg" border="0" /&gt;&lt;/a&gt; The Customize dialog window will open with the "Commands" tab selected. Now we only need to find the command we are looking for. Under "Categories:", choose "Window". Then under "Commands:", find the command "Show Results Pane". &lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://www.jjerome.com/projects/uploaded_images/09-MoveButton-743781.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://www.jjerome.com/projects/uploaded_images/09-MoveButton-743770.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Once you have located the "Show Results Pane" command, you have to click and drag it to where you want it to be located on the toolbar.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.jjerome.com/projects/uploaded_images/07-HideResultsPane-798795.jpg"&gt;&lt;img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://www.jjerome.com/projects/uploaded_images/07-HideResultsPane-798775.jpg" border="0" /&gt;&lt;/a&gt;You can now Hide the Results Pane &lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.jjerome.com/projects/uploaded_images/08-ShowResultsPane-798888.jpg"&gt;&lt;img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://www.jjerome.com/projects/uploaded_images/08-ShowResultsPane-798823.jpg" border="0" /&gt;&lt;/a&gt; Or you can Show the Results Pane &lt;/p&gt;&lt;p&gt;&lt;br /&gt;Originally I had my button located on the Standard toolbar, but eventually I figured out it made more sense to add it to the SQL Editor toolbar. It's pretty easy to find the SQL Editor toolbar - it only displays when you are working in a query window.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6907975643453137972-6946771534193997768?l=www.jjerome.com%2Fprojects%2Findex.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/6907975643453137972/6946771534193997768/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=6907975643453137972&amp;postID=6946771534193997768' title='9 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6907975643453137972/posts/default/6946771534193997768'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6907975643453137972/posts/default/6946771534193997768'/><link rel='alternate' type='text/html' href='http://www.jjerome.com/projects/2007/04/showhide-results-pane-sql-server-2005.html' title='Show/Hide Results Pane -- SQL Server 2005'/><author><name>Jason Jerome</name><uri>http://www.blogger.com/profile/02004764316249949872</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='15696789817534182749'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6907975643453137972.post-1548411590793129985</id><published>2007-03-19T14:53:00.000-07:00</published><updated>2007-03-19T15:25:28.861-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Management Studio'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server 2005'/><title type='text'>Tabbed vs. MDI Queries - SQL Server 2005</title><content type='html'>I've been using Microsoft SQL Server 2005 for a few months now, and I've noticed a few differences between the SQL Server 2000 Enterprise Manager / Query Analyzer tools and the new Management Studio.  I'll post some quick things I did to feel more at home in the new development environment.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Tabbed vs. MDI (Toolbar vs individual windows)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This is extremely simple, but I'm often surprised how many developers are debugging an issue but only looking at one query at a time.  They often forget the exact item they are looking for.  I switched to a windowed view a long time ago and found it useful to hold information in the background.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.jjerome.com/projects/uploaded_images/01-DefaultMGMT-767295.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://www.jjerome.com/projects/uploaded_images/01-DefaultMGMT-767273.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;The default view in the Management Studio is to use tabs for all the queries (see snapshot).  I know some developers like to see one statement at a time, but I'm usually referencing more than one query at a time.&lt;br /&gt;&lt;br /&gt;To change the layout of the queries, chose Tools &gt; Options from the menu.  The first item under Environment gives you the option to switch between Tabbed documents and MDI (windowed).&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.jjerome.com/projects/uploaded_images/02-MDISet-762835.jpg"&gt;&lt;img style="cursor: pointer;" src="http://www.jjerome.com/projects/uploaded_images/02-MDISet-762825.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Here is the result, all the queries are no longer in a tabbed view:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.jjerome.com/projects/uploaded_images/03-MDIEnvironment-762909.jpg"&gt;&lt;img style="cursor: pointer;" src="http://www.jjerome.com/projects/uploaded_images/03-MDIEnvironment-762900.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6907975643453137972-1548411590793129985?l=www.jjerome.com%2Fprojects%2Findex.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/6907975643453137972/1548411590793129985/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=6907975643453137972&amp;postID=1548411590793129985' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6907975643453137972/posts/default/1548411590793129985'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6907975643453137972/posts/default/1548411590793129985'/><link rel='alternate' type='text/html' href='http://www.jjerome.com/projects/2007/03/tabbed-vs-mdi-queries-sql-server-2005.html' title='Tabbed vs. MDI Queries - SQL Server 2005'/><author><name>Jason Jerome</name><uri>http://www.blogger.com/profile/02004764316249949872</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='15696789817534182749'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6907975643453137972.post-2422249932179720915</id><published>2006-10-20T14:30:00.000-07:00</published><updated>2007-01-12T14:56:23.122-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='yahoo mail'/><category scheme='http://www.blogger.com/atom/ns#' term='sync'/><category scheme='http://www.blogger.com/atom/ns#' term='palm'/><category scheme='http://www.blogger.com/atom/ns#' term='contacts'/><category scheme='http://www.blogger.com/atom/ns#' term='gmail'/><category scheme='http://www.blogger.com/atom/ns#' term='treo'/><title type='text'>My Holy Grail of Synchronization</title><content type='html'>&lt;a target="_blank" href="http://engtech.wordpress.com/2006/08/11/the-holy-grail-of-synchronization-how-to-synchronize-microsoft-outlook-multiple-locations-google-calendar-gmail-ipod-and-mobile-phone-with-funambol-scheduleworld/"&gt;the-holy-grail-of-synchronization&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I came across this blog post (the link above) the other day claiming to have the “Holy Grail of Synchronization”.  I started to get really excited as I clicked on the link, hoping for some relief to an issue that’s bugged me for a long time.  Alas, it was only a guide to hack your way to synching your Outlook, Google Calendar, Gmail, iPod, and Mobile Phone together.  It didn’t solve any of my problems, the best I could hope for it would be to raise awareness of this issue.  So I decided to write my own thoughts down, with the hope of furthering that awareness.&lt;br /&gt;&lt;br /&gt;My example compares my experiences with Palm and Yahoo in the realm of contacts and calendar syncing, but I could equally apply this to any device that contains address and calendar information, including Outlook and Gmail.  In this article I mostly mention the address book, but the same can be applied to the calendar as well.&lt;br /&gt;&lt;br /&gt;If there was ever an easy one sentence statement that would sum up what I want everyone to get from this article, it is this:  Let me easily access my data so that I can share it with myself!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;b&gt;My Setup&lt;br /&gt;&lt;/b&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;strong&gt;Yahoo (Past and Present)&lt;/strong&gt;&lt;br /&gt;As for my email setup, I use &lt;a target="_blank" href="http://mail.yahoo.com/"&gt;Yahoo Mail&lt;/a&gt;.  Yes I have a Gmail account, yes I really like it, but it lacks some features of Yahoo that I simply cannot ignore.  So much so that I even have a Yahoo Plus account, which I happily pay $25/year for the use of.&lt;br /&gt;&lt;br /&gt;It should be noted that Yahoo used to provide a tool for syncing with the Palm Pilot.  It used to sync during the Palm’s HotSync process, when the Palm was trying to sync with the host computer.  Yahoo’s tool would make a (often slow) connection to Yahoo to make updates to your web account.  Often time the process would time out, or didn’t work at all.&lt;br /&gt;&lt;br /&gt;I often felt the application would have worked much better if it would forgo trying to update Yahoo during the HotSync process and just update directly with Palm Desktop.  I even wrote a few emails to Yahoo about this, but as usual, they never seem to respond to any user requests.  I noticed the other day that Yahoo doesn’t even offer the application anymore (at least for Yahoo Mail beta users).&lt;br /&gt;&lt;br /&gt;The only current way to get contacts into Yahoo is through their import procedures, which just require a specially formatted text file (CSV, vCard, etc) to import your contacts.  There are no syncing abilities available.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Palm&lt;/strong&gt;&lt;br /&gt;I have been a Palm user for 8 years now.  I started with the Palm III, and I used it to my hearts content until the device was on its last legs.  Then I waited with that device a few extra months to get the Palm Treo 650.&lt;br /&gt;&lt;br /&gt;If there was ever a complaint that stuck with me since my very first Palm, it was that I couldn’t share my contacts between devices.  That’s why I got the Palm Treo – I was tired of trying to get my contacts on my Palm to be in sync with my cell phone.  Finally that issue has been solved with the Treo, but I still have one remaining: I can’t sync my contacts on my Palm to my email address book.&lt;br /&gt;&lt;br /&gt;Palm gives you the choice of 2 different applications to use when syncing your Palm device with your computer: Outlook and &lt;a target="_blank" href="http://www.palm.com/us/software/desktop"&gt;Palm Desktop&lt;/a&gt;.  It should be noted that there are some utilities that will sync with Outlook, but I want no business using Outlook.  I use web-based email for a reason – I have multiple computers and want access to my email from anywhere I am.  I have been a Palm Desktop man ever since owning my first Palm.  Anytime I have tried using Outlook, it just hasn’t worked out too well and I end up back in Palm Desktop land.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;What I’d like to see&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;An application that can sync with everything; it would have a common database that would contain my address book.  It would have plugins able to sync with all my devices/services that require it.  It could access a Yahoo API to update users in my Yahoo Mail’s Contact list.  It could contact directly with the Palm Desktop on my computer (and leave my Palm alone).  Heck, it could even sync with Outlook, Gmail, Thunderbird, etc.  Any company that wanted access to that data could provide a plugin for the user to install.  It could be so simple.&lt;br /&gt;&lt;br /&gt;I would like to see the application be a free open source tool.  I would understand if a company was behind this effort and wanted to charge for plugins, but the base application would be free and open source.  This way the application could avoid political issues (or at least attempt to).  It could be ported to run on any OS, and if someone wanted they could write a plugin for it on that platform.&lt;br /&gt;&lt;br /&gt;The application could set itself up by requesting which plugin it should use to import the users, then it could go from there.  Conflicts?  You can easily map out what fields are available for each service and provide an easy way for the user to decide.&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;What’s available now&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;These are the present possibilities as I see them.  There might be other solutions, and if there are I’ll be glad to take a look at them.  I’ll start off with my current setup, then move on to other services.&lt;br /&gt;&lt;br /&gt;Here is my present setup for syncing my Palm and Yahoo (as per the Yahoo instructions):&lt;br /&gt;1.    Export my Palm address book via the Palm Desktop as a vCard&lt;br /&gt;2.    Go into Yahoo and delete all my current address book entries&lt;br /&gt;3.    Import the vCard with all my contacts in it&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Plaxo&lt;/strong&gt;&lt;br /&gt;Honestly, these guys seem to be the closest to achieving the goal.  My disclaimer is that I have never used them.  I’m a little afraid of giving out all my contacts to a service that wants me to email and invite them to Plaxo.  Stuff like that makes your contacts question if you are trying to sell their information.&lt;br /&gt;&lt;br /&gt;&lt;a target="_blank" href="http://www.plaxo.com/products"&gt;Plaxo&lt;/a&gt; has a tool that claims it can sync with Yahoo and Outlook, but it will only touch a Palm if it HotSyncs with Outlook.  To use this tool I would have to convert my address book over to Outlook, and I don’t use Outlook.  Their solution is to export my contacts from Palm Desktop and import them into Plaxo.  Why use them at all then?  I can cut out the middle man and import those same contacts directly into Yahoo.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Goodlink&lt;/strong&gt;&lt;br /&gt;&lt;a target="_blank" href="http://goodlink.com/"&gt;Goodlink&lt;/a&gt; is an Exchange (Outlook) synchronization tool that allows corporate users to read their email and keep their contacts and calendar in sync via the phone’s internet service.  It has applications available for both the Palm and Windows CE devices.  It basically makes these Smartphone devices act like a Blackberry.&lt;br /&gt;&lt;br /&gt;My work bought me a Treo setup with this service (so now I have two Treo’s).  I work from home, and I like that I can access my work email and work contacts while I’m not in front of my computer.  It works out great when I’m making breakfast and I get an important email that I wouldn’t have gotten unless I was constantly hovering over my computer.&lt;br /&gt;&lt;br /&gt;However, I despise the tool’s interface.  When installed onto your Palm, it replaces the Palm’s address book and calendar applications.  You can’t access any of your old contacts or calendar events, and you have to import them all into Outlook one way or another.  Its interface is sorely lacking in features and the navigation system is not intuitive.&lt;br /&gt;&lt;br /&gt;Coincidently, I ran into an article on how to break this take-over mentality in Goodlink.  By making this change it allows you to manage the exchange contacts/calendar separately from the Palm contacts/calendar.  Thank goodness I found this link; it completely made my day when I found it.&lt;br /&gt;&lt;br /&gt;&lt;a target="_blank" href="http://www.chaddickerson.com/blog/2005/09/17/making-built-in-contacts-app-the-default-on-a-treo-650-with-goodlink/"&gt;Chad Dickerson's blog&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Conclusion&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;br /&gt;&lt;br /&gt;&lt;/b&gt;I hate to say it, but it seems like Palm is the thing holding me back the most.  No one seems to interface with Palm Desktop, and nothing else will interface with the Palm except for Outlook.  It’s hard to believe, since it seems like the Palm Treos are more popular than ever.  They have been around for so long it boggles my mind that there isn’t some sort of solution for this problem.&lt;br /&gt;&lt;br /&gt;Palm Desktop stores all of its data in a binary file.  I’ve looked into reverse engineering this file to figure out if I can grab my contact’s information out it.  There are a few sites that have tried something similar and posted their notes, but they always give up at some point.  It just shouldn’t be that hard, I think Palm should have realized by now that their application is being worked around, they should open it more to inspire more development.  Give us an API please!&lt;br /&gt;&lt;br /&gt;As far as Yahoo goes, I know that there are tools in place for the type of application I am proposing.  Plaxo already has tools where they demonstrate how they can access your contacts on Yahoo, Hotmail, Gmail, etc.  There is even a &lt;a target="_blank" href="http://widgets.yahoo.com/yahoocontactswidget"&gt;Yahoo Widget that can access your Yahoo contacts&lt;/a&gt;.  You can also buy 3rd party APIs that access these services.  So why hasn’t an official API been released from Yahoo?  Or even Google (they already have a calendar API)?  My explanation is either these tools are hacking into the service to get the data, or they are paying some money to get exclusive access.&lt;br /&gt;&lt;br /&gt;So in the end, I’ll leave you with my original request: Let me easily access my data so that I can share it with myself!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6907975643453137972-2422249932179720915?l=www.jjerome.com%2Fprojects%2Findex.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/6907975643453137972/2422249932179720915/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=6907975643453137972&amp;postID=2422249932179720915' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6907975643453137972/posts/default/2422249932179720915'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6907975643453137972/posts/default/2422249932179720915'/><link rel='alternate' type='text/html' href='http://www.jjerome.com/projects/2006/10/my-holy-grail-of-synchronization.html' title='My Holy Grail of Synchronization'/><author><name>Jason Jerome</name><uri>http://www.blogger.com/profile/02004764316249949872</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='15696789817534182749'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6907975643453137972.post-8757608936392908109</id><published>2006-09-18T13:35:00.000-07:00</published><updated>2007-01-12T14:22:26.060-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='starting a podcast'/><category scheme='http://www.blogger.com/atom/ns#' term='podcast'/><title type='text'>pghCAST</title><content type='html'>pghCAST was a ltttle project I started a while back.  It was a podcast about topics going on in and around Pittsburgh.  It all started after a series of events and a good conversation with  friends.  I started it up with one goal: at least get a free beer out of it.  Well, I didn't, so I thought I might as well write about the experience.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;The beginning&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;I've always had a good relationship with Pittsburgh.  It's where I was born, and even though my family had to move away, we always keep our roots in Pittsburgh.  It's also the place where I went to college – the University of Pittsburgh.  After every move I have made away from Pittsburgh, I somehow ended up back in Pittsburgh.  My friends call it the "rubber band theory".  My most recent move away from Pittsburgh was to Seattle, where I stayed almost 3 years before the rubber band brought me back.  The best way I've heard to explain my relationship with Pittsburgh is this: Pittsburgh is my mother and Seattle is my wife.  I choose Seattle, but no matter what happens or changes in my life, Pittsburgh will always be there in my heart.&lt;br /&gt;&lt;br /&gt;I would say the first seed for the show was laid when I moved back to Pittsburgh from Seattle.  I've grown into a big fan of public radio, and Seattle has an excellent NPR station, &lt;a target="_blank" href="http://www.kuow.org/"&gt;KUOW (kuow.org)&lt;/a&gt;.  The station has 2-3 daily talk shows that discuss current events, usually with an expert guest and people calling in with their questions.  It is a great format, and listening to their morning show made me a big fan of &lt;a target="_blank" href="http://kuow.org/about/staff.asp?staff=1270"&gt;Steve Scher&lt;/a&gt;.  He's really good at handling callers' different opinions, and always seems to find an elegant way of being fair to all.  I've never heard another radio station (though I'm sure they exist) that has the mayor on every month to answer callers' questions, or feature all the candidates for an upcoming election.&lt;br /&gt;&lt;br /&gt;Pittsburgh's NPR station has no such thing.  Their main station, &lt;a target="_blank" href="http://www.wduq.org/"&gt;DUQ&lt;/a&gt;, has a lot of jazz, which I like to listen to while I'm cooking dinner, but no talk shows where I can listen to keep up with current events.  I really wanted to feature something like this, and podcasting was the cheapest way I could think of to try.  After discussing this with some friends in a pub, everyone thought it was a good idea.  My friend Kristin even volunteered to be on the show.&lt;br /&gt;&lt;br /&gt;You might be wondering why we started this when it seems that everyone and their brother has a podcast.  Well, I did consider that angle.  It seemed to me that every new podcast seemed to be targeting a national or global audience.  I thought it might work to aim for a local audience - a niche that if caught on, could be a hit in an area like Pittsburgh.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;The setup&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;The cost was extremely cheap considering my funds.  The entire cost of microphones and mixers was around $300 dollars when it was all said and done.  We could have done it a lot cheaper, but I wanted to try to do things right straight out of the box.  My wife's opinion was that it would be worth the cost if it kept me busy for a month or two.  Besides, I could always sell the equipment afterwards if things didn't work out.&lt;br /&gt;&lt;br /&gt;While the cost of hardware was around $300 dollars (not including the computer I already had), we did had some other expenses.  Mostly it was the $10 dollars per month for hosting and bandwidth from libsyn.com.  They had a deal where the cost included all the bandwidth charges, which I really couldn't beat at the time.&lt;br /&gt;I knew nothing about sound recording.  In fact, I'd say I still know little about sound recording.  I asked a friend for his input on this project; he used to be in a band and loved the production aspect of things.  We went to Guitar Center and purchased 3 oval microphones with desk stands, and a 5-port mixer.  I read that condenser microphones were better, but we heard that we could make these microphones sound good and the price was cheaper.  Looking back, I would have spent more time up front with microphones.  Some things are just easier if you spend a little more money, therefore you don't have to do as much work.  The microphones were (and still are) a thorn in my side - they never sounded right to me and we couldn't figure out how to make them sound better.&lt;br /&gt;&lt;br /&gt;For software, we used an old version of Cakewalk, which sucked.  It was easy enough to pick up, but for some reason it would just stop recording in the middle of a recording session, probably because it was an old version of the software.  We wouldn't find out until 15-20 minutes into recording, and let me tell you nothing takes the enthusiasm out of the room like telling someone we had to talk about the same topics again because all was lost.  After a while I picked up a refurbished iRiver mp3 player/recorder (iRiver iFP-899) that had a line-in connection.  It limited our editing abilities, but it didn't matter too much.&lt;br /&gt;&lt;br /&gt;Podcasting involves putting up rather sizable mp3 files on your server and letting a potential large audience eat up your bandwidth, causing big charges from your web host.  We didn't think we were going to become the number one podcast overnight, but we didn't want to be stuck with a 12 thousand dollar bandwidth bill if a particular show hit it big.  For hosting the files, we chose libsyn.  They were so cheap and made the entire process so easy that we could forgive some of their growing pains and hiccups.  For $10 dollars a month we got hosting and unlimited bandwidth.  Originally I wanted to host only the files on their site and run a separate server for the content; we were hoping to draw people to our website and have some areas where they could interact.  But that plan was a little too far out, so we started with the default blog software that was supplied by libsyn.  I would have loved to do more on the web side, but we just didn't have the time and resources.&lt;br /&gt;&lt;br /&gt;It's hard to tell if a customized website would have mattered.  Almost all our downloads were from iTunes, which meant that most people had the content delivered to them through a subscription.  However, our website was comprised of mostly show notes, something that the user could see via iTunes anyway.  We had a few links to an online store and photo-gallery, but the links were not laid out very nicely and were underused.  Some of this had to do with the blog-style template system used by libsyn, but probably had the most to do with our lack of using them.&lt;br /&gt;&lt;br /&gt;I bought &lt;a target="_blank" href="http://pghcast.net/"&gt;pghcast.net&lt;/a&gt; and &lt;a target="_blank" href="http://pghcast.com/"&gt;pghcast.com&lt;/a&gt; because of a Yahoo sale.  That particular day I went to buy the domain names, I searched around for the best deal and ran into this sale at Yahoo for $1.99 domains.  So I figured I could buy 5 years for about the same price as 1 year at other sites.  Now that the show is over, I have no idea what to do with the domain names.  If you're interested, let me know.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;The Show&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Originally, I thought I wanted to have 2 people host the show.  I bought the 3rd microphone for guests, but when my friend (who helped with the microphones) expressed interested in joining me and Kristin, I figured the more the merrier.  Internally this caused some problems, because everyone had a different view of what the show should do: some of our friends wanted more arguing-style debate, others didn't want that at all.  If I had to do it again, I would be very cautious of how my friends participated.&lt;br /&gt;&lt;br /&gt;At first we tried recording on Sundays, but after a while we recorded mid-week.  It was much easier for us to get people over after the order of work than the disorder of a weekend.  I guess we could have used Skpe, but we decided to all meet around the table and eat/drink afterwards.  I definitely wanted to be on a schedule; the group and the audience would benefit from a schedule.  There are a lot of choices out there on the web, and it's hard to keep someone interested for more than a few minutes at best.  By setting a schedule we at least made it easy for fans of the show to know when to expect to see a new episode.&lt;br /&gt;&lt;br /&gt;The show started on September 4th, 2005.  The first couple shows basically relied on the news of the week, and to be honest, they were kind of weak.  I would keep a list of topics I saw in the news during the week, and then form some sort of show from those notes.  This clearly wasn't our best format - we were basically mimicking the local news.  After a while we tried to make the show more personal, with a lot of commentary about local topics and events, and at the end we would interview some random person.  At first we used some friends, but then we started lining up friends of friends, and eventually we started getting requests from other people.  We started noticing that the format could really work, and I think if the show would have continued we would have strengthened with this format.  It's amazing the stories that any random person will tell when you give them the floor.&lt;br /&gt;&lt;br /&gt;I submitted the site to a couple of websites, and to my surprise our first pilot show had around 30 downloads.  I wasn't complaining - we went from 0 downloads to 30 in the first week.  The next couple weeks we were slowly rising in the ratings.  It was kind of hard to get our numbers with libsyn.  They showed their stats by who requested them: iTunes, odeo, direct download, etc.  They also tried to filter out unique visitors by IP address, which didn't always work too well.  I noticed after a while that there were "podcatching" networks that would stream our show off their site, and if multiple people listened to the show through that site, it would only register 1 listener, because of the same IP address being used over and over.&lt;br /&gt;&lt;br /&gt;After a while we were slowly growing to almost 60 downloads per show, then 100.  An amazing thing about podcasting is that most shows, whether you plan to or not, are timeless.  People would discover our show around the 10th episode and then go and download all the past episodes.  It got so bad that we were discussing removing the pilot episode from the list, because we felt it was so much worse than the others!  The best show had to be the show immediately before the Super Bowl.  Our downloads were in the 400-500 range, and even a couple months after the Super Bowl it was still getting some downloads.  If we would have had some merchandise attached to the show, we probably would have made some money those few weeks.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;The beginning of the end&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Eventually it had to come to an end.  The absolute nail in the coffin was when I found out I was moving back to Seattle.  Truth be told, I was well aware of the possibility of moving before I even started the show, but I wanted to try it anyway.  I had some pie-in-the-sky dreams that maybe someone would be interested in taking it over, but no one really seemed interested.  This wasn't our only problem.  We always had problems with enthusiasm, maybe someone was tired from working that day, or just being lazy.  It was worse yet if the person came to the show but was growing bored of it.  Voice recording has no pictures, but it was amazing how the recording exposed all these enthusiasm issues.&lt;br /&gt;&lt;br /&gt;Finally, the thing that probably did us in more than the others was lack of time.  One of the things I overlooked was that we were talking about things going on in the Pittsburgh area, and we really like to do those things.  It didn't leave much time to organize and get together a group and talk about it.  A lot of us would go for weeks at a time doing something in the city every night.  The plays, concerts, the sport games all took their toll.  If we missed recording the show one week, it seemed all the more likely that we would miss the next week.&lt;br /&gt;&lt;br /&gt;Eventually I had to be done with it.  I recorded our last episode, alone, about a month after the previous show.  I made no promises, but I said basically the show was over.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Lessons learned&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Some of the biggest things I learned from this experience:&lt;br /&gt;&lt;br /&gt;* If you are serious about it, it's a lot of work.&lt;br /&gt;&lt;br /&gt;&lt;div style="margin-left: 40px;"&gt;I thought it would be a simple thing to gather a few things to talk about, get some friends together, and record the show.  It was simple, but I had no idea how long it would take to do all those things.  I often found myself not as prepared as I thought I was before a show.  Then there's the actual recording of the show: sound levels, microphone placement, EDITING, compressing, uploading, creating show notes, etc.  After all this, I barely had any time to think about designing the website.&lt;/div&gt;&lt;br /&gt;* It's hard to do by yourself, but if you work with others you need to know where you and they stand.&lt;br /&gt;&lt;br /&gt;&lt;div style="margin-left: 40px;"&gt;I was very happy to have my friends involved.  In some cases I was willing to let someone slack in one area because they were so good in another.  However, I think we all underestimated the amount of work.  I didn't set their expectations correctly because I didn't know what to expect.  After a couple of weeks, I was asking them to help find stories on their own and do more than they thought they were signing up for.  If I had to do it again, I would definitely try to set that expectation right away.  Then again, I don't think you can ever get expectations correct - there's always something in any project that doesn't go as planned, and you need a team that is flexible and truly understands how to react.&lt;/div&gt;&lt;br /&gt;* Spend some time (but not too much).&lt;br /&gt;&lt;br /&gt;&lt;div style="margin-left: 40px;"&gt;I would have definitely spent more time on show development up front.  That's not to say that we didn't do any - we actually had a few meetings where we brainstormed some ideas for topics for slow weeks, etc.  However, I think we probably could have used a little more time on the technical side.  I don't blame us, we were eager to get started and I didn't want it to get old before even starting.  I will also contradict myself in the same vein and say that you should also not plan too long - it's a amateur podcast for God's sake, it's not going to be perfect.&lt;/div&gt;&lt;br /&gt;* Watch your shortcuts.&lt;br /&gt;&lt;br /&gt;&lt;div style="margin-left: 40px;"&gt;Be careful where you make shortcuts.  Sometimes spending a little more time or money can provide a huge benefit down the line.&lt;/div&gt;&lt;br /&gt;* I'm glad I did it!&lt;br /&gt;&lt;br /&gt;&lt;div style="margin-left: 40px;"&gt;Even though I had a good idea that I would be moving, I went ahead and started the show anyway.  I wasn't sure what to think of it, but we got consistently 50-60 downloads a week, and around the Super Bowl we were in the 400-500 range.  All these downloads just to hear our silly show.&lt;/div&gt;&lt;br /&gt;&lt;div style="margin-left: 40px;"&gt;The emails really made me feel like someone was listening and getting a benefit.  We got a few emails from people who didn't even live in Pittsburgh anymore, and just wanted to write to say that listening to our show reminded them of their old home.  Others would write to respond to particular topics in the show, or how much they laughed out loud (in public) at some story we told while they were listening on their headphones.  Those stories always made me feel like we were contributing.&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Conclusion&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Would I do it again?  If the conditions were right, I definitely would.  I've learned by this point in my life that I'm not the type to sit around idling by and not get involved with something.  As soon as some free time shows up, I have a way of eventually finding something to fill it up.  Whether it's recreational, volunteering for public causes, or helping friends with their projects.  There's a million things I'd love to have the time to learn, but I have to keep a cap on things or I'd never get anything done.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6907975643453137972-8757608936392908109?l=www.jjerome.com%2Fprojects%2Findex.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/6907975643453137972/8757608936392908109/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=6907975643453137972&amp;postID=8757608936392908109' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6907975643453137972/posts/default/8757608936392908109'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6907975643453137972/posts/default/8757608936392908109'/><link rel='alternate' type='text/html' href='http://www.jjerome.com/projects/2006/09/pghcast.html' title='pghCAST'/><author><name>Jason Jerome</name><uri>http://www.blogger.com/profile/02004764316249949872</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='15696789817534182749'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6907975643453137972.post-8949973375497360297</id><published>2006-05-30T14:56:00.000-07:00</published><updated>2007-01-12T14:09:42.594-08:00</updated><title type='text'>Project blog</title><content type='html'>&lt;p&gt;Well I guess it’s come to this. I figured that with all the “blog knowledge” going on in the world today, that the world really didn’t have any room for me. They say that most blogs are written by semi-pro/semi-amateur writers looking for an outlet. I thought about that for a while, because I’ve always kind of liked the semi-amateur writing style I have. So I figured I would finally answer all my fans’ requests to start writing a blog. All zero of you should be pretty happy about now.&lt;/p&gt; &lt;p&gt;&lt;br /&gt;No really, the real reason I decided to do this was after reading a post on a mailing list I like to read about Linux users in Pittsburgh (WPLUG). The person (he whom must not be named because I’ve become too lazy to switch between windows) mentioned started writing a blog about the projects he was part of, their problems, solutions, etc. It had two goals: provide some insight into their project for others to reference, and (I’d say mostly) to provide a sort of real-world resume for things he has worked on.&lt;/p&gt; &lt;p&gt;I immediately liked the idea - I had just read an article somewhere about more and more companies Googling job applicants to see what they have in their past. If this article sounds familiar - we probably didn’t read the same one. I think I might have read about 5-8 articles with this subject over the past couple years. Anyway, the article was obviously spelling out doom for perspective job-seekers. “Oh my god, look at this - he dressed up as a bunny on Halloween, he might cry if we pressure him too much!” Anyway - that’s not the point. My point is that there are two sides to every story - and my take on this story is that if a company cares so much to read past my resume, that they might actually find out more about my human side and find it to be a better fit.&lt;/p&gt; &lt;p&gt;It’s like my little photo-album on my website. I obviously take WAY more pictures, but I put a few up that I really like. I’m not a professional photographer - I’m obviously a computer geek who takes a million pictures and only shows the one that happened to look like I’m a professional. You should know the type - there are a million of us out there.&lt;/p&gt; &lt;p&gt;Anyway, back to the photo-album. I had a job interview that went pretty well. At the end I met the CEO - who only seemed to look at my website, not much else. He sat there and made guesses as to where each picture was taken. If you haven’t seen my album, it’s brilliantly simple (actually I was lazy, but I’ll take brilliantly simple if you’d let me) . Back to the point - the album did exactly what I wanted; it showed a side of me and instilled conversation.&lt;/p&gt; &lt;p&gt;So it's been a while and I’m thinking of trying the same thing on a sort of journal. Only now these journals are called blogs. Hope you read some more, let me know if you have any comments. Though no promises - I’m not sure if I want to use blog software, or just write a little code. &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6907975643453137972-8949973375497360297?l=www.jjerome.com%2Fprojects%2Findex.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/6907975643453137972/8949973375497360297/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=6907975643453137972&amp;postID=8949973375497360297' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6907975643453137972/posts/default/8949973375497360297'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6907975643453137972/posts/default/8949973375497360297'/><link rel='alternate' type='text/html' href='http://www.jjerome.com/projects/2007/01/project-blog.html' title='Project blog'/><author><name>Jason Jerome</name><uri>http://www.blogger.com/profile/02004764316249949872</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='15696789817534182749'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry></feed>