国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      用于將可擴(kuò)展標(biāo)記語(yǔ)言映射到n維數(shù)據(jù)結(jié)構(gòu)的方法和系統(tǒng)的制作方法

      文檔序號(hào):6476191閱讀:181來(lái)源:國(guó)知局
      專利名稱:用于將可擴(kuò)展標(biāo)記語(yǔ)言映射到n維數(shù)據(jù)結(jié)構(gòu)的方法和系統(tǒng)的制作方法
      技術(shù)領(lǐng)域
      本發(fā)明涉及一種用于將數(shù)據(jù)從一種格式或編程范式轉(zhuǎn)化為另一種編程格式或范式的方法和過(guò)程,并特別涉及一種用于將可擴(kuò)展標(biāo)記語(yǔ)言數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換為COBOL數(shù)據(jù)結(jié)構(gòu)的方法。
      背景技術(shù)
      面向商業(yè)的通用語(yǔ)言或“COBOL”是當(dāng)今仍在廣泛使用的最古老的高級(jí)計(jì)算機(jī)編程語(yǔ)言之一。與其它編程語(yǔ)言相似,COBOL被設(shè)計(jì)為允許開(kāi)發(fā)執(zhí)行特定目的和任務(wù)的計(jì)算機(jī)程序。COBOL特別適于與科學(xué)或工程數(shù)據(jù)處理任務(wù)相對(duì)的商業(yè)數(shù)據(jù)處理任務(wù)。面向商業(yè)的數(shù)據(jù)以“交易”為特征,通常,所述交易是人工進(jìn)行的活動(dòng)(例如銷售、存款、提款等)的反映或自動(dòng)進(jìn)行的活動(dòng)(例如,將利息加到本金金額上)的反映。面向商業(yè)的任務(wù)的共同“輸出”是“報(bào)告”。因此,COBOL適合于關(guān)于面向商業(yè)的數(shù)據(jù)的收集、組織、驗(yàn)證、更新、處理和報(bào)告。
      由于COBOL最初是以大型“主機(jī)(mainframe)”商業(yè)計(jì)算機(jī)為目標(biāo)并由這種計(jì)算機(jī)執(zhí)行,因此它是在20到30年前的“客戶機(jī)-服務(wù)器”拓?fù)渲胁捎玫脑凑Z(yǔ)言(original language)之一。因?yàn)橛?jì)算的演進(jìn)已隨著“瘦客戶機(jī)(thinclient)”、聯(lián)網(wǎng)服務(wù)器、廣域網(wǎng)和因特網(wǎng)的出現(xiàn)而周而復(fù)始地提出處理范式,所以“客戶機(jī)-服務(wù)器”架構(gòu)再次流行,盡管“客戶機(jī)”現(xiàn)在通常是萬(wàn)維網(wǎng)瀏覽器計(jì)算機(jī),而服務(wù)器在處理帶寬、存儲(chǔ)容量、和通信能力方面成千上萬(wàn)倍地強(qiáng)大。
      COBOL以及相關(guān)產(chǎn)品和系統(tǒng)例如國(guó)際商業(yè)機(jī)器公司(IBM)的顧客信息控制系統(tǒng)(“CICS”)和IBM的信息管理系統(tǒng)(“IMS”)在本行業(yè)內(nèi)眾所周知,其被用于從銀行業(yè)、金融、投資、保險(xiǎn)到制造和服務(wù)經(jīng)營(yíng)范圍內(nèi)的商業(yè)和政府企業(yè)。
      在軟件行業(yè),諸如包括“C”、“C++”和太陽(yáng)微系統(tǒng)公司的JAVA[TM]的面向?qū)ο笳Z(yǔ)言的較新的編程語(yǔ)言已被廣泛接受,這可能導(dǎo)致一些人認(rèn)為COBOL、IMS、CICS以及類似產(chǎn)品和語(yǔ)言具有有限的未來(lái)價(jià)值。不管COBOL、CICS、和IMS/DC是否被認(rèn)為是戰(zhàn)略產(chǎn)品,從商業(yè)場(chǎng)合的觀點(diǎn)來(lái)看,如今簡(jiǎn)直有數(shù)十億行的COBOL商業(yè)應(yīng)用程序代碼正使用中。盡管Java現(xiàn)在已經(jīng)成為特別好的應(yīng)用程序開(kāi)發(fā)語(yǔ)言,但是自20世紀(jì)70年代早期起直到最近,COBOL是在CICS和IMS/DC交易處理環(huán)境下使用的主要應(yīng)用程序開(kāi)發(fā)語(yǔ)言。例如,在1999年,IBM Hursley(英國(guó))開(kāi)發(fā)實(shí)驗(yàn)室估計(jì)在世界范圍內(nèi)的IBM客戶的CICS裝置中,每天處理超過(guò)200億次交易。因此,COBOL仍然是一項(xiàng)重要技術(shù),并且必須與任何其它“前沿”技術(shù)問(wèn)題一樣創(chuàng)造性地解決COBOL資源和較新技術(shù)資源(例如小應(yīng)用程序(applet)、小服務(wù)程序(servlet)等)的連接和交互所引起的問(wèn)題。例如,對(duì)每天執(zhí)行200億次的COBOL問(wèn)題的低效解決方案累積了巨大的浪費(fèi)處理帶寬、存儲(chǔ)器和存儲(chǔ)設(shè)備浪費(fèi)、以及通信的低效率。通過(guò)COBOL應(yīng)用程序的本質(zhì)(例如,商業(yè)交易),這種結(jié)果自身表現(xiàn)為增大的成本、完成交易的延遲時(shí)間、和減少的利潤(rùn)。
      更為時(shí)髦的“數(shù)據(jù)挖掘”的概念可概括為再次使用來(lái)自現(xiàn)有應(yīng)用程序的商業(yè)應(yīng)用邏輯以解決未來(lái)商業(yè)問(wèn)題的能力。數(shù)據(jù)挖掘?qū)崿F(xiàn)以變化的復(fù)雜程度而存在。例如,簡(jiǎn)單的應(yīng)用程序界面重整(refacing)解決方案可使用連接到萬(wàn)維網(wǎng)服務(wù)器的萬(wàn)維網(wǎng)瀏覽器,該萬(wàn)維網(wǎng)瀏覽器反過(guò)來(lái)又使用可擴(kuò)展標(biāo)記語(yǔ)言(“XML”)接口訪問(wèn)來(lái)自交易處理服務(wù)器的數(shù)據(jù)。在另一示例中,緊密結(jié)合的企業(yè)-企業(yè)(“B2B”)應(yīng)用可以使公司連接到供應(yīng)商,其中XML文檔充當(dāng)公共數(shù)據(jù)傳輸。在此示例中,可以看到,基于XML的服務(wù)器將使網(wǎng)絡(luò)服務(wù)的演進(jìn)能夠訪問(wèn)更老的“遺留(legacy)”數(shù)據(jù),使得隨著時(shí)間的過(guò)去,企業(yè)可以在持續(xù)更新、升級(jí)、和移植其商業(yè)應(yīng)用程序以便以不斷增大的成本和響應(yīng)效率提供增強(qiáng)的服務(wù)和產(chǎn)品的同時(shí),向顧客極大地?cái)U(kuò)大其影響力。
      因此,網(wǎng)絡(luò)化經(jīng)濟(jì)正驅(qū)使企業(yè)從僵化設(shè)計(jì)的商業(yè)計(jì)算系統(tǒng)發(fā)展到可升級(jí)的計(jì)算平臺(tái)上的靈活應(yīng)用程序設(shè)計(jì)、從伙伴之間的靜態(tài)交互發(fā)展到伙伴之間的動(dòng)態(tài)交互、以及從技術(shù)整合發(fā)展到商業(yè)整合。
      因而,穩(wěn)固地建立了兩個(gè)技術(shù)極端——一端是利用確保未來(lái)的商業(yè)應(yīng)用程序訪問(wèn)和使用遺留數(shù)據(jù)的能力的XML數(shù)據(jù)傳輸技術(shù)的代表數(shù)不清的數(shù)十億美元的商業(yè)投資的數(shù)十億行COBOL代碼。XML和COBOL均不能被專有地使用。然而,將COBOL和XML互相連接存在著相當(dāng)大的技術(shù)挑戰(zhàn),尤其是對(duì)于在當(dāng)今商業(yè)應(yīng)用需求中非常普遍的數(shù)據(jù)的多維數(shù)組或“表”更是如此。
      COBOL字段(field)定義和表的簡(jiǎn)要回顧盡管COBOL在本領(lǐng)域內(nèi)是公知的,但是為了充分理解將表列或索引數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換為COBOL和XML以及從COBOL和XML轉(zhuǎn)換表列和索引數(shù)據(jù)結(jié)構(gòu)的影響,簡(jiǎn)要地回顧C(jī)OBOL中數(shù)據(jù)的“表”或“數(shù)組”的實(shí)現(xiàn)將是有益的。
      在COBOL語(yǔ)法中,使用“picture(畫面)”從句來(lái)定義供使用的字段,如表1所示。
      表1示例COBOL字段定義01 Data-Field02 Data-Item-1Pic X(1).
      03 Data-Item-2Pic X(1).
      在此示例中,以一個(gè)字符的“精度”定義了兩個(gè)數(shù)據(jù)項(xiàng),它們均為字母數(shù)字字段?!癙ic”之后的“X”表示該字段是字母數(shù)字,而“X”之后的“(1)”表示該字段長(zhǎng)度為1個(gè)字符。如同“Pic 999”字段類型那樣,“Pic 9(3)”字段類型是具有3位的數(shù)字字段。正如本領(lǐng)域所公知的那樣,可以定義諸如文字、和帶有小數(shù)(例如分?jǐn)?shù)部分(component))的數(shù)字的其他字段類型。同樣如本領(lǐng)域所公知的那樣,可以在組中定義字段,如組層次(level)內(nèi)的基本層次所示。
      因此,例如,可以如表2所示定義顧客信息記錄,其中,顧客名稱可以有多達(dá)30個(gè)字符,電話號(hào)碼是10位,而賬號(hào)是18個(gè)字母數(shù)字字符。
      表2在COBOL中定義的示例顧客信息01 Data-Field02 Customer-Name Pic X(30).
      03 Customer-Telephone Pic 9(10).
      04 Customer-AcctnumPic x(18).
      這種類型的顧客數(shù)據(jù)常常被組織成信息數(shù)組或表,例如由關(guān)系數(shù)據(jù)庫(kù)應(yīng)用程序采用的排列。
      數(shù)組結(jié)構(gòu)的實(shí)現(xiàn)和存儲(chǔ)布局根據(jù)語(yǔ)言而變。通過(guò)使用COBOL“occurs(發(fā)生)”從句實(shí)現(xiàn)的COBOL語(yǔ)言表結(jié)構(gòu)將數(shù)組元素存儲(chǔ)在連續(xù)的存儲(chǔ)位置中。
      例如,在COBOL程序中,如下定義了一維數(shù)組T,其在存儲(chǔ)位置x開(kāi)始,包含6個(gè)元素e,其中每個(gè)元素長(zhǎng)度是4個(gè)字符
      01 T.
      05 e OCCURS 6 TIMES PICTURE 9999.
      圖1示出了由該數(shù)據(jù)結(jié)構(gòu)定義表示的表。如在其它編程語(yǔ)言中那樣,COBOL根據(jù)對(duì)于大小(例如,維數(shù))和字段類型的數(shù)據(jù)定義,將數(shù)據(jù)組織為數(shù)組。然而,聲明(declare)這種表的多種方法可能導(dǎo)致數(shù)據(jù)結(jié)構(gòu)的不同實(shí)際運(yùn)行時(shí)間實(shí)現(xiàn),尤其是對(duì)于當(dāng)數(shù)據(jù)存儲(chǔ)在存儲(chǔ)器中時(shí)的該數(shù)據(jù)的物理組織更是如此。例如,表3示出了COBOL中的示例單索引(例如,一維)數(shù)組,其中在7個(gè)字段的數(shù)組中定義了8個(gè)字符的字母數(shù)字字段。
      表3COBOL中的示例單維表定義01DaysOfWeek-Table.
      03 Day-Name Pic X(8)Occurs 7 Times.
      在使用這種數(shù)組的程序初始化期間,或者緊靠如表3所示的這種數(shù)組定義之后,可以使用COBOL“move(移動(dòng))”動(dòng)詞來(lái)設(shè)置字段的初始值(例如,包含工作日名稱的串),如表4所示。
      表4COBOL中的示例表初始化000061Move“Monday”To DAY-Name(1)000062Move“Tuesday”To DAY-Name(2)000063Move“Wednesday”To DAY-Name(3) 000067Move“Sunday”To DAY-Name(7)一旦表被加載或初始化,就可以使用天編號(hào)(day number)索引來(lái)迅速且直接地訪問(wèn)單個(gè)字段的值,并且可以使用諸如COBOL“search(搜索)”動(dòng)詞的專有動(dòng)詞來(lái)檢查或驗(yàn)證信息。
      然而,大多數(shù)面向商業(yè)的數(shù)據(jù)不能被簡(jiǎn)單地組織為單維數(shù)組。例如,可以利用產(chǎn)品類型、銷售量、地理位置等來(lái)組織顧客。COBOL允許將多維表實(shí)質(zhì)上定義為表中的表,如表5所示。
      表5COBOL中的示例多維表定義00004001 Sales-Transactions.
      03 Customer-Num Occurs 100 Times Indexed by Cust-Index05 Order-Num Pic X(3)Occurs 15 Times Indexed by
      Order-Index07 Order-Items Pic X(45)Occurs 25 Times Indexed byItem-Num在此示例中,針對(duì)15個(gè)訂單(每個(gè)訂單具有訂單編號(hào))跟蹤每個(gè)都具有顧客編號(hào)的100個(gè)不同的顧客,并且每個(gè)訂單列出或描述了多達(dá)25個(gè)條目,在每個(gè)條目的描述中使用多達(dá)45個(gè)字符。在COBOL實(shí)施中,這被實(shí)現(xiàn)為15個(gè)25個(gè)字段的表,這些表被進(jìn)一步組織為100個(gè)表的數(shù)組(例如,100×15×25)。
      以行優(yōu)先次序存儲(chǔ)多維COBOL表,其中將行一個(gè)接一個(gè)地放置在存儲(chǔ)器中,如同Harry R.Lewis和Larry Denenberg(HarperCollins,1991)所著的教科書(text)“Data Structures &amp; Their Algorithms(數(shù)據(jù)結(jié)構(gòu)及其算法)”所描述的那樣。行被定義為第一索引,其中使用3元組(x,y,z)來(lái)給具有3維的表編索引,x是用于行的索引。
      例如,在存儲(chǔ)位置x處開(kāi)始的2維數(shù)組T包含2行和3列,其中每個(gè)元素(x)長(zhǎng)度是2個(gè)字符,而每個(gè)元素(y)長(zhǎng)度是4個(gè)字符,如具有3個(gè)COBOL語(yǔ)句的COBOL程序所定義的那樣01 T.
      05 x OCCURS 2 TIMES PICTURE XX.
      10 y OCCURS 3 TIMES PICTURE 9999.
      圖2示出如何將此結(jié)構(gòu)表示為相鄰存儲(chǔ)的表。此存儲(chǔ)方法提供了用于由應(yīng)用程序快速訪問(wèn)位于主存儲(chǔ)器中的表元素的有效手段,但是對(duì)于存儲(chǔ)空間非常重要的長(zhǎng)期存儲(chǔ)和檢索可能是低效率的。
      例如,數(shù)據(jù)庫(kù)可以通過(guò)使用指針的鏈表或分級(jí)表來(lái)存儲(chǔ)稀疏數(shù)組(部分填充的數(shù)組)。在處理期間,應(yīng)用程序可以決定將數(shù)組元素存儲(chǔ)在數(shù)據(jù)庫(kù)中。
      標(biāo)記語(yǔ)言和COBOL之間的n維數(shù)組數(shù)據(jù)映射XML文檔請(qǐng)求可以從外部源(例如另一公司、另一代理商、另一企業(yè)等)發(fā)起,或者它可以由需要XML接口以訪問(wèn)主機(jī)應(yīng)用程序的網(wǎng)絡(luò)服務(wù)器生成。將XML文檔映射為COBOL數(shù)據(jù)結(jié)構(gòu)不同于開(kāi)發(fā)用于大容量介質(zhì)上的XML文檔的高效存儲(chǔ)和檢索的算法的挑戰(zhàn)。
      XML分析器和映射器開(kāi)發(fā)簡(jiǎn)單的XML文檔相當(dāng)簡(jiǎn)單明了。然而,在映射可具有多維表或數(shù)組數(shù)據(jù)的XML文檔的時(shí)候出現(xiàn)挑戰(zhàn)。但是,這一需求實(shí)際上非常常見(jiàn)。
      例如,用于顯示關(guān)于體育運(yùn)動(dòng)聯(lián)盟(league)的信息的系統(tǒng)可以使用XML文檔來(lái)顯示對(duì)隊(duì)內(nèi)、聯(lián)合會(huì)(conference)內(nèi)、大區(qū)(division)內(nèi)、和聯(lián)盟內(nèi)的單個(gè)運(yùn)動(dòng)員的統(tǒng)計(jì)數(shù)字。所得到的結(jié)構(gòu)是4維數(shù)組。
      使用國(guó)家足球聯(lián)盟(“NFL”)的示例可用來(lái)說(shuō)明用于將數(shù)據(jù)元素映射到結(jié)果數(shù)組中的一般概念過(guò)程。在此示例中,NFL大區(qū)是第一維(w),聯(lián)合會(huì)是第二維(x),隊(duì)是第三維(y),而運(yùn)動(dòng)員是第四維(z)。如果從包含相關(guān)統(tǒng)計(jì)數(shù)字的XML文檔中分析隊(duì)名,則必須遵循以下過(guò)程來(lái)將隊(duì)名映射到結(jié)果數(shù)組1.識(shí)別結(jié)果數(shù)組的維。所分析的XML標(biāo)簽和元素可以表現(xiàn)為&lt;team_name&gt;Dolphins&lt;/team_name&gt;
      可使用標(biāo)簽名來(lái)確定team_name屬于隊(duì)維(第三維)。
      2.瀏覽(navigate)到所識(shí)別的目標(biāo)維。Dolphins(海豚隊(duì))是AFC東部聯(lián)合會(huì)中的隊(duì)伍,該聯(lián)合會(huì)在AFC大區(qū)中。如果我們先前已經(jīng)分析并映射了NFC大區(qū)以及AFC大區(qū)中的AFC西部、AFC中部、和AFC東部聯(lián)合會(huì)的元素,那么我們已經(jīng)通過(guò)(1,x,y,z)、(2,1,y,z)和(2,2,y,z)逐漸進(jìn)行了瀏覽。目前,我們正在處理AFC東部聯(lián)合會(huì)中的隊(duì)伍,因此我們知道數(shù)組索引將是(2,3,y)。
      3.確定目標(biāo)維數(shù)組索引。在此情況中,目標(biāo)維數(shù)組索引是y的值。然后,系統(tǒng)在目標(biāo)維(y)中搜索第一空team_name存儲(chǔ)桶(bucket)。如果這是我們?cè)贏FC東部中處理過(guò)的第三支隊(duì)伍,則第三存儲(chǔ)桶將是空的,并且目標(biāo)維數(shù)組索引將是3。
      4.將當(dāng)前數(shù)據(jù)值移動(dòng)到數(shù)組內(nèi)的空字段中(該數(shù)組字段可以是空的或者可以不是空的)。在此示例中,我們最后將值“Dolphins”移動(dòng)到結(jié)果數(shù)組內(nèi)的(2,2,3)。
      然而,實(shí)際設(shè)計(jì)此一般概念過(guò)程的軟件實(shí)現(xiàn)對(duì)開(kāi)發(fā)瀏覽該結(jié)果數(shù)組并用于確定目標(biāo)維數(shù)組索引的有效方法提出了挑戰(zhàn),特別是在結(jié)果數(shù)組已預(yù)加載了狀態(tài)數(shù)據(jù)的情況下。因此,在本領(lǐng)域內(nèi)存在對(duì)于將多維表數(shù)組數(shù)據(jù)高效地映射到XML和COBOL以及從XML和COBOL高效地映射多維表數(shù)組數(shù)據(jù)的方法和系統(tǒng)的需求。

      發(fā)明內(nèi)容
      在本發(fā)明的第一方面,提供了一種用于將最初用標(biāo)記語(yǔ)言表示的n維數(shù)組數(shù)據(jù)(“源數(shù)據(jù)”)映射為適合于由商業(yè)應(yīng)用程序使用的n維表(“目標(biāo)數(shù)據(jù)”)的方法,所述方法包括以下步驟(a)建立可搜索的儲(chǔ)存庫(kù),其包含關(guān)于結(jié)果數(shù)組結(jié)構(gòu)的元數(shù)據(jù)信息和一個(gè)或多個(gè)結(jié)果數(shù)組數(shù)據(jù)元素;(b)分析所述源數(shù)據(jù),以查找第一或下一個(gè)標(biāo)簽名;(c)如果所找到的標(biāo)簽名對(duì)應(yīng)數(shù)組名,則執(zhí)行以下步驟(i)將維數(shù)計(jì)數(shù)器設(shè)置為新的結(jié)果數(shù)組維數(shù);(ii)用數(shù)組標(biāo)簽名、這一維和更高維的所有元素的總長(zhǎng)度(維組長(zhǎng)度)、以及最大數(shù)組元素來(lái)加載映射數(shù)組;(iii)將維字段計(jì)數(shù)設(shè)置為1;以及(iv)對(duì)于每個(gè)較低層次的維,通過(guò)將維組長(zhǎng)度乘以當(dāng)前維字段計(jì)數(shù)來(lái)計(jì)算維數(shù)組偏移量(offset),并對(duì)結(jié)果求和;(d)如果所找到的標(biāo)簽名對(duì)應(yīng)數(shù)組元素,則執(zhí)行以下步驟(i)將維數(shù)計(jì)數(shù)器設(shè)置為對(duì)應(yīng)的維層次;(ii)將對(duì)應(yīng)的標(biāo)簽值存儲(chǔ)在由維字段計(jì)數(shù)加上維數(shù)組偏移量指示的結(jié)果存儲(chǔ)槽(slot)中;(iii)將所述維字段計(jì)數(shù)增加1;以及(iv)對(duì)于同一維層次的連續(xù)源數(shù)據(jù)元素,重復(fù)所述步驟(d)(i)、(d)(ii)和(d)(iii),直到存儲(chǔ)了這一維的所有元素為止;(e)以及重復(fù)步驟(b)、(c)和(d),直到映射了所述源數(shù)據(jù)的所有維為止。
      在本發(fā)明的第二方面,提供了一種用于將標(biāo)記語(yǔ)言n維數(shù)組數(shù)據(jù)(“源數(shù)據(jù)”)映射為適合于由商業(yè)應(yīng)用程序使用的n維表(“目標(biāo)數(shù)據(jù)”)的系統(tǒng),所述系統(tǒng)包括(a)可搜索儲(chǔ)存庫(kù),其包含關(guān)于結(jié)果數(shù)組結(jié)構(gòu)的元數(shù)據(jù)信息和一個(gè)或多個(gè)結(jié)果數(shù)組數(shù)據(jù)元素;(b)源數(shù)據(jù)分析器,其配置為在所述源數(shù)據(jù)中查找第一或下一個(gè)標(biāo)簽名;(c)數(shù)組維處理器,其配置為如果所發(fā)現(xiàn)的標(biāo)簽名對(duì)應(yīng)數(shù)組名則執(zhí)行以下步驟(i)將維數(shù)計(jì)數(shù)器設(shè)置為新結(jié)果數(shù)組維數(shù);(ii)用數(shù)組標(biāo)簽名、這一維和更高維的所有元素的總長(zhǎng)度(維組長(zhǎng)度)、以及最大數(shù)組元素加載映射數(shù)組;(iii)將維字段計(jì)數(shù)設(shè)置為1;以及(iv)對(duì)于每個(gè)較低層次的維,通過(guò)將維組長(zhǎng)度乘以當(dāng)前維字段計(jì)數(shù)來(lái)計(jì)算維數(shù)組偏移量,并對(duì)結(jié)果求和;(d)數(shù)組元素處理器,其配置為如果所發(fā)現(xiàn)的標(biāo)簽名對(duì)應(yīng)數(shù)組元素則執(zhí)行以下步驟(i)將維數(shù)計(jì)數(shù)器設(shè)置為對(duì)應(yīng)的維層次;(ii)將對(duì)應(yīng)的標(biāo)簽值存儲(chǔ)在由維字段計(jì)數(shù)加上維數(shù)組偏移量所指示的結(jié)果存儲(chǔ)槽中;(iii)將所述維字段計(jì)數(shù)增加1;以及(iv)對(duì)于同一維層次的連續(xù)源數(shù)據(jù)元素,重復(fù)所述步驟(d)(i)、(d)(ii)和(d)(iii),直到存儲(chǔ)了這一維的所有元素為止;(e)以及數(shù)組映射控制器,其配置為反復(fù)操作所述分析器、所述數(shù)組維處理器、以及所述數(shù)組元素處理器,直到映射了所述源數(shù)據(jù)的所有維和所有元素為止。
      在本發(fā)明的第三方面,提供了一種計(jì)算機(jī)可讀介質(zhì),其被編碼有用于將最初用標(biāo)記語(yǔ)言表示的n維數(shù)組數(shù)據(jù)(“源數(shù)據(jù)”)映射為適合于由商業(yè)應(yīng)用程序使用的n維表(“目標(biāo)數(shù)據(jù)”)的軟件,所述軟件執(zhí)行以下步驟(a)建立可搜索的儲(chǔ)存庫(kù),其包含關(guān)于結(jié)果數(shù)組結(jié)構(gòu)的元數(shù)據(jù)信息和一個(gè)或多個(gè)結(jié)果數(shù)組數(shù)據(jù)元素;(b)分析所述源數(shù)據(jù),以查找第一或下一個(gè)標(biāo)簽名;(c)如果所找到的標(biāo)簽名對(duì)應(yīng)數(shù)組名,則執(zhí)行以下步驟(i)將維數(shù)計(jì)數(shù)器設(shè)置為新的結(jié)果數(shù)組維數(shù);(ii)用數(shù)組標(biāo)簽名、這一維和更高維的所有元素的總長(zhǎng)度(維組長(zhǎng)度)、以及最大數(shù)組元素來(lái)加載映射數(shù)組;(iii)將維字段計(jì)數(shù)設(shè)置為1;以及(iv)對(duì)于每個(gè)較低層次的維,通過(guò)將維組長(zhǎng)度乘以當(dāng)前維字段計(jì)數(shù)來(lái)計(jì)算維數(shù)組偏移量(offset),并對(duì)結(jié)果求和;(d)如果所找到的標(biāo)簽名對(duì)應(yīng)數(shù)組元素,則執(zhí)行以下步驟(i)將維數(shù)計(jì)數(shù)器設(shè)置為對(duì)應(yīng)的維層次;(ii)將對(duì)應(yīng)的標(biāo)簽值存儲(chǔ)在由維字段計(jì)數(shù)加上維數(shù)組偏移量指示的結(jié)果存儲(chǔ)槽中;(iii)將所述維字段計(jì)數(shù)增加1;以及(iv)對(duì)于同一維層次的連續(xù)源數(shù)據(jù)元素,重復(fù)所述步驟(d)(i)、(d)(ii)和(d)(iii),直到存儲(chǔ)了這一維的所有元素為止;(e)以及重復(fù)步驟(b)、(c)和(d),直到映射了所述源數(shù)據(jù)的所有維為止。


      結(jié)合在此呈現(xiàn)的附圖的以下詳細(xì)描述提供了對(duì)本發(fā)明的完整公開(kāi)。
      圖1提供了一維數(shù)組的表列(tabular)圖示。
      圖2同樣提供了COBOL用來(lái)存儲(chǔ)表列數(shù)據(jù)的線性性質(zhì)的圖示。
      圖3圖示了XML數(shù)據(jù)結(jié)構(gòu)的分級(jí)組織。
      圖4示出了我們的傾斜樹(shù)(tilted tree)、旋轉(zhuǎn)錐形(spinning cone)過(guò)程的第一步驟,其中用錐形代替了分級(jí)結(jié)構(gòu)中的方形組。
      圖5示出了我們的傾斜樹(shù)、旋轉(zhuǎn)錐形過(guò)程的后續(xù)步驟,其中,樹(shù)被旋轉(zhuǎn)以引入與圖中兩個(gè)軸之一(映射軸)的相合(congruence)。
      圖6圖示了我們的傾斜樹(shù)、旋轉(zhuǎn)錐形過(guò)程的旋轉(zhuǎn)動(dòng)作,其允許使分級(jí)結(jié)構(gòu)中每組(例如每個(gè)數(shù)組)的每個(gè)成員與該圖的映射軸相接觸。
      概括地說(shuō),新的傾斜樹(shù)、旋轉(zhuǎn)錐形過(guò)程可用來(lái)高效地將諸如XML的標(biāo)記語(yǔ)言文檔中包含的多維數(shù)組數(shù)據(jù)映射為適合于由COBOL應(yīng)用程序使用的數(shù)據(jù)結(jié)構(gòu)。該過(guò)程以效率高得多的方式映射數(shù)據(jù),從而允許以減少的處理資源映射更多的數(shù)據(jù)。使用錐形來(lái)表示XML數(shù)組的二維反轉(zhuǎn)樹(shù)結(jié)構(gòu)被虛擬化,這實(shí)現(xiàn)了n維XML數(shù)據(jù)到二維表示的映射。接下來(lái),通過(guò)傾斜反轉(zhuǎn)錐形樹(shù)而在二維圖上將其重新定位,使得每一維中的一個(gè)數(shù)組(錐形)成員相對(duì)于軸例如y軸平直地布置。這個(gè)軸現(xiàn)在被稱為映射軸?,F(xiàn)在,XML結(jié)構(gòu)中的維對(duì)應(yīng)于y軸的段。最后,通過(guò)每次旋轉(zhuǎn)一個(gè)錐形(例如,旋轉(zhuǎn)數(shù)組),每個(gè)數(shù)組的每個(gè)成員可以與映射軸相接觸。映射軸的維段可表示為適用于COBOL應(yīng)用程序的一維或線性組織的數(shù)組。
      具體實(shí)施例方式
      本發(fā)明優(yōu)選地在這樣的計(jì)算機(jī)程序中實(shí)施,該計(jì)算機(jī)程序提供諸如可擴(kuò)展標(biāo)記語(yǔ)言(“XML”)的格式和諸如COBOL的結(jié)構(gòu)化編程格式之間的n維數(shù)據(jù)結(jié)構(gòu)的連接。本發(fā)明可作為用于在諸如企業(yè)服務(wù)器的計(jì)算系統(tǒng)中使用的、采用高級(jí)語(yǔ)言(COBOL、C、C++、Java等)、低級(jí)或匯編語(yǔ)言或者甚至是采用可編程或固定設(shè)計(jì)的固件和邏輯的軟件來(lái)實(shí)施。
      已經(jīng)有一段時(shí)間可以從國(guó)際商業(yè)機(jī)器公司以一種或另一種形式獲得對(duì)于萬(wàn)維網(wǎng)支持的CICS應(yīng)用程序的一般轉(zhuǎn)換器解決方案,其中所述CICS應(yīng)用程序包括與3270橋的接口以提供對(duì)3270應(yīng)用程序的訪問(wèn)。
      該一般轉(zhuǎn)換器解決方案現(xiàn)在已經(jīng)利用包含我們發(fā)明的“傾斜樹(shù)、旋轉(zhuǎn)錐形”過(guò)程的XML接口而得到了進(jìn)一步增強(qiáng)。這通過(guò)提供WebSphere Java客戶機(jī)使得Java開(kāi)發(fā)者能夠成為解決方案參與者。這是本發(fā)明的主題。
      為了提供實(shí)施例的過(guò)程,首先回顧如何用XML來(lái)表示n維數(shù)組是有益的。XML文檔的結(jié)構(gòu)通常被圖示為反轉(zhuǎn)樹(shù)(30),如圖3所示。頂部的主根分支為漸低的層次或維。任何特定層次的垂直成員代表該層次的數(shù)組元素。
      以下示例示出了根據(jù)我們的NFL示例的用圖表示的XML結(jié)構(gòu),其中聯(lián)盟為根元素,大區(qū)為第一維數(shù)組,聯(lián)合會(huì)為第二維數(shù)組,隊(duì)為第三維數(shù)組,而運(yùn)動(dòng)員為第四維數(shù)組(32)。從該圖可以看出,可以以這種方式在二維空間中表示XML文檔的所有元素。不考慮維的數(shù)目(y軸)或單個(gè)數(shù)組的大小(x軸),這是正確的。
      當(dāng)前述一般概念過(guò)程的討論完成時(shí),我們指出可以在分析和映射XML文檔數(shù)組元素之前用狀態(tài)數(shù)據(jù)預(yù)加載結(jié)果數(shù)組。因此,使用結(jié)果數(shù)組來(lái)基于結(jié)果數(shù)組中數(shù)據(jù)的存在確定所分析的XML文檔數(shù)組元素的映射是不可靠的。然而,使用這一方法,可以在二維空間中表示n維結(jié)果數(shù)組,這使得有可能創(chuàng)建可用于映射的n維結(jié)果數(shù)組的鏡像數(shù)組。
      不幸地是,這一鏡像數(shù)組可能變得非常大。在每個(gè)維層次保存20個(gè)信息條目的簡(jiǎn)單的足球聯(lián)盟示例將需要大小至少為50k字節(jié)的鏡像數(shù)組。此外,如果對(duì)于每個(gè)數(shù)據(jù)元素需要再次瀏覽更高的維層次,那么搜索正確的數(shù)組維(例如瀏覽表)可能是麻煩和效率低下的。
      然而,可以采用我們的新傾斜樹(shù)、旋轉(zhuǎn)錐形過(guò)程,從而導(dǎo)致這樣的表示其需要少得多的存儲(chǔ)空間,對(duì)于我們的示例是164字節(jié),并且在映射時(shí)效率高得多。以下討論和說(shuō)明解釋這一過(guò)程。
      首先,如圖4所示,也可以使用錐形(41)代表數(shù)組,來(lái)說(shuō)明與圖3示出的反轉(zhuǎn)樹(shù)結(jié)構(gòu)類似的反轉(zhuǎn)樹(shù)結(jié)構(gòu)(40)。
      接下來(lái),通過(guò)傾斜反轉(zhuǎn)錐形樹(shù)而在圖上將其重新定位,使得每一維中的一個(gè)數(shù)組(錐形)成員相對(duì)于軸平直地布置?,F(xiàn)在,XML結(jié)構(gòu)(41’)中的維(32)對(duì)應(yīng)于y軸的段,如圖5所示。
      最后,可以看到,如圖6所示,通過(guò)每次旋轉(zhuǎn)(60)一個(gè)錐形(例如,旋轉(zhuǎn)數(shù)組),可以使每個(gè)數(shù)組的每個(gè)成員與這個(gè)軸相接觸,其中,我們現(xiàn)在可以將這個(gè)軸稱為映射軸。映射軸的維段可表示為一維數(shù)組。返回我們的NFL示例,需要映射數(shù)組具有4個(gè)元素組,每一維一組。每組可包含1.與這一維關(guān)聯(lián)的XML標(biāo)簽名(即隊(duì)、運(yùn)動(dòng)員等);2.結(jié)果數(shù)組元素或元素組的長(zhǎng)度;3.結(jié)果數(shù)組中的最大允許元素出現(xiàn)次數(shù)(occurrences);以及4.當(dāng)前元素出現(xiàn)次數(shù)計(jì)數(shù),其用來(lái)確定目標(biāo)維數(shù)組索引。
      當(dāng)通過(guò)該過(guò)程分析XML文檔時(shí),每一維的映射數(shù)組組保存關(guān)于當(dāng)前被旋轉(zhuǎn)到與映射軸相接觸(例如,被旋轉(zhuǎn)地定位以對(duì)準(zhǔn)映射軸)的錐形的信息。分析和映射以XML文檔根元素開(kāi)始,并通過(guò)向下分析而進(jìn)行到逐漸降低的維的錐形。當(dāng)遇到錐形元素時(shí),映射它們。
      例如,如果在處理隊(duì)層次的錐形元素(在適當(dāng)?shù)奈恢眯D(zhuǎn))期間,遇到了代表更低層次錐形的運(yùn)動(dòng)員元素,則立即將該更低層次運(yùn)動(dòng)員錐形“旋轉(zhuǎn)為接觸”該映射軸。一旦對(duì)于隊(duì)完成了運(yùn)動(dòng)員錐形處理,就將映射數(shù)組上移一維,以便將新的隊(duì)錐形旋轉(zhuǎn)到適當(dāng)?shù)奈恢?,從而重?fù)該過(guò)程,直到處理了n維數(shù)組中的所有錐形為止。
      為了進(jìn)一步理解本發(fā)明,現(xiàn)在我們提出用于映射n維數(shù)據(jù)的我們的傾斜樹(shù)、旋轉(zhuǎn)錐形過(guò)程的功能性、操作示例實(shí)施例和應(yīng)用程序。以下討論將使用表6示出的具有表7所示的對(duì)應(yīng)COBOL程序4維表定義的入站(inbound)XML文檔請(qǐng)求、以及它所創(chuàng)建的映射數(shù)組的另一示例。
      表6示例XML入站數(shù)據(jù)&lt;league&gt;
      &lt;league_name&gt;NFL&lt;/league_name&gt;
      &lt;division&gt;
      &lt;division_name&gt;AFC&lt;/division_name&gt;
      &lt;conference&gt;
      &lt;conference_name&gt;AFC_East&lt;/conference_name&gt;
      &lt;team&gt;
      &lt;team_name&gt;Dolphins&lt;/team_name&gt;
      &lt;team_games_played&gt;16&lt;/team_games_Played&gt;
      &lt;team_player&gt;
      &lt;player_name&gt;Jay Fiedler&lt;/player_name&gt;
      &lt;player_games_played&gt;16&lt;/player_games_played&gt;
      &lt;/team_player&gt;
      &lt;team_player&gt;
      &lt;player_Name&gt;Ed Perry&lt;/player_Name&gt;
      &lt;player_pgames_played&gt;16&lt;/player_games_played&gt;
      &lt;/team_player&gt;
      &lt;team_player&gt;&lt;/team_player&gt;
      &lt;/team&gt;
      &lt;team&gt;&lt;/team&gt;
      &lt;/conference&gt;
      &lt;conference&gt;&lt;/conference&gt;
      &lt;/division&gt;
      &lt;division&gt;&lt;/division&gt;
      &lt;/league&gt;
      表7示例COBOL程序語(yǔ)句01 COBOL-RESULT-ARRAY02 LEAGUE-NAME PIC X (20).
      02 DIVISION OCCURS 2 TIMES.
      04 DIVISION-NAME PIC X(03).
      04 CONFERENCE OCCURS 3 TIMES.
      06 CONFERENCE-NAME PIC X (09).
      06 TEAM OCCURS 6 TIMES.
      08 TEAM-NAME PIC X(20).
      08 TEAM-GAMES-PLAYED PIC 9(03).
      08 TEAM-PLAYER OCCURS 70 TIMES10 PLAYER-NAME PIC X(20).
      10 PLAYER-GAMES-PLAYED PIC 9(03).
      05 DIMENSION-COUNTER PIC S9(4)COMP.
      05 MAPPING-ARRAY10 DIMENSION-TABLE OCCURS 4 TIMES.
      20 DIMENSION-TAG-NAME PIC X (32).
      20 DIMENSION-OCCURS-GROUP-LEN PIC S9(4)COMP.
      20 DIMENSION-OCCURS-MAX-TIMES PIC S9(4)COMP.
      20 DIMENSION-FIELD-COUNT PIC S9(4)COMP.
      根據(jù)我們?cè)贗BM CICS計(jì)算環(huán)境下的示例實(shí)施例,當(dāng)接收到XML請(qǐng)求時(shí),SAX(用于XML的標(biāo)準(zhǔn)API)分析器開(kāi)始在XML文檔的開(kāi)頭進(jìn)行分析。SAX分析器是事件驅(qū)動(dòng)的,從而意味著當(dāng)發(fā)現(xiàn)XML標(biāo)簽名(事件)時(shí),對(duì)我們的用于元素映射的傾斜樹(shù)、旋轉(zhuǎn)錐形過(guò)程給出控制。
      進(jìn)一步根據(jù)我們的示例實(shí)施例,映射數(shù)組具有兩個(gè)關(guān)聯(lián)的控制值。維數(shù)計(jì)數(shù)器指示正在處理的多維結(jié)果數(shù)組的當(dāng)前維層次。維數(shù)組偏移量是到當(dāng)前正在處理的維的開(kāi)頭的數(shù)組的偏移量。將樹(shù)傾斜到映射數(shù)組軸的思想使映射數(shù)組是一維數(shù)組的事實(shí)成為可能。記住,樹(shù)是多維源數(shù)組的二維表示。
      對(duì)于每個(gè)分析器事件,處理進(jìn)行如下1.內(nèi)存儲(chǔ)器(in-memory)儲(chǔ)存庫(kù)包含關(guān)于結(jié)果數(shù)組結(jié)構(gòu)的元數(shù)據(jù)信息和結(jié)果數(shù)組數(shù)據(jù)元素。在該儲(chǔ)存庫(kù)中搜索XML標(biāo)簽名的匹配。
      2.如果該標(biāo)簽名對(duì)應(yīng)于數(shù)組名(即DIVISION、CONFERENCE、TEAM、或TEAM-PLAYER),則(a)將維數(shù)計(jì)數(shù)器設(shè)置為新結(jié)果數(shù)組維數(shù)(這對(duì)應(yīng)于將錐形旋轉(zhuǎn)為與映射數(shù)組相接觸);(b)用數(shù)組標(biāo)簽名、這一維和更高維的所有元素的總長(zhǎng)度(維組長(zhǎng)度)、以及最大數(shù)組元素加載映射數(shù)組;(c)將維字段計(jì)數(shù)設(shè)置為1,使得這一維的下一個(gè)XML數(shù)據(jù)元素將被映射到第一存儲(chǔ)槽;以及(d)對(duì)于每個(gè)較低層次的維,通過(guò)將維組長(zhǎng)度乘以當(dāng)前維字段計(jì)數(shù)來(lái)計(jì)算維數(shù)組偏移量,并對(duì)結(jié)果求和。
      3.如果標(biāo)簽名對(duì)應(yīng)于數(shù)組元素(即DIVISION-NAME、CONFERENCE-NAME、TEAM-NAME、TEAM-GAMES-PLAYED、PLAYER-NAME、或PLAYER-GAMES-PLAYED),則(a)將維數(shù)計(jì)數(shù)器設(shè)置為對(duì)應(yīng)的維層次;以及(b)將對(duì)應(yīng)的標(biāo)簽值存儲(chǔ)在由維字段計(jì)數(shù)加上維數(shù)組偏移量指示的結(jié)果存儲(chǔ)槽中(結(jié)合儲(chǔ)存庫(kù)執(zhí)行元素存儲(chǔ),該儲(chǔ)存庫(kù)包含對(duì)于存儲(chǔ)槽1的元素結(jié)果數(shù)組偏移量、元素長(zhǎng)度、和元素類型(字母數(shù)字、數(shù)字等))。
      (c)將維字段計(jì)數(shù)增加1;以及(d)按照剛才所述,處理同一維層次的下一個(gè)連續(xù)的數(shù)組元素(對(duì)應(yīng)于在適當(dāng)?shù)奈恢眯D(zhuǎn)錐形),直到存儲(chǔ)了這一維的所有元素為止。
      盡管緊靠之前的解釋可能看起來(lái)簡(jiǎn)單直接,但是實(shí)際的代碼實(shí)現(xiàn)復(fù)雜得多,以便能夠處理表8示出的COBOL數(shù)組定義。在此示例中,注意,TEAM-LOCATION是TEAM數(shù)組的元素,但是跟隨在TEAM-PLAYER的更高維數(shù)組之后。CONFERENCE-BOARD數(shù)組是與CONFERENCE數(shù)組維數(shù)相同的數(shù)組,并跟隨在TEAM和TEAM-PLAYER的更高層次的數(shù)組之后,其中,CONFERENCE-BOARD數(shù)組和CONFERENCE數(shù)組均在DIVISION數(shù)組之下。
      表8示例COBOL實(shí)現(xiàn)01 COMMAREA.
      02 LEAGUE-NAME PIC X (20).
      02 DIVISION OCCURS 2TIMES.
      04 DIVISION-NAME PIC X(03).
      04 CONFERENCE OCCURS 3 TIMES.
      06 CONFERENCE-NAME PIC X(09).
      06 TEAM OCCURS 6 TIMES.
      08 TEAM-NAME PIC X(20).
      08 TEAM-GAMES-PLAYED PIC 9(03).
      08 TEAM-PLAYER OCCURS 70 TIMES.
      10 PLAYER-NAME PIC X(20).
      10 PLAYER-GAMES PLAYED PIC 9(03).
      08 TEAM-LOCATION PIC X(20).
      04 CONFERENCE-BOARD OCCURS 12 TIMES.
      06 CONFERENCE-BOARD-MEMBER-NAME PIC X(20).
      總而言之,新的傾斜樹(shù)、旋轉(zhuǎn)錐形過(guò)程可用來(lái)將包含在標(biāo)記語(yǔ)言文檔例如XML中的多維數(shù)組數(shù)據(jù)高效地映射為適合于由COBOL應(yīng)用程序使用的數(shù)據(jù)結(jié)構(gòu)。該過(guò)程以效率高得多的方式映射數(shù)據(jù),從而允許以減少的處理資源映射更多的數(shù)據(jù)。使用錐形來(lái)表示XML數(shù)組的二維反轉(zhuǎn)樹(shù)結(jié)構(gòu)被虛擬化,其實(shí)現(xiàn)了n維XML數(shù)據(jù)到二維表示的映射。接下來(lái),通過(guò)傾斜反轉(zhuǎn)錐形樹(shù)而將其在二維圖上重新定位,使得每一維中的一個(gè)數(shù)組(錐形)成員相對(duì)于軸例如y軸平直地布置。這個(gè)軸現(xiàn)在被稱為映射軸?,F(xiàn)在,XML結(jié)構(gòu)中的維對(duì)應(yīng)于y軸的段。最后,通過(guò)每次旋轉(zhuǎn)一個(gè)錐形(例如,旋轉(zhuǎn)數(shù)組),可以使每個(gè)數(shù)組的每個(gè)成員與映射軸相接觸。映射軸的維段可表示為適合于COBOL應(yīng)用程序的一維或線性組織的數(shù)組。
      權(quán)利要求
      1.一種用于將最初用標(biāo)記語(yǔ)言表示的n維數(shù)組數(shù)據(jù)(“源數(shù)據(jù)”)映射為適合于由商業(yè)應(yīng)用程序使用的n維表(“目標(biāo)數(shù)據(jù)”)的方法,所述方法包括以下步驟(a)建立可搜索的儲(chǔ)存庫(kù),其包含關(guān)于結(jié)果數(shù)組結(jié)構(gòu)的元數(shù)據(jù)信息和一個(gè)或多個(gè)結(jié)果數(shù)組數(shù)據(jù)元素;(b)分析所述源數(shù)據(jù),以發(fā)現(xiàn)第一或下一個(gè)標(biāo)簽名;(c)如果所發(fā)現(xiàn)的標(biāo)簽名對(duì)應(yīng)于數(shù)組名,則執(zhí)行以下步驟(i)將維數(shù)計(jì)數(shù)器設(shè)置為新結(jié)果數(shù)組維數(shù);(ii)用數(shù)組標(biāo)簽名、這一維和更高維的所有元素的總長(zhǎng)度(維組長(zhǎng)度)、以及最大數(shù)組元素加載映射數(shù)組;(iii)將維字段計(jì)數(shù)設(shè)置為1;以及(iv)對(duì)于每個(gè)較低層次的維,通過(guò)將維組長(zhǎng)度乘以當(dāng)前維字段計(jì)數(shù)來(lái)計(jì)算維數(shù)組偏移量,并對(duì)結(jié)果求和;(d)如果所發(fā)現(xiàn)的標(biāo)簽名對(duì)應(yīng)于數(shù)組元素,則執(zhí)行以下步驟(i)將維數(shù)計(jì)數(shù)器設(shè)置為對(duì)應(yīng)的維層次;(ii)將對(duì)應(yīng)的標(biāo)簽值存儲(chǔ)在由維字段計(jì)數(shù)加上維數(shù)組偏移量指示的結(jié)果存儲(chǔ)槽中;(iii)將所述維字段計(jì)數(shù)增加1;以及(iv)對(duì)于同一維層次的連續(xù)源數(shù)據(jù)元素,重復(fù)所述步驟(d)(i)、(d)(ii)和(d)(iii),直到存儲(chǔ)了這一維的所有元素為止;(e)以及重復(fù)步驟(b)、(c)和(d),直到映射了所述源數(shù)據(jù)的所有維為止。
      2.如權(quán)利要求1所述的方法,其中,結(jié)合儲(chǔ)存庫(kù)執(zhí)行所述存儲(chǔ)對(duì)應(yīng)標(biāo)簽值的步驟,所述儲(chǔ)存庫(kù)包含對(duì)于存儲(chǔ)槽1的元素結(jié)果數(shù)組偏移量、元素長(zhǎng)度、和元素類型。
      3.如權(quán)利要求1或2所述的方法,還包括將狀態(tài)數(shù)據(jù)預(yù)加載到所述目標(biāo)數(shù)據(jù)數(shù)組中的步驟。
      4.如權(quán)利要求1、2或3所述的方法,其中,所述分析所述源數(shù)據(jù)的步驟包括分析以可擴(kuò)展標(biāo)記語(yǔ)言定義的數(shù)據(jù)結(jié)構(gòu)和/或采用用于可擴(kuò)展標(biāo)記語(yǔ)言分析器的標(biāo)準(zhǔn)應(yīng)用程序編程接口。
      5.如權(quán)利要求1至4中任意一項(xiàng)所述的方法,還包括由面向商業(yè)的通用語(yǔ)言應(yīng)用程序使用所述目標(biāo)數(shù)據(jù)數(shù)組的步驟。
      6.一種用于將標(biāo)記語(yǔ)言n維數(shù)組數(shù)據(jù)(“源數(shù)據(jù)”)映射為適合于由商業(yè)應(yīng)用程序使用的n維表(“目標(biāo)數(shù)據(jù)”)的系統(tǒng),所述系統(tǒng)包括(a)可搜索儲(chǔ)存庫(kù),其包含關(guān)于結(jié)果數(shù)組結(jié)構(gòu)的元數(shù)據(jù)信息和一個(gè)或多個(gè)結(jié)果數(shù)組數(shù)據(jù)元素;(b)源數(shù)據(jù)分析器,其配置為在所述源數(shù)據(jù)中查找第一或下一個(gè)標(biāo)簽名;(c)數(shù)組維處理器,其配置為如果所發(fā)現(xiàn)的標(biāo)簽名對(duì)應(yīng)于數(shù)組名則執(zhí)行以下步驟(i)將維數(shù)計(jì)數(shù)器設(shè)置為新結(jié)果數(shù)組維數(shù);(ii)用數(shù)組標(biāo)簽名、這一維和更高維的所有元素的總長(zhǎng)度(維組長(zhǎng)度)、以及最大數(shù)組元素加載映射數(shù)組;(iii)將維字段計(jì)數(shù)設(shè)置為1;以及(iv)對(duì)于每個(gè)較低層次的維,通過(guò)將維組長(zhǎng)度乘以當(dāng)前維字段計(jì)數(shù)來(lái)計(jì)算維數(shù)組偏移量,并對(duì)結(jié)果求和;(d)數(shù)組元素處理器,其配置為如果所發(fā)現(xiàn)的標(biāo)簽名對(duì)應(yīng)于數(shù)組元素則執(zhí)行以下步驟(i)將維數(shù)計(jì)數(shù)器設(shè)置為對(duì)應(yīng)的維層次;(ii)將對(duì)應(yīng)的標(biāo)簽值存儲(chǔ)在由維字段計(jì)數(shù)加上維數(shù)組偏移量所指示的結(jié)果存儲(chǔ)槽中;(iii)將所述維字段計(jì)數(shù)增加1;以及(iv)對(duì)于同一維層次的連續(xù)源數(shù)據(jù)元素,重復(fù)所述步驟(d)(i)、(d)(ii)和(d)(iii),直到存儲(chǔ)了這一維的所有元素為止;(e)以及數(shù)組映射控制器,其配置為反復(fù)操作所述分析器、所述數(shù)組維處理器、以及所述數(shù)組元素處理器,直到映射了所述源數(shù)據(jù)的所有維和所有元素為止。
      7.如權(quán)利要求6所述的系統(tǒng),其中,所述數(shù)組元素處理器配置為結(jié)合儲(chǔ)存庫(kù)執(zhí)行所述存儲(chǔ)步驟,所述儲(chǔ)存庫(kù)包含對(duì)于存儲(chǔ)槽1的元素結(jié)果數(shù)組偏移量、元素長(zhǎng)度、和元素類型。
      8.如權(quán)利要求6或7所述的系統(tǒng),還包括目標(biāo)數(shù)據(jù)預(yù)加載器,其配置為將狀態(tài)數(shù)據(jù)預(yù)加載到所述目標(biāo)數(shù)據(jù)數(shù)組中。
      9.如權(quán)利要求6或7所述的系統(tǒng),其中,分析器配置為分析可擴(kuò)展標(biāo)記語(yǔ)言分析器,并包括用于可擴(kuò)展標(biāo)記語(yǔ)言分析器的標(biāo)準(zhǔn)應(yīng)用程序編程接口。
      10.一種計(jì)算機(jī)可讀介質(zhì),其被編碼有用于將最初用標(biāo)記語(yǔ)言表示的n維數(shù)組數(shù)據(jù)(“源數(shù)據(jù)”)映射為適合于由商業(yè)應(yīng)用程序使用的n維表(“目標(biāo)數(shù)據(jù)”)的軟件,所述軟件執(zhí)行以下步驟(a)建立可搜索的儲(chǔ)存庫(kù),其包含關(guān)于結(jié)果數(shù)組結(jié)構(gòu)的元數(shù)據(jù)信息和一個(gè)或多個(gè)結(jié)果數(shù)組數(shù)據(jù)元素;(b)分析所述源數(shù)據(jù),以發(fā)現(xiàn)第一或下一個(gè)標(biāo)簽名;(c)如果所發(fā)現(xiàn)的標(biāo)簽名對(duì)應(yīng)于數(shù)組名,則執(zhí)行以下步驟(i)將維數(shù)計(jì)數(shù)器設(shè)置為新的結(jié)果數(shù)組維數(shù);(ii)用數(shù)組標(biāo)簽名、這一維和更高維的所有元素的總長(zhǎng)度(維組長(zhǎng)度)、以及最大數(shù)組元素加載映射數(shù)組;(iii)將維字段計(jì)數(shù)設(shè)置為1;以及(iv)對(duì)于每個(gè)較低層次的維,通過(guò)將維組長(zhǎng)度乘以當(dāng)前維字段計(jì)數(shù)來(lái)計(jì)算維數(shù)組偏移量,并對(duì)結(jié)果求和;(d)如果所發(fā)現(xiàn)的標(biāo)簽名對(duì)應(yīng)于數(shù)組元素,則執(zhí)行以下步驟(i)將維數(shù)計(jì)數(shù)器設(shè)置為對(duì)應(yīng)的維層次;(ii)將對(duì)應(yīng)的標(biāo)簽值存儲(chǔ)在由維字段計(jì)數(shù)加上維數(shù)組偏移量所指示的結(jié)果存儲(chǔ)槽中;(iii)將所述維字段計(jì)數(shù)增加1;以及(iv)對(duì)于同一維層次的連續(xù)源數(shù)據(jù)元素,重復(fù)所述步驟(d)(i)、(d)(ii)和(d)(iii),直到存儲(chǔ)了這一維的所有元素為止;(e)以及重復(fù)步驟(b)、(c)和(d),直到映射了所述源數(shù)據(jù)的所有維為止。
      全文摘要
      采用傾斜樹(shù)、旋轉(zhuǎn)錐形過(guò)程來(lái)將最初采用標(biāo)記語(yǔ)言的n維數(shù)組數(shù)據(jù)映射到適合于由COBOL應(yīng)用程序使用的n維表。在不掃描空存儲(chǔ)槽的結(jié)果數(shù)組的情況下執(zhí)行映射。這允許用狀態(tài)數(shù)據(jù)預(yù)加載該結(jié)果數(shù)組存儲(chǔ)槽。在映射期間,使用具有用于每個(gè)數(shù)組層次的錐形的反轉(zhuǎn)樹(shù)結(jié)構(gòu)來(lái)以二維表示標(biāo)記語(yǔ)言n維數(shù)據(jù)的分級(jí)性質(zhì)。將該樹(shù)傾斜,以使給定層次的成員與樹(shù)圖的一個(gè)軸相接觸,隨后旋轉(zhuǎn)適當(dāng)?shù)腻F形,以使該層次的某成員與同一個(gè)軸相接觸。這導(dǎo)致了使用一維映射數(shù)組的能力。然后,可以將映射軸上的維偏移量用作用于存儲(chǔ)或檢索元素?cái)?shù)據(jù)的映射數(shù)組輸出中的索引值。
      文檔編號(hào)G06F17/30GK1723463SQ200480001806
      公開(kāi)日2006年1月18日 申請(qǐng)日期2004年1月22日 優(yōu)先權(quán)日2003年2月6日
      發(fā)明者詹姆斯·L·霍林斯沃思 申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司
      網(wǎng)友詢問(wèn)留言 已有0條留言
      • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1