顯示檔的 BLANKS (空白) 關鍵字

如果對數值、可輸入欄位指定此欄位層次的關鍵字,則可讓您的程式識別顯示畫面上的欄位何時為空白與何時為零。在任一情況下,您的程式均可辨識零。

當顯示畫面上的欄位為空白時,BLANKS 關鍵字會啟用指定的回應指示器。輸入作業之後,您的程式可測試此指示器,來判定顯示畫面上的欄位 (其程式值為零) 實際上為空白。欄位可包含全部空白 (十六進位 40) 或全部空值 (十六進位 00)。但仍會以空白形式顯示給顯示站使用者。如果停用該指示器,則顯示畫面上的欄位為零。

此關鍵字對字元欄位也有效,但一般無需指定。您的程式可直接測試字元欄位,來決定顯示畫面上的內容。

如需在用於 System/36™ 環境的檔案中指定 BLANKS 關鍵字時的特殊注意事項,請參閱顯示檔的 System/36 環境注意事項

此關鍵字的格式為:
BLANKS(response-indicator ['text'])

與 BLANKS 關鍵字相關聯的回應指示器在記錄中應是唯一的。也就是說,不應將相同的回應指示器用於其他關鍵字 (如 CHANGE、DUP 或 VLDCMDKEY)、功能鍵的任何關鍵字,或同一記錄中其他欄位上的 BLANKS 關鍵字。這是因為如果在輸入作業時欄位包含非空白字元,i5/OS® 作業系統總是會停用回應指示器。i5/OS 作業系統這樣做是為了確保當欄位顯示為全部空白時,啟用回應指示器;當不是顯示為全部空白時,停用回應指示器。

在程式編譯時所產生的清單包含選用性文字,用於說明指示器的用途。此文字在檔案或程式中除了作為註解之外,並無其他功能。需有單引號。如果您在單引號之間指定的字元多於 50 個,則在程式清單中會將文字截斷為 50 個字元。

選項指示器對此關鍵字無效。

範例 1:指定 BLANKS 關鍵字

下列範例顯示如何指定 BLANKS 關鍵字。

註: 本主題中的範例 2、3 及 4 顯示某些限制 BLANKS 關鍵字的情況。
|...+....1....+....2....+....3....+....4....+....5....+....6....+....7....+....8
00030A            QTY1           5Y 0B  5  2BLANKS(01 'ON=QTY1 IS ALL BLANKS')
00040A            QTY2           5Y 0B  6  2BLANKS(02 'ON=QTY2 IS ALL BLANKS')
00050A            QTY3           5Y 0B  7  2BLANKS(03 'ON=QTY3 IS ALL BLANKS')
     A

畫面上顯示三個數值欄位 (QTY1、QTY2 及 QTY3)。如果顯示站使用者在欄位中鍵入值,並按 Enter 鍵,則會發生下列狀況:

鍵入欄位的值 傳遞至程式的值 回應指示器狀況
100 00100 停用
0 00000 停用
空白 00000 啟用
註: 如果顯示站使用者按 Field Exit 鍵或 Erase Input 鍵,則欄位會顯示空白,因為其包含空值。

限制 BLANKS 關鍵字

在某些情況中,BLANKS 關鍵字不會啟用指定的回應指示器,而是會限制其功能。下列三個範例說明這些情況。

註: 其他情況會發生在欄位為字元欄位的時候,但那時無需使用 BLANKS 關鍵字。

範例 2

在下列範例中,如果在顯示時輸入/輸出欄位包含全部空白 (十六進位 40) 或全部空值 (十六進位 00),且還指定了某些影響欄位顯示的關鍵字,則不會啟用回應指示器。

|...+....1....+....2....+....3....+....4....+....5....+....6....+....7....+....8
00010A* When OVRATR is specified
00020A          R REC1                      PUTOVR
00030A            FLD1          10  0B  2  2BLANKS(50) OVRATR
00040A  78                                  DSPATR(HI)
00050A* When PUTRETAIN is specified
00060A          R REC2                      PUTRETAIN OVERLAY
00070A            FLD2          10  0B  2  2BLANKS(50)
00080A          R REC3                      OVERLAY
00090A            FLD3          10  0B  2  2BLANKS(50)
     A                                      PUTRETAIN
     A

對於此範例中的所有記錄格式,會在程式第一次讀取欄位時按預期啟用回應指示器 50 (如果顯示畫面上欄位顯示空白的話)。不過,經過後續顯示之後,僅當顯示站使用者重新將欄位變為空白時,才會重新啟用回應指示器 50。如果工作站使用者不重新將欄位變為空白,則會停用回應指示器 50。

範例 3

範例 2 及 4 的情況是先顯示欄位然後將之刪除。

在下列範例中,當可輸入欄位與另一個欄位重疊,進而導致刪除第一個欄位時,不會啟用回應指示器 (即使輸入緩衝區中的欄位仍包含全部空白或全部空值,亦是如此)。

|...+....1....+....2....+....3....+....4....+....5....+....6....+....7....+....8
00010A          R REC4                      OVERLAY
00020A  15        FLDA          10  0B  2  2
00030A            FLD4          10  0B  2  5BLANKS(50)
     A

在此範例中,如果在最先顯示 REC4 時停用選項指示器 15,則會顯示 FLD4,但不會顯示 FLDA。讀取 REC4 時,如果 FLD4 為空白,則會啟用回應指示器 50。如果再次顯示 REC4 時啟用選項指示器 15,則 FLDA 會重疊 FLD4,並將之刪除。然後在讀取 REC4 時,停用回應指示器 50。(發生此情況的原因是 i5/OS 作業系統在顯示記錄格式時將其停用,而針對未在顯示畫面上的欄位,即使欄位包含前次 I/O 作業的空白或空值,也不會將其重新啟用。)

範例 4

在下列範例中,初次顯示之後,不會在後續的輸入/輸出作業時再顯示輸入/輸出欄位 (即使輸入緩衝區中的欄位仍包含全部空白或全部空值,亦是如此)。

|...+....1....+....2....+....3....+....4....+....5....+....6....+....7....+....8
00010A          R REC5                      ERASEINP OVERLAY
00020A  20        FLD5          10  0B  2  2BLANKS(50)
00030A*
00040A          R REC6                      ERASEINP  OVERLAY  MDTOFF
00050A  20        FLD6          10  0B  2  2BLANKS(50)  DSPATR(MDT)
     A

在此範例中,如果在最先顯示 REC5 或 REC6 時啟用選項指示器 20,則會顯示 FLD5 或 FLD6。讀取 REC5 或 REC6 時,如果 FLD5 或 FLD6 為空白,則會啟用回應指示器 50。不過,如果第二次顯示時停用選項指示器 20,則不會顯示 FLD5 或 FLD6。