運用 PC-DMIS 的報告語言,可透過 Variable() 函式在報告中顯示變數值。該函式的語法爲:
Variable(<varname>, [<可選命令 id 或 uid>])
第一個參數強制型轉爲 string 型,表示變數名稱。第二個可選參數可用於計算與另一命令相關的變數的值。
例如,假定此代碼位於測量常式中:
ASSIGN/V1=2
F1=FEAT/CIRCLE...
ASSIGN/V1=F1.X
COMMENT/OPER,「一些註解文字」
對本例而言,假定註解有唯一的 ID 或「UID」245。
現在,請看採用了以上代碼的下例:
=VARIABLE("V1") - 若報告中沒有其他陳述式將值設爲 V1,這個值可以是 0 或 2,或者與特徵 F1 的質心 X 測量值相同。它完全取決於在計算報告運算式時已執行了哪些命令,報告中又有哪些命令目前正在進行處理。
=VARIABLE("V1", "F1") - 若測量常式中祇要一個名稱爲 "F1" 的特徵,那麽該運算式的結果應爲 2,因爲 V1 已直接指派給了特徵 F1 上方的 2。
=VARIABLE("V1", 245) - 此種情況使用的是 UID;因此報告上這個運算式的值應與 F1.X 相同。
GridControlObject 的單個儲存格不能從測量常式獲取變數的值。在大部份情況中,需採用文字物件。
通常情況下,不能在報告的檔案標頭中顯示變數值,因爲 PC-DMIS 會在測量常式中執行陳述式前計算檔案標頭的值。因此,如果檔案標頭試圖引用尚未建立的變數,PC-DMIS 將顯示 0 值。然而,確實有一些選項可用於從測量常式獲取標頭的資訊:
選項 1 - 使用追蹤欄位代替變數
在測量常式中不使用變數,而使用追蹤欄位擷取資訊,然後在標頭標籤範本的 GridControlObject 中的目標儲存格中,使用 =TRACEFIELD() 函式來進行引用。追蹤欄位強制範本根據新的資訊重新評估報告,從而使得追蹤欄位得以顯示。
優/缺點
優點 - 設定相對簡單。
缺點 - 您實際上使用的並非變數。而是追蹤欄位,這存在其本身的限制。
選項 2 - 嵌入報告範本
有時在定義 ASSIGN 陳述式後,再嵌入報告範本到測量常式中,然後將變數值作爲參數傳送給標籤範本。視需要新增另外的列或儲存格,在新增的儲存格的上方,爲要顯示的每個變數新增一個 Text 物件並調整大小。最後,透過 REPORT/TEMPLATE 命令的參數修改 Text 屬性,類似於:
ASSIGN/V1=「要傳遞的字串值」
CS1=REPORT/TEMPLATE,FILENAME=TEXTONLY.RTP,AUTOPRINT=NO,Section=-1
PARAM/TEXT1.TEXT=V1
PARAM/=
ENDREPORT/
由於標籤範本合併成爲了報告範本,因此可採用上述方式,透過引用報告範本修改標籤範本上某些特定的參數。
優/缺點
優點 - 現在變數將顯示在最終報告的標頭中。
缺點 - 設定略顯繁瑣,因爲除了要編寫代碼將報告範本嵌入測量常式,還需新增 Text 物件到標籤範本。然而,這種方法的主要缺點是報告會一個接一個地產生兩次(一次來自 PC-DMIS 的預設功能,另一次來自嵌入的 REPORT / TEMPLATE 代碼塊)。
選項 3 - 將標頭資訊直接放入報告
不使用引用標頭外部標籤範本的報告範本(如 File_Header.lbl),而是直接在報告範本中從標頭的標籤範本重建 GridControlObject。視需要新增另外的列或儲存格,在新增的儲存格的上方,爲要顯示的每個變數新增一個 Text 物件並調整大小。然後對每個 Text 物件使用 =VARIABLE() 函式提取變數資訊。例如 =VARIABLE("V1")。
在報告範本中作其餘修改:
在 TextReportObject 中變更規則,不使用標頭標籤。
設定目前章節,即 Section1 的以下屬性:
Command Set = 所有命令
Maximum Number of Pages = 1
新增第二章節 Section2,同樣爲其新增 TextReportObject,再次變更規則,不使用標頭標籤。
設定 Section2 的以下屬性:
Command Set = 續上一章節
Maximum Number of Pages = 0(表示沒有最大值)
優/缺點
優點 - 現在變數將顯示在最終報告的標頭中。
缺點 - 由於必須在報告範本中重建 GridControlObject,爲每個變數新增 Text 物件,以及新增其他報告章節,因此設定略顯繁瑣。此外,對報告所作的任何編輯,如開啟「顯示特徵」或將尺寸變更爲「僅超出公差」,需要執行兩次,一次是對第 1 頁(章節 1)執行,一次是對其他頁面(章節 2)執行。
選項 4 - 使用泛型特徵強制報告的生成
此選項使用空的泛型特徵,強制標籤範本重新評估報告,並將需求的變數值引入最終報告。
在測量常式中,建立一個空的泛型特徵,並爲其指派說明性名稱,如:
REPORTHEADER=GENERIC/NONE,DEPENDENT,CARTESIAN,OUT,$
下一步,修改標頭標籤範本,依據需要向 GridControlObject 新增其他儲存格,然後在新增的儲存格的上方,爲要顯示的每個變數新增一個文字物件并調整該物件的大小。現在將每個 Text 物件的 Text 屬性設爲使用 =VARIABLE() 函式以提取變數資訊。但在該選項中,需在 =VARIABLE() 函式中使用額外的參數以引用泛型特徵。例如,=VARIABLE("V1","REPORTHEADER")
優/缺點
優點 - 這可能是最通用的方法。現在變數將顯示在最終報告的標頭中。您無需像選項 2 一樣兩次編輯最終報告。
缺點 - 設定略顯繁瑣,因爲需要在測量常式中加入泛型特徵,還要爲標籤範本中的每個變數新增 Text 物件。