Users Manual  (Ceder Square Dance System)
[preliminary 24-Oct-98]
Corresponds to CSDS 0.92.0

Introduction

   The Ceder Square Dance System (CSDS) is a tool for writing square dance choreography, storing square dance sequences, modules and resolves, and manipulating lists of square dance calls.   2-couple, 3-couple, 4-couple, and 6-couple choreography can be written.  The program also allows for asymmetric sequences and square rotation of 45 degrees (e.g., ½ Counter Rotate ¼, or from a Thar: Cross By).

   CSDS was designed to be versatile, so much so in fact, that it will allow ‘illegal’ moves to be done.  Although the program knows how to do some concepts, it does not know the definition of most calls.  It learns from you.  If you try to do a call from a position that the program does not recognize, you are asked to move the dancers from their starting positions to their ending positions.  You will also need to specify information such as each dancer’s Roll-direction at the end of the call and whether or not each dancer is active at the end of the call.  This information is saved in the snapshot database, and from then on the program can do that call from that position.  Hence, over time, the snapshot database is personalized with your style of writing material.  The program can generate resolves from the snapshot records that you entered.  The program allows new calls to be added, and you can define your own spelling and abbreviation of calls.

   CSDS also has ‘fuzzy’ call matching, meaning that the program can execute calls from positions in which dancers are not exactly on the required starting footprints for the call.  Each dancer can be ½ of a position away from their required starting footprint and still be able to do the call.  This feature allows calls such as Ping Pong Circulate to be done from Twin Diamond footprints as well as from ¼ Tag footprints (in the first case, the outside dancers are not immediately adjacent, and in the second case, they  are immediately adjacent).

Requirements

   CSDS version 1.xx is a 32-bit Windows program written in Microsoft Visual Basic 5.  

   CSDS requires a computer running Windows 95, Windows 98, or Windows NT 4.0.   32 MB of RAM or more is recommended.  Approximately 40 MB of disk space is required for installation.     

Installation setup

   CSDS is supplied on a CD-ROM, and is intended to be used by a single licensed user.  The program may be installed on multiple machines, provided that only the licensed user actually uses the program. 

   To install the CSDS program, run \CSDS\SETUP.EXE from the CD-ROM.  Also, be sure to read file \CSDS.TXT from the CD-ROM.

   If you have successfully installed the program, the remainder of this section may be skipped.  

   This section describes what files must exist and where they must exist.  It is intended to be used as an aid in determining if your system is properly installed.  

   The database directory (usually C:\SQDATA, and referred to below as <dbdir>) is the root directory for all non-system files required by CSDS.  The database directory name must be in DOS format (8-characters-for-name and 3-characters-for-extension).

   <dbdir> must contain the following files:

•	CSDS.EXE is the executable program.  The command line for the program should be <dbdir>\CSDS.EXE DIR=<dbdir>.  Under Windows-95 or NT, this information can be set by clicking the right mouse button on the CSDS icon, then select ‘Properties’, then ‘Shortcut’, then ‘Target’.
•	LEVELS.DAT (levels order file) defines the names of levels (e.g., B, MS, PLUS, A1) and their order within the level hierarchy (e.g., B precedes MS, MS precedes PLUS, etc). 
•	USERINFO.DAT (author index file) defines author names associated with author identification numbers.  Author identification numbers are used by the program to keep track of who created which database records.  An author identification number is placed in each database record modified by the program.
<dbdir>\ICONS must contain the following files:
•	168 files of  the form <n><s><d>.ICO (dancer icons) where 
<n>={1,2,3,4,5,6}.  (couple number) 
<s>={L,M}.  (sex) 
<d>={U,D,R,L,H,V,X,1,3,7,9,A,B,C}.  (facing direction)
•	4 files of the form ARROW_<d>.ICO (arrow icons) where 
<d>={U,D,R,L}.  (pointing direction of the arrow)
<dbdir>\SQABBREV must contain the following files:
•	ABBREV1.DB (abbreviation database) 
<dbdir>\SQLISTS must contain the following files:
•	SQLISTS.DAT (list database)
<dbdir>\SQPARSE must contain the following files:
•	SQPARSE.DAT (parse database) 
 <dbdir>\SQPROOF must contain the following files:
•	SQPROOF.DB (snapshot database) 
 <dbdir>\SQUAREDB must contain the following files:
•	GETIN.DAT (GETIN database) 
•	GETOUT.DAT (GETOUT database)

   None of the above files (other than CSDS.EXE and USERINFO.DAT) should be marked as read-only.

Updates

An update to the program may be requested when desired.  Updates will be available for a modest fee to cover production costs  (perhaps US $10).
To update your system, run \CSDS\SETUP.EXE from the CD-ROM.  This will copy update files onto your system without overwriting your current databases.  The next time that CSDS is run, the program will update the list database, the parse database, the snapshot database and the GETIN and GETOUT databases.  Hence this update procedure retains all database records that you added/modified within your databases.  

Database/File Overview

Each licensed user of the CSDS program is assigned a unique ‘author identification number’ which the program places within each database record edited or added by that user.

The databases used by CSDS are in proprietary format, and are not accessible through commercial database programs.  The remainder of this section describes the database and files used by CSDS.

      Getin/Getout Databases

Getin databases contain the first few calls of a sequence starting from a squared set.  

Getout databases contain the last few calls of a sequence (resolves).

Two getin/getout databases are initially supplied: the GETIN database and the GETOUT database.  In addition, the program automatically creates/updates a NEWGETIN database if the ‘Generate getins using getin tree’ command is selected, and automatically creates/updates a NEWGO database if the ‘Generate getouts’ command is selected.
The GETIN database is useful when creating opening biggies or for fixing sequences in which two (or more) dancers are swapped such as when the Side Men are out of sequence.
The GETOUT database contains resolves.  When writing a sequence in graphics mode, the GETOUT database can be searched for all the getouts from the current position.  A screen is displayed listing several getouts from the current position.  You can then examine the displayed getouts, but perhaps for some reason (such as bad flow, wrong level, etc) you decide that you don’t want to use any of them.  You can then exit the getout display, execute another call, and then search the resulting position for possible getouts.  Also, when viewing the list of getouts, if you notice that a particular getout is not included in the list, you can add it.
Notes:
•	Getin/getout databases are applicable only to 8-dancer choreography.
•	Neither the GETIN database nor the GETOUT database can be renamed or deleted.
      List Database

The list database contains calls, concepts, formations, identifiers, directions, numerics, and other square dance terminology.  Each record in the list database is assigned a unique number (known as the handle) that is used within the other databases as an index to uniquely identify the particular call, concept, formation, identifier, etc.  Each record also contains information such as the level, the minimum number of dancers required, the number of parts in the call, and flags such as whether or not the call is sex-dependent. 
      Levels Order File

The Levels Order File (LEVELS.DAT) contains the levels of square dancing (e.g., B, MS, PLUS, A1, A2) as well as other ‘levels’ that are used to hold square dance terminology not explicitly on another list.
The following levels are initially supplied:
MISC	B	BV	MS	MSV	PL	PLV	A1	A1V	A2	A2V	C1	C1V	C2	C2V	C3A	C3AV	C3B	C3BV	C4A	C4B	C4C	C4D	C4E	C4F	C4G
MISC is used to hold miscellaneous information that is not explicitly on any other list.  This includes fractions, identifiers such as Boys or Girls, formation names, etc.
B, MS, PL, A1, A2, C1, C2, C3A, and C3B are the standard lists.
BV, MSV, PLV, A1V, A2V, C1V, C2V, C3AV, and C3BV are for calls that are used at the base level but are not explicitly on that list.  For example,  Cast A Shadow is on the A1 list, and Cast A Shadow Don’t Spread is on the A1V list.
C4A, C4B, C4C, C4D, C4E, C4F, and C4G contain C4 calls.  This is my particular partitioning of the C4 list.  I call the calls on C4A through C4D.  C4E is for calls that I’m considering using.  C4F is for calls that I have decided not to use (although other C4 callers may use them), and C4G is for obscure or defunct C4 calls.  
  
Parse Database

The parse database is used to translate square dance text into lists of handles pointing into the list database.  Parsing allows a call to have multiple spellings.  For example, a call such as Left Allemande could be spelled as Left Allemande, Left Allemand, Allemand Left, AL, LA, etc. The parse database would translate each of the aforementioned text strings into the handle ‘1429’ which uniquely identifies an Allemande Left within the list database.     
      Abbreviation Database

The abbreviation database is used to translate abbreviations into their corresponding expansions.  For example, if you type an abbreviation such as PTO, PAOC, PSOC or PATHOC the program replaces it with Pass The Ocean.  
The supplied abbreviation database contains abbreviations for most calls. Each call has two default abbreviations: 
1) 	the concatenation of the first letter of each word of the call. 
2) 	the concatenation of the first two letters of each word of the call.  
For example, the default abbreviations for Split Phantom Waves are SPW and SPPHWA.  If you type an abbreviation for which there are duplicate expansions, the program prompts you to select the desired expansion (e.g., if you type ST, the program displays a dialog box asking if you want Swing Thru, Slide Thru, Star Thru, etc.).  The abbreviation database can be edited to add your own favorite abbreviations.  You can also remove abbreviations or expansions that you never intend to use.  
Notes: 
•	An Abbreviation is a text string that does not contain any spaces.  Abbreviations are automatically converted into uppercase within the abbreviation database.
•	An Expansion may be any combination of uppercase and lowercase characters, and may also contain spaces.
In addition, the following intrinsic abbreviations are available:

B\   Boy
BS\   Boys
C\   Center
CS\   Centers
CB\   Center Boy
CBS\   Center Boys
CC\   Center Column
CD\   Center Diamond
CG\   Center Girl
CGS\   Center Girls
CL\   Center Line
CW\   Center Wave
E\   End
ES\   Ends
EB\   End Boy
EBS\   End Boys
EG\   End Girl
EGS\   End Girls
G\   Girl
GS\   Girls
H\   Head
HS\   Heads
HB\   Head Boy
HBS\   Head Boys
HC\   Head Corners
HG\   Head Girl
HGS\   Head Girls
L\   Leader
LS\   Leaders
O\   Outside
OS\   Outsides
S\   Side
SS\   Sides
SB\   Side Boy
SBS\   Side Boys
SC\   Side Corners
SG\   Side Girl
SGS\   Side Girls
T\   Trailer
TS\   Trailers

The direction of the slash (/ or \) doesn’t matter (both HS/ and HS\ are converted to Heads), and the slash does not need to be followed by a space or punctuation (For example, HS\PTO is converted to Heads Pass The Ocean).

      Sequence Databases

Sequence databases store square dance sequences.  A given sequence database can hold only one of the following types of sequences: 
•	normal sequences (sequences that start from a squared set and end with a resolve)
•	opening biggies (normal sequences containing only a few calls)
•	singing call sequences (either corner progression or R-H Lady progression)
•	stir the bucket routines
•	modules (such as Zero Box to Zero Line, Static Set to Zero Line, etc.). 
It is recommended that sequences be stored and grouped by level and type of sequences.  For example, you might have the following sequence databases for A2 level sequences:
•	A2 for ‘normal’ A2 sequences.
•	A2U for asymmetric A2 sequences.
•	A2WS for A2 workshop sequences.
•	A2SCS for A2 singing call sequences.
•	A2Q for A2 ‘quickies’ (opening biggies).
•	A2-2CPL for two-couple A2 sequences.
Sequence database names must be between 1 and 8 characters in length and may not contain any spaces, periods, colons, or slashes.

      Snapshot Database

The Snapshot Database contains information on how to execute calls.  Each database record consists of a before and after picture, as well as other information such as each dancer’s Active attribute and Roll attribute both before and after the call.
      Dates Database

The Dates Database tracks where and when individual sequences were called.  Each database record contains a date, a location, and a list of sequences called on that date at that location.
      Other Databases/Files

•	The Getin Tree (ExtGetin.Raw) is created by the CSDS program.  The Getin Tree is a hierarchial tree showing the first three lines of text from each record in your normal 8-dancer sequence databases.  The Getin Tree can be used to automatically generate getins (which are added to database NEWGETIN).
•	A Dance (Dance\*.dnc and Dance\*.frm)
•	A List (Sqlists\*.Lst) is a selected subset of records from the list database.  A list can be used to print a list of calls, and to generate a frequency count (i.e., a count of how many times each call, concept, formation, identifier, etc. is used within a particular set of sequences and/or getins/getouts).
•	A List Definition File (Sqlists\*.LDF) defines which list database records are included in a given list.  Records included in the list can be restricted by level, type of call, number of dancers, number of parts, and other criteria.
•	The Sequence Print List (Seq\Seq.Prt) is a list of sequences waiting to be printed.  When a new sequence is created, the database name and index of the sequence is added to the print list.  When a sequence is edited, viewed, or imported, it can also be added to the print list.  After a sequence has been printed, it is removed from the print list.
•	The Author Index File (UserInfo.Dat) is used to translate author identification numbers into author names.
•	The CSDS Initialization File (Csds.Ini) contains information saved between invocations of the program.

Global Options

Global options are accessed via the main menu by selecting Other followed by Option flags…

Consistent capitalization

When checked, newly edited sequence text and getin/getout text is consistently capitalized as follows:
•	The first letter of each word is converted to uppercase.  All other letters are converted to lowercase.
•	The following text strings will be entirely in uppercase:  
IY  (In Your) 
DYP  (Do Your Part) 
LA  (Left Allemande)
RLG  (Right & Left Grand)
•	Text strings contained within matching parentheses, “(“ and “)”, are not modified.

      Consistent formatting

When checked, newly edited sequence text and getin/getout text is consistently formatted as follows:
•	Each line that is not followed by a continuation line ends with a comma.  This does not apply to the last line of text in the sequence/getin/getout.
•	Blank lines are removed.
•	Continuation lines are indented so that the indentation is a multiples of 3 spaces (i.e., continuation lines start in column 4, 7, or 10).
•	Adjacent spaces (other than the leading spaces in a continuation line) are replaced with a single space.
•	The first line in the sequence/getin/getout starts in column 1.

      Reset actives after each line

When checked, all dancers are set to active status after each line of text has been processed.  
For example, from a squared set, if the first line of a sequence is Heads Touch 1/4 and the second line is Boys Run then, when checked, all dancers do the Boys Run; when not checked, only the active dancers (i.e., the Heads in this case) do the Boys Run.
      Try center 4

When checked, and a call is not found in the snapshot database, the program activates the Center 4 dancers and then retries the call.   
For example, after a Ferris Wheel, the next call is Swing Thru.  When checked, the Center 4  do the Swing Thru.  When not checked, a ‘call not found’ error occurs, and the sequence will need to be edited to replace Swing Thru with Centers Swing Thru.
It is recommended that this option not be checked, as unexpected results may occur if a call is not found in the database, but the call ‘Center 4 do the call’ is.
Maximize screen display
When checked,  the entire screen is used for display if possible.  Thus, if the monitor resolution (a.k.a. the Desktop Area) is greater than 640x480 pixels then some screen displays will use the extra space to display more data.  This option is somewhat unnecessary since each screen capable of displaying more data can be resized or maximized by the user.
Use pop-up menu for facing directions
This option determines how the program behaves when the mouse is right-clicked on a dancer within the following screens: Getin/Getout Add, Getin/Getout Find, and Snapshot Edit.  Right-clicking the mouse allows the facing direction of a dancer to be changed.
When checked, right-clicking the mouse on a dancer invokes a pop-up menu that allows the facing direction to be selected.
When not checked, right-clicking the mouse on a dancer changes the nose to be at the position at which the mouse was clicked.  Generalized noses are created by right-clicking again at the same position.

Limitations

Getins/getout databases

The name of a getin/getout database must be of length 1 to 8 characters.

Getins/getouts are applicable only to 8-dancer choreography.

The dancers within the formation must be symmetric.

The formation is limited to 26 predefined formations.

The text of a getin/getout can not exceed 200 characters.  This length includes spaces and punctuation.  Also, each line in the getin/getout contributes 2 to this length (for the carriage return and linefeed).

By design, the level of a getin/getout is automatically determined by the program.  The level can not be edited.  This is so that when a call changes levels, the getin/getout records can automatically be updated.

Sequence databases

The name of a sequence database must be of length 1 to 8 characters.

The text of a sequence can not exceed 798 characters.  This length includes spaces and punctuation.  Also, each line in the sequence contributes 2 to this length (for the carriage return and linefeed).

There is a limit of 300 lines in a sequence.  However, when printing a sequence in normal mode, depending upon your page size, font selected, and line spacing, the sequence may contain no more than about 21 lines (in this case, each continuation line is counted as a separate line).

Dates database

The location (place at which a sequence was used) must be of length 1 to 32 characters.

No more than 30 different sequence databases may be entered for a given date.

List database

The name of a list must be of length 1 to 8 characters.

The name of a level must be of length 1 to 4 characters.

The text in a list database record (e.g., the name of the call, concept, identifier, formation, etc.) can not exceed 38 characters.

Parse database

The text for a parse database record can not exceed 50 characters.

The maximum number of handles per parse database record is 6.

The level of a call can not be successfully determined if the call is on two separate lists.  For example, Recycle is on the MS and A2 lists.  The program determines the level by selecting the least of the two levels.  The same problem exists for Explode (Plus,  A1), Reverse Explode (C1, C4D), and Rotates (C1, C2, C3B).

Abbreviation database

The length of an abbreviation plus the length of its expansion can not exceed 92 characters.

Snapshot database

When dancers are at 45 degree angles, all dancers must be at 45 degree angles.  Some dancers can not be at 90 degree angles while others are 45 degree angles.

Snapshot database records can not contain more than 12 dancers per record.

The maximum number of handles in a snapshot record is 18.

Intrinsic Identifiers/Calls/Concepts

The following identifiers are intrinsic to the program:

Boys
Girls
Couple #N (where N is 1,2,3,4,5, or 6)
Outside 4
Center 4
Very Center 2
Very Outside 2
Center 6
Outside 6
Split-Centers
Split-Ends
Head position
Side position
Far
Near
Heads
NearFarSpotTwo
NearFarSpotFour
Others
Sides
Centers means …
Ends means …
*Head/Side/Couple#N Boy/Girl
Other Boy/Girl
Same Boy/Girl
Outer 4/End/Center/Outside Boy/Girl
Centermost/Outermost Boy/Girl (*** what about using Innermost instead of Centermost? ***)
Head/Side Corners
Head/Side Liners

The following calls are intrinsically supported by the program:

Curve In/Out/Right/Left: Press toward the given direction while turning ¼ toward that direction.
E.R.A.: Girls Press Ahead as Boys Press Back.
M.C.P. : Boys Press Ahead as Girls Press Back.
Face In/Out: turn ¼ in place toward or away from the center of the set.
Face The Music: turn if necessary to face toward the caller.  The amount of the turn can be 0, 90, or 180 degrees.  If dancers are facing at 45 degree angles, then this call is not intrinsically supported.
In/Out/Right/Left Loop 1/2/3/4/5/6/7/8/9/10/11/12: Run toward the given direction (relative to the center of the set) around the given number of matrix positions.
Press In/Out/Right/Left: move one matrix position forward and toward the given direction (relative to the center of the set).
Press Ahead/Back: move one matrix position forward or backward.
Quarter Right/Left: turn ¼ in place toward the given direction.
Truck: Boys dodge left one matrix position as Girls dodge right one matrix position.
Reverse Truck: Boys dodge right one matrix position as Girls dodge left one matrix position.
Roll: if previous call had a right or left roll direction, then turn ¼ in place toward that direction.

The following concepts are extrapolated by the program:

All 4 Couples
All 8
As Couples
Assume Symmetry: phantom dancers are assigned the sex, facing direction, and roll attribute of their diagonal opposite.
Block (non-shape changers only)
Butterfly
Center 1x4
Center 1x6
Center 2 (Very Centers)
Center 4|6| 8
Center Diamond
Center “Z”
Checker Board|Box
Checker Column|Diamond|Line|Single ¼ Tag|Wave
Checkpoint <anything> By <anything>
Couple Twosome
Crazy (8-dancers only)
Diagonal Box  (non-shape changers only)
Diagonal Column|Line|Wave (4-dancer non-shape changers only)
Distorted Column|Line|Wave (4-dancer non-shape changers only)
Emulate
Interlocked Parallelogram  (non-shape changers only)
Jay  (non-shape changers only)
      (generalized 1/4-Tag/Twin Diamond/"H" formations only)
      (including Right|Left|Back Jay)
Mirror
Near|Far|NearFarSpotTwo|NearFarSpotFour with
      Box, Z, Diamond, Wave, Line, Column, Trapezoid, 
      3 By 1 Triangle, Triangle, Couple,
      1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11
(Near means those closest the caller, or Couple #1s original wall)
(Far means those furthest the caller, or closest Couple #3s original wall)
(NearFarSpotTwo means those closest Couple #2s original wall)
(NearFarSpotFour means those closest Couple #4s original wall)
“O”
Offset Column|Line|Wave (4-dancer 100% offset formation)
Offset Columns|Lines|Waves (8-dancer formations offset by 50% or 100%)
Offset Column|Line|Wave Of 6
Offset Tidal Line|Wave
Once Removed
Orbit Board| Box
Orbit Column|Diamond|Line|Single ¼ Tag|Wave
“OX”
Parallelogram (8-dancer formation offset by 25%, 50%, 75%, or 100%)
Reverse Crazy (8-dancers only)
Skew
Skewsome
Siamese
Siamese Twosome
Split Phantom Boxes|Columns|Diamonds|Lines|Waves| ¼ Tag
Stable
Stagger (8-dancer formation)
Staggered Box|Column|Line|Wave (4-dancer non-shape changers only)
Stretch (two 4-dancer calls only)
Stretched Box|Column|Line|Wave
Tandem
Tandem Twosome
Trapezoid  (non-shape changers only)
Triangular Box  (non-shape changers only)
Triple Box|Column|Diamond|Line|Wave
Triple Column|Line|Wave Of 6|8
Triple Tall Six
Triple Twin Columns|Lines|Waves
Triple “Z” (3x6 matrix only)
Twin Orbit Board|Box
Twin Orbit Column|Diamond|Line|Single ¼ Tag|Wave
Twin Phantom ¼ Tag|“H”|Static Set
“Z”  (non-shape changers only)
“Z”-Columns|Lines|Waves
The following concepts are expanded by the program:

Catch <anything> (N)
Echo
Flowing 
Lines <anything> Thru
(N) Times (e.g., Twice, Thrice, Funny Circulate 4)
Reverse Echo
Rolling 
Split Catch <anything> (N)
Sweeping 
Tagging calls (e.g., Revert The Vertical Tag Chain Thru & Scatter Cross Reactivate)
Veering 

How to do specific tasks

This section describes how to do several common tasks.

Adding a record to the snapshot database (i.e., specifying a before-and-after picture for a call):

To add a record to the snapshot database, you must either be editing a sequence in graphics mode, or must be proofreading a getin/getout or sequence.  When the program is unable to do a call, it will prompt you ‘Call not found, add it?’.  At this point, enter the name of the call to be added and click on the ‘Process or add’ button.  The program then displays a snapshot record that can be edited.  Move each dancer within the after picture to their ending position and set their Roll and Active attributes.

Hint: After moving a dancer to their (final) ending position, set their Roll attribute before selecting the next dancer.
Multiple noses on a dancer indicate that the dancer may be facing in any of the indicated directions.  This feature is useful for defining calls such as Tag The Line in which all dancers have two possible facing directions before the call.  Dancers that are not active during the call should usually be defined with 4 noses for both the before and after pictures.
Writing a sequence:

There are two modes for writing a sequence: graphics mode and text mode.  
•	In graphics mode, dancer icons are displayed and updated as calls are added/deleted from the sequence.  Several options are available such as searching for calls that can be done from the current position, and searching for resolves from the current position (8-dancer choreography only).
•	In text mode, the screen becomes one large edit box and a few buttons.  No dancer icons are displayed.
Within the text of a sequence, the following characters have special meaning:  
•	“%” toggles highlighting, usually displayed/printed as underline + italic.  For example, you may wish to highlight all identifiers in this manner.
•	“$” toggles double highlighting, usually displayed/printed as underline + italic + bold.  Double highlighting should be used for cases in which the selected text really needs to stand out.  For example, if I call a sequence and discover that I skipped a line, I will make a note to double highlight it the next time that I print the sequence so that when I call it again, I won’t miss that line.
•	“(“ and “)” enclose comments.  The matching parentheses must be on a single line of text.  A comment can not span onto the next text line even if the next line is a continuation line.  Text contained within parentheses is ignored when a sequence is proofread.  
•	“[“ and “]” are used as logical parentheses within the sequence.  These parentheses are used remove ambiguity when binding concepts to calls, or when binding fractions to calls.  For example,
•	[As Couples Swing Thru & Roll] does an As Couples Roll.
•	[As Couples Swing Thru] & Roll does an individual Roll.
•	[Run Wild ¾] Reset does a ¾ Run Wild then a Reset.
•	Run Wild [¾ Reset] does a Run Wild then a ¾ Reset.
Notes: 
•	Each line of text must have an even number of “%”s and an even number of “$”s.  
•	The parentheses “(“ and “)” as well as “[“ and “]” must be properly matched. 
An indented line is considered a continuation of the preceding line.  Indentation is used to continue the call on the next line.
Example of sequence text:
%Heads% Right & Left Thru & %1/4 More%,
   %Sides% Half Sashay,
As Couples Scoot & Weave,
[As Couples Spin The Top & %Roll%],
Double Pass Thru,
Peel & Trail, %New Ends Roll%,
Split Square Thru %On 3% Grand Swing Thru $Double$,
Explode %And% Touch 1/4,
Split Circulate %1 & 1/2% (check Diamonds),
%6 By 2 Acey Deucey%,
Flip The Diamond & %Roll%,
Eight Chain 5,
L.A. (Near Home)

Writing a dance:

1) 	Create a list for the dance.  The list should contain all calls at the level that you’re calling and all calls on all lower levels.  For example, if you are writing an A2 dance, your list should contain all calls on the A2 list and all calls on lower level lists.
2) 	Create one or more sequence databases (if necessary) to hold the sequences for the dance.  Be sure to set the ‘Maximum level’ within the sequence database.  Existing sequence databases can be used as well.
3) 	Edit the sequence databases to set the default list to the list created above in step 1.
4) 	Use Sequence then New sequence [Graphics] to create new sequences.
5) 	Print the sequences.

Calling from a laptop:

From the main menu, select Sequence followed by View.

Changing the level of a call:

Changing the level of a call can be accomplished via two different ways:

1) 	Edit the list database

From the main menu, select List then Edit list database.  Find the desired call.  Edit the call and change the level.  Save changes and exit.

2) 	Change levels of calls

From the main menu, select List then Change levels of calls.  Display the current level of the desired call in one list box and display the new level for the call in the other list box.  Highlight the desired call and then click the appropriate ‘move’ button.  Exit the form.

Writing sequences in parallel:

Sequences can be written in parallel instead of sequentially.  That is, instead of writing one complete sequence after another, start about 50 sequences by writing down the first few calls of the sequence.  Then type the sequences into the computer via New sequence [Graphics].  Use Print incomplete sequences followed by Print list to print the sequences with their current ending formations.  Add the next few lines to each sequence and go back & add those lines using the program…

Mention Proofread\SeqDb\ etc…

Doing a frequency count for a set of sequences:

1) 	Create a list to hold the frequency count.
2) 	For each sequence database from which you wish to count calls, from the main menu select ‘Parse’ followed by ‘Parse several sequences’.  Select the database and range of records to process.  Accept the default output file (\pallseq.out).  Select the list created above in step 1.  Select ‘No’ for ‘Zero all use counts in list?’.
3) 	The program then parses the sequences selected and updates the list.  Delete the output file.
4) 	Repeat step 2 and 3 until all sequences have been processed.
5) 	View or print the list.
•	To view the list:  From the main menu, select ‘List’ followed by ‘View’ and select the list created above in step 1.  After the list is displayed, select ‘Display’ then ‘Change Use count range’ and set the minimum to 0 and the maximum to 9999.  Then select ‘Display’ then ‘L-H side’ then ‘Use count’.  Then select ‘Display’ then ‘Sort by’ then ‘Descending use count’.  
•	To print the list:  From the main menu, select ‘List’ followed by ‘Print a list’.    Select the list created in above in step 1.  Select the ‘Frequency count’ option, and decide whether to send the output to the printer or to a text file.  Click on the ‘Print’ button.    

Adding a new call:     

1) 	From the main menu, select ‘List’ followed by ‘Edit list database’ then select Add new record (Ctrl+A).  Enter the name of the call and other attributes.  Remember or write down the handle number assigned to the call.  Select the ‘Exit’ menu option and click on ‘Save changes’.
2) 	Edit the parse database, adding any text strings that refer to the newly added call.  For each text string added, enter the handle number of the newly entered call.
3) 	Optionally edit the abbreviation database to add any desired abbreviations.

Questions and answers

Q.   I entered a Triple Box Belle Hop last night and noticed that the matrix provided is only large enough to hold a 1x12.  As obnoxious as it sounds, I do sometimes utilize a 1x16.  Is there a way to handle that?

A.  When editing a snapshot record, click on the ‘Zoom’ menu option to toggle the matrix size between 12x12 and 16x16.  When editing a sequence in graphics mode, the program automatically toggles the matrix size between 12x12 and 16x16 depending upon whether or not any dancers are located outside the 12x12 matrix.

Q.   When a snapshot record is marked for deletion, when does it actually get deleted?

A.   Snapshot records are deleted when the snapshot database is sorted.  Similarly, getin/getout records are deleted when the getin/getout database is sorted.  As long as a database has not been sorted, records that were deleted can still be undeleted if desired.

Q.   It would be nice if the dancer icons were the same colors as my checkers.  I’m pushing my checkers through stuff to enter it, and the different colors are confusing.  I’m betting they are currently the same colors as your checkers.  Being able to change which couple is what color would be very cool.

A.   Dancers icons are standard 16-color 32x32 Windows icons.  The icons reside in directory C:\SQDATA\ICONS.  There are 14 icons for each dancer (one for each of the possible facing direction combinations).  An icon editor such as the Microsoft Image Editor or IconWorks can be used to modify an icon.  Alternatively, the CSDS program can be used to change the colors of an icon.  To do so, from the main menu select Other followed by Display dancer icons.  At this point, all dancer icons are displayed on the screen.  To edit the colors of an icon, double-click on it.  Change the colors as desired.  Upon exiting the icon editor, the program asks if you wish to update the color scheme for all 14 of the icons for the current dancer.

Q.   I added a snapshot record using the Like A concept and discovered that Like A is equivalent to Finish in the program.  I think these are two very different concepts.  Finish is do all but the first part; Like A is only do the last part.  Having them as synonyms could create major problems.  Can this get fixed?

A.   You used Like A with a 2-part call.  Internally, the program converts Like A to Finish if the call only contains 2 parts.  Similarly, Random is converted to Initially for 2-part calls.  This is done in order to minimize the number of records required in the snapshot database for such concepts.  If you use an N-part call, where N is greater than 2, you will find that you no longer have this ‘problem’.

Q.   What happens if you get duplicate records in the snapshot database?  For example, what if I import some records and later import some of them again, what happens?

A.   From the main menu, select Snapshot  followed by Validate record access.  This option processes records within the snapshot database and verifies that they can be accessed by the program.  In essence, for each record, it makes sure that the record will be accessed if dancers are in the starting position as specified in the before picture.  There is a check box option to Delete duplicate records which, when checked, marks a record as deleted if the removal of that record would not affect the program being able to execute the call from all the positions contained within that record (i.e., if you have two identical records in the database, and you try to access them, only one of them will be accessed.  When Delete duplicate records is checked,  the non-accessed records are deleted). 

Q.   Is having the records other create useful?  What happens if, when the program has widespread use, people pass around their additions to your database?  How will databases stay in reasonable shape?

A.   Each record in the snapshot database, the getin/getout databases, the list database, and the parse database has an author field in which an author identification number is placed.  Hence the program can tell the source of the records, and can choose whether to update specific records or not.  The snapshot database and getin/getout databases can be searched on the author field to find records created/edited by others.  Also, when you receive program and database upgrades from me, the upgrade process only replaces those records created by me (records created by you or others are retained).  In this manner, your databases are upgraded without destroying any records that you have added/edited.

Q.  How can I extract sequences from the sequence databases and place them in a text file?  I don’t want to deal with reading them from the program just yet.

A. 	To copy sequences from a sequence database to a text file do the following:

1) 	From the main menu select Sequence followed by Print sequence(s).  
2) 	Under the Print List, select the sequences that you wish to export.
For example, 
C1WS
4-10,15,22-40
C2
120-139
selects sequences 4 through 10, 15, and 22 through 40 from database C1WS, and sequences 120 through 139 from database C2. 
3)	Under Output format, select One text file.  
4)	Check the Only print proofread sequences check box and Double spaced check box if desired.  
5)	Click the Print button.  You are then be prompted for an output file name, after which the sequences are written to that file.

Q.  How do I extract snapshot records that I’ve created on one system and put them into another system?  I will eventually have three machines doing this, and keeping the database in sync concerns me…

A.  Designate one machine as the primary machine.  This machine will store the primary copy of the snapshot database.

Every so often, copy all newly created snapshot records from each of the non-primary machines to the primary machine.  (As long as the snapshot database has not been sorted on the non-primary machines, all newly added records are at the end of the database).  The newly added records can be extracted via main menu option Snapshot followed by Export records.  Export all records outside the sorted region (this is the default) into an output file.  Copy this output file onto the primary machine.  On the primary machine, use Snapshot followed by the import records function to import the output file into the snapshot database.  After importing records onto the primary machine, sort the database on the non-primary machine.  Every so often, sort the database on the primary machine, break it up into pieces and/or zip it up and replace the snapshot databases on each of the non-primary machines.

I usually copy records from my non-primary machines to my primary machine after I’ve entered 300 records or so.  I usually replace the snapshot database on my non-primary machines every 3 months or so.

Note: Editing a snapshot record (as opposed to creating a new snapshot record) does not add a record to the database, and hence the above mentioned procedure will not copy this change onto the primary machine.  The only way to get these changes is to manually edit the same record on the primary machine.  Hence, if you tweak a facing direction or active attribute of a snapshot record within the sorted region of a non-primary machine, write yourself a note so that the same change can be made later on the primary machine.

A similar procedure can be followed with the getin/getout databases.

Miscellaneous comments 

From setups such as after an Acey Deucey 1 & ½ from Parallel Waves, if you want the Center 1x6 formation to do the call, you can not say Center 6: you must say Column Of 6, Line Of 6, Wave Of 6, or Center 1x6.  You can not say Center 6 because the program calculates the Center <n> as being the <n> dancers closest the center of the set (in this case, the End of the Center 1x6 would not be considered part of the Center 6 since the point of the center Diamond is physically closer to the center of the set).  Similarly, from the same setup, you should either say Center Diamond, Center Single ¼ Tag, Center Column, Center Line, or Center Wave instead of Centers or Center 4.

 From Parallel Waves after a ½ Circulate, you must say Center Column, Center Line, Center Wave, or Center 1x4 if you want that setup.  The word Centers or Center 4 would activate the Center Diamond.

Centers always denotes the 4 dancers closest the center of the set.  From a 1x8, if you want the centers on each side, you must say Each Side Centers or Split Centers.  (i.e., Each Side Centers Trade).  Of course, if the Split Centers are Boys, Girls, Heads, Sides, etc., you could simply identify them as Boys, Girls, etc.  Similarly, the term Ends has the same problem.  Use Each Side Ends or Split Ends (if it’s a bad hair day ).  Use the term Outsides or Outer 4 to identify the outermost 4 dancers.

For a sequence to be marked as proofread, it must have a valid ending.  
•	For normal sequences or opening biggies, the sequence must end with a Right & Left Grand, Left Allemande, (You’re) Home, Promenade Home, Wrong Way Promenade Home, Single File Promenade Home, or Wrong Way Single File Promenade Home in which each dancer is in sequence with their original partner. For a sequence to be proofread, it can not end with a Dixie Grand: it must end with a Dixie Grand followed by a Left Allemande.  Also, a sequence can not end with a Promenade or a Single File Promenade: it must end with a Promenade Home or a Single File Promenade Home. 
•	For singing call sequences, Men must end with their Corners or their R-H Ladies.   
•	For modules, the sequence must end in the defined ending position for the sequence database.

The C2 call Invert <fraction> must be entered either as <fraction> Invert The Column or Invert The Column <fraction>.  That is, the words ‘The Column’ must be entered as part of the call.  This is necessary because the parser can not distinguish between the call Invert <fraction> and the C4 concept Invert (ends & centers).  For example, from the parser’s standpoint, an Invert ¾ Mix could mean several things (¾ Invert The Column & Mix; Invert The Column then ¾ Mix; or do the Invert of a ¾ Mix).  Similarly, the C2 call Cross Invert has the same problem.

Fractions should be placed before the call, not after (e.g., ¾ Run Wild instead of Run Wild ¾).  Although the program will usually correctly bind the fraction to the correct call even if the fraction follows the call, you may run into trouble.  For example, a text string such as ‘Run Wild ¾ Reset’ would be parsed as ‘Run Wild’ followed by ‘3/4 Reset’).  Bracketed parentheses, “[“ and “]” can be used to force specific fraction binding.  For example, [Run Wild ¾] Reset does a ¾ Run Wild then a full Reset.  Run Wild [¾ Reset] does a full Run Wild then a ¾ Reset.

A call such as Centers Work Tandem, Hocus Pocus or Ends Are Stable, Team Up may not work as expected.  In cases such as these, the program will try to activate only the designated dancers.  If you want all dancers to be active you must add the word All (or an equivalent such as Everyone) to the call (e.g., Ends Work Stable, All Team Up).  

From a static set, the call Heads Nothing will not move the Heads into the middle.  Neither should a call such as Heads U-Turn Back, Heads Partner Trade, or any other 1-dancer or 2-dancer call that does not require the Heads to work with the opposite couple.  If you want the Heads to move into the middle and do nothing, say Heads Move In, Heads Step Ahead or Heads Press Ahead.  Using a call that is a r-dancer call, or using a 2-dancer call that requires them to work with the opposite dancer will move them into the middle.

The call Centers Split The Outsides First Left Next Right does not automatically end in lines.  You must say Around 1 To A Line to get lines.  This is necessary because there are other things that the active dancers could do, such as Come Into The Middle.

Touch By requires the delimiter ‘By’ not ‘And’ (e.g., Touch By ¼ By ½).  This is because the generalized version of the call is Touch By <anything> By <anything> (By <anything>…).  From a column of 8, there could be 4 anything calls.  Since the word ‘And’ is frequently used to join two calls together as one, a call such as Touch By ¾ Do-Sa-Do And Slither By ¾ Do-Sa-Do can not to be unambiguously parsed if ‘And’ is a delimiter.

Bugs and Future Enhancements 

If you find any program bugs or other annoyances, or if you have some good ideas for future enhancements, let me know.

For bug reports, please make a note of what you were trying to do, how you were trying to do it, and what the problem was.  Include as much detail as possible.  Try to find a sequence of events that consistently causes the bug to occur.  Also mention what version of the program you are using (look in the ‘About’ box under the Other sub-menu).

For future enhancements, please be as specific as possible when describing what would improve the program.  (Although I already have a large list of potential improvements, I always appreciate more).

Vic Ceder
P.O. Box 841
Los Olivos, CA. 93441-0841

Home:  (805) 686-1108
Work:  (805) 685-4571 Ext. 240 

Email: vic@ceder.net