例如,語句“l(fā)ar1 p##pointerinput”在一個函數(fc)中是無效的(圖. 01)。當輸入一個命令或者試圖保存一個塊時將會得到如下錯誤信息:
30:9: compilation of the network 1 is not possible, because it still contains invalid statements.
然而,同樣的語句在一個功能塊(fb)中是有效的。此錯誤信息只是次要信息,如果語句在保存時被標記成紅色此信息就總是被顯示出來。當將any指針載入到地址寄存器ar1和ar2 時,必須注意以下功能塊和函數:
在fb情況下,傳輸的any指針被保存到為其分配的情景數據塊中。
在fc情況下,傳輸的any指針被保存到調用的本地數據棧中。
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變量(本地數據堆棧)。
在fb中也能訪問in, out, in-out和stat變量。
圖.03給出了在fc中如何訪問一個temp變量的樣例。
圖. 03
圖.04 給出了一個在fc中any變量(in變量)的數據是如何傳送的 樣例。數據從地址寄存器ar1中傳送到臨時變量以作進一步的處理。例如,in變量“input”(類型 :any)的地址首先載入到accu1并從那里再載入到ar1寄存器。基本地址能從地址寄存器ar1傳送到臨時變量“bit_adr”(類型:dword)。
圖. 04