本發(fā)明涉及一種伴隨字符編碼體系的變更的數(shù)據(jù)處理技術(shù)。
背景技術(shù):
從超過數(shù)十年之前開始運(yùn)行的信息系統(tǒng)所使用的shift-jis(japaneseindustrialstandards,日本工業(yè)標(biāo)準(zhǔn))等字符編碼體系中,每個(gè)字符的顯示寬度(位數(shù))和數(shù)據(jù)大小(字節(jié)數(shù))相等。例如,shift-jis用1字節(jié)表示由1位構(gòu)成的半角字符,用2字節(jié)表示由2位構(gòu)成的全角字符。因此,信息系統(tǒng)可以以字符為單位進(jìn)行處理,可以準(zhǔn)確無誤地讀出作為處理目標(biāo)的字符數(shù)據(jù)。此外,作為用于上述信息系統(tǒng)的生成的代表性的程序語言,有cobol(commonbusinessorientedlanguage,面向商業(yè)通用語言)。cobol不區(qū)分字符數(shù)據(jù)和作為非字符的二進(jìn)制數(shù)據(jù)而同樣地進(jìn)行處理。
當(dāng)前,隨著全球化,作為字符編碼體系,例如標(biāo)準(zhǔn)采用unicode。unicode相比于shift-jis,不以位數(shù)對(duì)字符進(jìn)行分類,每個(gè)字符的顯示寬度與數(shù)據(jù)大小間沒有預(yù)定的關(guān)系。在此,例如對(duì)于由cobol生成并使用shift-jis等字符編碼體系的信息系統(tǒng),希望將字符編碼體系變更為unicode等。尤其,大多希望將由cobol生成并使用shift-jis等字符編碼體系的從很久以前起運(yùn)行的信息系統(tǒng),通過遷移,用作使用unicode等字符編碼體系的新的信息系統(tǒng)。另外,例如在專利文獻(xiàn)1中公開了遷移的技術(shù)內(nèi)容。
現(xiàn)有技術(shù)文獻(xiàn)
專利文獻(xiàn)
專利文獻(xiàn)1:日本專利第4405571號(hào)公報(bào)
技術(shù)實(shí)現(xiàn)要素:
發(fā)明要解決的課題
但是,即使將字符編碼體系簡單地變更為每個(gè)字符的顯示寬度和數(shù)據(jù)大小間沒有預(yù)定關(guān)系的unicode等,信息系統(tǒng)也無法獲知為了1個(gè)字符的處理而需要讀出的字節(jié)數(shù)。其結(jié)果是在變更后的字符編碼體系中,無法以字符為單位進(jìn)行處理,發(fā)生錯(cuò)誤地讀出作為處理目標(biāo)的字符數(shù)據(jù)的不良情況。以往,字符編碼體系變更時(shí),開發(fā)者提取成為字符數(shù)據(jù)的處理部分的程序代碼,適當(dāng)?shù)剡M(jìn)行修改來消除這樣的不良情況。此外,成為二進(jìn)制數(shù)據(jù)的處理部分的程序代碼的修改,需要與字符數(shù)據(jù)不同的方法。但是,這些人為進(jìn)行的程序代碼的修改多少會(huì)產(chǎn)生錯(cuò)誤,此外,導(dǎo)致遷移的作業(yè)效率的下降、變更字符編碼體系后的信息系統(tǒng)的品質(zhì)下降。
因此,本發(fā)明是鑒于這樣的情況而提出的,其目的是無論處理對(duì)象數(shù)據(jù)的字符編碼體系變更為何種字符編碼體系,都輔助為能夠可靠地進(jìn)行作為目的的處理。
用于解決課題的手段
為了實(shí)現(xiàn)上述目的,本發(fā)明提供一種信息處理裝置,其在作為處理對(duì)象的數(shù)據(jù)的字符編碼體系被變更的情況下,使用變更后的字符編碼體系來對(duì)上述數(shù)據(jù)進(jìn)行處理,其特征在于,該信息處理裝置具備:
數(shù)據(jù)存儲(chǔ)區(qū)域設(shè)定部,其設(shè)定能夠存儲(chǔ)1個(gè)數(shù)據(jù)量的數(shù)據(jù),并且各自的區(qū)域大小均等的數(shù)據(jù)存儲(chǔ)區(qū)域;
標(biāo)志存儲(chǔ)區(qū)域設(shè)定部,其與上述數(shù)據(jù)存儲(chǔ)區(qū)域?qū)?yīng)地設(shè)定標(biāo)志存儲(chǔ)區(qū)域,該標(biāo)志存儲(chǔ)區(qū)域存儲(chǔ)用于識(shí)別存儲(chǔ)在上述數(shù)據(jù)存儲(chǔ)區(qū)域中的數(shù)據(jù)的種類的標(biāo)志;
標(biāo)志存儲(chǔ)區(qū)域讀取部,其讀取存儲(chǔ)有上述標(biāo)志的上述標(biāo)志存儲(chǔ)區(qū)域;以及
數(shù)據(jù)存儲(chǔ)區(qū)域讀取部,其讀取與上述標(biāo)志存儲(chǔ)區(qū)域?qū)?yīng)地設(shè)定的上述數(shù)據(jù)存儲(chǔ)區(qū)域。
對(duì)于其他手段將予以后述。
發(fā)明效果
根據(jù)本發(fā)明,無論處理對(duì)象數(shù)據(jù)的字符編碼體系變更為何種字符編碼體系,都輔助成能夠可靠地進(jìn)行作為目的的處理。
附圖說明
圖1是表示本實(shí)施方式的信息處理裝置的功能結(jié)構(gòu)的圖。
圖2是表示本實(shí)施方式的信息處理裝置的處理的流程圖。
圖3是實(shí)施例1的說明圖。
圖4是實(shí)施例2的說明圖。
圖5是實(shí)施例3的說明圖。
具體實(shí)施方式
以下,參照附圖對(duì)本發(fā)明的實(shí)施方式進(jìn)行詳細(xì)說明。為了便于說明,有時(shí)將數(shù)據(jù)存儲(chǔ)區(qū)域表述為“da”,將標(biāo)志存儲(chǔ)區(qū)域表述為“fa”。
《結(jié)構(gòu)》
本實(shí)施方式的信息處理裝置p是包含輸入部、輸出部、控制部(相當(dāng)于圖1的處理部)以及存儲(chǔ)部(相當(dāng)于圖1的存儲(chǔ)部2、作業(yè)區(qū)域4)這些硬件的計(jì)算機(jī)。例如,控制部由cpu(centralprocessingunit,中央處理單元)構(gòu)成的情況下,包含該控制部的計(jì)算機(jī)進(jìn)行的信息處理通過cpu進(jìn)行的程序執(zhí)行處理來實(shí)現(xiàn)。此外,該計(jì)算機(jī)所包含的存儲(chǔ)部存儲(chǔ)用于根據(jù)cpu的指令實(shí)現(xiàn)該計(jì)算機(jī)的功能的各種程序。由此實(shí)現(xiàn)軟件和硬件的協(xié)作。可以通過存儲(chǔ)在記錄介質(zhì)中或經(jīng)由網(wǎng)絡(luò)來提供上述程序。
如圖1所示,信息處理裝置p具備處理部1、存儲(chǔ)部2、編輯庫3、作業(yè)區(qū)域4和編輯工具5。
處理部1對(duì)信息處理裝置p執(zhí)行的所有處理的整體進(jìn)行控制。處理部1設(shè)為對(duì)象的處理例如包括信息處理裝置p采取的字符編碼體系的轉(zhuǎn)換所需要的處理。
存儲(chǔ)部2是存儲(chǔ)各種形式的信息的部位。存儲(chǔ)部2存儲(chǔ)文件f以及字符編碼轉(zhuǎn)換表t。
文件f為文本文件或二進(jìn)制文件。文件f為文本文件的情況下,處理部1可以將文件f中的字符數(shù)據(jù)的字符編碼體系例如轉(zhuǎn)換為由輸入部等指定的其他字符編碼體系。
字符編碼轉(zhuǎn)換表t針對(duì)屬于預(yù)定字符集合的各個(gè)字符,管理由信息處理裝置p采用的每個(gè)字符編碼體系的字符編碼。處理部1可以按照所采用的字符編碼體系來表現(xiàn)文本文件中的字符數(shù)據(jù)。有字符編碼體系的變更指定的情況下,處理部1可以將按照變更前的字符編碼體系表現(xiàn)的字符數(shù)據(jù)按照變更后的字符編碼體系來表現(xiàn)。
編輯庫3是從存儲(chǔ)部2讀入編輯工具5打開的文件f,并為了使編輯工具5對(duì)讀入的文件f中的數(shù)據(jù)進(jìn)行處理而進(jìn)行必要的處理的可再利用的程序。編輯庫3具備da設(shè)定部31(數(shù)據(jù)存儲(chǔ)區(qū)域設(shè)定部)、fa設(shè)定部32(標(biāo)志存儲(chǔ)區(qū)域設(shè)定部)、fa讀取部33(標(biāo)志存儲(chǔ)區(qū)域讀取部)以及da讀取部34(數(shù)據(jù)存儲(chǔ)區(qū)域讀取部)。上述“必要的處理”通過da設(shè)定部31、fa設(shè)定部32、fa讀取部33和da讀取部34來實(shí)現(xiàn)。
da設(shè)定部31對(duì)作業(yè)區(qū)域4設(shè)定可存儲(chǔ)1個(gè)數(shù)據(jù)量的數(shù)據(jù)且各自的區(qū)域大小均等的da?!?個(gè)數(shù)據(jù)量的數(shù)據(jù)”是指表示1個(gè)字符的字符數(shù)據(jù),或者1字節(jié)量的二進(jìn)制數(shù)據(jù)。表示1個(gè)字符的字符數(shù)據(jù)的數(shù)據(jù)大小,按照信息處理裝置p采用的字符編碼體系成為1字節(jié)或2字節(jié)以上。例如,字符編碼體系為utf-8的情況下,全角字符的1個(gè)字符用3字節(jié)表示。在該情況下,da設(shè)定部31對(duì)作業(yè)區(qū)域4設(shè)定可存儲(chǔ)相當(dāng)于3字節(jié)的字符數(shù)據(jù)的da。
“可存儲(chǔ)1個(gè)數(shù)據(jù)量的數(shù)據(jù)”包含如下意思:將1個(gè)da的區(qū)域大小(容量)設(shè)為取可在信息處理裝置p采用的字符編碼體系中表現(xiàn)的字符數(shù)據(jù)的數(shù)據(jù)大小的最大值相同值的大小,或者,設(shè)為取比上述最大值大的值的大小。例如,字符編碼體系為utf-8的情況下,1個(gè)字符用1~3字節(jié)來表現(xiàn)(例如,半角英數(shù)字符的1個(gè)字符用1字節(jié)表示,一部分運(yùn)算符的1個(gè)字符用2字節(jié)表示,全角字符1個(gè)字符用3字節(jié)表示)。在該情況下,將可在utf-8中表現(xiàn)的字符數(shù)據(jù)的數(shù)據(jù)大小的最大值設(shè)為3字節(jié),將1個(gè)da的區(qū)域大小設(shè)為3字節(jié)或4字節(jié)以上。
此外,通過將各da的區(qū)域大小設(shè)為均等,能夠降低伴隨da設(shè)定的負(fù)荷。也就是說,與1個(gè)數(shù)據(jù)的數(shù)據(jù)大小對(duì)應(yīng)地適當(dāng)變更da的區(qū)域大小的處理,是低效的且伴隨較大的負(fù)荷,因此不進(jìn)行這樣的處理。
fa設(shè)定部32將fa與da對(duì)應(yīng)地設(shè)定于作業(yè)區(qū)域4,其中,fa存儲(chǔ)用于識(shí)別存儲(chǔ)在da中的數(shù)據(jù)種類的標(biāo)志。標(biāo)志例如有識(shí)別二進(jìn)制數(shù)據(jù)的標(biāo)志、識(shí)別字符數(shù)據(jù)的標(biāo)志、識(shí)別特定數(shù)據(jù)的標(biāo)志,但對(duì)于字符數(shù)據(jù)例如可以使用識(shí)別半角字符的標(biāo)志、識(shí)別全角字符的一部分的標(biāo)志(詳細(xì)內(nèi)容予以后述)。另外,1個(gè)fa的區(qū)域大小可以任意設(shè)定,但優(yōu)選小于1個(gè)da的區(qū)域大小(示例:1個(gè)fa的區(qū)域大小為4比特)。
fa讀取部33讀取存儲(chǔ)有標(biāo)志的fa。fa讀取部33取得存儲(chǔ)在所讀取的fa中的標(biāo)志。
da讀取部34讀取與fa對(duì)應(yīng)地設(shè)定的da。da讀取部34根據(jù)與所讀取的da對(duì)應(yīng)的存儲(chǔ)在所讀取的fa中的標(biāo)志,取得存儲(chǔ)在該da中的數(shù)據(jù)。
作業(yè)區(qū)域4是通過信息處理裝置p進(jìn)行數(shù)據(jù)讀寫的區(qū)域。作業(yè)區(qū)域4包括由da設(shè)定部31設(shè)定的da、以及由fa設(shè)定部設(shè)定的fa。
編輯工具5是具有文件f的編輯功能的軟件(信息系統(tǒng))。編輯工具5如下那樣轉(zhuǎn)換程序語言,即,利用公知的自動(dòng)轉(zhuǎn)換工具將原本(遷移前)由cobol記述的程序代碼設(shè)為由java(注冊(cè)商標(biāo))記述的程序代碼。由cobol記述的程序代碼的邏輯和由java記述的程序代碼的邏輯相同。編輯工具5鏈接到編輯庫3。
向信息處理裝置p導(dǎo)入了編輯庫3以及編輯工具5,以便即使進(jìn)行了從cobol向java的轉(zhuǎn)換,通過遷移而保有文件f的信息處理裝置p也能夠利用由cobol示出的邏輯來對(duì)文件f進(jìn)行處理。
另外,本發(fā)明的轉(zhuǎn)換前的程序語言并不限定于cobol,也可以是其他程序語言。此外,本發(fā)明的轉(zhuǎn)換后的程序語言并不限定于java,也可以是其他程序語言。
《處理》
如圖2所示,本實(shí)施方式的信息處理裝置p為了進(jìn)行文件f的編輯處理,按照以下的順序進(jìn)行動(dòng)作。該順序在處理部1的控制下進(jìn)行,從步驟s01開始。
在步驟s01中,編輯工具5調(diào)用編輯庫3。編輯工具5將成為編輯處理的對(duì)象的文件f通知給編輯庫3。步驟s01之后,向步驟s02前進(jìn)。
在步驟s02中,編輯庫3讀入成為編輯處理的對(duì)象的文件f。讀入了文件f時(shí),以字節(jié)單位依次讀出文件f中的數(shù)據(jù)。步驟s02之后,向步驟s03前進(jìn)。
在步驟s03中,da設(shè)定部31對(duì)作業(yè)區(qū)域4設(shè)定da,fa設(shè)定部32對(duì)作業(yè)區(qū)域4設(shè)定fa。步驟s03之后,向步驟s04前進(jìn)。
在步驟s04中,da設(shè)定部31依次對(duì)所設(shè)定的各個(gè)da存儲(chǔ)1個(gè)數(shù)據(jù)量的從文件f讀取的數(shù)據(jù),并且fa設(shè)定部32依次對(duì)所設(shè)定的各個(gè)fa存儲(chǔ)在da中存儲(chǔ)的數(shù)據(jù)的標(biāo)志。另外,例如編輯工具5調(diào)用編輯庫3后(步驟s01),可以通過fa設(shè)定部32確認(rèn)由編輯工具5的程序代碼的執(zhí)行部分定義的數(shù)據(jù)項(xiàng)目來決定存儲(chǔ)在由fa設(shè)定部32設(shè)定的各fa中的標(biāo)志的值。此外,da設(shè)定部31根據(jù)存儲(chǔ)在fa中的標(biāo)志,對(duì)所設(shè)定的各da存儲(chǔ)1個(gè)數(shù)據(jù)量的數(shù)據(jù)。步驟s04之后,向步驟s05前進(jìn)。
在步驟s05中,fa讀取部33依次讀取所設(shè)定的fa,依次取得存儲(chǔ)在fa中的標(biāo)志。步驟s05之后,向步驟s06前進(jìn)。
在步驟s06中,da讀取部34依次讀取與所讀取的fa對(duì)應(yīng)地設(shè)定的da,并取得存儲(chǔ)在所讀取的da中的數(shù)據(jù)。此時(shí),所取得的數(shù)據(jù)成為根據(jù)從所讀取的fa已取得的標(biāo)志的值而決定的1個(gè)數(shù)據(jù)量的數(shù)據(jù)(詳細(xì)內(nèi)容予以后述)。通過da讀取部34依次將所取得的數(shù)據(jù)發(fā)送給編輯工具5。步驟s06之后,向步驟s07前進(jìn)。
在步驟s07中,編輯工具5對(duì)從編輯庫3的da讀取部34取得的數(shù)據(jù)進(jìn)行編輯處理。與不參照標(biāo)志地訪問數(shù)據(jù),對(duì)數(shù)據(jù)本身進(jìn)行解析并進(jìn)行編輯處理的情況相比,如步驟s05那樣參照標(biāo)志來識(shí)別數(shù)據(jù)的種類后進(jìn)行基于本步驟的數(shù)據(jù)的編輯處理能夠縮短數(shù)據(jù)自身的解析所需要的時(shí)間,因此能夠提高編輯處理的速度。另外,對(duì)于與標(biāo)志對(duì)應(yīng)的編輯處理的具體例將予以后述。
在步驟s08中,編輯工具5輸出數(shù)據(jù)的編輯處理的處理結(jié)果。輸出目的地、輸出方式等根據(jù)編輯處理的目的而各種各樣,在此省略說明。步驟s08之后,結(jié)束圖2的處理。
根據(jù)本實(shí)施方式,在文件f中的處理對(duì)象的數(shù)據(jù)的字符編碼體系(例如,每個(gè)字符的顯示寬度和數(shù)據(jù)大小相同的shift-jis)被變更,利用變更后的字符編碼體系(例如,每個(gè)字符的顯示寬度和數(shù)據(jù)大小間沒有預(yù)定關(guān)系的unicode)對(duì)上述數(shù)據(jù)進(jìn)行處理的情況下,導(dǎo)出以下內(nèi)容。
首先,編輯庫3將各種數(shù)據(jù)大小的1個(gè)數(shù)據(jù)依次存儲(chǔ)在所設(shè)定的各da中,將識(shí)別數(shù)據(jù)種類的標(biāo)志存儲(chǔ)在所對(duì)應(yīng)的各fa中。也就是說,成為編輯工具5的處理對(duì)象的1個(gè)數(shù)據(jù)通過da來確定,并對(duì)每一個(gè)數(shù)據(jù)確定數(shù)據(jù)的種類。
因此,(當(dāng)前雖然用java記述程序代碼)通過只能用字符的顯示寬度確定數(shù)據(jù)大小的cobol構(gòu)建了程序代碼的邏輯的編輯工具5僅采用調(diào)用對(duì)各da中的全體數(shù)據(jù)、以及與各da對(duì)應(yīng)的各fa中的標(biāo)志進(jìn)行參照的編輯庫3的統(tǒng)一的順序即可。這樣,即使編輯工具5無法通過變更后的字符編碼體系來確定數(shù)據(jù)大小,也能夠可靠地處理成為編輯處理的目標(biāo)的1個(gè)數(shù)據(jù)。
此外,通過不(無法)區(qū)分?jǐn)?shù)據(jù)種類而同樣地進(jìn)行處理的cobol(將字符數(shù)據(jù)和二進(jìn)制數(shù)據(jù)都代入到x項(xiàng)目中并同樣地進(jìn)行處理)構(gòu)建了程序代碼的邏輯的編輯工具5僅采用調(diào)用參照在各fa中存儲(chǔ)的標(biāo)志的編輯庫3的統(tǒng)一的順序即可。這樣,即使編輯工具5自身不區(qū)分?jǐn)?shù)據(jù)的種類,也能夠準(zhǔn)確無誤地輸出適于數(shù)據(jù)種類的處理結(jié)果。
此外,編輯工具5與編輯庫3鏈接,必要時(shí)動(dòng)態(tài)地調(diào)用編輯庫3即可。由此,不需要過度地修改編輯工具5的程序代碼本身,能夠?qū)⑷藶榈某绦虼a的修改錯(cuò)誤防范于未然。
因此,無論處理對(duì)象的數(shù)據(jù)的字符編碼體系被變更為何種字符編碼體系,都輔助成能夠可靠地執(zhí)行作為目的的處理。
對(duì)于本實(shí)施方式的具體的用途,以實(shí)施例1~3詳細(xì)進(jìn)行說明。
[實(shí)施例1]
本實(shí)施方式的信息處理裝置p,即使根據(jù)進(jìn)行處理的字符編碼體系,處理單位為1字節(jié)以上的字符數(shù)據(jù),或是處理單位為1字節(jié)的二進(jìn)制數(shù)據(jù),都能夠使用編輯庫3,使編輯工具5同樣地進(jìn)行編輯處理。
說明編輯工具5對(duì)文件f(二進(jìn)制文件)中的二進(jìn)制數(shù)據(jù)“0xff,0x01”進(jìn)行編輯處理的情況。將變更后的字符編碼體系設(shè)為utf-32(用4字節(jié)表示1個(gè)字符),將da的各區(qū)域大小一律設(shè)為4字節(jié)。在該情況下,成為兩個(gè)1字節(jié)的二進(jìn)制數(shù)據(jù)的“0xff,0x01”,分別例如作為“0x000000ff,0x00000001”存儲(chǔ)在由da設(shè)定部31設(shè)定的2個(gè)da中(存儲(chǔ)方式各種各樣,只要能夠存儲(chǔ)1個(gè)數(shù)據(jù)的量,則也不限定于后述方式)。此外,編輯庫3通過fa設(shè)定部32確認(rèn)在對(duì)自身進(jìn)行調(diào)用的編輯工具5的程序代碼的執(zhí)行部分定義的數(shù)據(jù)項(xiàng)目,而獲知需要對(duì)編輯工具5發(fā)送二進(jìn)制數(shù)據(jù)。因此,作為表示da中存儲(chǔ)的數(shù)據(jù)為二進(jìn)制數(shù)據(jù)的標(biāo)志,例如若使用“﹣1”,則fa設(shè)定部32在與2個(gè)da分別對(duì)應(yīng)的各fa中存儲(chǔ)“﹣1”。圖3示出了向存儲(chǔ)的二進(jìn)制數(shù)據(jù)“0xff,0x01”分配了標(biāo)志“﹣1”的情況。
因此,編輯庫3通過fa讀取部33來取得fa中存儲(chǔ)的“﹣1”,由此能夠判定da中存儲(chǔ)的數(shù)據(jù)不是字符數(shù)據(jù)而是二進(jìn)制數(shù)據(jù),能夠通過da讀取部34可靠地作為二進(jìn)制數(shù)據(jù)“0xff,0x01”而取得。也就是說,不會(huì)將da中存儲(chǔ)的兩個(gè)1字節(jié)的二進(jìn)制數(shù)據(jù)“0xff,0x01”錯(cuò)誤地作為兩個(gè)4字節(jié)的字符數(shù)據(jù)“0x000000ff,0x00000001”(具有該值的字符)而取得,向da的存儲(chǔ)時(shí)間點(diǎn)的數(shù)據(jù)大小以及數(shù)據(jù)種類、從da的取得時(shí)間點(diǎn)的數(shù)據(jù)大小以及數(shù)據(jù)種類不會(huì)發(fā)生變化。其結(jié)果是,編輯庫3可以將二進(jìn)制數(shù)據(jù)“0xff,0x01”可靠地發(fā)送到編輯工具5。
同樣地,例如在utf-32中,表示半角字符“1”的字符數(shù)據(jù)“0x00000031”(4字節(jié))例如作為“0x00000031”而存儲(chǔ)在da(將區(qū)域大小設(shè)定為4字節(jié))中。在該情況下,fa設(shè)定部32確認(rèn)由編輯工具5的程序代碼的執(zhí)行部分定義的數(shù)據(jù)項(xiàng)目,由此,編輯庫3能夠獲知需要對(duì)編輯工具5發(fā)送字符數(shù)據(jù)。因此,在與該da對(duì)應(yīng)的fa中存儲(chǔ)表示是半角字符的標(biāo)志“0”。因此,編輯庫3通過fa讀取部33取得fa中存儲(chǔ)的“0”,由此能夠判定為da中存儲(chǔ)的數(shù)據(jù)不是二進(jìn)制數(shù)據(jù)而是字符數(shù)據(jù),能夠通過da讀取部34可靠地作為字符數(shù)據(jù)“0x00000031”(4字節(jié))而取得。也就是說,不會(huì)將da中存儲(chǔ)的字符數(shù)據(jù)“0x00000031”(4字節(jié))錯(cuò)誤地作為1字節(jié)的二進(jìn)制數(shù)據(jù)“0x31”而取得,向da的存儲(chǔ)時(shí)間點(diǎn)的數(shù)據(jù)大小以及數(shù)據(jù)種類、從da的取得時(shí)間點(diǎn)的數(shù)據(jù)大小以及數(shù)據(jù)種類不會(huì)發(fā)生變化。其結(jié)果是,編輯庫3可以將字符數(shù)據(jù)“0x00000031”可靠地發(fā)送到編輯工具5。
如果不設(shè)定fa的情況下,在與進(jìn)行編輯處理的其他信息處理裝置(例如,不知道本實(shí)施方式的信息處理裝置p所具備的編輯庫3的存在的裝置)的數(shù)據(jù)的交換等中發(fā)生問題。例如,在信息處理裝置p中,從keis(kanjiprocessingextendedinformationsystem。每個(gè)字符的顯示寬度和數(shù)據(jù)大小相同的字符編碼體系之一)變更為utf-16(每個(gè)字符的顯示寬度和數(shù)據(jù)大小間沒有預(yù)定關(guān)系的字符編碼體系之一)的情況下,da設(shè)定部31設(shè)定的da成為2字節(jié)(或2字節(jié)以上)。例如,將從二進(jìn)制文件讀出的二進(jìn)制數(shù)據(jù)“0x31”作為“0x0031”存儲(chǔ)在1個(gè)da中。此時(shí),不設(shè)定fa,不區(qū)分da中存儲(chǔ)的數(shù)據(jù)是字符數(shù)據(jù)還是二進(jìn)制數(shù)據(jù)時(shí),將從da取得的數(shù)據(jù)作為“0x0031”,與本來存儲(chǔ)的二進(jìn)制數(shù)據(jù)“0x31”數(shù)據(jù)大小不同。結(jié)果,編輯工具5對(duì)與本來不同的所取得的數(shù)據(jù)進(jìn)行編輯處理,信息處理裝置p將與本來不同的處理結(jié)果輸出到其他信息處理裝置。
根據(jù)實(shí)施例1,編輯庫3設(shè)定fa,參照fa中存儲(chǔ)的標(biāo)志來判定da中存儲(chǔ)的數(shù)據(jù)的種類,并將數(shù)據(jù)發(fā)送給編輯工具5。因此,無論作為處理對(duì)象的數(shù)據(jù)的字符編碼體系變更為何種字符編碼體系,都可以輔助成能夠可靠地進(jìn)行作為目的的處理。
[實(shí)施例2]
作為每個(gè)字符的顯示寬度(位數(shù))和數(shù)據(jù)大小(字節(jié)數(shù))相同的變更前的字符編碼體系的代表例的shift-jis,用2字節(jié)表示由2位形成的全角字符。在該情況下,能夠參照字節(jié)本身來確定表現(xiàn)1個(gè)字符的各字節(jié)為第幾位(位順序)。不將字符以位數(shù)進(jìn)行分類,而簡單變更為每個(gè)字符的顯示寬度和數(shù)據(jù)大小間沒有預(yù)定關(guān)系的utf-32等的情況下,即使參照讀出的字節(jié)本身也無法確定從文件f讀出的1字節(jié)為第幾位。
本實(shí)施方式的信息處理裝置p在從成為文本文件的文件f讀出了字符數(shù)據(jù)的情況下,設(shè)定da以及fa以便能夠區(qū)分字符數(shù)據(jù)為半角字符還是全角字符,并且為了準(zhǔn)確無誤地取得作為目的的字符數(shù)據(jù)而可以保持所讀出的字符數(shù)據(jù)的位順序。
說明編輯工具5對(duì)字符串“ab12あ9zzz”(“あ”以外的字符為半角字符“あ”為全角字符)進(jìn)行編輯處理的情況。另外,例如將變更后的字符編碼體系設(shè)為utf-32的情況下,各字符為4字節(jié)數(shù)據(jù),各個(gè)da的區(qū)域大小例如為4字節(jié)。在該情況下,編輯庫3通過fa設(shè)定部32確認(rèn)由調(diào)用了自身的編輯工具5的程序代碼的執(zhí)行部分定義的數(shù)據(jù)項(xiàng)目,針對(duì)半角字符,將表示是半角字符的標(biāo)志“0”存儲(chǔ)在fa中。
對(duì)于在變更前的字符編碼體系(例:shift-jis)中用2位來表現(xiàn)的全角字符“あ”,準(zhǔn)備2個(gè)da,將“あ”字符數(shù)據(jù)冗余地存儲(chǔ)在各da中,由此保持字符編碼體系變更前后的1個(gè)字符的位數(shù)。此外,fa設(shè)定部32對(duì)存儲(chǔ)在左側(cè)的da中的全角字符“あ”,將表示全角字符的第1位(左半部分)的“1”存儲(chǔ)在fa中,并且,對(duì)于存儲(chǔ)在右側(cè)的da中的全角字符“あ”,將表示全角字符的第2位(右半部分)的“2”存儲(chǔ)在fa中。在圖4中示出了在排列了預(yù)定數(shù)量的da中存儲(chǔ)“ab12あ9zzz”的字符串?dāng)?shù)據(jù),并向各字符分配標(biāo)志“0”、“1”、“2”的情況。
如果變更前的字符編碼體系將特定的1個(gè)字符用n位以上表現(xiàn)的情況下(n=1,2,3,…),準(zhǔn)備n個(gè)da,將該特定的1個(gè)字符的字符數(shù)據(jù)冗余地存儲(chǔ)在n個(gè)da中,并且表示該特定的1個(gè)字符的位順序,可以將值分別不同的n個(gè)標(biāo)志存儲(chǔ)在n個(gè)fa中。
因此,fa讀取部33從fa取得了標(biāo)志的情況下,可以使用標(biāo)志來判定對(duì)應(yīng)的da中的字符數(shù)據(jù)為半角字符或全角字符,全角字符的情況下為第幾位。因此,編輯庫3能夠通過fa讀取部33參照標(biāo)志,來高速地判定存儲(chǔ)在da中的字符數(shù)據(jù)的種類。其結(jié)果是,編輯庫3能夠?qū)庉嫻ぞ?準(zhǔn)確無誤地發(fā)送作為目標(biāo)的字符數(shù)據(jù)。
根據(jù)圖4,編輯庫3即使取得存儲(chǔ)在從左起第6個(gè)da中的全角字符“あ”,也無法獲知位順序(“あ”為第1位還是第2位)。為了獲知位順序,需要從左開頭起按順序調(diào)查da。在本實(shí)施例中,在單獨(dú)取出了從左起第6個(gè)da所對(duì)應(yīng)的fa的標(biāo)志“2”的時(shí)間點(diǎn),能夠高速地判定存儲(chǔ)在da中的數(shù)據(jù)為全角字符的第2位。此外,即使如字符串“あああああ”等那樣相同的全角字符連續(xù)的情況下,只要參照fa的標(biāo)志,就能夠高速地判定對(duì)應(yīng)的da中的字符數(shù)據(jù)“あ”是表示第1位(左半部分)還是第2位(右半部分)。
在編輯工具5的編輯處理中,有時(shí)想要輸出從文本數(shù)據(jù)讀出的字符數(shù)據(jù)“あ”的下一字符數(shù)據(jù)“い”。例如,字符編碼體系為shift-jis的情況下,需要對(duì)“あ”的第2位的值加2(對(duì)“あ”的第1位的值加2時(shí)輸出其他字符)。編輯庫3首先取出標(biāo)志“2”的fa,從而能夠高速確定“あ”的第2位(并非第1位),因此能夠高速地通過編輯工具5進(jìn)行字符數(shù)據(jù)“い”的輸出。此外,也可以使進(jìn)行這樣的編輯處理的程序代碼的遷移變得容易。
此外,若編輯庫3取得存儲(chǔ)在從左起第5個(gè)fa中的標(biāo)志“1”,則能夠高速地判定存儲(chǔ)在da中的數(shù)據(jù)為全角字符的第1位。進(jìn)而,標(biāo)志“1”的存在能夠高概率地約束標(biāo)志“2”的存在,因此能夠高速地判定還需要取得從左起第6個(gè)da中的數(shù)據(jù)(第2位)。
[實(shí)施例3]
本實(shí)施方式的da具有如下優(yōu)點(diǎn):使區(qū)域大小均等,數(shù)據(jù)大小不同的字符數(shù)據(jù)和二進(jìn)制數(shù)據(jù)都能夠采用同樣的存儲(chǔ)方式,在變更后的字符編碼體系中使數(shù)據(jù)的讀寫變得容易。但是,unicode與shift-jis、keis相比,表現(xiàn)1個(gè)字符的字節(jié)數(shù)增大,每一個(gè)字符的平均數(shù)據(jù)大小變大。此外,對(duì)于二進(jìn)制數(shù)據(jù),將1字節(jié)量的數(shù)據(jù)存儲(chǔ)在區(qū)域大小達(dá)到多個(gè)字節(jié)數(shù)的1個(gè)da中,浪費(fèi)較多。因此,在字符編碼體系的變更前后,即使對(duì)相同數(shù)據(jù)進(jìn)行處理,字符編碼體系變更后編輯庫3內(nèi)的向da的訪問字節(jié)數(shù)變多,使用較多的存儲(chǔ)器帶寬資源。這可能會(huì)導(dǎo)致信息處理裝置p的性能下降。
因此,對(duì)于存儲(chǔ)在da中的數(shù)據(jù)中的具有特定值的數(shù)據(jù),不需要da讀取部34向該數(shù)據(jù)的訪問,在對(duì)應(yīng)的fa中,fa設(shè)定部32存儲(chǔ)表示存儲(chǔ)有具有該特定值的數(shù)據(jù)的標(biāo)志(例如“5”)。可以將特定值設(shè)為編輯處理上的頻現(xiàn)值,例如作為具有特定值的數(shù)據(jù),可以采用經(jīng)常用作變量初始值的二進(jìn)制數(shù)據(jù)“0x00”。另外,將變更后的字符編碼體系例如設(shè)為utf-32,將da的區(qū)域大小例如設(shè)為4字節(jié)。此外,將fa的區(qū)域大小以及存儲(chǔ)在fa中的標(biāo)志的數(shù)據(jù)大小設(shè)為4比特,但標(biāo)志的數(shù)據(jù)大小并不限定于4比特。
如圖5所示,說明通過da設(shè)定部31對(duì)2個(gè)da存儲(chǔ)2個(gè)二進(jìn)制數(shù)據(jù)“0x00,0xab”,在對(duì)應(yīng)的2個(gè)fa中通過fa設(shè)定部32存儲(chǔ)了標(biāo)志“5”的情況。首先,fa讀取部33訪問fa并取得4比特的標(biāo)志“5”(參照?qǐng)D2的步驟s05)。在該階段,fa讀取部33視為在存儲(chǔ)有標(biāo)志“5”的fa所對(duì)應(yīng)的da中存儲(chǔ)有二進(jìn)制數(shù)據(jù)“0x00”,da讀取部34省略訪問4字節(jié)的da的處理(省略圖2的步驟s06)。作為結(jié)果,針對(duì)1個(gè)da,可以將訪問字節(jié)數(shù)從4字節(jié)降低為4比特。另外,編輯庫3將二進(jìn)制數(shù)據(jù)“0x00”發(fā)送到編輯工具5。
在圖5中,對(duì)于存儲(chǔ)有二進(jìn)制數(shù)據(jù)“0xab”的da,在對(duì)應(yīng)的fa中也存儲(chǔ)有標(biāo)志“5”,因此fa讀取部33視為存儲(chǔ)有二進(jìn)制數(shù)據(jù)“0x00”,省略da讀取部34向da的訪問。另外,編輯庫3將二進(jìn)制數(shù)據(jù)“0x00”發(fā)送給編輯工具5。也就是說,fa讀取部33不論實(shí)際存儲(chǔ)的二進(jìn)制數(shù)據(jù)為什么數(shù)據(jù),都視為存儲(chǔ)有二進(jìn)制數(shù)據(jù)“0x00”。但是,在編輯工具5進(jìn)行的編輯處理中,存在不論二進(jìn)制數(shù)據(jù)的值本身的編輯處理,對(duì)于這樣的編輯處理,使用標(biāo)志“5”的方法是有用的。作為上述編輯處理,例如有一次大量地將cobol的初始化(initialize)命令等的數(shù)據(jù)項(xiàng)目的值設(shè)定為特定值的編輯處理。此外,作為特定值,也可以采用cobol的低值(low-value)(0x00)、高值(high-value)(0xff)。
因此,根據(jù)實(shí)施例3,可以通過將具有特定值的標(biāo)志存儲(chǔ)在fa中來省略訪問da的步驟。因此,即使變更字符編碼體系后平均數(shù)據(jù)大小變大,也能夠抑制向da的訪問字節(jié)數(shù)的增大。其結(jié)果是,能夠避免使用較多的存儲(chǔ)器帶寬資源而導(dǎo)致信息處理裝置p的性能下降的情況。
另外,在圖5中,對(duì)二進(jìn)制數(shù)據(jù)進(jìn)行了說明,但也可以對(duì)字符數(shù)據(jù)應(yīng)用本實(shí)施例。例如,可以將上述的特定值設(shè)為半角的字符數(shù)據(jù)“0”(在utf-32中為“0x00000030”,在utf-8中為“0x30”)。在該情況下,在fa中存儲(chǔ)有標(biāo)志“5”時(shí),視為在對(duì)應(yīng)的da中存儲(chǔ)有字符數(shù)據(jù)“0”,可以省略向da的訪問。
《其他》
(1)在本實(shí)施方式中,通過da設(shè)定部31在da中存儲(chǔ)了字符數(shù)據(jù)的情況下,da讀取部34從da取得字符數(shù)據(jù),通過da設(shè)定部31在da中存儲(chǔ)了二進(jìn)制數(shù)據(jù)的情況下,da讀取部34從da取得二進(jìn)制數(shù)據(jù)。但是,與編輯工具5的編輯處理的目的對(duì)應(yīng)地,在da中存儲(chǔ)了字符數(shù)據(jù)的情況下,也可以從da取得二進(jìn)制數(shù)據(jù),在da中存儲(chǔ)了二進(jìn)制數(shù)據(jù)的情況下,也可以從da取得字符數(shù)據(jù)。這是因?yàn)榧词乖谶@些情況下,在對(duì)應(yīng)的fa中也存儲(chǔ)有用于識(shí)別da中存儲(chǔ)的數(shù)據(jù)的種類的正確的標(biāo)志。
(2)在本實(shí)施方式中,從shift-jis等將由1位構(gòu)成的半角字符用1字節(jié)來表示,將由2位構(gòu)成的全角字符用2字節(jié)表示的字符編碼體系變更為unicode等的情況下,作為存儲(chǔ)于fa的標(biāo)志而使用表示半角字符的“0”、表示全角字符的第1位(左半部分)的“1”、表示全角字符的第2位(右半部分)的“2”。但是,若訪問存儲(chǔ)在各da中的字符數(shù)據(jù)本身,則能夠?qū)Π虢亲址M(jìn)行判定,也能夠?qū)θ亲址M(jìn)行判定(在多個(gè)da中冗余地存儲(chǔ),因此全角字符的位順序不明確)。因此,例如通過至少僅對(duì)全角字符的第1位(左半部分)或第2位(右半部分)分配標(biāo)志,對(duì)其他字符數(shù)據(jù)不分配標(biāo)志,也能夠進(jìn)行每個(gè)da的字符數(shù)據(jù)的分類。
(3)在本實(shí)施方式中,在實(shí)施例1~3中,將fa兼用作數(shù)據(jù)種類判定用(實(shí)施例1)、字符數(shù)據(jù)的位順序判定用(實(shí)施例2)、具有頻現(xiàn)的特定值的數(shù)據(jù)判定用(實(shí)施例3),并設(shè)定于作業(yè)區(qū)域4。但是,例如也可以根據(jù)實(shí)施例1~3的用途分別準(zhǔn)備fa并設(shè)定于作業(yè)區(qū)域4。此外,實(shí)施例1~3的fa即使與da對(duì)應(yīng)也可以設(shè)定為與da不同的存儲(chǔ)區(qū)域。但是,也可以包含所對(duì)應(yīng)的da地設(shè)定fa。具體地,將字符編碼體系變更為utf-32的情況下,將成為4字節(jié)的字符數(shù)據(jù)的未使用部分的上位數(shù)比特用作fa,并將標(biāo)志存儲(chǔ)在該上位數(shù)比特中。此外,可以將da的區(qū)域大小設(shè)為5字節(jié),在將4字節(jié)的字符數(shù)據(jù)存儲(chǔ)在各da中的同時(shí),也可以將剩余的1字節(jié)用作fa,將1字節(jié)以下的標(biāo)志存儲(chǔ)在該剩余的1字節(jié)中。這樣,對(duì)于da以及fa,可以采用各種方式。
(4)對(duì)于da設(shè)定部31在作業(yè)區(qū)域4中設(shè)定的橫向排列的da(參照?qǐng)D1),可以從圖1的左側(cè)向右側(cè),從最上位的字節(jié)開始依次存儲(chǔ)于相應(yīng)的da中或從da取得(大端:bigendian),也可以從圖1的左側(cè)向右側(cè),從最下位的字節(jié)開始依次存儲(chǔ)于相應(yīng)的da中或從da取得(小端:littleendian)。因此,對(duì)橫向排列的da存儲(chǔ)或取得字符串?dāng)?shù)據(jù)的情況下,可以將表示全角字符的字節(jié)的存儲(chǔ)順序如圖4所示的全角字符“あ”那樣,設(shè)為第1位→第2位這樣的與位順序相同的順序,也可以設(shè)為第2位→第1位這樣的與位順序相反的順序。上述說明也適用于fa。
此外,也可以實(shí)現(xiàn)將在本實(shí)施方式中說明的各種技術(shù)進(jìn)行適當(dāng)組合而得的技術(shù)。
可以將本實(shí)施方式中說明的軟件實(shí)現(xiàn)為硬件,也可以將硬件實(shí)現(xiàn)為軟件。
此外,對(duì)于硬件、軟件、流程圖等,在不脫離本發(fā)明的主旨的范圍內(nèi)可進(jìn)行適當(dāng)變更。
符號(hào)說明
p信息處理裝置;
1處理部;
2存儲(chǔ)部;
3編輯庫;
31da設(shè)定部(數(shù)據(jù)存儲(chǔ)區(qū)域設(shè)定部);
32fa設(shè)定部(標(biāo)志存儲(chǔ)區(qū)域設(shè)定部)
33fa讀取部(標(biāo)志存儲(chǔ)區(qū)域讀取部);
34da讀取部(數(shù)據(jù)存儲(chǔ)區(qū)域讀取部);
4作業(yè)區(qū)域;
5編輯工具;
f文件;
t字符編碼轉(zhuǎn)換表。