例如,語句“l(fā)ar1 p##pointerinput”在一個函數(shù)(fc)中是無效的(圖. 01)。當(dāng)輸入一個命令或者試圖保存一個塊時將會得到如下錯誤信息:
30:9: compilation of the network 1 is not possible, because it still contains invalid statements.
然而,同樣的語句在一個功能塊(fb)中是有效的。此錯誤信息只是次要信息,如果語句在保存時被標(biāo)記成紅色此信息就總是被顯示出來。當(dāng)將any指針載入到地址寄存器ar1和ar2 時,必須注意以下功能塊和函數(shù):
在fb情況下,傳輸?shù)腶ny指針被保存到為其分配的情景數(shù)據(jù)塊中。
在fc情況下,傳輸?shù)腶ny指針被保存到調(diào)用的本地數(shù)據(jù)棧中。
any指針樣例程序
圖. 01
對于fb語句“l(fā)ar1 p##pointerinput”是有效的。
圖. 02
在fc中,地址必須首先通過語句“l(fā) p#pointerinput”載入到accu1中并從那里通過語句lar1載入到ar1寄存器中。 fb和fc之間的不同之處是語句“l(fā)ar1 p##variablename”
在fc中只能訪問temp變量(本地數(shù)據(jù)堆棧)。
在fb中也能訪問in, out, in-out和stat變量。
圖.03給出了在fc中如何訪問一個temp變量的樣例。
圖. 03
圖.04 給出了一個在fc中any變量(in變量)的數(shù)據(jù)是如何傳送的 樣例。數(shù)據(jù)從地址寄存器ar1中傳送到臨時變量以作進(jìn)一步的處理。例如,in變量“input”(類型 :any)的地址首先載入到accu1并從那里再載入到ar1寄存器?;镜刂纺軓牡刂芳拇嫫鱝r1傳送到臨時變量“bit_adr”(類型:dword)。
圖. 04