3.5.2 暂存块变量和头段变量
同普通命令和内嵌函数一样,SAC宏文件可以涉及SAC头段变量和暂存块变量的赋值并将它们代入执行命令。
1.暂存块变量
暂存块(Blackboard)是SAC2000设计的一个重要功能,方便用户临时存取某些信息。它由暂存块名称及其值组成。命令SETBB和EVALUATE可以创建一个暂存块,命令GETBB可以得到所建暂存块变量的值。在变量名前冠以百分号(%),用户就可以通过其他命令置换暂存块变量的值,如下所示:
u:SETBB C1 2.45
u:SETBB C2 4.94
u:BANDPASS CORNERS%C1%C2
现在还以最初的例子为例,看看在宏中如何使用暂存块变量。假定只有第一个值是变量,而其他值可以由第一个值计算得到,如下所示:
$KEYS FILES VALUE1
$DEFAULT VALUE1 4
READ$FILES
EVALUATE TO VALUE2$VALUE1*2
EVALUATE TO VALUE3%VALUE2+1
MUL$VALUE1%VALUE2%VALUE3
FFT
BG SGF
PSP AM
接下来,如果第一个值不等于缺省值,在执行该宏时就要输入它:
u:MACRO MYSTUFF VALUE1 6 FILES ABC DEF XYZ
2.头段变量
在指定文件(用文件名或数值表示的文件号)和要赋值的变量后,SAC命令亦可直接对头段变量赋值和替换,处理时用和号(“&”)引用文件,并在文件和变量之间用逗号分开,如下所示:
u:READ ABC
u:EVALUATE TO TEMP1&ABC,A+10
u:EVALUATE TO TEMP2&1,DEPMAX*2
u:CHNHDR T5%TEMP1
u:CHNHDR USER0%TEMP2
上例中,读入一个文件并使用文件本身的头段变量计算出几个临时中间变量。第一个头段用文件名进行引用,第二个头段用文件号进行引用。然后,使用暂存块变量定义新的头段变量。
3.变量名称连接
宏参数、暂存块变量或头段变量前后可以添加另外的字符串,在前面添加只需在字符串后粘连参数或变量,而在其后添加时,必须在参数或变量之后、字符串之前加上原分隔符($、%或&)。以下几个例子清楚地说明了变量名称是如何连接的:
(1)假定宏参数STATION的值是“ABC”,则“$STATION$.Z”将其值变成“ABC.Z”。
(2)假定暂存块变量TEMP的值是“ABC”,则“XYZ%TEMP”将其值变成“XYZABC”,而“%TEMP%XYZ”则将其值变成“ABCXYZ”。
(3)假定文件Z头段变量KA的值是“IPU0”,则“(&Z,KA&)”将其值变成为“(IPU0)”。
4.转义符
有时候,命令中必须使用“$”或“%”,为了防止SAC2000把它们作为输入的宏参数或暂存块变量处理,可以通过在这类特殊符号前冠以另外的特殊符号(称为转义符)“@”实现。需要按此方法处理的特殊符号主要有:
$:宏参数扩展字符。
%:暂存块变量扩展字符。
&:头段变量扩展字符。
@:转义符本身。
(:内嵌函数开始符。
):内嵌函数终止符。
关于更多的内嵌函数分隔符参见下节。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。