cfgs/marcdef配置文件还定义了许多字段、字段指示符 、子字段的缺省值。因为这些也是MARC格式的特性,而凡是MARC格式的特性,都归入marcdef配置文件来定义。
下图是鼠标右键点CNMARC格式001字段内容后出现的popup菜单:
图中popup菜单的第一行,出现了该字段内容的缺省值。
cfgs/marcdef中有关定义的片断如下:
...
<Field name="001">
<Property>
<Label xml:lang="en">Record Identifier</Label>
<Label xml:lang='zh'>记录标识号</Label>
<DefaultValue>tt%year%%IncSeed:种子,001,6%</DefaultValue>
</Property>
...
从中看出,XML元素<DefaultValue>定义了一个宏,也就是包含百分号的奇怪字符串。这个宏在每次实际需要时才代换为具体字符串,它的值是根据某些前提条件而可变的。
例如,这里引用的宏%year%,是4字符的当前年份;而%IncSeed:种子,001,6%是一个宏函数,表示将从一个名叫“种子”的种子库中,提取名为“001”的一个记录值,每当提取的时候自动增量一次;并且确保将种子值字符串扩展为6字符。
也就是说,利用一次这个菜单命令插入缺省值,假设本次为“tt2006000045”,那么下次再使用,就是“tt2006000046”了。
不过每次调用菜单的时候,如果并不真正使用这个命令,比方说菜单出现后用鼠标左键在其他任意一个位置点击以便放弃菜单,那么上述IncSeed宏函数并不对种子值增量。而是一定要在使用了命令时才增量。这保证了可以随意使用菜单观察这个值,而不必担忧不必要的增量问题。