欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

應(yīng)用程序和文件生成程序系統(tǒng)和方法

文檔序號(hào):6411188閱讀:363來(lái)源:國(guó)知局
專(zhuān)利名稱(chēng):應(yīng)用程序和文件生成程序系統(tǒng)和方法
技術(shù)領(lǐng)域
本發(fā)明一般地涉及一種自動(dòng)程序和文件生成程序系統(tǒng),特別地,涉及一種多級(jí)的、基于規(guī)則的系統(tǒng),用于管理一程序和文件編制說(shuō)明(specifications)的并行開(kāi)發(fā),其中程序和文件編制說(shuō)明然后被處理成程序碼,和直接對(duì)應(yīng)于用戶文件編制。
隨著應(yīng)用程序復(fù)雜性的增加,伴隨著對(duì)所有應(yīng)用程序操作級(jí)上不斷增長(zhǎng)的不同的和特殊的功能性需求,各種被稱(chēng)為程序綜合器、應(yīng)用程序生成器和自生成系統(tǒng)的產(chǎn)品的自動(dòng)程序生成,是所特別期望的。隨著應(yīng)用程序綜合性的增加,以寬的和高度可配置的功能性來(lái)設(shè)計(jì)、實(shí)現(xiàn)、維護(hù)和文件編制(document)應(yīng)用程序的能力則下降。并且,訓(xùn)練和文件編制必須處理這種應(yīng)用程序所包括的各種選擇。
為了減輕不必要的復(fù)雜性和存在的配置(configuration)選擇,同時(shí)避免專(zhuān)用應(yīng)用程序的全部重新設(shè)計(jì)、實(shí)現(xiàn)、維護(hù)和文件編制的必要性,已經(jīng)提出了各種程序生成器?;蛟S程序生成器最普遍的形式就是通常與數(shù)據(jù)庫(kù)管理系統(tǒng)一起應(yīng)用或者作為數(shù)據(jù)庫(kù)管理系統(tǒng)一部分的格式和報(bào)告生成器外殼(formand report generator shell)。這些系統(tǒng)通過(guò)對(duì)存儲(chǔ)在一基礎(chǔ)的、預(yù)定義的數(shù)據(jù)庫(kù)管理系統(tǒng)中的字段位置、數(shù)據(jù)類(lèi)型和格式以及與數(shù)據(jù)的關(guān)系的識(shí)別,合理地允許全屏幕和報(bào)告設(shè)計(jì)(layout)定義。生成一操作程序,該程序通過(guò)基于在格式、報(bào)告和數(shù)據(jù)庫(kù)字段之間限定的對(duì)應(yīng)關(guān)系的報(bào)告,允許通過(guò)格式和數(shù)據(jù)輸出進(jìn)行用戶數(shù)據(jù)交換。引入數(shù)據(jù)字典這個(gè)概念以部分地在定義數(shù)據(jù)庫(kù)字段和格式和報(bào)告字段之間來(lái)支持關(guān)系對(duì)應(yīng)的內(nèi)部文件編制。這種系統(tǒng)很少提供對(duì)應(yīng)用程序的設(shè)計(jì)的額外的支持,對(duì)于處理傳輸?shù)交騺?lái)自數(shù)據(jù)庫(kù)的數(shù)據(jù)的功能邏輯的支持,如果有的話,也非常少,并且其本質(zhì)上沒(méi)有生成程序的自動(dòng)文件編制。
為了較大程度地支持內(nèi)部功能(functional)能力,已經(jīng)提出了基于預(yù)先建立程序部分庫(kù)的程序綜合器。美國(guó)專(zhuān)利No.4,949,253中描述了一種基于庫(kù)的程序綜合器。所描述的程序生成器從定義的數(shù)據(jù)來(lái)操作,以從一個(gè)部分原型庫(kù)中選擇一個(gè)程序部分原型(program part phototype)的最佳匹配。由庫(kù)存儲(chǔ)的每一程序部分原型是預(yù)先定義的,并作為庫(kù)的部分(part)靜態(tài)保持,直到程序生成期間選擇為止。程序部分原型被選擇后,通過(guò)宏指令(macro)置換來(lái)處理,以將部分原型的接口同一預(yù)先處理的部分原型(phototype)合并,并且進(jìn)一步地,將部分原型應(yīng)用的變量名與預(yù)先處理的部分原型的變量名統(tǒng)一。
然而,在功能項(xiàng)中,每一部分原型的性能本質(zhì)上是在最初建立時(shí)固定在部分原型庫(kù)中的。該專(zhuān)利沒(méi)有說(shuō)明在相反于有用接口定義的功能基礎(chǔ)上,如何選擇部分原型。在缺少這種選擇能力的情況下,對(duì)應(yīng)于將要生成的全部程序的特定功能,各種部分原型的功能性必須限定到很窄,以確保程序固有實(shí)現(xiàn)的邏輯是從部分原型接口的定義產(chǎn)生的。
美國(guó)專(zhuān)利No.5,315,710描述了另一種程序綜合系統(tǒng)。這個(gè)系統(tǒng)也按照一個(gè)庫(kù)操作,這個(gè)庫(kù)在該專(zhuān)利中稱(chēng)作程序部分?jǐn)?shù)據(jù)庫(kù)。此系統(tǒng)用于調(diào)解(mediating)程序部分的自動(dòng)生成,在接口程序部分時(shí)提供了一個(gè)更大的自由度,其中所述調(diào)解程序部分被加工處理以便特別地耦合否則就是不同定義的程序部分。從而,當(dāng)兩個(gè)表面上不兼容的程序部分的接口必須在一起時(shí),則從一程序轉(zhuǎn)換規(guī)則庫(kù)找到計(jì)算規(guī)則可以用來(lái)將數(shù)據(jù)單元、庫(kù)或類(lèi)型轉(zhuǎn)換成另一個(gè)這樣的表示。一數(shù)據(jù)類(lèi)型轉(zhuǎn)換規(guī)則可以用來(lái)將數(shù)據(jù)的數(shù)據(jù)類(lèi)型從一種類(lèi)型轉(zhuǎn)換成另一種。通過(guò)將對(duì)于每一個(gè)變量的這些轉(zhuǎn)換合并起來(lái),就組成了調(diào)解程序,其中數(shù)據(jù)通過(guò)這些變量在程序部分之間通行。這種調(diào)解程序的兩個(gè)接口自然地由要被連接程序部分的接口定義。這樣,程序部分和調(diào)解程序可以被裝配進(jìn)一個(gè)更大的功能單元作為更大的應(yīng)用程序的部分或用于完成更大的應(yīng)用程序。然而,生成的調(diào)解程序在其改變程序部分的操作功能能力時(shí)被固有地受到限制。因此,程序部分可用的選擇必須很好地預(yù)定義,且與生成的應(yīng)用程序最終想要得到的功能性高度一致。
美國(guó)專(zhuān)利No.5,038,296中描述了一種具有功能性較大的自動(dòng)程序綜合器系統(tǒng)。在這個(gè)系統(tǒng)中,系統(tǒng)說(shuō)明和程序綜合規(guī)則集通過(guò)在由變量表示的數(shù)據(jù)上執(zhí)行操作的描述功能性地定義了一個(gè)目標(biāo)程序。系統(tǒng)說(shuō)明和程序綜合規(guī)則通過(guò)功能定義來(lái)識(shí)別這些變量。程序綜合器處理這些定義,將所述的變量功能性地分解成特定的變量名。存在的變量由其被指定的功能屬性來(lái)識(shí)別。在必須為一組特定的屬性集定義一個(gè)變量時(shí),生成一個(gè)內(nèi)插程序來(lái)定義帶有要求屬性的該必須的變量。因?yàn)閮?nèi)插程序顯然是用與生成目標(biāo)程序相同的程序生成裝置來(lái)生成的,當(dāng)必須且適當(dāng)?shù)亟M合其他預(yù)先存在的變量時(shí),內(nèi)插程序顯然被運(yùn)行,以獲得由新生成的變量功能地存儲(chǔ)的變量值。也就是說(shuō),程序生成裝置的功能是將專(zhuān)用的操作結(jié)合于本質(zhì)上單獨(dú)的(singular)變量。因此,由帶有程序綜合器規(guī)則定義的功能子步驟的系統(tǒng)說(shuō)明提供的目標(biāo)程序的功能輪廓(outline)可以合理地定義一個(gè)完全的目標(biāo)程序。
然而,在美國(guó)專(zhuān)利No.5,038,296中描述的程序綜合器固有地要求了在系統(tǒng)說(shuō)明和預(yù)先存在的程序綜合規(guī)則之間的非常高的一致性,以生成一目標(biāo)程序。所公開(kāi)的系統(tǒng)沒(méi)有提供在程序綜合器運(yùn)行期間,用于生成或維持這樣一種一致或保證有效應(yīng)用的可識(shí)別的方法或結(jié)構(gòu)。此外,公開(kāi)的系統(tǒng)無(wú)法識(shí)別任何用于支持系統(tǒng)說(shuō)明的開(kāi)發(fā)的結(jié)構(gòu),肯定也無(wú)法公開(kāi)任何用于生成適合于特別生成的目標(biāo)程序的文件編制的結(jié)構(gòu)。
為了提高程序生成器的有用性能,在其上裝入了各種形式的專(zhuān)家系統(tǒng)。這種專(zhuān)家系統(tǒng)包括有限狀態(tài)自動(dòng)機(jī)(automata)、正向和反向鏈接的基于規(guī)則的推理機(jī)(inference engines)、模糊邏輯推理系統(tǒng)和上下文敏感或引導(dǎo)的編輯器系統(tǒng)。雖然應(yīng)用這種專(zhuān)家系統(tǒng)可以極大地提高一個(gè)程序生成器系統(tǒng)的視在功能,這種專(zhuān)家系統(tǒng)已經(jīng)典型地應(yīng)用于一個(gè)應(yīng)用程序處理環(huán)境,該環(huán)境基于預(yù)先定義的規(guī)則,限制了操作系統(tǒng)對(duì)于專(zhuān)家系統(tǒng)的特定數(shù)據(jù)輸入和作出的請(qǐng)求的可理解的復(fù)雜性。于是,這些專(zhuān)家系統(tǒng)展示了一個(gè)應(yīng)用程序在其中以一種已構(gòu)造好的形式出現(xiàn)的環(huán)境。沒(méi)有產(chǎn)生可編譯或可解釋的應(yīng)用程序碼。因此,這種環(huán)境很難用來(lái)設(shè)計(jì)和維護(hù),并且對(duì)于生成專(zhuān)用于一特定的工作應(yīng)用程序的文件編制幾乎沒(méi)有采取任何措施。
在更傳統(tǒng)的程序生成器中,專(zhuān)家系統(tǒng)也被用作為組成部分(component)。然而,在大多數(shù)例子中,專(zhuān)家系統(tǒng)對(duì)更完全或更廣泛地啟動(dòng)程序部分原型的選擇用于應(yīng)用程序的構(gòu)造,或推理合適的對(duì)于接口程序部分是必須的調(diào)解變換,在功能上是有限的。結(jié)果,現(xiàn)有技術(shù)中專(zhuān)家系統(tǒng)在程序生成器系統(tǒng)中的應(yīng)用并沒(méi)有預(yù)先使綜合的應(yīng)用程序生成器開(kāi)發(fā)。
因此,本發(fā)明的一個(gè)目的是提供功能上以應(yīng)用程序?yàn)槟繕?biāo)(functionallytargeted)的獨(dú)立的綜合設(shè)計(jì)、生成維護(hù)和文件編制。
在本發(fā)明中,這一目的由一個(gè)用于應(yīng)用程序的自動(dòng)生成編程(programmed)系統(tǒng)來(lái)實(shí)現(xiàn)。該編程系統(tǒng)包括一個(gè)用于從多個(gè)輸入事件元素建立程序數(shù)據(jù)和字段定義的引導(dǎo)圖像編輯器;一個(gè)序列生成器,連接到引導(dǎo)編輯器,自主地(autonomously)將程序、數(shù)據(jù)和字段定義處理成多個(gè)功能描述原子序列,每一序列描述一個(gè)唯一的特征,這樣多個(gè)幀(frame)分別地描述多個(gè)輸入事件元素,其中每一幀包括來(lái)自每一功能描述原子序列中的零或更多功能描述原子序列;一個(gè)規(guī)則處理器,包括一個(gè)有條件地描述一預(yù)定應(yīng)用程序的結(jié)構(gòu)和操作的程序規(guī)則庫(kù),該規(guī)則處理器自主地處理程序規(guī)則庫(kù),與多個(gè)功能描述原子序列一致,通常順序地進(jìn)行于多個(gè)幀,有條件地將多個(gè)功能描述的原子序列與預(yù)定應(yīng)用程序的結(jié)構(gòu)和操作統(tǒng)一;一個(gè)語(yǔ)法處理器,包括一個(gè)定義預(yù)定程序設(shè)計(jì)語(yǔ)言的語(yǔ)法的語(yǔ)法規(guī)則庫(kù),自主地應(yīng)用所述預(yù)定程序設(shè)計(jì)語(yǔ)言的語(yǔ)法統(tǒng)一多個(gè)功能描述原子序列(functionally descriptive atomicsequence),以提供符合預(yù)定程序設(shè)計(jì)語(yǔ)言的語(yǔ)法的預(yù)定應(yīng)用程序的結(jié)構(gòu)和運(yùn)行的編碼表示。
本發(fā)明的一個(gè)優(yōu)點(diǎn)是通過(guò)引導(dǎo)圖像編輯器將一組描述輸入事件元素的序列集合在一起。假設(shè)輸入事件元素合理地對(duì)應(yīng)于預(yù)定應(yīng)用程序的預(yù)期功能,規(guī)則生成器通過(guò)有條件地應(yīng)用程序序列的內(nèi)容,以便自主地用程序規(guī)則統(tǒng)一序列,以自動(dòng)生成實(shí)質(zhì)上由輸入事件元素定義的并與程序規(guī)則相符合的應(yīng)用程序。
本發(fā)明的另一個(gè)優(yōu)點(diǎn)是語(yǔ)法生成器用于自主生成全部符合預(yù)定程序設(shè)計(jì)語(yǔ)言定義的可編譯或可解釋的碼。
本發(fā)明的進(jìn)一步的優(yōu)點(diǎn)是該引導(dǎo)圖像編輯器用于將一系列或一個(gè)組或更多輸入事件元素具體化。結(jié)果目標(biāo)可以刪截、復(fù)制以及存儲(chǔ)起來(lái)以備隨后使用。由于是一個(gè)圖像而不僅僅是一個(gè)引用(reference)被目標(biāo)俘獲,所以沒(méi)有提供全部的承襲特征。而是在圖像內(nèi)維護(hù)了內(nèi)部引用,并且在將目標(biāo)粘貼(pasting)進(jìn)另一個(gè)目標(biāo)或更大的圖像中時(shí),這些內(nèi)部引用按照一致性規(guī)則被使用。從而提供了再應(yīng)用和獨(dú)立修正的能力。
本發(fā)明的又一優(yōu)點(diǎn)是引導(dǎo)圖像編輯器提供了實(shí)質(zhì)上與其輸入一致的輸入事件元素的存在的事物(existence)、目的和操作的文件編制。文件編制一般在每一事件基上被接收作為文本輸入以響應(yīng)于引導(dǎo)問(wèn)題或提示(prompt)。接著,被要求的事件序列的所有方面可以與幫助文本一齊被規(guī)則生成器訪問(wèn),以提供高度特征化的文件編制,其中該文件編制由生成的應(yīng)用程序的結(jié)構(gòu)和外部特性產(chǎn)生。生成的文件編制可以包括文本說(shuō)明書(shū)產(chǎn)生于相應(yīng)于處理和限制的與輸入事件相聯(lián)系的功能上限定的邏輯。生成的文件編制進(jìn)一步處理為包括庫(kù)文本和構(gòu)造的表,包括內(nèi)容表和圖表。
通過(guò)下面結(jié)合附圖對(duì)本發(fā)明的詳細(xì)說(shuō)明,可以更好地理解本發(fā)明的這些和其他優(yōu)點(diǎn)及特征。在這些附圖中,相同的引用數(shù)代表相同的部分附圖簡(jiǎn)要說(shuō)明

圖1是本發(fā)明知識(shí)結(jié)構(gòu)的一個(gè)總構(gòu)成(organization);圖2是本發(fā)明各種組成部分的最佳的有關(guān)總體結(jié)構(gòu)的方框圖;圖3是由本發(fā)明維護(hù)的應(yīng)用程序結(jié)構(gòu)的簡(jiǎn)化方框圖;圖4是依據(jù)本發(fā)明用于生成應(yīng)用程序序列的圖像編輯器和相關(guān)的子系統(tǒng)的方框圖;圖5是詳細(xì)介紹圖像編輯器子系統(tǒng)的操作的方框圖;圖6是詳細(xì)介紹在建立的并行應(yīng)用程序序列中的序列生成器的操作的方框圖;圖7是詳細(xì)介紹依據(jù)本發(fā)明構(gòu)造的應(yīng)用程序設(shè)計(jì)者專(zhuān)家子系統(tǒng)的方框圖;和圖8是詳細(xì)介紹依據(jù)本發(fā)明構(gòu)造的文件編制出版者(publisher)專(zhuān)家系統(tǒng)的最佳結(jié)構(gòu)的方框圖。
一種具有實(shí)際綜合且自動(dòng)地生成任何數(shù)目應(yīng)用程序的系統(tǒng)通常如圖1所示。應(yīng)用程序生成系統(tǒng)10最好是在一個(gè)通常的通用目的的計(jì)算機(jī)系統(tǒng)(未顯示)中執(zhí)行,并且是在一個(gè)通常的操作系統(tǒng)環(huán)境下執(zhí)行,例如由MicrosoftWindows3.1提供的環(huán)境,和支持的一種常用的程序設(shè)計(jì)語(yǔ)言,例如Basis國(guó)際公司采用的BBX Business Basic,來(lái)自微軟公司的Microsoft C,以及來(lái)自國(guó)際商用機(jī)器公司的C++。在這種環(huán)境中,系統(tǒng)10操作以獲得和構(gòu)造應(yīng)用程序結(jié)構(gòu)和序列12,該結(jié)構(gòu)和序列通過(guò)用戶輸入14的應(yīng)用程序選擇地與序列指定目標(biāo)16的應(yīng)用相結(jié)合,與一特定的應(yīng)用程序相對(duì)應(yīng)。用戶輸入14可以是直接的程序編制器數(shù)據(jù)入口(entry)、由一熟練的終端用戶編輯的系統(tǒng)說(shuō)明、或者是與用戶的限定方向相結(jié)合產(chǎn)生直接等效用戶輸入的其它程序輔助分析的計(jì)算機(jī)產(chǎn)品和說(shuō)明。
依據(jù)本發(fā)明的最佳實(shí)施例,目標(biāo)16是用戶輸入14任意形成的高級(jí)組成部分。因此,目標(biāo)16不是直接程序部分,而是密封(encapsulated)進(jìn)目標(biāo)的部分詳細(xì)說(shuō)明,可以在應(yīng)用程序的結(jié)構(gòu)和序列12生成期間在提供用戶輸入14的過(guò)程中被刪截、剪輯、存儲(chǔ)、復(fù)制及移動(dòng)。
當(dāng)應(yīng)用程序結(jié)構(gòu)和序列已被生成或隨后修正時(shí),通過(guò)一個(gè)實(shí)質(zhì)上的分級(jí)專(zhuān)家系統(tǒng)對(duì)所得的結(jié)構(gòu)和序列進(jìn)行分析,所說(shuō)的分級(jí)專(zhuān)家系統(tǒng)逐次地運(yùn)用程序規(guī)則18、技巧(skill)規(guī)則20和語(yǔ)法規(guī)則22,這些規(guī)則以生成獨(dú)立文件編制的可編譯或可解釋的碼24、或雙碼24與相應(yīng)的文件編制26一起的分立模塊或一模塊組而終結(jié)。程序規(guī)則18在一構(gòu)成的規(guī)則數(shù)據(jù)庫(kù)中提供,該規(guī)則數(shù)據(jù)庫(kù)可提供一組共用的規(guī)則和分立的多組專(zhuān)用于特定程序類(lèi)型的規(guī)則。雖然根據(jù)本發(fā)明程序類(lèi)型可以任意定義,目前最佳的程序類(lèi)型集(set)包括數(shù)據(jù)收集、數(shù)據(jù)處理以及數(shù)據(jù)輸出程序類(lèi)型。另外的程序類(lèi)型,例如一種用于可以分開(kāi)使用或是在其他程序類(lèi)型支持下也可以被定義的專(zhuān)家系統(tǒng)定義。此外,程序子類(lèi)型可以被聯(lián)想為程序規(guī)則18的詳細(xì)分類(lèi)。按照本發(fā)明的一個(gè)最佳實(shí)施例,其面向記帳(accounting)或記帳類(lèi)型應(yīng)用程序的生成,程序子系統(tǒng)最好包括從屬于數(shù)據(jù)收集程序類(lèi)型的維護(hù)、事務(wù)的和細(xì)節(jié)的分析屏幕(screens),從屬于處理程序類(lèi)型的記入處理(posting process),以及從屬于輸出程序類(lèi)型的列報(bào)告(columnar report)、查詢報(bào)告(inquiry report)和格式報(bào)告(form repor)。于是,當(dāng)程序規(guī)則18運(yùn)用到應(yīng)用程序結(jié)構(gòu)和序列12上時(shí),合適的程序規(guī)則集和子集是為應(yīng)用程序的實(shí)現(xiàn)被非獨(dú)立地識(shí)別和執(zhí)行的數(shù)據(jù),其中該應(yīng)用程序特別地對(duì)應(yīng)于運(yùn)用了程序規(guī)則18的特定的應(yīng)用程序結(jié)構(gòu)和序列12。因此,本發(fā)明最直接地提供了潛在沖突的程序規(guī)則的存在和應(yīng)用,該程序規(guī)則可以恰當(dāng)?shù)卦趹?yīng)用程序的不同的類(lèi)型和子類(lèi)型支持下存在。因?yàn)橛行┮?guī)則并未與任何特定的程序類(lèi)型或子類(lèi)型相聯(lián)系,程序規(guī)則18的一部分是有關(guān)種類(lèi)并因此而有效地被定義用于所有類(lèi)型的應(yīng)用程序的生成。
技巧規(guī)則20表示用于有效地實(shí)現(xiàn)程序規(guī)則的應(yīng)用的低級(jí)(low-level)功能操作(functional oprerations)。也就是說(shuō),技巧規(guī)則提供了廣泛用于一個(gè)被生成的程序中間表示的生成的基本功能操作。雖然在系統(tǒng)10中可以定義任意多個(gè)技巧規(guī)則20來(lái)供使用,但這里提供了八個(gè)基本技巧的實(shí)施,包括1)單行(single line)通過(guò)置換或解釋來(lái)指導(dǎo)規(guī)則的處理,以規(guī)則的一種一對(duì)一的關(guān)系建立一個(gè)常元素或變?cè)氐闹虚g或最終碼表示,以輸出行(例如一規(guī)則應(yīng)用該技巧將該規(guī)則表示為一行碼);2)遞歸行(recurring line)通過(guò)置換或解釋來(lái)指導(dǎo)規(guī)則的處理,以生成一個(gè)常元素,或者更典型地,一個(gè)變?cè)氐囊幌盗薪葡嗤闹虚g或最終碼表示(例如一規(guī)則應(yīng)用該技巧以在一個(gè)標(biāo)題(header)細(xì)節(jié)關(guān)系中生成用于細(xì)節(jié)行陣列的碼);3)變量表指導(dǎo)一個(gè)或多個(gè)引用了變?cè)匾?guī)則的處理,該變?cè)乜梢杂糜诓煌纳舷挛?例如節(jié)串(verses string)),并生成該規(guī)則的一個(gè)相應(yīng)的單個(gè)中間或最終碼表示(例如規(guī)則建立多個(gè)變量,該變量基于一個(gè)開(kāi)關(guān)變量的類(lèi)型被初始化成數(shù)字或串缺省并被組織成一個(gè)“case”編程語(yǔ)句的最終碼表示的變量);4)遞歸表指導(dǎo)一個(gè)或多個(gè)規(guī)則的處理其與一個(gè)遞歸行技巧到一個(gè)變量表技巧的應(yīng)用程序相一致(例如為一個(gè)細(xì)節(jié)陣列的每一行提供分離case語(yǔ)句的生成,從而提供細(xì)節(jié)行的獨(dú)立處理);5)隱式表指導(dǎo)用于變?cè)氐某V当淼纳?例如在一個(gè)跳轉(zhuǎn)表的結(jié)構(gòu)中的程序子程序名引用的生成);6)翻譯(translate)指導(dǎo)一個(gè)序列搜尋,基于一個(gè)定義的常量或變量選擇一個(gè)或多個(gè)相關(guān)的序列(例如搜尋序列,以找到規(guī)定了一個(gè)字段引用的屏幕字段位置的序列,其中該字段是由一個(gè)當(dāng)前序列引用的特征包的功能邏輯引用的);7)組合表指導(dǎo)一個(gè)或多個(gè)規(guī)則的評(píng)價(jià)(evaluation),基于序列類(lèi)型,例如阿爾法節(jié)(alpha verses)數(shù)字,在以給定關(guān)系對(duì)一組序列檢查的基礎(chǔ)上,選擇和處理一個(gè)或多個(gè)相關(guān)序列中的每一個(gè)(例如基于其他系統(tǒng)變量的內(nèi)容,首先說(shuō)明并然后建立該系統(tǒng)變量的值,其中其他系統(tǒng)變量由是否這種其他變量用于一個(gè)相關(guān)的上下文來(lái)限定);以及8)混合表基于可以通過(guò)對(duì)一個(gè)限定序列集的檢查來(lái)識(shí)別的任何重合關(guān)系,指導(dǎo)一個(gè)或多個(gè)用于建立一個(gè)變?cè)氐男蛄械倪x擇(例如,確定字段的最好的匹配聯(lián)合,該字段說(shuō)明作為兩個(gè)或更多文件記錄的部分,以形成一個(gè)用于排序從文件數(shù)據(jù)返回的鍵(key))。
程序規(guī)則18可以按一種表面上任意的順序存在于程序規(guī)則庫(kù)中。然而,當(dāng)程序規(guī)則18對(duì)于一特定程序類(lèi)型和子類(lèi)型被看作是可應(yīng)用的時(shí)候,該程序規(guī)則18可以被認(rèn)為是有序的。從而,對(duì)于一特定程序子類(lèi)型,在應(yīng)用程序結(jié)構(gòu)和序列12的應(yīng)用基礎(chǔ)上,在為相應(yīng)于應(yīng)用程序子類(lèi)型的實(shí)現(xiàn)提供的評(píng)價(jià)序列中,程序規(guī)則看起來(lái)是有序的。程序規(guī)則18的處理開(kāi)始于一個(gè)邏輯根規(guī)則,并通過(guò)有序的規(guī)則集進(jìn)行,該規(guī)則集或者是對(duì)所有程序類(lèi)型通用的,或者是對(duì)當(dāng)前評(píng)價(jià)的子程序類(lèi)型專(zhuān)用的。在程序規(guī)則18對(duì)照于應(yīng)用程序結(jié)構(gòu)和序列12被評(píng)價(jià)時(shí),執(zhí)行技巧規(guī)則20,以導(dǎo)出通過(guò)碼24的生成實(shí)現(xiàn)的應(yīng)用程序的一個(gè)邏輯上完全的表示。也就是說(shuō),技巧規(guī)則規(guī)定邏輯語(yǔ)句的例示,該邏輯語(yǔ)句在進(jìn)一步對(duì)照于語(yǔ)法規(guī)則22被評(píng)價(jià)時(shí),規(guī)定碼24的生成。因?yàn)橐粋€(gè)應(yīng)用程序的每一邏輯語(yǔ)句可以被完全地表示為用數(shù)字或ASCⅡ形式表示的常元素或變?cè)?,或是這種元素的列表結(jié)構(gòu),即使是有限的八個(gè)基本技巧的集也足夠支持一個(gè)滿的而且功能完全的用于生成大多數(shù)(如果不是全部的話)會(huì)計(jì)的或有關(guān)會(huì)計(jì)的應(yīng)用程序所必須的程序規(guī)則集18。八個(gè)基本技巧規(guī)則對(duì)于從種屬上說(shuō)支持許多其他類(lèi)型的應(yīng)用程序等的生成來(lái)說(shuō)也是足夠的。如果對(duì)于一個(gè)特定的應(yīng)用程序期望或要求不同的功能,或者期望通過(guò)構(gòu)造一個(gè)復(fù)雜的技巧來(lái)支持更高級(jí)別的程序規(guī)則,這樣的技巧可以容易地加到技巧規(guī)則庫(kù)20中。
在本發(fā)明的最佳實(shí)施例中,應(yīng)用程序的中間表示只是暫時(shí)生成的。當(dāng)每一語(yǔ)句表示被生成時(shí),運(yùn)用來(lái)自語(yǔ)法規(guī)則庫(kù)22的語(yǔ)法規(guī)則實(shí)現(xiàn)和輸出碼24到一個(gè)最好被存儲(chǔ)在非易失性存儲(chǔ)介質(zhì)上的持久(persistent)文件中。
語(yǔ)法規(guī)則22在語(yǔ)法規(guī)則庫(kù)中主要被維護(hù)為大量地有序系列的規(guī)則語(yǔ)句。在語(yǔ)法規(guī)則庫(kù)中的語(yǔ)法規(guī)則之間的劃分(division)可以由一個(gè)附加到每一個(gè)規(guī)則的語(yǔ)言類(lèi)型碼來(lái)定義。對(duì)于相同的通用類(lèi)型的語(yǔ)言,例如,BusinessBasic和Visual Basic的變碼,或者對(duì)于顯著不同的語(yǔ)言,例如C,可以定義不同的語(yǔ)言碼。當(dāng)語(yǔ)言大致相似時(shí),應(yīng)用程序的一個(gè)共同的中間表示用于生成專(zhuān)用于任一特定語(yǔ)言的碼24是足夠的。當(dāng)碼24的語(yǔ)言顯著不同時(shí),則需要對(duì)由碼24的中間表示實(shí)現(xiàn)的范例(paradigm)作輕微的改變。如果是這種情況,程序規(guī)則和技巧規(guī)則18,20可以被做成為對(duì)碼24選擇的特定語(yǔ)言適當(dāng)?shù)孛舾校员愫线m地改變應(yīng)用程序的中間表示,如同在為那種語(yǔ)言運(yùn)用了語(yǔ)法規(guī)則22的閉包(closure)以實(shí)現(xiàn)碼24的整體形式所需要的那樣。
在選擇了適當(dāng)?shù)木幊陶Z(yǔ)言的條件下,將語(yǔ)法規(guī)則應(yīng)用到應(yīng)用程序的中間表示是在邏輯上逐句相關(guān)的基礎(chǔ)上進(jìn)行的。利用應(yīng)用程序中間表示的每一個(gè)邏輯上完全的語(yǔ)句來(lái)選擇一個(gè)或多個(gè)相應(yīng)的語(yǔ)法規(guī)則22。象程序規(guī)則18一樣,語(yǔ)法規(guī)則22利用技巧規(guī)則20為應(yīng)用程序的中間表示的每一邏輯語(yǔ)句,實(shí)際執(zhí)行必須的操作用于實(shí)現(xiàn)將潛在地一個(gè)或多個(gè)語(yǔ)言專(zhuān)用語(yǔ)句向碼文件24輸出。于是,象程序規(guī)則18一樣,語(yǔ)法規(guī)則22由甚至是一小的技巧規(guī)則集很好地支持。規(guī)定更高級(jí)功能或在生成碼24中需要不同操作的語(yǔ)法規(guī)則22可以容易地通過(guò)用不同的或更復(fù)雜的技巧規(guī)則來(lái)擴(kuò)充技巧規(guī)則20而被支持。
雖然前面對(duì)系統(tǒng)10的說(shuō)明主要是關(guān)于碼24的生成,系統(tǒng)10同樣產(chǎn)生與由系統(tǒng)10生成的碼24的說(shuō)明高度相關(guān)的文件編制26。用戶輸入14和目標(biāo)16都可以包含并表示最終在碼24中體現(xiàn)的描述性注釋和描述作為文件編制26的一部分的整個(gè)程序、子程序、單個(gè)屏幕和報(bào)告、特定字段的描述性文本。于是,這些碼注釋和描述性文本體現(xiàn)為在應(yīng)用程序結(jié)構(gòu)和序列層12中的序列,或與這些序列相關(guān),并且當(dāng)序列被評(píng)價(jià)時(shí),由程序,技巧和語(yǔ)法規(guī)則18,20,22進(jìn)行一般地評(píng)價(jià)。于是碼注釋被有效地編譯進(jìn)碼24。描述性文本相似地被編譯進(jìn)文件編制文件26中,該文件最好是持久地存儲(chǔ)在一個(gè)非易失性存儲(chǔ)介質(zhì)上。
因?yàn)閼?yīng)用程序結(jié)構(gòu)和序列12也最好是存儲(chǔ)在一個(gè)非易失性存儲(chǔ)介質(zhì)上的持久文件中,系統(tǒng)10允許對(duì)存儲(chǔ)的應(yīng)用程序結(jié)構(gòu)和序列12進(jìn)行維護(hù)、修改和派生。因此,應(yīng)用程序生成系統(tǒng)10可提供一個(gè)實(shí)質(zhì)上自動(dòng)生成的應(yīng)用程序的綜合設(shè)計(jì)、實(shí)現(xiàn)、維護(hù)和文件編制。
依據(jù)本發(fā)明的最佳實(shí)施例構(gòu)造的一個(gè)應(yīng)用程序生成器的最佳總體結(jié)構(gòu)30如圖2所示。一個(gè)圖像編輯器32合并了一個(gè)提示的引導(dǎo)編輯器設(shè)備與結(jié)合于全屏幕圖像編輯器的上下文敏感的編輯器的特征為獲取的用戶輸入提供了基本環(huán)境。最佳圖像編輯器32顯示為在一個(gè)999×999單元(cell)圖像頁(yè)面上的80×25單元視口(cell view)。顯示給用戶的用于輸入的顯示圖像可以是來(lái)自圖像頁(yè)面的不同部分的視口區(qū)域(section)的組合。另外,圖像頁(yè)面有效離開(kāi)屏幕的部分可以被用作支持實(shí)現(xiàn)在屏幕上(on screen)可視信息的處理的暫時(shí)區(qū)域。
圖像編輯器32被用來(lái)設(shè)計(jì)和定義一應(yīng)用程序結(jié)構(gòu)36,該應(yīng)用程序結(jié)構(gòu)被構(gòu)造為一起來(lái)實(shí)現(xiàn)該應(yīng)用程序的相應(yīng)程序的主題、識(shí)別的特定應(yīng)用程序、和一起來(lái)定義專(zhuān)用程序的序列之間的一個(gè)分級(jí)關(guān)系。該分級(jí)關(guān)系用來(lái)以一種有限的且容易引用的格式建立應(yīng)用程序結(jié)構(gòu)36。此外,每一主題、程序和段(segment)由存儲(chǔ)作為應(yīng)用程序結(jié)構(gòu)36的部分的一個(gè)引用名來(lái)唯一地識(shí)別。
應(yīng)用程序結(jié)構(gòu)36也可以維護(hù)用于一特定主題相聯(lián)系的文件和文件記錄的分級(jí)關(guān)系。在應(yīng)用程序結(jié)構(gòu)36中的每一個(gè)文件和文件記錄存儲(chǔ)著對(duì)每一文件和記錄在分級(jí)上是唯一的引用名。
存儲(chǔ)在應(yīng)用程序結(jié)構(gòu)36中的引用名不僅為設(shè)計(jì)和定義應(yīng)用程序結(jié)構(gòu)36提供了便利的方式,在建立生成應(yīng)用程序序列38的基礎(chǔ)關(guān)系時(shí)對(duì)圖像編輯器的使用也提供了唯一定義的處理基準(zhǔn)。
圖像編輯器32的引導(dǎo)編輯器(editor)和上下文敏感編輯器的特征最好根據(jù)一知識(shí)庫(kù)34專(zhuān)家系統(tǒng)的操作來(lái)驅(qū)動(dòng)。該支持圖像編輯器32的專(zhuān)家系統(tǒng)將文件編制功能與設(shè)計(jì)和定義應(yīng)用程序結(jié)構(gòu)36的及生成應(yīng)用程序序列38的功能綜合起來(lái)。此專(zhuān)家系統(tǒng)從一個(gè)有關(guān)的靜態(tài)文件和幫助文件40的有效部分引導(dǎo)出提示問(wèn)題和開(kāi)始文本。提示問(wèn)題是特定于用戶輸入的上下文,而開(kāi)始文本是特定于提示問(wèn)題的上下文。當(dāng)主題、程序、序列、文件和記錄被定義時(shí),不同的提示問(wèn)題由圖像編輯器32從幫助文件40中檢索。另外,提示問(wèn)題基于程序類(lèi)型或子類(lèi)型相關(guān)于程序單個(gè)段定義的每一字段或顯示數(shù)據(jù)由圖像編輯器選擇。在每一個(gè)例子中,提供了預(yù)先考慮和建議用戶輸入應(yīng)答的格式和性質(zhì)的相應(yīng)的開(kāi)始文本。
通常,提示問(wèn)題采取兩種基本格式。第一種格式是對(duì)引入信息的需求,其中引入信息可被用于解釋段與程序或程序與主題的功能關(guān)系或由段或程序進(jìn)行的處理的功能關(guān)系。第二種格式被用于引出描述一專(zhuān)用字段或顯示區(qū)域的信息或引出顯示給終端用戶的處理選擇的信息。這些提示問(wèn)題基于圖像編輯器32的用戶操作的當(dāng)前上下文從幫助文件40中來(lái)選擇,并因而用來(lái)引導(dǎo)圖像編輯器32的進(jìn)一步應(yīng)用,特別是包括對(duì)文件編制信息的獲取。用戶對(duì)提示問(wèn)題輸入的應(yīng)答,以一種適合于原始的提示問(wèn)題的和以生成提示問(wèn)題的應(yīng)用程序結(jié)構(gòu)36的特定部分的方式,被存回幫助文件40。
圖像編輯器32還提供了圖像操縱(manipulation)功能,包括刪截、剪輯、粘貼(pasting)及選擇圖像頁(yè)面的部分。這些控制操作允許圖像部分被移動(dòng)、復(fù)制及刪除?;谟脩糨斎?,這些操作以傳統(tǒng)的塊操作狀態(tài)來(lái)實(shí)現(xiàn)。然而,作為塊操作的一部分,圖像編輯器32提供在圖像的塊部分內(nèi)與每一顯示項(xiàng)和字段相聯(lián)系的屬性的隱式選擇。各種塊目標(biāo)操作最好在對(duì)從知識(shí)庫(kù)34檢索的塊操作規(guī)則的評(píng)價(jià)下實(shí)現(xiàn)。這些規(guī)則幫助對(duì)與一個(gè)塊目標(biāo)相聯(lián)系的屬性以及它們與現(xiàn)有屬性的合并的合理選擇,當(dāng)一個(gè)目標(biāo)被復(fù)制回一個(gè)圖像時(shí)。這樣的話,塊操作也提供了在圖像編輯器32的執(zhí)行中的一致性檢查和合并確認(rèn)。
圖像的塊部分也可以被復(fù)制到一個(gè)目標(biāo)存儲(chǔ)數(shù)據(jù)庫(kù)42,并且在引用一個(gè)唯一指定的目標(biāo)識(shí)別符的基礎(chǔ)上經(jīng)過(guò)檢索可以被存儲(chǔ)。因?yàn)閳D像編輯器32最好將屬性識(shí)別符與每一顯示項(xiàng)或字段聯(lián)系起來(lái),而不僅僅引用一個(gè)屬性,所以存儲(chǔ)到目標(biāo)存儲(chǔ)數(shù)據(jù)庫(kù)42的目標(biāo)是邏輯上獨(dú)立的,并不承襲隨后通過(guò)圖像編輯器32對(duì)目標(biāo)的任何初始或其他復(fù)制造成的變化。因此,雖然目標(biāo)可以以任意大小和復(fù)雜性動(dòng)態(tài)地被選擇,由目標(biāo)存儲(chǔ)數(shù)據(jù)庫(kù)42存儲(chǔ)的目標(biāo)本質(zhì)上是靜態(tài)的。
當(dāng)顯示項(xiàng)和字段數(shù)據(jù)被輸入進(jìn)圖像編輯器32且指定了屬性時(shí),圖像編輯器32導(dǎo)出定義信息并對(duì)一個(gè)應(yīng)用程序序列生成器提供該定義信息,該應(yīng)用程序序列生成器生成一應(yīng)用程序序列集,該應(yīng)用程序序列綜合地描述了一個(gè)程序段,以及識(shí)別數(shù)據(jù)庫(kù)程序和顯示項(xiàng)或字段、在圖像頁(yè)面空間內(nèi)的項(xiàng)或字段的位置、以及與項(xiàng)或字段相聯(lián)系的功能屬性。這些應(yīng)用程序序列然后被提供給應(yīng)用程序序列棧38。
一旦一個(gè)程序的應(yīng)用程序結(jié)構(gòu)36和應(yīng)用程序序列38已經(jīng)通過(guò)圖像編輯器32的操作構(gòu)造好,調(diào)用一個(gè)應(yīng)用程序設(shè)計(jì)者(author)4以生成一可編譯的或可解釋碼的相應(yīng)的集。應(yīng)用程序設(shè)計(jì)者根據(jù)應(yīng)用程序結(jié)構(gòu)36、應(yīng)用程序序列38、幫助文件40的內(nèi)容和相應(yīng)的由知識(shí)庫(kù)34存儲(chǔ)的程序、技巧和語(yǔ)法規(guī)則集操作。應(yīng)用程序設(shè)計(jì)者44一般作為一個(gè)專(zhuān)家系統(tǒng)來(lái)操作,與專(zhuān)用的應(yīng)用程序序列38一致,將程序、技巧和語(yǔ)法規(guī)則運(yùn)用到應(yīng)用程序結(jié)構(gòu)36的可用定義,從而為生成的特定類(lèi)型和子類(lèi)型的程序產(chǎn)生碼。也就是說(shuō),基于定義的應(yīng)用程序結(jié)構(gòu)36和可用的應(yīng)用程序序列38,由設(shè)計(jì)者44的專(zhuān)家系統(tǒng)的操作構(gòu)造出所選程序類(lèi)型和子類(lèi)型的程序。依據(jù)本發(fā)明,由設(shè)計(jì)者44產(chǎn)生的碼是將一特定的程序類(lèi)型和子類(lèi)型的程序規(guī)則定義到該范圍的產(chǎn)物,其中這種規(guī)則與提供的應(yīng)用程序結(jié)構(gòu)36和應(yīng)用程序序列38相一致。因?yàn)榇a語(yǔ)句是由設(shè)計(jì)者44基于應(yīng)用程序結(jié)構(gòu)和序列36,38的操作有效且獨(dú)立地生成的,所以單個(gè)碼語(yǔ)句對(duì)于由設(shè)計(jì)者44例示的所有變量的數(shù)目、名字和類(lèi)型是固有地統(tǒng)一的。不再需要對(duì)在單個(gè)程序的段之間的接口的變量或調(diào)解量(mediation)作進(jìn)一步的統(tǒng)一。基于應(yīng)用程序結(jié)構(gòu)36和應(yīng)用程序序列38的限定,其中,該序列定義了由一個(gè)共同程序的不同段共用的數(shù)據(jù)項(xiàng)和字段,在段之間的接口由設(shè)計(jì)者44的專(zhuān)家系統(tǒng)的操作被自動(dòng)匹配,直到其所需要的范圍。
最后,一個(gè)文件編制出版者(publisher)46與應(yīng)用程序設(shè)計(jì)者44有效地并行操作。實(shí)現(xiàn)文件編制出版者46的專(zhuān)家系統(tǒng)基于應(yīng)用程序結(jié)構(gòu)和序列36,38和來(lái)自知識(shí)庫(kù)34和幫助文件40提供的規(guī)則和信息來(lái)操作。在本發(fā)明的最佳實(shí)施例中,通過(guò)依靠應(yīng)用程序設(shè)計(jì)者44簡(jiǎn)化了出版者專(zhuān)家系統(tǒng)46首先有效地處理應(yīng)用程序序列38,以特別地提供描述了由序列定義的功能邏輯實(shí)現(xiàn)的處理單元的細(xì)節(jié)幫助文件,例如,對(duì)于一個(gè)被定義為三個(gè)數(shù)字的正數(shù)的字段的幫助文件可以為“記帳期間字段的值不能超過(guò)999,但可以小到0?!币虼?,細(xì)節(jié)幫助文件文本可以由應(yīng)用程序設(shè)計(jì)者44以文件編制出版者46的名義生成。于是,這個(gè)信息精細(xì)地表示由應(yīng)用程序設(shè)計(jì)者生成的特定的碼,并減輕對(duì)文件編制出版者的要求,否則文件編制出版者46不得不通過(guò)重新分析應(yīng)用程序結(jié)構(gòu)和序列36,38來(lái)全部重新構(gòu)造這個(gè)碼。再者,基于文件編制出版者46的專(zhuān)家系統(tǒng)可以與應(yīng)用程序設(shè)計(jì)者44合并,使得全部形成的文件編制由設(shè)計(jì)者44直接生成。等效地,文件編制出版者46可以復(fù)制設(shè)計(jì)者44的專(zhuān)家系統(tǒng)并由設(shè)計(jì)者44從應(yīng)用的信息源直接操作。在任何情況下,文件編制出版者46在提供給出版者46的信息上操作,以生成密切地相應(yīng)于由應(yīng)用程序設(shè)計(jì)者44產(chǎn)生的碼的文本文件編制。特別地,這包括進(jìn)入幫助文件40的解釋文本、以及由出版者46自身的操作指定的屏幕、處理、和報(bào)告格式、文件編制的程序的結(jié)構(gòu)和菜單組織的合并,正如同從包括出版者46基于知識(shí)庫(kù)34獲得的文件編制結(jié)構(gòu)定義規(guī)則處理的任何定義和解釋的應(yīng)用程序結(jié)構(gòu)36被確定那樣。
由應(yīng)用程序生成器30維護(hù)的應(yīng)用程序結(jié)構(gòu)36如圖3所示。應(yīng)用程序結(jié)構(gòu)36組織為一個(gè)建立在一邏輯根節(jié)點(diǎn)上的分級(jí)結(jié)構(gòu)。例示的結(jié)構(gòu)36包括任意數(shù)目的主題記錄50,該主題記錄表示專(zhuān)用的應(yīng)用程序,例如支付帳目應(yīng)用程序、慈善禮物捐贈(zèng)人跟蹤應(yīng)用程序或關(guān)鍵路徑構(gòu)造管理應(yīng)用程序。每一主題記錄50包括一個(gè)主題識(shí)別符,一般為應(yīng)用程序的一個(gè)描述性名字;在一個(gè)或多個(gè)面向菜單格式的屏幕的分級(jí)結(jié)構(gòu)中的用于組織應(yīng)用程序菜單入口的菜單結(jié)構(gòu);以及一個(gè)用于識(shí)別每一部分程序的程序列表,其中每一部分程序被提供作為一累計(jì)的整體以使實(shí)現(xiàn)由主題識(shí)別的特定應(yīng)用程序。另一與每一主題相聯(lián)系的列表結(jié)構(gòu)匯集了文件識(shí)別符作為對(duì)由一特定主題50在其上或由其產(chǎn)生操作的每一文件的引用。
因此,一特定主題501與一主題識(shí)別符Topic1、一菜單列表結(jié)構(gòu)(未顯示和圖解地顯示為與一個(gè)或多個(gè)程序52和文件56的邏輯連接的程序和文件列表相聯(lián)系。每一程序記錄52,例如特定程序520,包括一程序識(shí)別符Program0和一程序類(lèi)型,并作為一程序級(jí)別序列,還包括一子類(lèi)型識(shí)別符和一個(gè)識(shí)別一起順序地定義程序520功能的程序段集的列表結(jié)構(gòu)。
在本發(fā)明的最佳實(shí)施例中,程序50被劃分為相對(duì)分離的功能操作。例如,在一個(gè)帳目支付主題中,一個(gè)特定的程序52可以分離并執(zhí)行接收和存儲(chǔ)輸入定義的一個(gè)發(fā)票(invoice)的功能。另一個(gè)程序52可以被定義為對(duì)記入一般的分類(lèi)帳目的發(fā)票記錄負(fù)責(zé)。另一個(gè)程序可以被指定來(lái)選擇和打印一份協(xié)調(diào)(reconciliation)報(bào)告。于是,程序50的邏輯劃分可以由程序類(lèi)型和子類(lèi)型分離地識(shí)別,因而支持構(gòu)成設(shè)計(jì)者44的基礎(chǔ)的專(zhuān)家系統(tǒng)在生成相應(yīng)的程序碼中操作。而且,另外的程序類(lèi)型和子類(lèi)型可以容易地被增加或定義,和程序規(guī)則集也可被修正或擴(kuò)充,以合適地支持新的程序類(lèi)型和子類(lèi)型。
每一程序,例如程序0520被有效地實(shí)現(xiàn)為一個(gè)或多個(gè)段54的集合。一個(gè)段記錄,例如段記錄541邏輯地識(shí)別一組功能上定義程序520的一子程序功能的應(yīng)用程序序列。在本發(fā)明的最佳實(shí)施例中,多達(dá)99個(gè)段可以與一個(gè)特定的程序520相聯(lián)系。99個(gè)段的任意限制可以認(rèn)為是超過(guò)適于允許定義足夠多的段來(lái)實(shí)現(xiàn)任何特定程序52的功能,每一段實(shí)際最好具有有限的復(fù)雜性。于是,一個(gè)段54可以表示一個(gè)分離的數(shù)據(jù)入口屏幕及有關(guān)的輸入字段數(shù)據(jù)確認(rèn)邏輯。段54的一個(gè)子集可以被用來(lái)實(shí)現(xiàn)一個(gè)更復(fù)雜的處理,其中應(yīng)用分離的段來(lái)實(shí)現(xiàn)例如一個(gè)報(bào)告選擇屏幕,一個(gè)報(bào)告數(shù)據(jù)合格輸入屏幕和報(bào)告生成。
每一個(gè)段記錄54存儲(chǔ)一個(gè)段識(shí)別符,該段識(shí)別符是在與一個(gè)特定段54相聯(lián)系的每一個(gè)應(yīng)用程序序列中或者明確或者隱含地邏輯重復(fù)的。這些應(yīng)用程序序列38順序地提供了由應(yīng)用程序生成器30在生成碼和文件編制的過(guò)程中應(yīng)用的細(xì)節(jié)邏輯。
每一個(gè)文件記錄56包括一個(gè)文件ID,在應(yīng)用程序序列中可以引用該文件ID來(lái)指明到相應(yīng)于文件記錄的文件的訪問(wèn)。文件類(lèi)型、文件名和位置也存儲(chǔ)為文件記錄56的一部分。文件類(lèi)型信息實(shí)際上指明對(duì)一特定文件的訪問(wèn)方法。文件類(lèi)型可以包括關(guān)系數(shù)據(jù)庫(kù)文件、平面(flat)文件、臨時(shí)數(shù)據(jù)文件或存儲(chǔ)器內(nèi)(in-memory)數(shù)據(jù)結(jié)構(gòu)。文件名可以是到一個(gè)文件系統(tǒng)文件的相對(duì)或絕對(duì)路徑名,或者在有關(guān)數(shù)據(jù)庫(kù)的情況下,是由此文件記錄56引用的數(shù)據(jù)庫(kù)和表名。文件位置信息可以被提供,以支持在一個(gè)特定文件系統(tǒng)中的文件位置中的分配的文件引用或間接(indirection)結(jié)構(gòu)。另外,最佳實(shí)施例包括一個(gè)數(shù)據(jù)字典,該數(shù)據(jù)字典存儲(chǔ)描述文件和數(shù)據(jù)結(jié)構(gòu)的信息,包括字段大小和類(lèi)型的信息,并包含可維護(hù)的位置信息。
每一文件記錄56,例如文件0560包括一個(gè)列表,邏輯地識(shí)別一組或多組字段(或記錄)記錄58。這些記錄58每一個(gè)都存儲(chǔ)一個(gè)記錄識(shí)別符,該識(shí)別符可由一應(yīng)用程序序列引用作為名字空間內(nèi)唯一的名字綜合到由一特定主題應(yīng)用的文件數(shù)據(jù)空間。每一記錄58可以被分級(jí)地由一個(gè)根記錄序列來(lái)引用,該根記錄序列為每一由特定記錄表示的字段來(lái)存儲(chǔ)字段記錄大小和類(lèi)型信息。字段大小信息一般表示可用的或由一特定字段可引用的最大存儲(chǔ)空間。字段類(lèi)型信息指明依賴于記錄類(lèi)型的數(shù)據(jù)類(lèi)型。于是,例如在平面文件的情況下,記錄類(lèi)型可以是ASCⅡ,整數(shù)或二進(jìn)制數(shù)。在數(shù)據(jù)庫(kù)表字段的情況下,字段類(lèi)型可以指明任何預(yù)定義的數(shù)據(jù)庫(kù)類(lèi)型,包括日期、錢(qián)、文本、整數(shù)和浮點(diǎn)數(shù)。
圖4提供了一個(gè)更加詳細(xì)的與應(yīng)用程序生成器30的圖像編輯器32密切聯(lián)系的結(jié)構(gòu)圖。使圖像編輯器結(jié)構(gòu)60操作,以便將用戶輸入14與存儲(chǔ)在目標(biāo)存儲(chǔ)庫(kù)42中的目標(biāo)及存儲(chǔ)為知識(shí)庫(kù)34中一部分的特征包合并起來(lái)。圖像編輯器32部分地基于從一規(guī)則表62獲得的應(yīng)用程序結(jié)構(gòu)信息和確認(rèn)信息來(lái)執(zhí)行此功能?;谶@些輸入,圖像編輯器生成一個(gè)提供給序列生成器66的圖像定義序列。
輸入到圖像編輯器32的用戶輸入14允許用戶直接輸入圖像信息其中例如在指向屏幕的形式下用來(lái)指明識(shí)別屏幕字段的位置和預(yù)定內(nèi)容的背景數(shù)據(jù)。用戶輸入14也被用來(lái)執(zhí)行一般的編輯器功能,其中特別是包括存儲(chǔ)和檢索作為目標(biāo)存儲(chǔ)庫(kù)42的目標(biāo)的圖像部分的功能。檢索的目標(biāo)可以被粘貼(past)在由圖像編輯器維護(hù)的圖像頁(yè)面上。
另外,用戶輸入14可以指定屬性,該屬性將被加在圖像頁(yè)面上已識(shí)別的數(shù)據(jù)字段。這些屬性可以被指向操作過(guò)程,該過(guò)程是由當(dāng)前正在圖像編輯器32內(nèi)編輯的程序52實(shí)現(xiàn)的或者是關(guān)于一特定段54的一個(gè)或多個(gè)專(zhuān)用字段。于是,當(dāng)程序520通過(guò)圖像編輯器32的操作定義時(shí),任何一組預(yù)定的程序?qū)傩钥梢杂梢牖诔绦虻奶卣靼鼇?lái)選擇。這些基于程序的特征包中的每一個(gè)都提供一個(gè)專(zhuān)用于一特定過(guò)程的高級(jí)說(shuō)明或由設(shè)計(jì)者44提供在生成程序520碼時(shí)運(yùn)用的限定條件(qualification)?;诔绦虻奶卣靼话悴痪幹返饺魏螌?zhuān)用字段,而一般被指定給每一程序段的字段。表Ⅰ提供了在本發(fā)明的最佳實(shí)施例中應(yīng)用的基于程序的特征包的示范列表,以及由每一特征包生成的功能說(shuō)明的描述。
表Ⅰ程序特征包基本程序說(shuō)明 當(dāng)程序生成時(shí),允許對(duì)類(lèi)型、子類(lèi)型、已選定的讀和寫(xiě)程序選擇項(xiàng)改變。取消刪除鍵 禁止用戶訪問(wèn)F5 DELETE功能鍵。用于防止從主文件刪除記錄。取消打印空白行 當(dāng)報(bào)告上的所有數(shù)據(jù)字段為空白時(shí)取消打印空白行,選擇地,在該行上的任何背景文本可被取消。輸出選擇 為1)屏幕查詢,2)屏幕選擇器或3)ASCⅡ文件定義專(zhuān)用程序處理-如果選定,必須指定從用戶接收輸出文件名選擇。廢棄頁(yè)面標(biāo)題 提供取消標(biāo)準(zhǔn)頁(yè)面標(biāo)題,允許用戶標(biāo)題的格式,通常用于格式處理,幾乎總是當(dāng)生成ASCⅡ文件用于輸出時(shí)使用。定義下一段 用于改變段從最低號(hào)到最高號(hào)執(zhí)行的固有順序。除本機(jī)的程序處理之外,能提供分支到不由系統(tǒng)生成的(非本機(jī)的)程序。向用戶詢問(wèn)主文件名 提示用戶以便將主程序文件指定給磁盤(pán)上一個(gè)不同的文件。通常與存檔/解檔程序一起使用,以允許控制整個(gè)文件布局。增加處理停止支援 按要求提供用戶初始程序停止。借助清除破壞文件 隨著該選擇被激活,程序?qū)h除專(zhuān)用于段記錄中的文件,作為清除(Purge)輸出類(lèi)型。用于在對(duì)話期間應(yīng)用的臨時(shí)工作文件和然后在程序結(jié)束時(shí)完全刪除。并排記錄 定義在開(kāi)始一個(gè)新行之前打印在報(bào)告上的記錄列的數(shù)目。例如,用于生成雙倍或四倍標(biāo)記。借助清除復(fù)位 在清除期間當(dāng)記錄從文件中被清除時(shí),所有連續(xù)自動(dòng)編號(hào) 的自動(dòng)編號(hào)(autonumber)被復(fù)位為0。取消記入屏幕 規(guī)定登記過(guò)程為無(wú)聲的,不通知該過(guò)程已開(kāi)始。不保護(hù)數(shù)學(xué)(math)字段 不允許對(duì)字段被零除的保護(hù);也禁止字段初始化為計(jì)算的乘積。程序上托調(diào)用 從該字段識(shí)別被調(diào)用的選擇器上托程序,輸入名字或應(yīng)用由主題進(jìn)行的F2調(diào)用,以查看可用程序的列表。上托涉及選擇器。
在編輯段541時(shí),在圖像頁(yè)面上指定的字段也可以基于特征包被指定屬性。這些基于字段的特征包用于定義在一字段專(zhuān)用基上通常執(zhí)行的操作邏輯的包含關(guān)系和限定條件。每一個(gè)基于字段的特征包可以引用并因而應(yīng)用或影響其他字段的內(nèi)容。它們也可以通過(guò)開(kāi)始或跳轉(zhuǎn)其他程序段來(lái)控制程序流程。在本發(fā)明的實(shí)施例中用在例示的基于字段的特征包如表Ⅱ所示。
表Ⅱ基于字段的特征包特征包名基說(shuō)明屏幕數(shù)據(jù)元素位置定義數(shù)據(jù)名的局部遞代。這是“00”包或根包,其說(shuō)明有一個(gè)數(shù)據(jù)名或說(shuō)明其可以有包。圖像編輯器自動(dòng)地為根包來(lái)提示,作為實(shí)現(xiàn)在當(dāng)前段中的數(shù)據(jù)名的部分或包。包可以超越數(shù)據(jù)名的數(shù)據(jù)字典定義。
例如提高所允許的集合長(zhǎng)度的最小值或減少顯示長(zhǎng)度。包也可以使數(shù)據(jù)名“不是一個(gè)字段”,而是背景屏幕標(biāo)志(mask)的部分,使得該數(shù)據(jù)名可以用任何支持它的處理在以后的屏幕上重新顯示。元素編輯EDITS 限制輸入值的范圍,設(shè)置重復(fù)或循環(huán)入口說(shuō)明,設(shè)置計(jì)算關(guān)系和建立顯示標(biāo)志(maskings)。元素顯示邏輯 DISPLAY 為在下述方法中的顯示數(shù)據(jù)提供字段特征---1)只顯示,2)強(qiáng)制(forced),3)缺省,4)計(jì)數(shù)目標(biāo)和5)不可見(jiàn)。邏輯對(duì)于除4)計(jì)數(shù)目標(biāo)之外的所有選擇項(xiàng)是必須的。幫助文本F7可用于解釋這五個(gè)選擇的每個(gè)。元素驗(yàn)證邏輯 VERIFY 識(shí)別引用文件和記錄,為數(shù)據(jù)入口精度驗(yàn)證字段值。指定強(qiáng)制選擇,并且用~!A~代表alpha或用~!#~代表數(shù)字字段(與“當(dāng)前字段的值”相等同),來(lái)為當(dāng)前字段的驗(yàn)證建立關(guān)鍵值。任何其他的關(guān)鍵元素應(yīng)該通過(guò)它們的名字應(yīng)用已有的數(shù)據(jù)元素。元素跳轉(zhuǎn)邏輯 SKIP 如果邏輯部分指定的條件發(fā)生,允許為數(shù)據(jù)輸入旁通一字段。如果為跳轉(zhuǎn)檢測(cè)一填充字段,例如用于顯示驗(yàn)證讀出的字段名的只顯示變量的跳轉(zhuǎn)邏輯,則應(yīng)該用SKIPIF FIELD IS EMPTY,否則必須除空操作情況以外檢測(cè)空白。元素顯示到邏輯 DISP2 顯示由在屏幕底部一可選位置指定的邏輯生成的值。包使得一個(gè)值被放在別處,而沒(méi)有利用任何已知目標(biāo)字段。字段確認(rèn)邏輯 VALID 為字段數(shù)據(jù)入口定義允許值。在沒(méi)有假設(shè)涉及的字段名屬于不等式的右端或左端時(shí),如果應(yīng)用一比較,在邏輯部分必須包括字段名。元素計(jì)算邏輯 CALC2 基于俘獲或接收進(jìn)當(dāng)前字段的值引起另一字段值的改變。此改變可為任何數(shù)學(xué)運(yùn)算符,并可當(dāng)正在發(fā)生時(shí)顯示或等待直到其他字段處理。元素輸入選擇 為輸入指定選擇的數(shù)據(jù)輸入程序。當(dāng)前的選擇為允許字段內(nèi)編輯的單字符I/O和允許多個(gè)循環(huán)行的長(zhǎng)文本字段編輯的多字符I/O。情況CASE 使得產(chǎn)生該值(在串字段中的任何類(lèi)型)以使具有強(qiáng)制情況的值。選擇為改變到所有的UPPERCASE,改變到大寫(xiě)第一個(gè)字,改變到大寫(xiě)第一個(gè)字母或改變到所有的低級(jí)情況。包可以在程序段的任何位置作用于任一數(shù)據(jù)名上(許多包可以引起未顯示在圖像中、不在屏幕或報(bào)告上的字段內(nèi)的改變)。如果空則元素跳過(guò)字SKIPEM 如果另一個(gè)字段包含一個(gè)串變量的空值(空段白)或數(shù)字的零,允許對(duì)于數(shù)據(jù)輸入旁路字段。輸入編輯選擇INPUT允許對(duì)一alpha字段有效字符指定的用戶范圍的進(jìn)入。選擇項(xiàng)被限制為數(shù)字、數(shù)字和alpha、只有alpha、Y或N或字符的專(zhuān)用列表。復(fù)制值到字段COPY2 識(shí)別目標(biāo)字段以接收源字段的內(nèi)容。這等同于在程序設(shè)計(jì)中的移動(dòng)。翻譯到字段 TRANS 指定對(duì)1)加密,2)解密,3)桑迪克斯(Soundex)所需的轉(zhuǎn)換-用于名字的語(yǔ)音搜尋,包括說(shuō)明和程序目標(biāo)。元素計(jì)數(shù)(運(yùn)行全部)TALLY為被識(shí)別的僅顯示字段提供全部選擇(=-*/)以接收來(lái)自源字段的結(jié)果。不要在邏輯上退出 NO EXIT 只有當(dāng)邏輯被滿足時(shí)測(cè)試使程序結(jié)束字段中的一特定值。強(qiáng)迫用戶在退出之前完成要求,例如平衡(in-balance)條件。記入到另一字段 POST TO使得由限定邏輯生成的值被放置到一目標(biāo)字段。從另一字段登記 PSTREL 使得由邏輯生成的值被放置在包固定的當(dāng)前字段。字段缺省 NEWVAL 當(dāng)字段空或被用于替換當(dāng)前字段內(nèi)容時(shí),指定要被放置在該字段中的缺省字段值。
此特征包總是與一對(duì)多(one-to-many)登記關(guān)系連在一起使用,此關(guān)系在本指南的后面將作為一個(gè)全函數(shù)來(lái)討論。將日期轉(zhuǎn)換成串名 CONVDT 將日期存儲(chǔ)為Julian數(shù)的日期字段轉(zhuǎn)換成可以為該星期的該日或該年的該月的串字段。此特征可廣泛用于日程安排。將數(shù)字量轉(zhuǎn)換成 CONV2AV 用于得到文字的美元數(shù)以使打印在支票Alpha上。報(bào)告缺省總計(jì) RTOTAL 對(duì)于數(shù)字,操作符(+ -/*),在一個(gè)報(bào)告分合計(jì)或總計(jì)中在用字段之前需要數(shù)字字段確認(rèn)。計(jì)算分合計(jì) 在一個(gè)報(bào)告分合計(jì)中在用字段之前需要數(shù)字字段確認(rèn)。與報(bào)告缺省總計(jì)中的模式相同。分合計(jì)區(qū)必須存在并包含該目標(biāo)變量。計(jì)算總計(jì) 在一個(gè)報(bào)告總計(jì)區(qū)中在用字段之前需要數(shù)字字段確認(rèn),該區(qū)必須存在并包含該目標(biāo)變量。指定范圍相容開(kāi)始 START 從啟動(dòng)屏幕指定數(shù)據(jù)名,用于為在報(bào)告中相容驗(yàn)證字段值的開(kāi)始范圍。指定范圍相容結(jié)束 END 從啟動(dòng)屏幕指定數(shù)據(jù)名,用于為在報(bào)告中相容驗(yàn)證字段值的結(jié)束范圍。在恰好匹配上指定 MATCH 將字段值與這里輸入的值比較,以從該報(bào)的排除 告中排除一個(gè)記錄。是或否邏輯 YES/NO 將字段值與邏輯比較,以確定是否應(yīng)該包括字段。只有在與是或否選擇排除一起結(jié)合時(shí)工作。正常排除記錄邏輯NORMAL 定義從報(bào)告排除記錄所需滿足的條件。字段不需要出現(xiàn)在報(bào)告中,但包可以用于固定對(duì)出現(xiàn)在報(bào)告上的另一字段的排除。定義分類(lèi)鍵 SORT 所有在啟動(dòng)屏幕時(shí)生成的分類(lèi)選擇必須被定義并固定到報(bào)告上用的字段。分類(lèi)選擇應(yīng)該位于分類(lèi)的最低字段次序。數(shù)據(jù)名增量器MEMINC 使得在固定字段中的值每次(通常處理的每一記錄)以一固定量改變,計(jì)數(shù)是獨(dú)立的,開(kāi)始于同一值,在存儲(chǔ)器中計(jì)數(shù)然后清除。正常包括記錄邏輯NORMIN 使得處理的記錄被包括或忽略此時(shí)的基值(based values )。該包通常用在處理和輸出中。在邏輯上跳轉(zhuǎn)程序段 SKPPRG 基于邏輯條件通行完全地取消此段的執(zhí)行。該邏輯必須被裝載進(jìn)一個(gè)在早些段中的非存儲(chǔ)的數(shù)據(jù)名。不記錄將要讀出的。隱藏輸出細(xì)節(jié) HIDE 基于邏輯連續(xù)地完成為記錄提供打印抑制。來(lái)自記錄的信息可用在程序中累積總合而不打印細(xì)節(jié)記錄。在邏輯上改變標(biāo)記SIGN 基于通行的指定邏輯改變一數(shù)字變量的標(biāo)記。總計(jì) 指定包被固定的字段必須具有為其生成的總計(jì)、分合計(jì)或二者都有。雖然沒(méi)有如何生成為報(bào)告/處理定義的分合計(jì)或總計(jì)的說(shuō)明。該包支持總和、負(fù)總和、級(jí)數(shù)和負(fù)級(jí)數(shù)的定義。借方邏輯貸方邏輯總計(jì) 與對(duì)貸方邏輯計(jì)數(shù)操作一樣,除了用于更新特別定義的總計(jì)區(qū)的字段外。對(duì)借方邏輯計(jì)數(shù) TALLY 與影響其他字段操作一樣,但只從在輸入邏輯的通行條件下指定的變量中減去字段內(nèi)容。對(duì)貸方邏輯計(jì)數(shù) TALLY 與影響其他字段操作一樣,但只將字段內(nèi)容加到在輸入邏輯的通行條件下指定的變量中。自動(dòng)增量器 AUTOIN (也稱(chēng)為自動(dòng)編號(hào))指定自動(dòng)增量字段的兩種類(lèi)型中的一種。第一種類(lèi)型在指定范圍內(nèi)對(duì)文件連續(xù)編號(hào),每一重復(fù)增1。最后的增量值存儲(chǔ)在磁盤(pán)上,下一次繼續(xù)增量過(guò)程。第二種類(lèi)型基于一個(gè)引用的標(biāo)題記錄對(duì)行計(jì)數(shù)。每一標(biāo)題有自己的增量器,該值可從對(duì)話期到對(duì)話期一直繼續(xù)。字段上托調(diào)用POPUP 識(shí)別從該字段調(diào)用的選擇器上托程序。輸入名字或用由主題進(jìn)行的F2調(diào)用來(lái)查看可用程序的列表。上托被涉及作為選擇器。確認(rèn)通過(guò)邏輯有條件地基于定義邏輯得到各種確認(rèn)特征的全部。元素確認(rèn)否定 DENIAL 是一個(gè)負(fù)確認(rèn)。指定一個(gè)引用記錄不應(yīng)被邏輯在那里通過(guò)。在系統(tǒng)中特征和基數(shù)都被正確地拼寫(xiě)。只確認(rèn) VONLY與元素確認(rèn)邏輯相同,但是讀引用文件/記錄的目的僅僅是為了確認(rèn),沒(méi)有數(shù)據(jù)被改變或裝載。寫(xiě)記錄 WRITE是一個(gè)反向確認(rèn)。不是讀引用的記錄。而是寫(xiě)引用的記錄。大致確認(rèn) APXVER 是對(duì)(另一個(gè))要裝載數(shù)據(jù)的引用文件/記錄(全部引用記錄)的全部確認(rèn),但并不全部知道對(duì)(其他)引用文件/記錄的關(guān)鍵值。該包使得設(shè)計(jì)的程序可以以部分或簡(jiǎn)單的引用讀操作作表掃描,允許在處理中有不確切的相關(guān)數(shù)據(jù)被匹配。確認(rèn)裝載表 LOAD是一個(gè)完全的確認(rèn),包括讀整個(gè)的(其他)引用記錄,但該記錄在程序運(yùn)行期間被處理為非易失性的數(shù)據(jù)。更新來(lái)自指定包含放置在當(dāng)前字段中的值的字段或字段的采集。記入程序完成操作超越設(shè)計(jì)者用于登記程序的缺省結(jié)束模式;提供更換結(jié)束邏輯的選擇。
圖像編輯器32最好為基于程序和基于字段的特征包的選擇提供一采集表(picklist)。當(dāng)基于用戶輸入14選定一個(gè)特征時(shí),則為用戶輸入完成顯示附加的信息。此附加信息一般表現(xiàn)為一個(gè)上托(POP-UP)顯示記錄的形式,該記錄為用戶輸入提示,以便能足夠地限定選擇特征包的所期望的功能。
特征包識(shí)別和支持的信息由圖像編輯器作為一特定程序520或段541的枚舉(enumerated)屬性來(lái)采集。圖像編輯器32最好進(jìn)一步操作,以便根據(jù)特別地包括了文件和記錄56、58引用(reference)的現(xiàn)有應(yīng)用程序結(jié)構(gòu)合理地確認(rèn)這些屬性。另外定義了基數(shù)(basis)屬性的特征包也根據(jù)對(duì)每一基數(shù)包括一記錄的規(guī)則表62而被確認(rèn)。每一基數(shù)記錄定義抽象的行為(abstract behavioral)特征,其中該行為特征定義了一特定基數(shù)。針對(duì)特征包的一個(gè)特定例子,當(dāng)與由用戶輸入的限定信息相結(jié)合時(shí),行為特征允許定義一應(yīng)用程序序列集它可用于實(shí)現(xiàn)特征包的功能。
特征包可以并且一般提供功能邏輯的用戶輸入入口,以完成一特定特征包的定義。例如,計(jì)數(shù)(Tally)特征包支持另一字段名的說(shuō)明和一個(gè)算術(shù)運(yùn)算符的說(shuō)明。例如,實(shí)現(xiàn)的特征包可以表示為16AP200100 Total Cost0+Value Tally0其中16 相應(yīng)于此包的規(guī)則的IDAP 主題識(shí)別符
2001 程序識(shí)別符00程序段識(shí)別符Total Cost特征包固定處的字段識(shí)別符0 被保留以供將來(lái)使用+ 第一特征值value Tally 第二特征值目的字段0 第三特征值因此,這種特征包的功能邏輯主要是隱含的,由用戶提供并顯示于最低需求的說(shuō)明。在此功能邏輯支持下,提供了一些系統(tǒng)變量以便引用。這些系統(tǒng)變量不是一般的變量,而是對(duì)系統(tǒng)函數(shù)、調(diào)用(call)以及文字(literal)的抽象(abstract)元素,以及保留的或預(yù)先定義的變量和用戶定義的變量。系統(tǒng)函數(shù)包括獲得的該系統(tǒng)日期(!Data Date),而調(diào)用可以為系統(tǒng)操作調(diào)用,例如生成一可聽(tīng)音調(diào)(!Data Ring Bell),文字包括了固定的數(shù)據(jù)串(!Lit Asterisk)和數(shù)據(jù)常數(shù)。保留變量包括功能編程限制(!Ele LP Counter),算術(shù)函數(shù)(!Ele Calc 2Field),預(yù)分配變量(!Data Temp Num 1),和功能系統(tǒng)狀態(tài)(!Curr Topic;!DataMain Read)。最后,用戶定義的系統(tǒng)變量包括所有由用戶通過(guò)圖像編輯器定義的字段名,從而允許(custom)直接一致的引用定制的以及應(yīng)用程序及其動(dòng)態(tài)執(zhí)行環(huán)境預(yù)先定義的方面。
功能邏輯可以包括一般的數(shù)字和邏輯運(yùn)算符,被用作為在系統(tǒng)變量、字段名、文件名和記錄名,以及由序列提供的應(yīng)用程序結(jié)構(gòu)中的信息和動(dòng)態(tài)執(zhí)行存儲(chǔ)器變量和文字組合之間的關(guān)系連接符。字段名是與由圖像編輯器32實(shí)現(xiàn)的定義過(guò)程部分的字段相聯(lián)系的名字。文件名和記錄名相應(yīng)于在應(yīng)用程序結(jié)構(gòu)36的文件和記錄56,58的定義中指定的文件和記錄ID。表Ⅲ詳細(xì)列示了典型的系統(tǒng)變量。
表Ⅲ系統(tǒng)變量!# 當(dāng)前數(shù)字字段變量!a 當(dāng)前串字段變量!Curr Basis Key 當(dāng)前指針進(jìn)入序列!Curr Error 當(dāng)前錯(cuò)誤號(hào)!Curr Field正在處理的字段名!Currr Field Max 段中字段數(shù)目!Curr Field Rec當(dāng)前字段記錄!Curr New Line 全部置換的文本行!Curr Next Seg 程序下一段號(hào)!Curr Page No.當(dāng)前的檢查頁(yè)面號(hào)!Curr Program 當(dāng)前程序ID!Curr Segment 當(dāng)前段ID!Curr Topic當(dāng)前主題ID!Curr Variable 在翻譯中的當(dāng)前變量!Data Bell Sound 按信息聲音振鈴!Data Date 運(yùn)行時(shí)間系統(tǒng)日期!Data DSZ 保持?jǐn)?shù)據(jù)大小變量!Data End Check數(shù)據(jù)結(jié)束變量!Data Input運(yùn)行時(shí)間輸入變量!Data Main Read繼續(xù)讀主文件!Data Menu SW1-14 菜單參數(shù)開(kāi)關(guān)1-14!Data Next Prog運(yùn)行時(shí)間設(shè)置下一程序!Data Page Count 報(bào)告頁(yè)計(jì)數(shù)器!Data Read Write 緩沖器讀/寫(xiě)標(biāo)志!Data Required 所需記錄是/否標(biāo)志!Data Row 行號(hào)的臨時(shí)變量!Data Search 搜尋鍵!Data Temp Num 0-7 運(yùn)行時(shí)間臨時(shí)數(shù)字存儲(chǔ)!Data Temp Str 0-7 運(yùn)行時(shí)間臨時(shí)串變量!Data Total Base 數(shù)字的全部陣列!Data VDP User 運(yùn)行時(shí)間工作站和用戶!DDICT Case CVT條件轉(zhuǎn)換選擇項(xiàng)!DDICT Data Type 數(shù)據(jù)類(lèi)型!DDICT Desc入口說(shuō)明!DDICT Justify 字段證明正確!DDICT Max Len 最大長(zhǎng)度!DDICT Min Len 最小長(zhǎng)度!Ele Calc Dest 從屏幕數(shù)學(xué)計(jì)算的!Ele Calc Source屏幕數(shù)學(xué)源!Ele Calc2 Field計(jì)算的目標(biāo)字段!Ele Calc2 Op 計(jì)算到數(shù)學(xué)操作!Ele Calc2 Show 顯示計(jì)算的字段!Ele Col元素列!Ele Conv From 用于轉(zhuǎn)換的源字段!Ele Conv2 Alpha用于數(shù)字到Alpha轉(zhuǎn)換的目標(biāo)字段!Ele Convl Field轉(zhuǎn)換后的目標(biāo)字段!Ele Convto Mask用標(biāo)志號(hào)到串轉(zhuǎn)換!Ele Copyto Field 復(fù)制到的字段名!Ele Copyto Type復(fù)制到的記錄類(lèi)型!Ele Disp Logic 元素顯示邏輯!Ele Disp Option元素顯示選擇!Ele Dispto Pos 元素顯示到位置!Ele Dispto Type顯示到記錄類(lèi)型!Ele Dispto Logic 元素顯示到邏輯!Ele Exitlogic 不要退出邏輯!Ele Exit Option不要退出選擇!Ele Grand Field總和計(jì)算到字段!Ele Grand Sign 數(shù)學(xué)運(yùn)算符!Ele Grand Plus Field 總和加至字段!Ele Grand Plus Logic 總和加至邏輯!Ele Grand Minus Field 總和減至字段!Ele Grand Minus Logic 總和減至邏輯!Ele Imm Field 立即更新目標(biāo)字段!Ele Imm File 立即更新文件!Ele Imm Op 立即更新操作!Ele Increment 數(shù)字顯示增量!Ele Input From 1 從值范圍l!Ele Input From 2 從值范圍2!Ele Input From 3 從值范圍3!Ele Input Thru 1 通過(guò)值范圍1!Ele Input Thru 2 通過(guò)值范圍2!Ele Input Thru 3 通過(guò)值范圍3!Ele Loop Use 循環(huán)開(kāi)始或結(jié)束標(biāo)志!Ele Lp Counter 循環(huán)記數(shù)器變量!Ele Lp Exac tEn正確結(jié)束循環(huán)號(hào)!Ele Lp Exact St正確開(kāi)始循環(huán)號(hào)!Ele Lp Var En 變量結(jié)束循環(huán)號(hào)!Ele Lp Var St 變量開(kāi)始循環(huán)號(hào)!Ele Tally Clear運(yùn)行全部清除選擇!Ele Tally Field用于運(yùn)行的目標(biāo)字段!Ele Tally Op 運(yùn)行全部數(shù)學(xué)操作!Ele Tally Puls Field 計(jì)數(shù)加至字段!Ele Tally Plus Logic 計(jì)數(shù)加至邏輯!Ele Tally Minus Field 計(jì)數(shù)減至字段!Ele Tally Minus Logic 計(jì)數(shù)減自邏輯!Ele Type 字段類(lèi)型!Ele Up To Logic登記到更新邏輯!Ele Up To Option 登記到選擇!Ele Up To Target 登記到目標(biāo)變量!Ele Up X18 Func以翻譯函數(shù)名更新!Ele Up X18 Logic 源字段到翻譯自!Ele Up X18 Prog翻譯程序名!Pgm Subtype程序子類(lèi)型!Pspec Ask 請(qǐng)求主數(shù)據(jù)文件名 !Pspec Ask Prompt 得到主文件的提示文本!Pspec Alt File 報(bào)告輸出數(shù)據(jù)文件名!Pspec Alt Text 報(bào)告輸出文件提示!Pspec Output報(bào)告輸出選擇于是系統(tǒng)變量提供了一個(gè)容易的結(jié)構(gòu),允許對(duì)在記錄和字段間的數(shù)據(jù)及各字段組之間的數(shù)據(jù)當(dāng)前狀態(tài)、控制和轉(zhuǎn)換或翻譯進(jìn)行的測(cè)試,允許建立選擇項(xiàng)集,以及在指定邏輯函數(shù)操作中允許特定字段或操作進(jìn)入或退出字段。雖然系統(tǒng)變量可用在特征包中的引用,它們更通常地是用在知識(shí)庫(kù)34中所實(shí)現(xiàn)的程序和測(cè)試規(guī)則或由其引用。大多數(shù)系統(tǒng)變量影響或詳述與特征包相聯(lián)系所建立的功能說(shuō)明相關(guān)的低級(jí)功能。例如,在一個(gè)支持對(duì)顯示值進(jìn)行編輯的特征包中的一個(gè)字段名引用將根據(jù)程序和測(cè)試規(guī)則被隱含地評(píng)價(jià)(evaluated),以確定是否在該字段中要顯示一初始缺省值。確定是否顯示一缺省值的測(cè)試規(guī)則和確定或讀取該缺省值的程序規(guī)則在實(shí)現(xiàn)需要的功能邏輯時(shí)可以擴(kuò)展地引用系統(tǒng)變量。如果一字段被缺省為當(dāng)前日期,但允許用戶修改,則如果當(dāng)前字段(!a)是空的話,此規(guī)則可以檢索當(dāng)前日期(!Data Date),并將該日期放在該字段中(!Display to)。因此,在程序和測(cè)試規(guī)則組成的支持下通過(guò)應(yīng)用功能包中的系統(tǒng)變量,可以提供一直接的及高度非過(guò)程(non-procedural)的能力,同時(shí)提供一詳細(xì)但高度概括(abstract)的能力。
最后,由圖像編輯器生成的各種定義最好在每一定義對(duì)于序列生成器66是完全的情況下提供。這些定義由序列生成器66評(píng)價(jià),以生成多個(gè)應(yīng)用程序序列集。該定義評(píng)價(jià)最好由作為序列生成器66基礎(chǔ)的一個(gè)專(zhuān)家系統(tǒng)來(lái)執(zhí)行。當(dāng)特定包和功能邏輯由此專(zhuān)家系統(tǒng)來(lái)評(píng)價(jià)時(shí),引用一控制表64,該控制表64與規(guī)則表62相結(jié)合,作為一概括的、多級(jí)數(shù)據(jù)查找裝置來(lái)操作,用于支持生成定義的應(yīng)用程序序列。當(dāng)規(guī)則表為每一個(gè)在特征包中引用的基數(shù)(basis)提供抽象的行為特征時(shí),控制表識(shí)別各組規(guī)則表入口。一個(gè)簡(jiǎn)單基數(shù)可以有一個(gè)單個(gè)的規(guī)則表入口,該表入口適合用于該基數(shù)可能出現(xiàn)的所有例子中。一個(gè)較復(fù)雜的基數(shù),或定義為在其預(yù)期應(yīng)用中受一些模糊支配的基數(shù)的函數(shù),可以首先根據(jù)控制表來(lái)評(píng)價(jià),以確定一特定的基數(shù)規(guī)則集,以在進(jìn)一步的評(píng)價(jià)中考慮復(fù)雜的基數(shù)或函數(shù)。于是,例如,在一數(shù)據(jù)輸入過(guò)程的上下文中對(duì)一字段名的函數(shù)引用可以暗示用于建立字段的輸入橫向焦點(diǎn)(focustransversal)的需要,該字段與其它字段相關(guān),然而,在一報(bào)告過(guò)程的上下文中的相同函數(shù)暗示一顯著不同的功能,特別是一個(gè)與這個(gè)字段及相關(guān)字段的數(shù)據(jù)的最佳檢索順序有關(guān)的功能。表示復(fù)雜基數(shù)的函數(shù)通過(guò)控制表64來(lái)引用,這些函數(shù)概括于表Ⅳ中。
表Ⅳ 控制表函數(shù)ALTKEY 定義在不同的上下文中程序元素是如何由一(alternate)索引鍵引用來(lái)選擇的。AUTONUMBER 定義在不同的上下文中有序程序元素是如何被排序的ELEMENT 定義在不同的上下文中用于生成一程序元素的過(guò)程ENTRY定義在不同的上下文中用于字段的遍歷(traversal)順序LOCATION 確定在不同的上下文中一字段或程序元素的位置是如何確定的MAIN KEY 定義在不同的上下文中程序元素是如何由主索引鍵引用選定的ORDER確定在不同的上下文中定義程序記錄或元素的順序的方法RECORD TYPE 確定在不同的上下文中一程序記錄的類(lèi)型UIP FIELDS 確定在不同的上下文中在支持一程序段的進(jìn)一步的規(guī)則處理時(shí)必須被定義的附加的字段集或程序元素例如,ELEMENT函數(shù)在一數(shù)據(jù)俘獲程序的上下文中將順序地引用下列函數(shù)或簡(jiǎn)單基數(shù)ELELOC在圖像頁(yè)面上的元素位置ENTRY 數(shù)據(jù)字段采集數(shù)據(jù)的順序;NAME 字段名元素;PTRANS字段名的翻譯序列;以及RECORD增加到數(shù)據(jù)庫(kù)然而,在一登記過(guò)程的上下文中,ELEMENT函數(shù)將只引用ELELOC、NAME、PTRANS和RECORD。
圖5顯示了在生成各種提供給序列生成器66的定義和文本中由圖像編輯器32實(shí)現(xiàn)的過(guò)程。過(guò)程70開(kāi)始于用戶選擇72,以便定義文件結(jié)構(gòu)74,定義一程序結(jié)構(gòu)76或生成一字段定義78。按照這些選擇中的每一個(gè)選擇,提示用戶,并提供合適的開(kāi)始文本,其通過(guò)了產(chǎn)生文本和定義的生成過(guò)程,該文本和定義表示用戶進(jìn)一步的輸入。在定義文件結(jié)構(gòu)74的情況下,生成文件定義和文本。文件定義用于邏輯地建立應(yīng)用程序結(jié)構(gòu)36中的文件和記錄56,58入口。相對(duì)于每一文件和記錄56,58進(jìn)入的提示應(yīng)答文本也由定義文件結(jié)構(gòu)步驟74俘獲。此文本存儲(chǔ)到幫助文件40。然后過(guò)程70再繼續(xù)另一個(gè)用戶選擇72。
相似地,定義程序結(jié)構(gòu)步驟76形成程序定義和文本的生成。使用程序定義來(lái)邏輯地定義應(yīng)用程序結(jié)構(gòu)36的程序和段記錄52,54。提示應(yīng)答文本被存儲(chǔ)進(jìn)幫助文件40。
用步驟74,76生成的文件和程序定義包括了適當(dāng)?shù)挠涗洷涣⒓从行У刈龅娇捎糜谛蛄猩善?6。也就是說(shuō),隨著序列生成器66的操作的每一重復(fù),應(yīng)用程序結(jié)構(gòu)36可用于序列生成器66以便引用。
生成字段定義步驟78和隨后的步驟80,82,84,86一起詳細(xì)說(shuō)明了生成字段定義和文本的流程。此過(guò)程一般為上述的定義文件結(jié)構(gòu)74和定義程序結(jié)構(gòu)76步驟的示例。定義一字段的過(guò)程開(kāi)始于由用戶選擇72選擇的生成字段定義78。從與幫助文件40相聯(lián)系的問(wèn)題文件獲得一個(gè)預(yù)先定義的提示問(wèn)題和任何合適的開(kāi)始文本,并將其顯示給用戶以便應(yīng)答。這個(gè)引入問(wèn)題步驟80用于獲得一個(gè)關(guān)于被定義字段的目的和功能的引入語(yǔ)句。此字段引入文本存儲(chǔ)回幫助文件40。定義字段步驟82允許用戶通過(guò)輸入以便選擇被定義字段的外部特性(appearance)。這可以包括從目標(biāo)存儲(chǔ)器42選擇一個(gè)目標(biāo)。在定義字段步驟82期間檢索的目標(biāo)內(nèi)的任何字段的屬性被最初地維護(hù),以后由用戶輸入進(jìn)一步修改。特別地,與一個(gè)目標(biāo)內(nèi)的字段相聯(lián)系的特征包在定義字段步驟82期間可以被打開(kāi)并編輯。與一個(gè)目標(biāo)相聯(lián)系的特征包也可以被增加或移去。于是,一旦一個(gè)目標(biāo)在定義字段步驟82被檢索,該目標(biāo)最好由正在區(qū)別作為一個(gè)封裝的目標(biāo)停止。通過(guò)檢索一個(gè)目標(biāo)定義的每一字段和屬性在功能上與通過(guò)用戶輸入新定義的字段或?qū)傩詻](méi)有區(qū)別。
當(dāng)用戶輸入表明一特定字段的定義是完整的時(shí),圖像編輯器34至少暫時(shí)地過(guò)渡到確認(rèn)字段步驟84。與應(yīng)用程序結(jié)構(gòu)36相結(jié)合實(shí)時(shí)地引用規(guī)則表,以確保已經(jīng)與定義字段相聯(lián)系的每一屬性定義了的合適的特征包基和功能邏輯。如果字段確認(rèn)失敗,圖像編輯器32返回定義字段步驟82,以允許用戶指導(dǎo)修正。在非模糊修正條件下的失敗可以由圖像編輯器32自動(dòng)地修正。當(dāng)一字段最終被確認(rèn)時(shí),相應(yīng)的字段定義由圖像編輯器32產(chǎn)生。這些字段定義用于識(shí)別字段和指定屬性的所有方面。雖然這些字段定義最好立即提供給序列生成器66以便處理,一個(gè)圖像由圖像編輯器32來(lái)維護(hù)以支持對(duì)定義字段的進(jìn)一步的編輯。
一旦字段已被確認(rèn),執(zhí)行解釋問(wèn)題步驟86,以獲得關(guān)于定義字段的目的和功能的詳細(xì)說(shuō)明文本?;诙x字段當(dāng)前選擇的屬性選擇的提示問(wèn)題和任何適合的開(kāi)始文本又被顯示給用戶。由用戶輸入提供的提示應(yīng)答文本作為文件解釋文本存儲(chǔ)在幫助文件40中。
當(dāng)相關(guān)于一特定功能將要定義多個(gè)字段時(shí),例如用于識(shí)別一個(gè)清單項(xiàng)的分類(lèi)和子分類(lèi)字段,圖像編輯器返回定義字段過(guò)程步驟82,以定義下一字段。一旦一個(gè)或多個(gè)字段的集合已全部定義,圖像編輯器返回用戶選擇步驟72。
現(xiàn)在參考圖6,其顯示了序列生成器66和由序列生成器66產(chǎn)生的應(yīng)用程序序列的細(xì)節(jié)部分90。序列生成器66根據(jù)先前建立的應(yīng)用程序結(jié)構(gòu)36來(lái)操作,該結(jié)構(gòu)36顯示為由圖像編輯器32產(chǎn)生的文件定義92和程序定義94,以及字段定義96。這些定義輸入是通過(guò)依靠控制表64由序列生成器66的專(zhuān)家系統(tǒng)直接或間接地處理的,以便從規(guī)則表62識(shí)別和選擇一特定基數(shù)的行為特征,作為由字段定義96的屬性進(jìn)行的識(shí)別。在本發(fā)明的最佳實(shí)施例中,序列生成器66工作以生成離散序列,這些序列是輸入定義的特定方面的功能描述。特別地,生成程序序列98以定義由一特定段54表示的過(guò)程的明顯有序的執(zhí)行。例如,程序序列將定義屏幕顯示字段被訪問(wèn)的順序。程序序列也將隱含地定義檢索、編輯和保存記錄數(shù)據(jù)的順序。
數(shù)據(jù)序列100被離散地生成,以描述在各種記錄58之間的有序的數(shù)據(jù)關(guān)系。例如,數(shù)據(jù)序列將定義文件和記錄56,58,以及用于檢索和存儲(chǔ)數(shù)據(jù)到這些或其他文件和記錄56,58的關(guān)鍵字段。
文件序列102被生成以提供在程序和數(shù)據(jù)序列98,100之間的關(guān)系引用。例如,文件序列可以提供一字段和一數(shù)據(jù)序列100之間的邏輯連接,其中該字段被識(shí)別作為一有序的程序序列集實(shí)現(xiàn)的特征包的一邏輯功能語(yǔ)句的部分,該數(shù)據(jù)序列100引用一特定記錄58。利用文件序列102來(lái)指定由數(shù)據(jù)序列100引用的數(shù)據(jù)到由程序序列98引用的字段的轉(zhuǎn)換。
翻譯序列40被生成以支持特定數(shù)據(jù)名與概括的變量名的最終聯(lián)系,其中這些變量名或者通過(guò)序列生成器66的操作被隱含地分配在一動(dòng)態(tài)基數(shù)上,或者表示系統(tǒng)變量。于是,由數(shù)據(jù)序列100識(shí)別并由文件序列102指定檢索的數(shù)據(jù)被最終在由設(shè)計(jì)者44建立的程序變量中基于一翻譯序列104例示(instantiated)。
確認(rèn)序列106提供表示限定條件的離散序列,其中該限定條件可以根據(jù)其他序列被應(yīng)用。特別地,利用確認(rèn)序列來(lái)嵌入適合于特定數(shù)據(jù)字段或數(shù)據(jù)字段組的功能邏輯條件。
段記錄序列108提供記錄58的記錄識(shí)別符的列表,該記錄58可以包括數(shù)據(jù)讀或?qū)?、?duì)一特定記錄的存在的測(cè)試、一特定記錄的刪除或清除、以及用作源或目標(biāo)的任何記錄,或者包括當(dāng)前段54中要被讀或?qū)懙挠涗浀臉?biāo)題/細(xì)節(jié)關(guān)系。
特征序列110提供序列其中描述要運(yùn)用到字段或字段組的功能邏輯,并可包括對(duì)所有類(lèi)型的系統(tǒng)變量的引用。雖然每一特征序列在指定一特定功能邏輯函數(shù)時(shí)當(dāng)前最好是完全的,例如以一專(zhuān)用算術(shù)或布爾運(yùn)算符將一特定字段計(jì)數(shù)到另一字段,通過(guò)應(yīng)用多序列表示一單獨(dú)的特征包,可以實(shí)現(xiàn)更通用的函數(shù)。
應(yīng)用程序序列結(jié)構(gòu)98,100,102,104,106,108,110不是嚴(yán)格按照先進(jìn)先出序列緩沖器的順序排序的。雖然可以按照一種通常并行的FIFO順序?qū)⑿蛄屑拥浇Y(jié)構(gòu)中,每一個(gè)應(yīng)用程序序列按照一種一幀接一幀的關(guān)系被增加進(jìn)去,這種一幀接一幀的關(guān)系在一虛擬幀例如幀112內(nèi)聯(lián)系了序列結(jié)構(gòu)98,100,102,104,106,108,110中的零或多個(gè)序列。于是,如果在幀112內(nèi)的程序序列僅僅指定了給字段的值,翻譯序列可以是在幀112內(nèi)的另一個(gè)唯一的序列。相反地,在一個(gè)或多個(gè)序列結(jié)構(gòu)98,100,102,104,106,108,110中的任何數(shù)目的序列可以由一特定幀112聯(lián)系。因此,應(yīng)用程序序列的每一幀112全部定義了一個(gè)非常窄的邏輯關(guān)系,此邏輯關(guān)系可以在由應(yīng)用程序生成器30生成的碼的執(zhí)行中最終實(shí)現(xiàn)。
雖然應(yīng)用程序序列作為幀112相互關(guān)聯(lián),單個(gè)序列在一個(gè)作為生成的基上也可以加到應(yīng)用程序序列結(jié)構(gòu)98,100,102,104,106,108,110中。該序列在功能上劃分成離散序列類(lèi)型的序列導(dǎo)致關(guān)系由幀引用隱含地定義。
在本發(fā)明的最佳實(shí)施例中,應(yīng)用程序序列是簡(jiǎn)單的數(shù)據(jù)記錄,每一個(gè)記錄帶有少數(shù)的序列字段。每一不同類(lèi)型的序列98,100,102,104,106,108,110具有一個(gè)唯一的,預(yù)先定義的序列字段集。一般地,所有序列包括一個(gè)識(shí)別相應(yīng)段54的序列字段,和直接或間接地包括一個(gè)幀識(shí)別字段。然而,一些序列98,100,102,104,106,108,110對(duì)于文件56,程序52或者甚至主題50可以是通用的。這些通用序列被認(rèn)為是所有分級(jí)從屬(depending)段54和記錄58的序列集的部分。序列類(lèi)型專(zhuān)用字段包括用于指定程序序列功能,例如檢驗(yàn)自動(dòng)售貨機(jī)的功能字段,以及用于指定與一特定幀或序列相聯(lián)系的序列順序更通用化的序列字段,例如計(jì)數(shù)器。
應(yīng)用程序序列的幀112通常順序地由構(gòu)成應(yīng)用程序設(shè)計(jì)者44的基礎(chǔ)的專(zhuān)家系統(tǒng)來(lái)評(píng)價(jià)。如圖7所示,表示采集的應(yīng)用程序序列的程序員說(shuō)明接收作為應(yīng)用程序設(shè)計(jì)者的輸入與由文件定義92和程序定義94表示的應(yīng)用程序結(jié)構(gòu)36結(jié)合。另外,應(yīng)用程序設(shè)計(jì)者44訪問(wèn)知識(shí)庫(kù)34以便檢索程序規(guī)則120,測(cè)試規(guī)則122,基數(shù)規(guī)則124,技巧規(guī)則126以及語(yǔ)法規(guī)則128?;趶某绦蚨x94有效地獲得的程序類(lèi)型和子類(lèi)型,由設(shè)計(jì)者44根據(jù)程序員說(shuō)明評(píng)價(jià)選擇的適當(dāng)?shù)某绦蛞?guī)則120和相應(yīng)的測(cè)試規(guī)則122集。這些選定的程序規(guī)則預(yù)測(cè)并采用(impose)一個(gè)通用的框架用于由程序員說(shuō)明展示的功能和關(guān)系。結(jié)果,程序規(guī)則120用于從需要滿足程序規(guī)則120的可用的應(yīng)用程序序列的信息選擇出程序員說(shuō)明。測(cè)試規(guī)則122用作高級(jí)限定條件測(cè)試,以決定按照提供給應(yīng)用程序設(shè)計(jì)者44的特定程序員說(shuō)明是否應(yīng)用了程序規(guī)則120的不同子集。因此,由應(yīng)用程序設(shè)計(jì)者44生成的特定碼模塊的綜合結(jié)構(gòu)和流程在推理上依靠了基于用戶輸入最初建立的字段和字段關(guān)系。
與單獨(dú)的程序規(guī)則和應(yīng)用程序序列的專(zhuān)用幀一致,來(lái)評(píng)價(jià)基數(shù)規(guī)則124,以示例由程序員說(shuō)明表示的特征包的該預(yù)先概括的行為特征。
應(yīng)用程序設(shè)計(jì)者44運(yùn)用技巧規(guī)則126來(lái)開(kāi)發(fā)由應(yīng)用程序設(shè)計(jì)者產(chǎn)生的碼的中間表示,作為程序和基數(shù)規(guī)則120,124的評(píng)價(jià)結(jié)果。技巧規(guī)則126也參加了根據(jù)碼的中間表示對(duì)語(yǔ)法規(guī)則128的評(píng)價(jià),以最終實(shí)現(xiàn)單個(gè)碼語(yǔ)句的例示。
最后,應(yīng)用程序設(shè)計(jì)者44也產(chǎn)生了與通過(guò)碼的執(zhí)行實(shí)現(xiàn)的字段;程序和菜單相關(guān)的文本信息。這個(gè)附加的信息一般包括字段大小和類(lèi)型,包括的程序,以及菜單組織,還有按屏幕提示操作的方式的上下文專(zhuān)用指示,例如,在執(zhí)行的不同點(diǎn)上的可用程序選擇,在執(zhí)行中的一點(diǎn)上特別不允許的操作等。此信息由設(shè)計(jì)者44存儲(chǔ)進(jìn)幫助文件40,以擴(kuò)增預(yù)先存儲(chǔ)在那里的信息。
現(xiàn)在參考圖8,文件編制出版者46一般與應(yīng)用程序設(shè)計(jì)者44并行操作。雖然其顯著的區(qū)別是出版者46依靠了由設(shè)計(jì)者44先前擴(kuò)增的幫助文本40。出版者46依靠由包括段和記錄定義的文件定義92和程序定義94提供的應(yīng)用程序結(jié)構(gòu)36,以及從序列生成器66提供的程序員說(shuō)明。特別地,文件編制出版者46實(shí)現(xiàn)一個(gè)相對(duì)簡(jiǎn)單的專(zhuān)家系統(tǒng),該系統(tǒng)主要根據(jù)由幫助文件40提供的信息評(píng)價(jià)從知識(shí)庫(kù)34獲得的文件規(guī)則130。一般基于應(yīng)用程序結(jié)構(gòu)36從幫助文件信息引導(dǎo)出文獻(xiàn)編制的結(jié)構(gòu)。特別地,與程序定義94的當(dāng)前主題相聯(lián)系的菜單列表被用于組織文件編制的主體(body)。還一般地根據(jù)在一幀接一幀的基礎(chǔ)上,評(píng)價(jià)程序員說(shuō)明,以構(gòu)造適合顯示于文獻(xiàn)編制中說(shuō)明的屏幕和報(bào)告格式表示。關(guān)鍵詞(key word),例如在幫助文件40中出現(xiàn)的功能鍵名和基數(shù)類(lèi)型,被用于激發(fā)(trigger)保留字規(guī)則132的評(píng)價(jià)。這些保留字規(guī)則132最好被用來(lái)支持關(guān)鍵概念、操作特征或以一非重復(fù)的方式使用的方法的擴(kuò)展的解釋?zhuān)A糇忠?guī)則132也可以支持關(guān)鍵詞索引及關(guān)鍵詞的詞匯表入口的生成。
文本庫(kù)134被用來(lái)支持出版者46評(píng)價(jià)文件編制和保留字規(guī)則130,132。文本庫(kù)提供預(yù)先定義的文本部分,包括標(biāo)題部分,屏幕介紹,附錄標(biāo)題,法律公告和標(biāo)準(zhǔn)介紹。文本庫(kù)134還可以包括多個(gè)小的、不那么專(zhuān)用的文本串,這些文本串可以根據(jù)語(yǔ)法規(guī)則136的評(píng)價(jià)被控制。特別地,幫助文件40和程序員說(shuō)明將提供用于識(shí)別各種字段和用戶可看見(jiàn)的屬性,例如只顯示,只輸入數(shù)字或文本或缺省字段值的源。語(yǔ)法規(guī)則136被評(píng)價(jià),以將此信息控制成顯示的標(biāo)準(zhǔn)形式,適合于在引用相應(yīng)的圖像的文本編輯器的包含關(guān)系(inclusion)。因此,出版者46生成了一個(gè)高度詳細(xì)的文件編制集,直接相應(yīng)于由應(yīng)用程序設(shè)計(jì)者44生成的特定碼實(shí)現(xiàn)的正確的屏幕顯示過(guò)程和報(bào)告。
因此,這里已描述了一種完整的應(yīng)用程序生成器系統(tǒng)和方法,對(duì)實(shí)質(zhì)上的用戶應(yīng)用程序的設(shè)計(jì)、實(shí)現(xiàn)、維護(hù)和文件編制提供直接的支持。為了指定形成的應(yīng)用程序的功能,該系統(tǒng)需要用戶輸入最少量的信息,該信息輸入主要地限制于應(yīng)用程序結(jié)構(gòu)的定義和指定字段特征和字段之間關(guān)系的字段的邏輯屬性,其中所說(shuō)字段從推理上定義實(shí)現(xiàn)屬性定義的功能和關(guān)系所必須的功能。從這些屬性和應(yīng)用程序結(jié)構(gòu),生成了一個(gè)應(yīng)用程序序列的總說(shuō)明,全面描述了由用戶輸入定義的屬性推理的詳細(xì)關(guān)系和限定條件。然后這個(gè)總說(shuō)明由一個(gè)專(zhuān)家系統(tǒng)來(lái)減少選擇和應(yīng)用所需的且合適的應(yīng)用程序序列部分,以便與指定為應(yīng)用程序結(jié)構(gòu)的部分的程序類(lèi)型相一致,實(shí)現(xiàn)構(gòu)造一個(gè)應(yīng)用程序所必須的控制邏輯。從而由對(duì)一特定程序設(shè)計(jì)語(yǔ)言的語(yǔ)法規(guī)則的減少來(lái)構(gòu)造出一個(gè)完全的應(yīng)用程序。一個(gè)并行的被提示且自動(dòng)采集的文本信息的減少也用于對(duì)與生成的專(zhuān)用應(yīng)用程序高度相關(guān)的應(yīng)用程序文件編制的生成。
在不偏離本發(fā)明的構(gòu)思和范圍的情況下,本領(lǐng)域技術(shù)人員可以預(yù)想到本發(fā)明的各種修改和其他實(shí)現(xiàn)方式,并很容易加以利用。特別地,上述專(zhuān)家系統(tǒng)中很多不同的實(shí)現(xiàn)方式可以應(yīng)用于任何特定的實(shí)施例,直接規(guī)則分析機(jī)和逆向鏈推理機(jī)可以很容易地應(yīng)用于實(shí)現(xiàn)本發(fā)明的專(zhuān)家系統(tǒng)。另外,設(shè)計(jì)者和出版者專(zhuān)家系統(tǒng)可以作為一單獨(dú)的專(zhuān)家系統(tǒng)來(lái)實(shí)現(xiàn),或者被實(shí)際鏈接來(lái)用于碼和文件編制的生成。因此,本發(fā)明的實(shí)現(xiàn)并不僅限于上面的描述,應(yīng)限定于本發(fā)明的權(quán)利要求中所定義的本發(fā)明的范圍之內(nèi)。
權(quán)利要求
1.一個(gè)在計(jì)算機(jī)上執(zhí)行的編程系統(tǒng),用于自動(dòng)生成一個(gè)應(yīng)用程序,所述編程系統(tǒng)包括a)一個(gè)引導(dǎo)編輯器,用于從多個(gè)輸入事件元素建立程序、數(shù)據(jù)和字段定義;b)一個(gè)序列生成器,連接到所述引導(dǎo)編輯器,用于自主地將所述程序、數(shù)據(jù)和字段定義處理成多個(gè)功能描述原子序列,每一所述功能描述原子序列描述一唯一的特征,這樣多個(gè)幀分別地描述所述多個(gè)輸入事件元素,其中每一幀包括零或一個(gè)來(lái)自每個(gè)所述功能描述原子序列的功能描述原子序列;c)一個(gè)規(guī)則處理器,包括一個(gè)有條件地描述一個(gè)預(yù)定應(yīng)用程序的結(jié)構(gòu)和操作的程序規(guī)則庫(kù),所述規(guī)則處理器自主地處理所述程序規(guī)則庫(kù),以與所述多個(gè)功能描述原子序列一致,通常順序地在所述多個(gè)幀上進(jìn)行,有條件地將所述多個(gè)功能描述原子序列與所述預(yù)定應(yīng)用程序的結(jié)構(gòu)和操作作統(tǒng)一。
2.如權(quán)利要求1所述的編程系統(tǒng),其中,還包括一個(gè)語(yǔ)法處理器,包括一個(gè)定義預(yù)定程序設(shè)計(jì)語(yǔ)言的語(yǔ)法的語(yǔ)法規(guī)則庫(kù),所述語(yǔ)法處理器應(yīng)用所述預(yù)定程序設(shè)計(jì)語(yǔ)言的語(yǔ)法,自主地統(tǒng)一所述多個(gè)功能描述原子序列,該統(tǒng)一是以從所述規(guī)則處理器接收的所述預(yù)定應(yīng)用程序的結(jié)構(gòu)和操作來(lái)進(jìn)行的,以提供符合所述預(yù)定程序設(shè)計(jì)語(yǔ)言的語(yǔ)法的所述預(yù)定應(yīng)用程序的結(jié)構(gòu)和操作的編碼表示。
3.如權(quán)利要求2所述的編程系統(tǒng),其中,所述引導(dǎo)編輯器包括第一模塊,響應(yīng)于所述輸入事件元素,用于維護(hù)定義命名的程序節(jié)點(diǎn)和命名的段節(jié)點(diǎn)的有序?qū)拥囊粋€(gè)程序分級(jí)數(shù)據(jù)結(jié)構(gòu),第二模塊,響應(yīng)于所述輸入事件元素,用于維護(hù)定義命名的文件節(jié)點(diǎn)和命名的記錄節(jié)點(diǎn)的有序?qū)拥囊粋€(gè)數(shù)據(jù)分級(jí)數(shù)據(jù)結(jié)構(gòu),以及第三模塊,響應(yīng)于所述輸入事件元素,用于維護(hù)定義有序屏幕數(shù)據(jù)的一個(gè)字段數(shù)據(jù)結(jié)構(gòu),包括命名的字段和操作屬性。
4.如權(quán)利要求3所述的編程系統(tǒng),其中,a)所述引導(dǎo)編輯器的所述第三模塊還包括一個(gè)文本子模塊,用于提供預(yù)期預(yù)定輸入事件元素的屏幕上下文敏感提示文本,以及用于接收描述所述預(yù)定輸入事件元素的描述文本,所述文本子模塊用于所述描述文本在一幫助文件中的有序存儲(chǔ);以及b)所述規(guī)則處理器包括一個(gè)文件編制規(guī)則庫(kù),有條件地描述所述預(yù)定應(yīng)用程序的文件的結(jié)構(gòu)和組織,所述規(guī)則處理器與所述多個(gè)功能描述原子序列一致,自主地處理所述文件編制規(guī)則庫(kù),將所述描述文本與所述文件的結(jié)構(gòu)和組織有條件地統(tǒng)一。
全文摘要
一種用于實(shí)現(xiàn)應(yīng)用程序的自動(dòng)生成的編程系統(tǒng)(30)包括一個(gè)引導(dǎo)編輯器(32),用于將程序(76)、數(shù)據(jù)(74)和字段定義(78)建立成多個(gè)功能描述原子序列(38),每一序列描述一個(gè)唯一的特征,這樣多個(gè)幀分別地描述多個(gè)輸入事件元件(14),其中每一幀來(lái)自每一功能描述序列包括零或更多功能描述原子序列;一個(gè)規(guī)則處理器(66),包括一個(gè)有條件地描述一預(yù)定應(yīng)用程序的結(jié)構(gòu)和操作的程序規(guī)則庫(kù)(62),該規(guī)則處理器自主地處理程序規(guī)則庫(kù)(62),以與多個(gè)功能描述原子序列一致(38),通常順序地在多個(gè)幀上進(jìn)行,有條件地將多個(gè)功能描述原子序列(38)與預(yù)定應(yīng)用程序的結(jié)構(gòu)和操作統(tǒng)一;一個(gè)語(yǔ)法處理器(22),包括一個(gè)定義預(yù)定程序設(shè)計(jì)語(yǔ)言的語(yǔ)法的語(yǔ)法規(guī)則庫(kù)(128),自主地應(yīng)用所述預(yù)定程序設(shè)計(jì)語(yǔ)言的語(yǔ)法統(tǒng)一多個(gè)功能描述原子序列(38),以提供預(yù)定應(yīng)用程序的結(jié)構(gòu)和運(yùn)行的編碼表示(24)。
文檔編號(hào)G06F9/445GK1204409SQ96198915
公開(kāi)日1999年1月6日 申請(qǐng)日期1996年10月10日 優(yōu)先權(quán)日1996年10月10日
發(fā)明者布賴恩·T·斯塔克 申請(qǐng)人:奧瑟爾格尼克斯公司
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
师宗县| 贡嘎县| 新野县| 曲麻莱县| 铜鼓县| 屏山县| 海晏县| 荆门市| 云安县| 云阳县| 板桥市| 余姚市| 常宁市| 合山市| 洛宁县| 九江市| 都江堰市| 比如县| 弥勒县| 三亚市| 宣城市| 奉新县| 建昌县| 二连浩特市| 哈密市| 高陵县| 阜宁县| 成都市| 西盟| 天峨县| 汶上县| 伊吾县| 游戏| 新昌县| 白山市| 铜鼓县| 黑山县| 克什克腾旗| 绵竹市| 潮州市| 英超|