顯示檔的 EDTWRD(編輯字組)關鍵字

如果您無法藉由使用 EDTCDE 關鍵字來取得所要的編輯,就可以使用此欄位層次關鍵字,來指定編輯字組。

此關鍵字的格式為:
EDTWRD('edit-word')

編輯字組可指定欄位值的顯示形式,並可藉由直接插入字元(如小數點、逗點、浮動貨幣符號、固定貨幣符號以及信用餘額指示器等),使資料更加清楚。 編輯字組還可用於抑制前導零,及提供星號填入樣式保護。

如果先前在資料庫檔中定義的欄位已指定 EDTWRD,您無需在顯示檔中,為該欄位指定 EDTWRD。 您可以在位置 29 中指定 R,以參照先前定義的欄位。 顯示檔中會包括為參照欄位指定的編輯設定。不過,如果您同時為顯示檔欄位指定了長度、 資料類型或小數位數,顯示檔就不會包括對參照欄位指定的編輯設定, 並且您必須在顯示檔中重新指定編輯設定。

編輯字組的各部分

編輯字組由三部分組成:主體、狀態及擴充。圖 1 顯示編輯字組的三個部分。

圖 1. 編輯字組的三部分
編輯字組的三部分:主體、狀態及擴充。

主體是從資料欄位傳送至輸出記錄的數字空間。主體從編輯字組的最左側位置開始。 它包含的空白數(針對零或星號加 1)等於要編輯之資料欄位的數字位數。 如果編輯字組中的第一個字元是零或星號,則它包含的空白數可能等於資料欄位中數字的位數。 主體結束於最右邊,可由數字取代的字元。

狀態位置顯示資料欄位的符號(+ 或 -)。狀態始終保持為主體右側的 CR(貸方)或 -(減號)符號。 當欄位為負值時,才會列印這兩個符號。沒有 CR 或 - 符號的編輯字組,不會有狀態位置。

編輯作業不會變更擴充位置。擴充部分是從狀態(如果未指定狀態,則為主體)右側的第一個位置開始,並結束於編輯字組最右側的字元。

形成編輯字組的主體

下列字元在編輯字組的主體中使用時,具有特殊的意義:

空白
空白會由資料欄位相對應位置的字元取代。一個空白位置稱為一個位數。
&符號
&符號會在已編輯欄位中顯示空白。&符號本身不會顯示出來。請注意,針對輸入/輸出欄位 的空白之間的編輯字組指定&符號時,會導致資料不正確。 這是因為在僅接受數值欄位中的內含空白,會轉換為零。
零會停止零抑制。請將其置於最右側,要停止零抑制的位置。零會由資料欄位相對應位置的字元取代,除非該字元是零。 出現在資料中「停止零抑制 (stop-zero-suppression)」字元右側的所有零,都會顯示出來。 「停止零抑制」字元會視為一個位數;不過,當它是第一個字元時,可能不代表位數。 至少會抑制一個前導零,除非它是 EDTWRD 的第一個字元。因此不會將其算作一個位數, 因為空白數等於欄位中的數字位數。每個被抑制的零,都會以一個空白取代。 星號會取代帶有星號的零(星號保護)。星號會置於最右側,要停止零抑制的位置。 每個被抑制的零,都會以一個星號取代。
註: 如果您的顯示檔是在版本 2 版次 1 之前建立,「編輯字組 (EDTWRD)」 關鍵字在重新編譯後,可能會產生不同的輸出。
星號
零之前的星號會解譯為代表星號保護,在此情況下,會將零作為常數列印。 在「停止零抑制」字元右側的任何星號或零,都是常數。
貨幣符號

如果緊接在零抑制碼左側放置一個貨幣符號,則會在第一個有效位數的左側位置, 插入貨幣符號。這種使用方式稱為浮動貨幣符號

如果在編輯字組的最左側放置貨幣符號,該貨幣符號會固定, 並且每次都會列印在相同的位置。這種使用方式稱為固定貨幣符號

貨幣符號不會視為數字取代位置。此符號必須對應於系統值 QCURSYM。

小數點及逗點

除非小數點及逗點位於第一個有效位數的左側,否則列印時, 會處於編輯字組中,它們的編碼所在的相同相對位置。在此情況下,它們會留空或以星號取代。

如果所有其他字元都位於編輯字組中有效位數的右側,則會列印它們。 如果它們位於編輯字組中高順序有效位數的左側,則它們會留空, 或如果有使用星號保護時,會以星號取代。

如果要在最左側位置列印常數,則常數的前面必須有一個零,且欄位長度增加 1。

形成編輯字組的狀態

下列字元在編輯字組的狀態中使用時,具有特殊的意義:

&符號
會在已編輯之輸出欄位中,產生空白。&符號不能置於已編輯的輸出欄位中。
CR 或減號
如果已編輯之輸出欄位中的符號是加號 (+),則這些位置會留空。 如果已編輯之輸出欄位中的符號是減號 (-),則這些位置會保持原狀。

形成編輯字組的擴充部分

編輯字組的擴充部分字元一律是寫入的。 擴充部分不能包含空白。如果在已編輯的輸出欄位中需要空白,請在編輯字組的主體中指定&符號。

指定有效的編輯字組

使用下列規則,可以指定有效的編輯字組:

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

圖 2 顯示範例編輯字組, 其中包含欄位的程式值與欄位的顯示值(如已編輯狀態)。

圖 2. 範例編輯字組
編輯字組的範例圖例。

範例

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

|...+....1....+....2....+....3....+....4....+....5....+....6....+....7....+....8
00020A            FIELDA         7  2   5  2EDTWRD('    $0. ')
     A