% readme.tex -- a short example of how each Stata Journal insert should be
% organized.

\raggedbottom

\inserttype[st0001]{article}
\author{Short article author list}{%
  Scott Long \\Indiana University\\Bloomington, IN/USA\\jslong@indiana.edu\\
\\ Draft 2017-08-13
\\ \\ \uline{Note:} \texttt{search workflow} to install the commands described
below.
%  \and
%  Second author\\Second affiliation\\City, State/Country\\Email address
}
\title[Short toc article title]{A Workflow for Managing Projects}
\maketitle

\begin{abstract}
REVISE:
Changing working directories is cumbersome in Stata, yet having a different working
directory for each project is critical for an efficient workflow. This article describes the \texttt{cdsave}, \texttt{cdlist}, \texttt{cdinfo}, and \texttt{cddelete} commands that create and manage commands for quickly moving among working directories. 
\keywords{\inserttag, 
\texttt{cdsave}, \texttt{cdlist}, \texttt{cdinfo}, \texttt{cddelete}, \texttt{cd},
working directory, managing projects}
\end{abstract}


Unless you work on only one project, having separate working directories for each
project is critical for an effective workflow. Sadly,  Stata's support for working directories is awkward, inefficient, and
inconsistent across operating systems. To change working directories, you can
use \texttt{cd }\textit{directory-name} or point and use  
\textit{Change working directory...} in the File menu.\footnote{Changing working directories in Stata is like having a powerful
and elegant sports car that can only be started by opening the trunk to insert
the key.}
Differences across operating systems in how working directories are controlled
adds complexity 
to what should be a simple task. Stata for Mac and Unix  open in the working directory from your last session. Stata for Windows opens in the working directory set during installation
or controlled by \texttt{cd} in \texttt{profile.do}. In Window, the \texttt{cd} command without a path reports the current working directory, while
in other operating systems this  changes your working directory to the base
level of your current drive.

The \texttt{workflow} package is organized around the idea of a project. 
A project is a distinct  activity such as a writing a paper, taking or teaching
a specific class, writing a book, or developing a Stata command. Most simply, the \texttt{workflow}
commands makes it easier to change working directories as your work moves 
from one project to another. For many, this will be the
only feature of the commands of interest. For those doing more complex work, other features allow you to easily set up an environment for each project where
globals are defined that specifying a path   where datasets are
located, associating an {\smrm URL} with your project, and automatically running commands when changing projects.
The \texttt{workflow} package includes four commands:
\begin{description}

\item[\texttt{cdsave}] 
creates ado files that changes the working directory and
creates globals with information about each project.
These commands are named \texttt{cd}\textit{project} and are referred to as 
the \texttt{cd*} commands. 
To make these commands available regardless of your current
working directory, they ado files are saved in your {\smrm PERSONAL} directory.
    
\item[\texttt{cdlists}] 
lists the the commands created by \texttt{cdsave} along with the name of the
working directorythat is set by the or a note describing the project.

\item[\texttt{cdinfo}] 
lists the globals created by the last \texttt{workflow} command that was run.

\item[\texttt{cddrop}] 
drops commands that are no longer needed.
        
\end{description}

\noindent
Non-programmers can use these commands without knowing anything about writing ado
files. Programmers can easily customize the commands that are created to add other features.

The \texttt{workflow} package was inspired by 
the \texttt{fastcd} package by \cite{Winters:2002}, 
Baum's ideas on creating globals for setting up the environment for  
a research project \cite[78-79]{Baum:2016},
and Long's ado files for changing the working directories
\cite[111-112,117-118]{Long:2009a}. 

% ===========================================================================
% 
\section{Using the project commands}

 This section
begins by illustrating how the \texttt{workflow} 
package allows you to easily changing working directories.
Next, I show how to modify your \texttt{profile.do} 
 to control the working directory in which Stata opens and to then quickly changing to the directory for the project you want to work on. Next, I explain how to
create robust and portable do-files that use globals to specify the location
of datasets. And finally, I show how  commands
can be automatically executed when you change projects to further customize your
project environment.

% ===========================================================================
%
\subsection{Quickly changing the working directory}

A simple example using two projects explains the most basic use of
{\tt cd}{\it project} commands to quickly move among working directories.
Suppose that project {\smrm A} uses working directory \texttt{d:/projecta/work} while
project {\smrm B} uses the directory \texttt{d:/projectb/work}.
To create the command \texttt{cdprojecta} to change the working directory, 
you begin by changing to the working directory you 
want for your project ant then run \texttt{cdsave}:

\begin{stlog}
. cd d:/projecta/work
d:/projecta/work

. cdsave projecta, replace
command cdprojecta saved in your personal directory
\end{stlog}

\noindent
I do the same thing for project {\smrm B}:

\begin{stlog}
. cd d:/projectb/work
d:/projectb/work

. cdsave projectb, replace
command cdprojectb saved in your personal directory
\end{stlog}

\noindent
To move between directories:

\begin{stlog}
. cdprojecta
d:/projecta/work

. cdprojectb
d:/projectb/work
\end{stlog}

To list the {\tt cd}{\it project} commands that I have defined,
\begin{stlog}
. cdlist

      cdcda - d:/active/cda2017/work/
     cddesk - c:/users/jslong/desktop/
 cdprojecta - d:/projecta/work/
 cdprojectb - d:/projectb/work/
    cdstart - d:/statastart/
  cdwficpsr - d:/active/wficpsr2017/work/
 cdworkflow - d:/active/workflowwd/work/
\end{stlog}

\noindent
I can change to the working directory for any project by running the command.
Or, I can use the mouse to click on the name of the command I want to run. 
This feature is not available on some Stata installations. If it works on your
system, the names should appear in blue.

As the number of {\tt cd}{\it project} commands increase, scanning the directories
become awkward. A more efficient approach is to use the note option when creating
a command:

\begin{stlog}
. cdsave projecta, note(Project A 2017) replace
command cdprojecta saved in your personal directory
\end{stlog}

\noindent
Having done this for all of the commands except for \texttt{cdprojectb}, 

\begin{stlog}
. cdlist

      cdcda - CDA class
     cddesk - Desktop
 cdprojecta - Project A 2017
 cdprojectb - d:/projectb/work/
    cdstart - Default starting directory
  cdwficpsr - ICPSR WF class
 cdworkflow - Workflow cd commands
\end{stlog}

\noindent
Even when notes are set for projects, I sometimes find it useful to list the
working directories set by each command. This can be done either by
running \texttt{cdlist, dir} which replaces notes with the working directory.


% ===========================================================================
%
\subsection{Controlling the starting working directory}

You can change the working directory in which Stata starts, but there is
not a simple way to do this. One solution is simply run \texttt{cdlist} 
as soon as Stata
starts and click on the project where you want to start. This section shows you
how to change your \texttt{profile.do} to make this even simpler. It requires
some effort the first time you do it, but thereafter it is automatic.
 


 For Windows, the
starting working directory is set when you install Stata. 
{\it Getting Started with Stata for Windows} explains how to change the properties
sheet to change this. The explanation is confusing and has never worked for me.
%%``You can have Stata start in any directory you desire. 
%%If necessary, delete the parameter
%%/UseRegistryStartin from your Target field.
%%Then change the Start in field of Stata’s Properties Sheet to
%%the location you would like Stata to have as its default working directory."
In Mac, the initial working directory is the working directory you
were using when you last quit Stata. In Unix, the only method described in 
{\it Getting Started with Stata for Unix} is using the \texttt{cd} command
and typing the directory you want each time Stata opens.

All three operating systems will run \texttt{profile.do} located the  {\smrm
STATA} directory; run {\tt sysdir} to find the location. 
You can add a \texttt{cd} to \texttt{profile.do} or you can use the the commands
in the \texttt{workflow} package. The first thing to do use \texttt{cdsave} to create the command
\texttt{cdstart} to change to the working directory you want to start in. Then,
add the command \texttt{cdstart} to \texttt{profile.do}. 
The \texttt{cdstart} command will run each time Stata starts and will set the working
directory. If you change your mind on where you want Stata to start, you can
create a new cdstart command with\texttt{ cdsave} ...\texttt{,} ... \texttt{replace}.

If you work on many projects at the same time, you are likely to change directories
immediately after you start Stata. To make this easier, you can 
add \texttt{cdlist} to your \texttt{profile.do}. For example,

\begin{stlog}
cdstart
cdlist
\end{stlog}

\noindent
If you want to prevent an error in case the \texttt{workflow} commands have not been installed on the computer you are using,
you can use the more robust commands:

\begin{stlog}
noisily di \_new ". cdstart"
capture noisily cdstart
capture noisily cdlist
\end{stlog}


% ===========================================================================
%
\subsection{Robust specification of data paths}

Stata's {\tt use} command loads a dataset from the working
directory unless a path has been specified. This path can point to a directory on your
computer or an {\smrm URL}. While I prefer to keep the datasets related to a
project in that project's working directory, in some cases this is not possible.
For example, I might need to access data over the web or in a collaboration multiple
people might need common access to datasets on a shared directory. Or, you might
simple prefer to have your data stored someplace other than the working directory.
In order for your do-files to run on other computers, 
you cannot hard code a directory
location within your do-files. That is, 
you cannot do something like use \texttt{d:/data/binlfp4,
clear} since your do-file will not run on a computer  that does not 
have exactly the same directory structure,
including drive names. Recently, the director of our statistical
consulting center showed me a message a client received from an editor asking
him/her to resubmit the script files for an article after 
removing the hard coding of directories.
Globals can be used so that your do-files can load data from locations other
than your working directory, but that also allow do-files to 
be portable across computers.
To do this, I  create a global with the path where data is saved. 
For example, 

\begin{stlog}
global S_cddata "d:/datasets/"
\end{stlog}

\noindent
This global is \textit{not} created in my do-file for reasons explained below. My do-file
uses data with the command:

\begin{stlog}
use "$\lbr{S}\_cddata{\rbr}binlfp4", clear 
\end{stlog}

\noindent
which is interpreted as:

\begin{stlog}
use "d:/datasets/binlfp4", clear 
\end{stlog}

\noindent
If the global was not defined, the command  would be interpreted as:

\begin{stlog}
use "binlfp4", clear 
\end{stlog}

\noindent
Or, if I am working on a computer with a different file structure, my do-file will
still run if I first create the global. For example,


\begin{stlog}
global S_cddata "c:/users/jslong/documents/datasets/"
\end{stlog}


\noindent
My globals defining the path always end with \texttt{/}. If I did
not do this, I would  load my dataset with:
 
\begin{stlog}
use "$\lbr{S}\_cddata\rbr/binlfp4", clear 
\end{stlog}

\noindent
Indeed, I could even remove the parentheses:

\begin{stlog}
use "$S\_cddata/binlfp4", clear 
\end{stlog}

\noindent
While this looks simpler, an error occurs if the  global has not been  defined
since the command is interpreted as

\begin{stlog}
use "/binlfp4", clear 
\end{stlog}

\noindent
which causes an error.

When creating {\tt cd}{\it\ project} commands there are three ways to add information
about data locations to your project environment.  The
\texttt{dataset(}\textit{path}\texttt{)} options specifies a path where datasets
are saved. For example,

\begin{stlog}
{\tt cdsave census, data(k:/txcdc/census2000/datasets)}
\end{stlog}

\noindent
This path is saved in the global \texttt{S\_cddata}. 
A web address can added with the \texttt{url(}\textit{address}\texttt{)} option.
For example,

\begin{stlog}
{\tt cdsave spost, url(http://www.indiana.edu/~jslsoc/stata/spex\_data/)}
\end{stlog}

\noindent
Since you might want more than two data locations, 
the \texttt{user(}\textit{string}\texttt{)} can be used to creates 
the  global \texttt{S\_cduser} that could hold another path.

You can add both a data path, an {\smrm URL}, and a user path at the same time.
For example,

\begin{stlog}
cdsave paths, note(Example of data paths) data(d:/data) ///
    url(http://www.indiana.edu/~jslsoc/stata/spex_data) ///
    user(m:/bssr/datadepository/) replace
\end{stlog}

\noindent
The cdsave command will automatically add an ending \texttt{/} to the path or
{\smrm URL}, but you must add it yourself with the \texttt{user()}
option since this option could be used to hold other information where you do
not want an ending slash.

After the data locations are added, a single do-file could load data from multiple
locations: 

\begin{stlog}
use "${\lbr}S\_cddata{\rbr}binlfp4", clear
\oom
{\smallskip}
use ${\lbr}S\_cdurl{\rbr}nomocc4, clear
\oom
{\smallskip}
use "${\lbr}S\_cduser{\rbr}ordwarm4", clear
\oom
{\smallskip}
use "couart4", clear
\oom
\end{stlog}

\noindent
The quotes are needed in case your path includes a space. 

You might also want different data directories for source data and derived datasets:

\begin{stlog}
cdsave paths, note(Example of data paths) ///
    data(d:/data/source) ///
    user(d:/data/derived) ///
    url(http://www.indiana.edu/~jslsoc/stata/spex_data) replace
\end{stlog}

\noindent
then:

\begin{stlog}
use "${\lbr}S\_cddata{\rbr}binlfp4", clear
\oom
save "${\lbr}S\_cduser{\rbr}binlfp5", replace
\oom
\end{stlog}

The \texttt{cdinfo} command list the globals that are currently active. For example,

\begin{stlog}
. cdinfo
  S_cdcmd:    cdpaths
  S_cdnote:   Example of data paths
  S_cdwd:     d:/active/project/work/
  S_cdauto:   
  S_cddata:   d:/data/source
  S_cdurl:    http://www.indiana.edu/~jslsoc/stata/spex_data/
  S_cduser:   d:/data/derived/
\end{stlog}

\noindent
Notice that all data locations are saved using {\tt /} 
which works in Win, Mac, and Unix. If you enter a path using \textbf{\stbackslash}
it is converted to  {\tt /}. The list of globals can also be obtained by adding
the \texttt{details} option to either \texttt{cdsave} or \texttt{cdlist}.  
\noindent

% ===========================================================================
%
\subsection{Further customization of your research environment}

The \texttt{autorun(}\textit{command}\texttt{)} 
option in \texttt{cdsave} lets you add a command that
is run at the end of the {\tt cd}{\it project} command. Since it is the last
command run, it can use any of the globals created by the command. The command
can be an internal Stata command. For example,

\begin{stlog}
cd d:/datasets
cdsave autodir, note(Automatically list datasets) ///
    data(d:/datasets) auto(dir ${S_data}*.dta) replace
\end{stlog}

\noindent
When I run \texttt{cdautodir}, the available datasets are listed:

\begin{stlog}
. cdautodir
d:/datasets
  51.1k   9/08/16  8:48  binlfp4.dta       
  30.6k   4/24/14  6:02  couart4.dta       
  18.6k  11/13/13  9:21  couexposure4.dta  
  69.4k  11/20/13 15:31  gssclass4.dta     
  75.9k   3/02/14 11:19  gsskidvalue4.dta  
  39.0k   3/12/14 13:26  partyid4.dta      
  32.0k   3/02/14 11:03  science4.dta      
 935.4k   3/04/14 13:16  svyhrs4.dta       
  12.3k   4/01/14  7:14  travel4.dta       
  10.7k   4/01/14  7:14  travel4case.dta   
 153.6k   8/11/14 15:08  wlsrank4.dta      
  70.3k   3/02/14 10:59  wlsrnk4.dta       
\end{stlog}

\noindent
Or, you could automatically load a dataset:

\begin{stlog}
cdsave autouse, data(d:/datasets) auto(use ${S_data}binlfp4, clear)
\end{stlog}

\noindent
Then,

\begin{stlog}
. cdautouse
d:/datasets
(binlfp4.dta | Mroz data on labor force participation of women | 2014-10-20)
\end{stlog}

\noindent
Or you could automatically run a do-file associated with your project that could
be arbitrarily complex:

\begin{stlog}
cdsave projectc, autorun(do projectc-setup.do)
\end{stlog}


% ===========================================================================
% 
\section{ Programming features used by the workflow package}

The \texttt{workflow} package depends on several features of Stata to allow the commands
to run regardless of your current working directory and for the globals defining
your project environment to persist after dropping macros.

\subsubsection{Dynamically creating ado files}
Non-programmers are not likely to learn how to write ado files in order to simplify
changing working directories and programmers are unlikely to want to take the
time to write these commands. Accordingly, \texttt{cdsave} use \texttt{file write}
to create the ado files with commands for changing projects. Unless you want
to customize what these commands do, there is no reason to change them. 

\subsubsection{The PERSONAL directory}

{\tt cdsave} saves the ado files in the  {\smrm PERSONAL} 
directory so that the commands will run regardless of your current working directory.
If   {\smrm PERSONAL} 
is not defined or the directory specified in   {\smrm PERSONAL} 
does not exist, \texttt{cdsave} exists with an error. 
To learn more, run \texttt{sysdir} to determine where your {\smrm PERSONAL} 
is located. If no directory is listed or it points to a directory that does not
exist, you can set the directory with \texttt{sysdir set}; 
enter \texttt{help sysdir} for details.



\subsubsection{Use of system macros}

The globals that are created by \texttt{cd}\textit{project} commands to define your project environment need to persist as long as
you are working on that project. To prevent these globals from being remove
if you run  \texttt{macro drop all}, the global names begin with \texttt{S\_cd}.
Macros that being with \texttt{S\_} can only be deleted by using
\texttt{macro drop S\_}\textit{name} or \texttt{macro drop S\_*}. Critical system macros will not be dropped.
The following globals are created by each \texttt{cd*} command:

\medskip
\begin{tabular}{ll}
\texttt{S\_cdauto} & 
User specified command executed by \texttt{cd}\textit{project}. \\

\texttt{S\_cdcmd} 
& Name of the current \texttt{cd}\textit{project} command. \\

\texttt{S\_cddata} & 
Path for using datasets. \\

\texttt{S\_cdnote} 
& Note associated with \texttt{cd}\textit{project}. \\

\texttt{S\_cdurl} & 
Web address for using datasets. \\

\texttt{S\_cduser} & 
Any string. \\

\texttt{S\_cdwd} 
& Working directory set by \texttt{cd}\textit{project}. \\

\end{tabular}
\bigskip


% ===========================================================================

\bigskip



% ===========================================================================



% ===========================================================================
% 
\section{cdsave: creating cd  commands}

The \texttt{cdsave} command creates a \texttt{cd}\textit{project}\texttt{.ado}
file that is saved in  the {\smrm PERSONAL} directory. When no options are specified, the only thing that the 
\texttt{cd}\textit{project} command does is change the working directory to the
working
directory that was active at the time  \texttt{cdsave} was run.
The syntax is:\begin{stsyntax}
cdsave 
    cd\it{project}  % \optional{cd}
    \optional{,
    \underbar{n}ote(\ststring)
    \underbar{data}path({\it data-path})
    url({\it url})
    \underbar{auto}run({\it command})    
    \underbar{det}ails
    user(\ststring)    
    replace}    
\end{stsyntax}

\noindent 
where \textit{project} is the mnemonic for your project. Commands created
by \texttt{cdsave} must begin with the letters \texttt{cd}, but you can enter
the name without the \texttt{cd} prefix. For example, 
both \texttt{cdsave myproject} and \texttt{cdsave cdmyproject} can be used.

% ===========================================================================
\subsubsection*{Options}

\hangpara
\texttt{note(}\textit{string}\texttt{)}  creates a note to describe the current
project. If no note is specified, the working directory being set is used as the
note. Notes are shown by \texttt{cdlist} to help you remember what each \texttt{cd}
command does. 

\hangpara\texttt{datapath(}\textit{data-path}\texttt{)} 
is a path where datasets are located. This
path is stored in the global {\tt S\_cddata}.  You can load a dataset from this
path with
\texttt{use \$\lbr S\_cddata}\rbr \textit{filename}

\hangpara\texttt{url(}\textit{web-address}\texttt{)} is a web address for  datasets. The
{\smrm\ URL} is stored in the global {\tt S\_cdurl}.  You can load datasets from
this location with
\texttt{use \$\lbr S\_cdurl}\rbr \textit{filename}.

\hangpara\texttt{user(}\textit{string}\texttt{)} 
can by anything. For example, you could use it as a second data directory or
a second {\smrm URL}. The
string is stored in the global {\tt S\_cduser}. If it contained a path, you could
load datasets using
\texttt{use \$\lbr S\_cduser}\rbr \textit{filename}

\hangpara
\texttt{autorun(}\textit{command}\texttt{)} is a command that will be run by
{\tt cd}{\it project}. This can be an official Stata command, the name of
an ado file you have written, or a do-file that is to be run, such as \texttt{auto(do projectstartup.do)}.

  
\hangpara\texttt{details} lists the globals that will be created when 
{\tt cd}{\it project} is run.

\hangpara\texttt{replace} overwrite \texttt{cd}\textit{project}\texttt{.ado}
if it exists.

\noindent 
Globals created by \texttt{cd}\textit{project} commands are not removed 
by {\tt clear all} or {\tt macro drop \_all}. To remove them you
must use \texttt{macro drop} \textit{name}, such as 
\texttt{macro drop S\_cddata} or \texttt{macro drop S\_cd*}.


% ===========================================================================
% 
\section{The cdlist command}

{\tt cdlist} lists the names of  ado-files in  {\smrm PERSONAL}  begin with {\tt cd}
along with the note for each project. If you click on the name of a command,
which is shown in blue, the command
is executed. The syntax is: 

\begin{stsyntax}
cdlist
    \optional{,
        \underbar{dir}ectories
        \underbar{d}etails
    }
\end{stsyntax}

\noindent
If the working directory for a command is not found, a warning is given. 

\subsubsection*{Options}

\hangpara
\texttt{details} displays the \texttt{S\_cd} globals created by each command.

\texttt{directories} displays the directory being set even if a note is defined.

\paragraph{Example}
The names of each command are listed in blue in the Results window. You can click
on them to run the command. If  the \texttt{note()} option was not used in creating
command, such as \texttt{cdbbb} below, the working directory for the project
is listed.

\begin{verbatim}
. cdlist

      cdaaa - project A
      cdbbb - d:/bbb/work/
     cddesk - Desktop
  cdproject - My project
    cdspost - SPost development
    cdstart - Default working directory
 cdworkflow - Commands for managing projects
\end{verbatim}


% ===========================================================================
% 
\section{The cdinfo commands}

This command simply lists the {\tt S\_cd*} macros associated with last
{\tt cd}{\it project} command.

\begin{stsyntax}
cdinfo
\end{stsyntax}

\noindent
There are no options.

\paragraph{Example}

\begin{verbatim}
. cdproject
d:\project\work

. cdinfo
  S_cdcmd:    cdproject
  S_cdnote:   My project
  S_cdwd:     d:/project/work/
  S_cdauto:   
  S_cddata:   d:/project/work/
  S_cdurl:    http://www.indiana.edu/~jslsoc/stata/spex_data/
  S_cduser:   
\end{verbatim}

 
% ===========================================================================
% 
\section{The cddrop command}

\texttt{cddrop} drops, deletes, or restores
\texttt{cd}\textit{project}\texttt{.ado} files in  {\smrm PERSONAL}.
\begin{stsyntax}
cddrop
    {\tt{cd}\it{project}} \textbar
    \tt{ \_all}
    \optional{,
    delete
    \underbar{res}tore
    }
\end{stsyntax}

\noindent
\texttt{cd}{\it project} is the name of the command whose ado file 
in  {\smrm PERSONAL} is modified.
By default, {\tt cddrop} {\tt cd}{\it project} renames 
{\tt cd}{\it project}{\tt.ado} to {\tt cd}{\it project}{\tt.dropped}.
After the command is renamed, it will no longer run. With the {\tt delete} option the ado file is deleted.
A file that has been
renamed can be restored with the
{\tt restore} option. For example, {\tt cddrop cdexample, restore}
renames {\tt cdexample.dropped} to {\tt cdexample.ado}. The
abbreviation {\tt \_all} will drop or restore all  {\tt cd} commands.


\subsubsection*{Options}

\hangpara
\texttt{delete} erase the ado file for the command.

\hangpara
\texttt{restore} renames \texttt{cd}\textit{project}\texttt{.dropped} to 
\texttt{cd}\textit{project}\texttt{.ado}.


% ===========================================================================
% 
\section{Conclusions}

I hope that readers  find these commands useful for developing an efficient
workflow that supports producing reproducible results. As the power of Stata
increases, I hope they will add features that make my commands obsolete!

%= STOP =======================================================================
\iffalse

% ===========================================================================
%
\section{DROP}

{\tt cdsave} creates an ado file named {\tt cd}{\it project}
that changes your working directory.
Since the ado file for the command is save in your PERSONAL directory, Stata can find the command
regardless of your current working directory.
While you For more information, run {\tt help adopath}).
The ado file can optionally be used to
annotates what the ado file does, create a global with your data directory,
and automatically run a command when the {\tt cd}{\it project} is run.

Note: The commands that are created must start with {\tt cd}. You can enter
the {\it project} with {\tt cd} at the start of the name, or the {\tt cd}
will be added automatically.


By creating multiple
{\tt cd*} commands, you can easily
have different working directories for each
project with optional data locations for each project. The command
{\tt cdlist} lists your {\tt cd}{\it project} commands along with
the the working directory it sets or optionally lists the note you
added to describe the command. The command
{\tt cdinfo} displays the {\tt S\_cd*} macros created by the command.
The command {\tt cddrop} deletes selected {\tt cd}{\it project} commands
from  {\smrm PERSONAL}.
\fi
%= RESTART ====================================================================



% ===========================================================================
% %

\begin{aboutauthors}
Scott Long is ...
\end{aboutauthors}

\endinput
