Why is there file locking and how does it work?

In CCSM4, there are several different env xml files. These include env_case.xml, env_conf.xml, env_mach_pes.xml, env_build.xml, and env_run.xml. These are organized so variables can be locked during different phases of the case configuration, build, and run. Locking variables is a feature of CCSM that prevents users from changing variables after they have been resolved (used) in other parts of the scripts system. The variables in env_case are locked when create_newcase is called. The env_conf and env_mach_pes variables are locked when configure is called. The env_build variables are locked when CCSM is built, and the env_run variables are never locked and can be changed anytime. In addition, the Macros file is locked as part of the build step. The $CASEROOT/LockedFiles directory saves copies of the xml files to facilitate the locking feature. In summary