包含當前裝置上最後一次讀取的狀態。
$za
$za
包含當前裝置上最後一次讀取的狀態。
不能使用set
命令修改此特殊變數。嘗試這樣做會導致錯誤。
$za
被實現為一系列位標誌,每個位表示一條特定的資訊。下表顯示了可能的值、它們的含義,以及如何使用模(#
)和整數除(\
)運算子測試它們:位測試
含義0$za#2
已到達,無論是否啟用中斷。
1$za\2#2
讀取超時。
2$za\4#2
i/o錯誤。
8$za\256#2
caché檢測到無效的轉義序列。
9$za\512#2
硬體檢測到奇偶校驗或成幀錯誤。
11$za\2048#2
程序已與其主裝置斷開連線。
12$za\4096#2
對於com埠:cts(清除傳送)。從數據機傳送到其計算機的訊號,表示傳輸可以進行。對於tcp裝置:裝置在伺服器模式下執行。
13$za\8192#2
對於com埠:dsr(資料集就緒)。從數據機傳送到其計算機的訊號,表示數據機已準備好執行。對於tcp裝置:裝置當前處於與遠端主機通話的已連線狀態。
14$za\16384#2
如果為真,則設定振鈴。
15$za\32768#2
載波檢測設定為真。
16$za\65536#2
ce_break com埠錯誤狀態。
17$za\131072#2
ce_frame com埠錯誤狀態。
18$za\262144#2
ce_ioe com埠錯誤狀態。
19$za\524288#2
ce_overrun com埠錯誤狀態。
20$za\1048576#2
ce_rxparity com埠錯誤狀態。
21$za\2097152#2
ce_txfull com埠錯誤狀態。
22$za\4194304#2
txhold通訊埠錯誤狀態。在clearcommerror()
返回的錯誤掩碼中,如果下列任一欄位為真,則設定為:fctshold、fdsrhold、frlsdhold、fxoffhold、fxoffsent。
24 & 25 |$za\16777216#4|
caché請求dtr(資料終端就緒)設定:0 = dtr關閉。 1 = dtr =開。 2 = dtr握手。設定為(1)時,表示已準備好傳送和接收資料。
儘管$za
顯示的許多條件都是錯誤,但它們不會通過捕獲$ztrap
來中斷程式的流程。 (具有中斷功能的會陷阱到
$ztrap
。)與這些錯誤有關的程式在每次讀取後必須檢查$za
。
com埠使用位12至15、24和25報告數據機控制引腳的狀態。無論埠的caché數據機控制檢查是開啟還是關閉,都可以執行此操作。使用者可以通過設定open
或use
命令portstate
引數(具體為位元組8)來啟用或禁用com埠的$za
錯誤報告。如果啟用了錯誤報告,則埠錯誤狀態將在位16到22中報告。
可以使用%system.process
類的disconnecterr()
方法來檢測當前程序的數據機斷開連線。可以通過設定config.miscellaneous
類的disconnecterr
屬性來建立系統範圍的預設行為。
對於磁帶i / o,$za
中的位欄位指示錯誤和特殊情況。在每個引用磁帶裝置的命令之後,caché更新$za
。
下表顯示了磁帶i/o的$za
位的含義。請注意trap列。字母y表示錯誤。如果設定了
$ztrap
變數,則caché會發出相關的$ztrap
錯誤**。位值
陷阱含義注意01
y邏輯錯誤(讀寫混合),用於在讀取和寫入之間切換,或者關閉然後開啟裝置,或者發出前進空格、退格鍵或倒帶命令。24
n寫保護始終反映open
或use
唯讀引數的狀態。此位不反映磁帶的物理寫保護狀態(寫環或寫鎖定),因為許多版本的unix®在嘗試實際寫入磁帶之前不會通知磁帶寫保護。如果嘗試開啟不帶唯讀引數的寫保護9磁軌磁帶,則caché會設定此位並以唯讀方式開啟磁帶。未出現錯誤。38
y錯誤摘要錯誤摘要是導致caché錯誤的所有條件(在trap下標記為y的所有條件)的邏輯或。532
n磁帶的開始[bot]在unix®系統上,該位在倒帶時設定,並在開啟磁帶時清除。664
non line
7128
y控制器或驅動器錯誤。
101024
n磁帶結尾[eot]在大多數unix®平台上不支援。
1416384
ytape markcaché在遇到read,read block,forward space或backspace上的磁帶標記時將tape mark位置1。這會將「錯誤摘要」位置1,並在「讀取」,「讀取標籤」和「讀取塊」上將陷阱陷阱為$ztrap
。
1532768
y磁帶未準備好
一些位指示錯誤條件,而另一些位指示不一定產生錯誤的條件。為了監視這些非錯誤情況,程式必須在每次磁帶操作後測試$za
的相應位。例如,如果程式可能寫在磁帶末尾之外,則它必須檢查位10(磁帶末尾)。
要測試某個位,請將$za
除以表中該位列出的值,然後執行模2運算。例如,以下命令檢查是否設定了位14(磁帶標記):
其中16384等於2等於14的冪,而#2表示模2運算。由於任何等於0的冪等於1,因此無需除數即可檢查位0(邏輯錯誤)。例如:use 47 if $za\16384#2
use 47 goto logerr:$za#2
第二十四章 Cach 設計模式 訪問者模式
思考 表示乙個作用域某物件結構中的各元素的操作。它使你可以在不改變各元素的類的前提下定義作用與這些元素的新操作。訪問者模式目的是要把處理從資料結構分離出來。很多系統可以按照演算法和資料結構分開,如果這樣的系統有比較穩定的資料結構,又易於變化的演算法的話使用訪問者模式就是比較合適的。因為訪問者模式使得...
第二十四章 職責鏈模式
職責鏈模式 chain of responsibility 使多個物件都有機會處理請求,從而避免請求的傳送者和接收者之間的耦合關係。將這個物件連成一條鏈,並沿著這條鏈傳遞該請求,直到有乙個物件處理它為止。注意 乙個請求極有可能到了鏈末都得不到處理,或者因為沒有正確配置而得不到處理。created b...
第二十二章 Cach 變數大全 X 變數
包含游標的當前水平位置。x x包含游標的當前水平位置。將字元寫入裝置時,cach 會更新 x以反映水平游標位置。輸出的每個可列印字元將x加1 回車符 as cii13 或換 頁符 asci i12 將 x加1。回車符 ascii 13 或換頁符 ascii 12 將 x加1。回車 符 a scii ...