非同步輸入/輸出
您可以指定非同步 READ 及 WRITE 資料傳送陳述式,以起始非同步資料傳送。 在非同步 I/O 陳述式之後繼續執行,而不等待資料傳送完成。
以傳回給資料傳送陳述式中 ID= 變數的相同 ID= 值來執行相符 WAIT 陳述式,會偵測資料傳送陳述式是否已完成,或等待該資料傳送陳述式完成。
- 在執行非同步資料傳送陳述式期間
- 在執行相符 WAIT 陳述式之前的任何時間
- 在符合 WAIT 陳述式期間
如需在非同步資料傳送陳述式期間必須完成資料傳送的狀況相關資訊,請參閱 XL Fortran Optimization and Programming Guide中 Implementation details of XL Fortran Input/Output 。
如果在執行非同步資料傳送陳述式期間發生錯誤,則與 ID= 指定元相關聯的變數仍未定義。 IOSTAT= 指定元指出 I/O 作業的狀態,並將控制傳送至 ERR= 指定元指定的陳述式。
在執行相符 WAIT 陳述式之前,您不得參照、定義或取消定義與非同步資料傳送陳述式的 I/O 清單中出現的變數相關聯的變數或項目。
在非同步資料傳送陳述式與相符 WAIT 陳述式之間,不容許任何可配置物件及指標的取消配置及變更指標的關聯狀態。
相同裝置上多個未執行的資料傳送作業可以同時為 READ 及 WRITE。 如果省略 ID= 指定元,則 WAIT 陳述式會對指定單元的所有擱置資料傳送執行等待作業。 
如果是 直接存取,非同步 WRITE 陳述式不能同時指定相同的單位和記錄號碼,作為尚未執行相符 WAIT 陳述式的任何非同步 WRITE 陳述式。
對於 串流存取,非同步 WRITE 陳述式與未執行相符 WAIT 陳述式的任何非同步 WRITE 陳述式,不能在檔案內指定相同的單元和位置。 
在非同步資料傳送陳述式與相符 WAIT 陳述式之間執行的程式部分中,您不得參照、定義或取消定義與該資料傳送陳述式的 NUM= 指定元中 integer_variable 相關聯的變數或項目。
SUBROUTINE COMPARE(ISTART, IEND, ISIZE, A)
INTEGER, DIMENSION(ISIZE) :: A
INTEGER I, ISTART, IEND, ISIZE
DO I = ISTART, IEND
IF (A (I) /= I) THEN
PRINT *, "Expected ", I, ", got ", A(I)
END IF
END DO
END SUBROUTINE COMPARE
PROGRAM SAMPLE
INTEGER, PARAMETER :: ISIZE = 1000000
INTEGER, PARAMETER :: SECT1 = (ISIZE/2) - 1, SECT2 = ISIZE - 1
INTEGER, DIMENSION(ISIZE), STATIC :: A
INTEGER IDVAR
OPEN(10, STATUS="OLD", ACCESS="DIRECT", ASYNCH="YES", RECL=(ISIZE/2)*4)
A = 0
! Reads in the first part of the array.
READ(10, REC=1) A(1:SECT1)
! Starts asynchronous read of the second part of the array.
READ(10,ID=IDVAR, REC=2) A(SECT1+1:SECT2)
! While the second asynchronous read is being performed,
! do some processing here.
CALL COMPARE(1, SECT1, ISIZE, A)
WAIT(ID=IDVAR)
CALL COMPARE(SECT1+1, SECT2, ISIZE, A)
END