WAIT (Fortran 2003)
用途
WAIT 陳述式可用來等待非同步資料傳送完成,或用來偵測非同步資料傳送陳述式的完成狀態。
語法
- 等待清單
- 是必須包含一個 ID= 指定元及最多一個其他有效指定元的清單。 有效的指定元為:
- 非同步 =char_expr (Fortran 2003)
- 容許繼續執行,而不等待資料傳送完成。 char_expr 是純量字元表示式,必須評估為 YES 或 NO。
如果出現 DONE= 指定元,也必須出現 ID= 指定元。 如果出現 ID= 指定元,則會執行所指定資料傳送作業的等待作業。 如果沒有 ID= 指定元,則會執行指定裝置之所有擱置資料傳送的等待作業。 執行檔案定位陳述式會對指定裝置的所有擱置中非同步資料傳送作業執行等待作業。
- DONE= logical_variable
- 指定非同步 I/O 陳述式是否完成。 如果 DONE= 指定元存在,當非同步 I/O 完成時, logical_variable 會設為 true ,如果未完成,則設為 false。 如果回覆值為 false ,則必須執行一個以上 WAIT 陳述式,直到 DONE= 指定元不存在或其回覆值為 true 為止。 沒有 DONE= 指定元的 WAIT 陳述式,或將 logical_variable 值設為 true 的 WAIT 陳述式,是與相同 ID= 值所識別的資料傳送陳述式相符的 WAIT 陳述式。
- END= stmt_label
- 是指定陳述式標籤的檔案結尾指定元,如果發現 endfile 記錄且未發生任何錯誤,則程式會在該標籤上繼續執行。 如果外部檔案位於 endfile 記錄之後,則 IOSTAT= 指定元 (如果有的話) 會被指派負值,而 NUM= 指定元 (如果有的話) 會被指派整數值。 編碼 END= 指定元會抑制檔案結尾的錯誤訊息。 此指定元可以指定給循序或直接存取所連接的裝置。
針對非同步資料傳送陳述式的 END= 指定元所定義的 stmt_label 不必與針對相符 WAIT 陳述式的 END= 指定元所定義的 stmt_label 相同。
- 錯誤 = stmt_label
- 是錯誤指定元,它在相同的範圍設定單元中指定可執行陳述式的陳述式標籤,發生錯誤時控制將傳送至該陳述式標籤。 編碼 ERR= 指定元會抑制錯誤訊息。
針對非同步資料傳送陳述式的 ERR= 指定元所定義的 stmt_label 不必與針對相符 WAIT 陳述式的 ERR= 指定元所定義的 stmt_label 相同。
- ID= integer_expr
- 指出用來識別此 WAIT 陳述式的資料傳送。 integer_expr 是 INTEGER(4) 類型的整數表示式或預設整數。 為了起始非同步資料傳送,在 READ 或 WRITE 陳述式上使用 ID= 指定元。
- IOMSG= iomsg_variable
- 是輸入/輸出狀態指定元,指定輸入/輸出作業所傳回的訊息。 iomsg_variable 是純量預設字元變數。 它不能是與使用相關的非指標受保護變數。 當包含此指定元的輸入/輸出陳述式完成執行時, iomsg_variable 定義如下:
- 如果發生錯誤、檔案結尾或記錄結尾狀況,則會指派說明訊息給變數,如同指派一樣。
- 如果未發生這類狀況,則變數的值不會變更。
- IOSTAT = ios
是輸入/輸出狀態指定元,指定輸入/輸出作業的狀態。 ios 是整數變數。 當包含此指定元的輸入/輸出陳述式完成執行時, ios 定義為:
- 如果沒有發生錯誤狀況,則為零值。
- 如果發生錯誤,則為正值。
- 如果遇到檔案結尾狀況,且未發生任何錯誤,則為負值。
針對非同步資料傳送陳述式的 IOSTAT= 指定元所定義的 ios 不需要與針對相符 WAIT 陳述式的 IOSTAT= 指定元所定義的 ios 相同。
規則
相符的 WAIT 陳述式必須與對應的非同步資料傳送陳述式位於相同的範圍設定單元中。 在該範圍設定單元的實例內,在執行相符 WAIT 陳述式之前,程式不得執行 RETURN、 END或 STOP 陳述式。
