通路美科技
公司簡介|最新消息|技術與服務| 解決方案 | 資訊區 | 聯絡我們|菁英招募|網站導覽| 回首頁
資訊區

產品新訊
訓練課程
活動&其他
技術論壇
成功案例


AcuXML 資料之輸入與輸出

無標題文件

Acucorp Version 6.0 所發行的檔案系統介面新產品 AcuXML ,內建 Runtime 介面動態讀取及利用資料辭典檔 (Data Dictionaries) 在編譯時產生 XML 。若您還沒有時間來研究它,本文將提供一些基礎的資訊作為參考。

何謂 XML?

可延伸標註語言 (Extensible Markup Language) 為使用於一個包含結構性敘述的資料文件,類似超本文標註語言 (HTML) , XML 也牽涉到制作的文件內含括符號 (< >) 中的描述性標註,不同於 HTML 的是,基於文件內容 XML 可讓您自行定義在標註及結構式關聯,舉例來說,文件中包含了借貨資訊,那麼您可以以類似 <lender> , <borrower> 與 <due date>.

由於處理彈性高與使用容易以及強大的功能特性,有越來越多的網際網路運用 XML 來傳輸資料,也同樣的運用在 LAN 及 WAN 上,也由於這些特性及因為快速的被大型商業所接受, XML 也被拿來作為應用軟體整合、企業資源規劃 (ERP) 及電子商務的解決方案。

良好格式 (Well-Formed) XML 文件與有效的 (Valid )XML 文件有何區別 ?

所謂良好格式 XML 文件是完全遵循 XML 規則所製作的文件 — 舉例來說,每一個起始標籤必定接著一個結尾標籤。而有效的 XML 文件其實也是良好的格式,但是這類文件當中也會包含文件型式定義 (DTD) ,並且會強制性的要求遵守這些定義,另外,有效的 XML 文件也包含概要 (Schema) ,用來解釋 XML 文件及明確的結構。

AcuXML 的用途 ? 它如何運作 ?

AcuXML 檔案系統介面為介於 ACUCOBOL-GT 應用程式與 XML 文件的透通介面。藉由 COBOL 輸出 / 輸入的語法使您的 COBOL 程式能讀取 XML 的資料或者利用在編譯期間所產生的資料辭典檔來輸出記錄資料給 XML 檔案,當 ACUCOBOL-GT 執行模組 (Runtime) 執行您的 COBOL 應用程式時,這個介面會在幕後執行以達到資料存取的需求。您並不需因為要使用它而去學習有關 XML 的知識。

如何從 XML 檔案中產生 COBOL 檔案描述檔 (FD)?

為了達到讓您的 COBOL 程式能與 XML 文件一起運作的準備工作,必須首先決定資料的類別與標籤的意義。

ACUCOBOL-GT 開發系統包含一個工具,稱為 xml2fd ,它可以讀取 XML 文件以及製作出合適該程式內容的檔案描述符號 (FDs) 與設備選擇敘述 (SELECT Statement) 由於有效文件的結構已經正確定義,於是此工具便利用有效的 XML 文件製作出最適合的結果。

利用 xml2fd 工具產生出來的檔案描述符號 (FD) 擁有與 XML 檔案相同的結構,會顯示出所有資料元素父系 / 子系的關聯,當然也包含陣列定義。至於資料 型 式的定義,定義為 Schema 的檔案, 其資料型式的定義具有高度的精確性。假如定義為 DTD 則 xml2fd 會分析內容並且對資料型式作出智慧的猜測 ( 譬如,數字資料則給予資料型式 ) 。 基於文件元素的架構來作出最佳的猜測以原來的 XML 產生 FDs 。
標籤屬性是可以被忽視的,因為在屬性與 COBOL 資料項目之間本來就沒有既存的標籤屬性來對應,什麼是屬性呢 ? 在下列片段 :

<customer type = “personal”>

<name> Acucorp, Inc. </name>

</customer>

其中的 type = “personal” 就是屬性

xml2fd 也會為每一個資料檔產生 SELECT 敘述,一旦 FD 與 SELECT 產生之後,您可以依程式的需要作修改。

AcuXML 如何管理 COBOL 與 XML 不同的資料儲存方式 ?

Acucorp 的 XML 介面會依據 資料辭典檔來對應 COBOL 記錄到 XML 資料的形式。這些是以 COBOL FD 為基礎的辭典檔又可稱為延伸檔案描述符號 (XFDs) ,當您在編譯 COBOL 原始碼時利用 ”-Fa” 指令切換使每一個程式中的循序檔能產生一個對應的 XFD 檔案,為了避免命名上的錯誤,在編譯時加入 “-Fc” 選項來告訴編譯器必須以 COBOL 原始碼中的檔案名作為 XFD 檔案名。

XFD 檔的產生方式可以作改變嗎 ?

有時為了某種特別的需求,是的,您可以利用 XFD 辭典檔來改變編譯的輸出形式,舉例來說,為了將這些資料項目儲存在群體階層 (Group Level) ,可以改變關聯式資料庫目錄 (Table) 的名稱。或是以儲存日期當作資料庫的日期欄位。

在嘗試產生利用 xml2fd 工具來檔案描述檔 (FDs) 與設備選擇檔 (SELECTs) 時,得到一個錯誤的訊息 :”Unexpected character. System will ignore it.”, 為何 ?

也許是您使用了 COBOL 保留字所造成的錯誤。重新檢視在您 XML 檔案中的標籤有沒有可能的 COBOL 保留字,利用 xml2fd “-p prefix” 選項以標準字首預先擱置在 FD 中的所有資料項目,這個動作特別適合在當 XML 檔案中以保留字命名的元素。

那一個 Runtime 的設定變數使用於 AcuXML?

Filename_HOST

AXML_CREAT_STYLE

AXML_SCHEMA_DOC

AXML_SCHEMA_NAME

AXML_STYLESHEET_HREF

AXML_STYLESHEET_TYPE

4GL_COLUMN_CASE

有關如何設定這些參數的資訊,請參考 ACUCOBOL-GT 附錄的附錄 H 。

當嘗試從 COBOL 程式存取 XML 檔案時,收到下列錯誤訊息:

***File system error value = 3,2***

*** Unable to open XFD file for “MY_FILE”, error = 2***

這是什麼問題?如何解決?

Runtime 無法置放在您程式中相同目錄的 XFD 檔案中,您可以利用 XFD_PREFIX 或者 XFD_DIRECTORY runtime 設定變數來指定 XFD 檔案置放的位置。

在輸入記錄時,我只看到未經整理 XML 資料而且讀取檔案卻是空白。

是否設定檔中缺少了什麼 ?

可能是 XML 的大小寫及底線表示的問題,使用在您 XFD 中的大小寫與底線必須完全符合 XML 檔案,將 4GL_COLUMN_CASE runtime 設定變數設定成 ”unchanged” ,應可解決此問題,這個變數設定會造成 runtime 執行時不會對大小寫及底線作任何的改變。

使用 AcuXML 時有沒有什麼限制 ?

由 ACUCOBOL-GT 的程式讀取或寫入 XML 文件時會有一些限制,舉例來說,您可以利用 INPUT 或 OUTPUT 開啟檔案但 I-O 或 EXTEND 則不支援,如果企圖以 I-O 或 EXTEND 開檔失敗時會傳回 NO SUPPORT 的錯誤訊息 (error 9B in the ANSI-85 code set) 。

任何良好的語法檢視器 (parser) ,如果遭遇語法的錯誤則 AcuXML 介面就會無法讀取資料並且會回傳錯誤碼 9D,05 。

XML 資料檔案只能讀取單一文件 ( 千萬不要嘗試在一個資料檔案的去一連串的文件 ) , XML 文件的最高階層元素釋對應於循序檔,而次一個階層的每一個元素則對應於檔案的記錄。

另外, XML 檔案系統介面只能讀取循序檔案,因為 XML 的用法只是被當作資料傳遞的機制而非資料儲存,這個限制並不視為有考量意義。

AcuXML 是否就像 Windows 一樣適用於 UNIX 平台 ?

AcuXML 適用在 UNIX 而且預先鍊結於 runtime 中 ( 在這些平台上 ACUCOBOL-GT 同樣建立外部資料館 ) ,執行“ runcbl –vv” 來決定您是否擁有 AcuXML 的功能,特別註明 AcuXML 並不適用於 HP e3000 平台。