如果對數值、可輸入欄位指定此欄位層次的關鍵字,則可讓您的程式識別顯示畫面上的欄位何時為空白與何時為零。在任一情況下,您的程式均可辨識零。
當顯示畫面上的欄位為空白時,BLANKS 關鍵字會啟用指定的回應指示器。輸入作業之後,您的程式可測試此指示器,來判定顯示畫面上的欄位 (其程式值為零) 實際上為空白。欄位可包含全部空白 (十六進位 40) 或全部空值 (十六進位 00)。但仍會以空白形式顯示給顯示站使用者。如果停用該指示器,則顯示畫面上的欄位為零。
此關鍵字對字元欄位也有效,但一般無需指定。您的程式可直接測試字元欄位,來決定顯示畫面上的內容。
如需在用於 System/36™ 環境的檔案中指定 BLANKS 關鍵字時的特殊注意事項,請參閱顯示檔的 System/36 環境注意事項。
BLANKS(response-indicator ['text'])
與 BLANKS 關鍵字相關聯的回應指示器在記錄中應是唯一的。也就是說,不應將相同的回應指示器用於其他關鍵字 (如 CHANGE、DUP 或 VLDCMDKEY)、功能鍵的任何關鍵字,或同一記錄中其他欄位上的 BLANKS 關鍵字。這是因為如果在輸入作業時欄位包含非空白字元,i5/OS® 作業系統總是會停用回應指示器。i5/OS 作業系統這樣做是為了確保當欄位顯示為全部空白時,啟用回應指示器;當不是顯示為全部空白時,停用回應指示器。
在程式編譯時所產生的清單包含選用性文字,用於說明指示器的用途。此文字在檔案或程式中除了作為註解之外,並無其他功能。需有單引號。如果您在單引號之間指定的字元多於 50 個,則在程式清單中會將文字截斷為 50 個字元。
選項指示器對此關鍵字無效。
下列範例顯示如何指定 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 關鍵字不會啟用指定的回應指示器,而是會限制其功能。下列三個範例說明這些情況。
在下列範例中,如果在顯示時輸入/輸出欄位包含全部空白 (十六進位 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。
範例 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 作業的空白或空值,也不會將其重新啟用。)
在下列範例中,初次顯示之後,不會在後續的輸入/輸出作業時再顯示輸入/輸出欄位 (即使輸入緩衝區中的欄位仍包含全部空白或全部空值,亦是如此)。
|...+....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。